Module: wine Branch: master Commit: afa527c1aed7ca4329bec94be230f23708f6b4d9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=afa527c1aed7ca4329bec94be2...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Apr 4 16:15:33 2013 +0200
mshtml: Pass IUri to create_doc_uri.
---
dlls/mshtml/binding.h | 4 ++-- dlls/mshtml/navigate.c | 6 ++++-- dlls/mshtml/nsio.c | 9 +-------- dlls/mshtml/persist.c | 23 ++++++++++++++++++----- 4 files changed, 25 insertions(+), 17 deletions(-)
diff --git a/dlls/mshtml/binding.h b/dlls/mshtml/binding.h index 4e86b76..63ac1ae 100644 --- a/dlls/mshtml/binding.h +++ b/dlls/mshtml/binding.h @@ -108,9 +108,9 @@ HRESULT create_redirect_nschannel(const WCHAR*,nsChannel*,nsChannel**) DECLSPEC_
nsresult on_start_uri_open(NSContainer*,nsIURI*,cpp_bool*) DECLSPEC_HIDDEN; HRESULT hlink_frame_navigate(HTMLDocument*,LPCWSTR,nsChannel*,DWORD,BOOL*) DECLSPEC_HIDDEN; -HRESULT create_doc_uri(HTMLOuterWindow*,const WCHAR*,nsWineURI**) DECLSPEC_HIDDEN; +HRESULT create_doc_uri(HTMLOuterWindow*,IUri*,nsWineURI**) DECLSPEC_HIDDEN; HRESULT load_nsuri(HTMLOuterWindow*,nsWineURI*,nsChannelBSC*,DWORD) DECLSPEC_HIDDEN; -HRESULT set_moniker(HTMLDocument*,IMoniker*,IBindCtx*,nsChannelBSC*,BOOL) DECLSPEC_HIDDEN; +HRESULT set_moniker(HTMLDocument*,IMoniker*,IUri*,IBindCtx*,nsChannelBSC*,BOOL) DECLSPEC_HIDDEN; void prepare_for_binding(HTMLDocument*,IMoniker*,DWORD) DECLSPEC_HIDDEN; HRESULT super_navigate(HTMLOuterWindow*,IUri*,DWORD,const WCHAR*,BYTE*,DWORD) DECLSPEC_HIDDEN; HRESULT load_uri(HTMLOuterWindow*,IUri*,DWORD) DECLSPEC_HIDDEN; diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c index 012d7ac..d99d0aa 100644 --- a/dlls/mshtml/navigate.c +++ b/dlls/mshtml/navigate.c @@ -1954,7 +1954,7 @@ static void navigate_proc(task_t *_task) navigate_task_t *task = (navigate_task_t*)_task; HRESULT hres;
- hres = set_moniker(&task->window->doc_obj->basedoc, task->mon, NULL, task->bscallback, TRUE); + hres = set_moniker(&task->window->doc_obj->basedoc, task->mon, task->uri, NULL, task->bscallback, TRUE); if(SUCCEEDED(hres)) { set_current_mon(task->window, task->bscallback->bsc.mon, task->flags); set_current_uri(task->window, task->uri); @@ -2266,6 +2266,8 @@ static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *dis nsWineURI *nsuri; HRESULT hres;
+ TRACE("%s\n", debugstr_w(display_uri)); + if(window->doc_obj && window->doc_obj->is_webbrowser && window == window->doc_obj->basedoc.window) { if(!(flags & BINDING_REFRESH)) { BOOL cancel = FALSE; @@ -2294,7 +2296,7 @@ static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *dis } }
- hres = create_doc_uri(window, display_uri, &nsuri); + hres = create_doc_uri(window, uri, &nsuri); if(FAILED(hres)) return hres;
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index d313676..c631cbb 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -2917,19 +2917,12 @@ static nsresult create_nsuri(IUri *iuri, HTMLOuterWindow *window, NSContainer *c return NS_OK; }
-HRESULT create_doc_uri(HTMLOuterWindow *window, const WCHAR *url, nsWineURI **ret) +HRESULT create_doc_uri(HTMLOuterWindow *window, IUri *iuri, nsWineURI **ret) { nsWineURI *uri; - IUri *iuri; nsresult nsres; - HRESULT hres; - - hres = create_uri(url, 0, &iuri); - if(FAILED(hres)) - return hres;
nsres = create_nsuri(iuri, window, window->doc_obj->nscontainer, NULL, &uri); - IUri_Release(iuri); if(NS_FAILED(nsres)) return E_FAIL;
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c index ca1a0bb..b2eefd3 100644 --- a/dlls/mshtml/persist.c +++ b/dlls/mshtml/persist.c @@ -349,12 +349,13 @@ void prepare_for_binding(HTMLDocument *This, IMoniker *mon, DWORD flags) } }
-HRESULT set_moniker(HTMLDocument *This, IMoniker *mon, IBindCtx *pibc, nsChannelBSC *async_bsc, BOOL set_download) +HRESULT set_moniker(HTMLDocument *This, IMoniker *mon, IUri *nav_uri, IBindCtx *pibc, nsChannelBSC *async_bsc, BOOL set_download) { download_proc_task_t *download_task; nsChannelBSC *bscallback; nsWineURI *nsuri; LPOLESTR url; + IUri *uri; HRESULT hres;
hres = IMoniker_GetDisplayName(mon, pibc, NULL, &url); @@ -363,11 +364,23 @@ HRESULT set_moniker(HTMLDocument *This, IMoniker *mon, IBindCtx *pibc, nsChannel return hres; }
+ if(nav_uri) { + uri = nav_uri; + }else { + hres = create_uri(url, 0, &uri); + if(FAILED(hres)) { + CoTaskMemFree(url); + return hres; + } + } + TRACE("got url: %s\n", debugstr_w(url));
set_ready_state(This->window, READYSTATE_LOADING);
- hres = create_doc_uri(This->window, url, &nsuri); + hres = create_doc_uri(This->window, uri, &nsuri); + if(!nav_uri) + IUri_Release(uri); if(SUCCEEDED(hres)) { if(async_bsc) bscallback = async_bsc; @@ -549,7 +562,7 @@ static HRESULT WINAPI PersistMoniker_Load(IPersistMoniker *iface, BOOL fFullyAva
prepare_for_binding(This, pimkName, FALSE); call_docview_84(This->doc_obj); - hres = set_moniker(This, pimkName, pibc, NULL, TRUE); + hres = set_moniker(This, pimkName, NULL, pibc, NULL, TRUE); if(FAILED(hres)) return hres;
@@ -818,7 +831,7 @@ static HRESULT WINAPI PersistStreamInit_Load(IPersistStreamInit *iface, LPSTREAM }
prepare_for_binding(This, mon, FALSE); - hres = set_moniker(This, mon, NULL, NULL, TRUE); + hres = set_moniker(This, mon, NULL, NULL, NULL, TRUE); IMoniker_Release(mon); if(FAILED(hres)) return hres; @@ -875,7 +888,7 @@ static HRESULT WINAPI PersistStreamInit_InitNew(IPersistStreamInit *iface) }
prepare_for_binding(This, mon, FALSE); - hres = set_moniker(This, mon, NULL, NULL, FALSE); + hres = set_moniker(This, mon, NULL, NULL, NULL, FALSE); IMoniker_Release(mon); if(FAILED(hres)) return hres;