Module: wine Branch: master Commit: 2bffcedc820db2da68ad49d3e15202714b20ac68 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2bffcedc820db2da68ad49d3e1...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Nov 16 12:52:43 2011 +0100
mshtml: Update window URI when its binding is redirected.
---
dlls/mshtml/binding.h | 1 + dlls/mshtml/navigate.c | 11 +++++++++++ dlls/mshtml/nsio.c | 9 +++++++++ 3 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/dlls/mshtml/binding.h b/dlls/mshtml/binding.h index 0b23af7..a392037 100644 --- a/dlls/mshtml/binding.h +++ b/dlls/mshtml/binding.h @@ -112,3 +112,4 @@ HRESULT super_navigate(HTMLWindow*,IUri*,const WCHAR*,BYTE*,DWORD) DECLSPEC_HIDD HRESULT create_channelbsc(IMoniker*,const WCHAR*,BYTE*,DWORD,nsChannelBSC**) DECLSPEC_HIDDEN; HRESULT channelbsc_load_stream(nsChannelBSC*,IStream*) DECLSPEC_HIDDEN; void channelbsc_set_channel(nsChannelBSC*,nsChannel*,nsIStreamListener*,nsISupports*) DECLSPEC_HIDDEN; +IUri *nsuri_get_uri(nsWineURI*); diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c index bb97ee1..fe0d4c6 100644 --- a/dlls/mshtml/navigate.c +++ b/dlls/mshtml/navigate.c @@ -1134,6 +1134,17 @@ static nsresult NSAPI nsAsyncVerifyRedirectCallback_AsyncOnChannelRedirect(nsIAs ERR("AddRequest failed: %08x\n", nsres); }
+ if(This->bsc->window) { + IUri *uri = nsuri_get_uri(This->nschannel->uri); + + if(uri) { + set_current_uri(This->bsc->window, uri); + IUri_Release(uri); + }else { + WARN("Could not get IUri from nsWineURI\n"); + } + } + return NS_OK; }
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index 81dfab7..a5a974f 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -84,6 +84,15 @@ static BOOL ensure_uri(nsWineURI *This) return TRUE; }
+IUri *nsuri_get_uri(nsWineURI *nsuri) +{ + if(!ensure_uri(nsuri)) + return NULL; + + IUri_AddRef(nsuri->uri); + return nsuri->uri; +} + static IUri *get_uri_nofrag(IUri *uri) { IUriBuilder *uri_builder;