Jacek Caban : shdocvw: Use DocHost, not WebBrowser, in navigate_url.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Apr 18 05:13:53 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 470e987d2f05a8bd0d33e17be6c37ca730c4bf84
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=470e987d2f05a8bd0d33e17be6c37ca730c4bf84
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Apr 18 00:44:17 2006 +0200
shdocvw: Use DocHost, not WebBrowser, in navigate_url.
---
dlls/shdocvw/navigate.c | 38 +++++++++++++++++++-------------------
dlls/shdocvw/shdocvw.h | 6 ++----
dlls/shdocvw/webbrowser.c | 2 +-
3 files changed, 22 insertions(+), 24 deletions(-)
diff --git a/dlls/shdocvw/navigate.c b/dlls/shdocvw/navigate.c
index a506e2e..1b6ba87 100644
--- a/dlls/shdocvw/navigate.c
+++ b/dlls/shdocvw/navigate.c
@@ -288,7 +288,7 @@ static const IHttpNegotiateVtbl HttpNego
HttpNegotiate_OnResponse
};
-static IBindStatusCallback *create_callback(WebBrowser *This, PBYTE post_data,
+static IBindStatusCallback *create_callback(DocHost *This, PBYTE post_data,
ULONG post_data_len, LPWSTR headers, VARIANT_BOOL *cancel)
{
BindStatusCallback *ret = HeapAlloc(GetProcessHeap(), 0, sizeof(BindStatusCallback));
@@ -315,7 +315,7 @@ static IBindStatusCallback *create_callb
return BINDSC(ret);
}
-static void on_before_navigate2(WebBrowser *This, LPWSTR url, PBYTE post_data, ULONG post_data_len,
+static void on_before_navigate2(DocHost *This, LPWSTR url, PBYTE post_data, ULONG post_data_len,
LPWSTR headers, VARIANT_BOOL *cancel)
{
VARIANT var_url, var_flags, var_frame_name, var_post_data, var_post_data2, var_headers;
@@ -369,16 +369,16 @@ static void on_before_navigate2(WebBrows
V_BSTR(&var_url) = SysAllocString(url);
V_VT(params+6) = (VT_DISPATCH);
- V_DISPATCH(params+6) = (IDispatch*)WEBBROWSER2(This);
+ V_DISPATCH(params+6) = This->disp;
- call_sink(This->doc_host.cp_wbe2, DISPID_BEFORENAVIGATE2, &dispparams);
+ call_sink(This->cp_wbe2, DISPID_BEFORENAVIGATE2, &dispparams);
SysFreeString(V_BSTR(&var_url));
if(post_data_len)
SafeArrayDestroy(V_ARRAY(&var_post_data));
}
-static HRESULT navigate(WebBrowser *This, IMoniker *mon, IBindCtx *bindctx,
+static HRESULT navigate(DocHost *This, IMoniker *mon, IBindCtx *bindctx,
IBindStatusCallback *callback)
{
IOleObject *oleobj;
@@ -392,7 +392,7 @@ static HRESULT navigate(WebBrowser *This
}
IBindCtx_RegisterObjectParam(bindctx, (LPOLESTR)SZ_HTML_CLIENTSITE_OBJECTPARAM,
- (IUnknown*)CLIENTSITE(&This->doc_host));
+ (IUnknown*)CLIENTSITE(This));
/*
* FIXME:
@@ -400,19 +400,19 @@ static HRESULT navigate(WebBrowser *This
* This should be fixed when mshtml.dll and urlmon.dll will be good enough.
*/
- if(This->doc_host.document)
- deactivate_document(&This->doc_host);
+ if(This->document)
+ deactivate_document(This);
hres = CoCreateInstance(&CLSID_HTMLDocument, NULL,
CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
- &IID_IUnknown, (void**)&This->doc_host.document);
+ &IID_IUnknown, (void**)&This->document);
if(FAILED(hres)) {
ERR("Could not create HTMLDocument: %08lx\n", hres);
return hres;
}
- hres = IUnknown_QueryInterface(This->doc_host.document, &IID_IPersistMoniker, (void**)&persist);
+ hres = IUnknown_QueryInterface(This->document, &IID_IPersistMoniker, (void**)&persist);
if(FAILED(hres))
return hres;
@@ -428,20 +428,20 @@ static HRESULT navigate(WebBrowser *This
return hres;
}
- hres = IUnknown_QueryInterface(This->doc_host.document, &IID_IOleObject, (void**)&oleobj);
+ hres = IUnknown_QueryInterface(This->document, &IID_IOleObject, (void**)&oleobj);
if(FAILED(hres))
return hres;
- hres = IOleObject_SetClientSite(oleobj, CLIENTSITE(&This->doc_host));
+ hres = IOleObject_SetClientSite(oleobj, CLIENTSITE(This));
IOleObject_Release(oleobj);
- PostMessageW(This->doc_host.hwnd, WB_WM_NAVIGATE2, 0, 0);
+ PostMessageW(This->hwnd, WB_WM_NAVIGATE2, 0, 0);
return hres;
}
-HRESULT navigate_url(WebBrowser *This, LPCWSTR url, PBYTE post_data, ULONG post_data_len,
+HRESULT navigate_url(DocHost *This, LPCWSTR url, PBYTE post_data, ULONG post_data_len,
LPWSTR headers)
{
IBindStatusCallback *callback;
@@ -456,8 +456,8 @@ HRESULT navigate_url(WebBrowser *This, L
return hres;
}
- IMoniker_GetDisplayName(mon, NULL, NULL, &This->doc_host.url);
- TRACE("navigating to %s\n", debugstr_w(This->doc_host.url));
+ IMoniker_GetDisplayName(mon, NULL, NULL, &This->url);
+ TRACE("navigating to %s\n", debugstr_w(This->url));
callback = create_callback(This, post_data, post_data_len, (LPWSTR)headers, &cancel);
CreateAsyncBindCtx(0, callback, 0, &bindctx);
@@ -469,7 +469,7 @@ HRESULT navigate_url(WebBrowser *This, L
return hres;
}
-HRESULT navigate_hlink(WebBrowser *This, IMoniker *mon, IBindCtx *bindctx,
+HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx,
IBindStatusCallback *callback)
{
IHttpNegotiate *http_negotiate;
@@ -517,7 +517,7 @@ HRESULT navigate_hlink(WebBrowser *This,
return S_OK;
}
- This->doc_host.url = url;
+ This->url = url;
return navigate(This, mon, bindctx, callback);
}
@@ -586,7 +586,7 @@ static HRESULT WINAPI HlinkFrame_Navigat
return E_NOTIMPL;
}
- return navigate_hlink(This, mon, pbc, pibsc);
+ return navigate_hlink(&This->doc_host, mon, pbc, pibsc);
}
static HRESULT WINAPI HlinkFrame_OnNavigate(IHlinkFrame *iface, DWORD grfHLNF,
diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h
index bb15549..9228478 100644
--- a/dlls/shdocvw/shdocvw.h
+++ b/dlls/shdocvw/shdocvw.h
@@ -51,8 +51,6 @@ extern HRESULT SHDOCVW_GetShellInstanceO
typedef struct ConnectionPoint ConnectionPoint;
-struct WebBrowser;
-
typedef struct {
const IOleClientSiteVtbl *lpOleClientSiteVtbl;
const IOleInPlaceSiteVtbl *lpOleInPlaceSiteVtbl;
@@ -83,7 +81,7 @@ typedef struct {
ConnectionPoint *cp_pns;
} DocHost;
-typedef struct WebBrowser {
+typedef struct {
/* Interfaces available via WebBrowser object */
const IWebBrowser2Vtbl *lpWebBrowser2Vtbl;
@@ -169,7 +167,7 @@ HRESULT WebBrowser_Create(IUnknown*,REFI
void create_doc_view_hwnd(DocHost*);
void deactivate_document(DocHost*);
void call_sink(ConnectionPoint*,DISPID,DISPPARAMS*);
-HRESULT navigate_url(WebBrowser*,LPCWSTR,PBYTE,ULONG,LPWSTR);
+HRESULT navigate_url(DocHost*,LPCWSTR,PBYTE,ULONG,LPWSTR);
#define WB_WM_NAVIGATE2 (WM_USER+100)
diff --git a/dlls/shdocvw/webbrowser.c b/dlls/shdocvw/webbrowser.c
index 6dda296..cb2d284 100644
--- a/dlls/shdocvw/webbrowser.c
+++ b/dlls/shdocvw/webbrowser.c
@@ -615,7 +615,7 @@ static HRESULT WINAPI WebBrowser_Navigat
if(!This->doc_host.hwnd)
create_doc_view_hwnd(&This->doc_host);
- hres = navigate_url(This, V_BSTR(URL), post_data, post_data_len, headers);
+ hres = navigate_url(&This->doc_host, V_BSTR(URL), post_data, post_data_len, headers);
if(post_data)
SafeArrayUnaccessData(V_ARRAY(PostData));
More information about the wine-cvs
mailing list