Jacek Caban : mshtml: Update window URI when its binding is redirected.

Alexandre Julliard julliard at winehq.org
Wed Nov 16 12:46:46 CST 2011


Module: wine
Branch: master
Commit: 2bffcedc820db2da68ad49d3e15202714b20ac68
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2bffcedc820db2da68ad49d3e15202714b20ac68

Author: Jacek Caban <jacek at 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;




More information about the wine-cvs mailing list