From 3f05182335b5ddc77f32a35625cb7fde4dfa576d Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Wed, 9 Aug 2006 16:33:00 +0200 Subject: [PATCH] mshtml: Load the page from moniker if we don't have nsIChannel. --- dlls/mshtml/mshtml_private.h | 5 +++++ dlls/mshtml/nsio.c | 3 +++ dlls/mshtml/persist.c | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 79ac281a030..5f6becec877 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -27,6 +27,9 @@ #include "nsiface.h" +#define GENERATE_MSHTML_NS_FAILURE(code) \ + ((nsresult) ((PRUint32)(1<<31) | ((PRUint32)(0x45+6)<<16) | (PRUint32)(code))) + #define NS_OK ((nsresult)0x00000000L) #define NS_ERROR_FAILURE ((nsresult)0x80004005L) #define NS_NOINTERFACE ((nsresult)0x80004002L) @@ -35,6 +38,8 @@ #define NS_ERROR_UNEXPECTED ((nsresult)0x8000ffffL) #define NS_ERROR_UNKNOWN_PROTOCOL ((nsresult)0x804b0012L) +#define WINE_NS_LOAD_FROM_MONIKER GENERATE_MSHTML_NS_FAILURE(0) + #define NS_FAILED(res) ((res) & 0x80000000) #define NS_SUCCEEDED(res) (!NS_FAILED(res)) diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index 8a1c9d3c44a..fb578c4f8a5 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -596,6 +596,9 @@ static nsresult NSAPI nsChannel_AsyncOpen(nsIHttpChannel *iface, nsIStreamListen } nsIWebBrowserChrome_Release(NSWBCHROME(container)); + + if(!This->channel) + return WINE_NS_LOAD_FROM_MONIKER; }else { BOOL cont = before_async_open(This, container); nsIWebBrowserChrome_Release(NSWBCHROME(container)); diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c index 9c34c4a4862..d935aaf6387 100644 --- a/dlls/mshtml/persist.c +++ b/dlls/mshtml/persist.c @@ -237,7 +237,7 @@ static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAva IBindStatusCallback_Release(STATUSCLB(bscallback)); CoTaskMemFree(url); return S_OK; - }else { + }else if(nsres != WINE_NS_LOAD_FROM_MONIKER) { WARN("LoadURI failed: %08lx\n", nsres); } }