Jacek Caban : mshtml: Use flags in navigation functions.

Alexandre Julliard julliard at winehq.org
Fri Nov 9 11:03:23 CST 2012


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Nov  8 18:17:35 2012 +0100

mshtml: Use flags in navigation functions.

---

 dlls/mshtml/binding.h    |    7 +++++--
 dlls/mshtml/htmlwindow.c |    2 +-
 dlls/mshtml/navigate.c   |   12 ++++++------
 dlls/mshtml/persist.c    |   12 ++++++------
 4 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/dlls/mshtml/binding.h b/dlls/mshtml/binding.h
index f0e1cd5..fda318b 100644
--- a/dlls/mshtml/binding.h
+++ b/dlls/mshtml/binding.h
@@ -98,6 +98,9 @@ typedef struct {
     WCHAR *data;
 } http_header_t;
 
+#define BINDING_NAVIGATED    0x0001
+#define BINDING_REPLACE      0x0002
+
 HRESULT set_http_header(struct list*,const WCHAR*,int,const WCHAR*,int) DECLSPEC_HIDDEN;
 HRESULT create_redirect_nschannel(const WCHAR*,nsChannel*,nsChannel**) DECLSPEC_HIDDEN;
 
@@ -106,8 +109,8 @@ HRESULT hlink_frame_navigate(HTMLDocument*,LPCWSTR,nsChannel*,DWORD,BOOL*) DECLS
 HRESULT create_doc_uri(HTMLOuterWindow*,const WCHAR*,nsWineURI**) DECLSPEC_HIDDEN;
 HRESULT load_nsuri(HTMLOuterWindow*,nsWineURI*,nsChannelBSC*,DWORD) DECLSPEC_HIDDEN;
 HRESULT set_moniker(HTMLDocument*,IMoniker*,IBindCtx*,nsChannelBSC*,BOOL) DECLSPEC_HIDDEN;
-void prepare_for_binding(HTMLDocument*,IMoniker*,BOOL) DECLSPEC_HIDDEN;
-HRESULT super_navigate(HTMLOuterWindow*,IUri*,const WCHAR*,BYTE*,DWORD) DECLSPEC_HIDDEN;
+void prepare_for_binding(HTMLDocument*,IMoniker*,DWORD) DECLSPEC_HIDDEN;
+HRESULT super_navigate(HTMLOuterWindow*,IUri*,DWORD,const WCHAR*,BYTE*,DWORD) DECLSPEC_HIDDEN;
 HRESULT navigate_new_window(HTMLOuterWindow*,IUri*,const WCHAR*,IHTMLWindow2**) DECLSPEC_HIDDEN;
 
 HRESULT create_channelbsc(IMoniker*,const WCHAR*,BYTE*,DWORD,BOOL,nsChannelBSC**) DECLSPEC_HIDDEN;
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index 0c3d7df..1696ed5 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -2098,7 +2098,7 @@ static HRESULT WINAPI HTMLPrivateWindow_SuperNavigate(IHTMLPrivateWindow *iface,
         headers = V_BSTR(headers_var);
     }
 
-    hres = super_navigate(window, uri, headers, post_data, post_data_size);
+    hres = super_navigate(window, uri, BINDING_NAVIGATED, headers, post_data, post_data_size);
     IUri_Release(uri);
     if(post_data)
         SafeArrayUnaccessData(V_ARRAY(post_data_var));
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c
index 18961f6..e92440e 100644
--- a/dlls/mshtml/navigate.c
+++ b/dlls/mshtml/navigate.c
@@ -2044,7 +2044,7 @@ static HRESULT navigate_fragment(HTMLOuterWindow *window, IUri *uri)
     return S_OK;
 }
 
-HRESULT super_navigate(HTMLOuterWindow *window, IUri *uri, const WCHAR *headers, BYTE *post_data, DWORD post_data_size)
+HRESULT super_navigate(HTMLOuterWindow *window, IUri *uri, DWORD flags, const WCHAR *headers, BYTE *post_data, DWORD post_data_size)
 {
     nsChannelBSC *bsc;
     IUri *uri_nofrag;
@@ -2104,7 +2104,7 @@ HRESULT super_navigate(HTMLOuterWindow *window, IUri *uri, const WCHAR *headers,
         return hres;
     }
 
-    prepare_for_binding(&window->doc_obj->basedoc, mon, TRUE);
+    prepare_for_binding(&window->doc_obj->basedoc, mon, flags);
 
     hres = IUri_GetScheme(uri, &scheme);
     if(SUCCEEDED(hres) && scheme != URL_SCHEME_JAVASCRIPT) {
@@ -2234,7 +2234,7 @@ HRESULT hlink_frame_navigate(HTMLDocument *doc, LPCWSTR url, nsChannel *nschanne
 
     hres = CreateAsyncBindCtx(0, &callback->bsc.IBindStatusCallback_iface, NULL, &bindctx);
     if(SUCCEEDED(hres))
-        hres = CoCreateInstance(&CLSID_StdHlink, NULL, CLSCTX_INPROC_SERVER,
+       hres = CoCreateInstance(&CLSID_StdHlink, NULL, CLSCTX_INPROC_SERVER,
                 &IID_IHlink, (LPVOID*)&hlink);
 
     if(SUCCEEDED(hres))
@@ -2261,7 +2261,7 @@ HRESULT hlink_frame_navigate(HTMLDocument *doc, LPCWSTR url, nsChannel *nschanne
     return hres;
 }
 
-static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *display_uri)
+static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *display_uri, DWORD flags)
 {
     nsWineURI *nsuri;
     HRESULT hres;
@@ -2276,7 +2276,7 @@ static HRESULT navigate_uri(HTMLOuterWindow *window, IUri *uri, const WCHAR *dis
             return S_OK;
         }
 
-        return super_navigate(window, uri, NULL, NULL, 0);
+        return super_navigate(window, uri, flags, NULL, NULL, 0);
     }
 
     if(window->doc_obj && window == window->doc_obj->basedoc.window) {
@@ -2343,7 +2343,7 @@ HRESULT navigate_url(HTMLOuterWindow *window, const WCHAR *new_url, IUri *base_u
         }
     }
 
-    hres = navigate_uri(window, uri, display_uri);
+    hres = navigate_uri(window, uri, display_uri, BINDING_NAVIGATED);
 
     IUri_Release(uri);
     SysFreeString(display_uri);
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c
index aa31067..2fe1cfe 100644
--- a/dlls/mshtml/persist.c
+++ b/dlls/mshtml/persist.c
@@ -292,7 +292,7 @@ static void set_downloading_task_destr(task_t *_task)
     heap_free(task);
 }
 
-void prepare_for_binding(HTMLDocument *This, IMoniker *mon, BOOL navigated_binding)
+void prepare_for_binding(HTMLDocument *This, IMoniker *mon, DWORD flags)
 {
     HRESULT hres;
 
@@ -332,17 +332,17 @@ void prepare_for_binding(HTMLDocument *This, IMoniker *mon, BOOL navigated_bindi
         if(SUCCEEDED(hres)) {
             VARIANT var, out;
 
-            if(!navigated_binding) {
-                V_VT(&var) = VT_I4;
-                V_I4(&var) = 0;
-                IOleCommandTarget_Exec(cmdtrg, &CGID_ShellDocView, 37, 0, &var, NULL);
-            }else {
+            if(flags & BINDING_NAVIGATED) {
                 V_VT(&var) = VT_UNKNOWN;
                 V_UNKNOWN(&var) = (IUnknown*)&This->window->base.IHTMLWindow2_iface;
                 V_VT(&out) = VT_EMPTY;
                 hres = IOleCommandTarget_Exec(cmdtrg, &CGID_ShellDocView, 63, 0, &var, &out);
                 if(SUCCEEDED(hres))
                     VariantClear(&out);
+            }else {
+                V_VT(&var) = VT_I4;
+                V_I4(&var) = 0;
+                IOleCommandTarget_Exec(cmdtrg, &CGID_ShellDocView, 37, 0, &var, NULL);
             }
 
             IOleCommandTarget_Release(cmdtrg);




More information about the wine-cvs mailing list