Jacek Caban : shdocvw: Move common Navigate2 code to navigate_url.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Oct 20 04:45:44 CDT 2006
Module: wine
Branch: master
Commit: 02b54914e53ed820d369ee105fc946efd454ea4f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=02b54914e53ed820d369ee105fc946efd454ea4f
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Oct 19 23:14:00 2006 +0200
shdocvw: Move common Navigate2 code to navigate_url.
---
dlls/shdocvw/ie.c | 36 +++---------------------------------
dlls/shdocvw/navigate.c | 43 ++++++++++++++++++++++++++++++++++++++++++-
dlls/shdocvw/shdocvw.h | 2 +-
dlls/shdocvw/webbrowser.c | 37 +++----------------------------------
4 files changed, 49 insertions(+), 69 deletions(-)
diff --git a/dlls/shdocvw/ie.c b/dlls/shdocvw/ie.c
index 2c2414b..e4400ec 100644
--- a/dlls/shdocvw/ie.c
+++ b/dlls/shdocvw/ie.c
@@ -442,48 +442,18 @@ static HRESULT WINAPI InternetExplorer_N
VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers)
{
InternetExplorer *This = WEBBROWSER_THIS(iface);
- PBYTE post_data = NULL;
- ULONG post_data_len = 0;
- LPWSTR headers = NULL;
- HRESULT hres;
TRACE("(%p)->(%p %p %p %p %p)\n", This, URL, Flags, TargetFrameName, PostData, Headers);
- if((Flags && V_VT(Flags) != VT_EMPTY)
- || (TargetFrameName && V_VT(TargetFrameName) != VT_EMPTY))
- FIXME("Unsupported arguments\n");
-
if(!URL)
return S_OK;
- if(V_VT(URL) != VT_BSTR)
+ if(V_VT(URL) != VT_BSTR) {
+ FIXME("Unsupported V_VT(URL) %d\n", V_VT(URL));
return E_INVALIDARG;
-
- if(PostData && V_VT(PostData) != VT_EMPTY) {
- if(V_VT(PostData) != (VT_ARRAY | VT_UI1)
- || V_ARRAY(PostData)->cDims != 1) {
- WARN("Invalid PostData\n");
- return E_INVALIDARG;
- }
-
- SafeArrayAccessData(V_ARRAY(PostData), (void**)&post_data);
- post_data_len = V_ARRAY(PostData)->rgsabound[0].cElements;
- }
-
- if(Headers && V_VT(Headers) != VT_EMPTY) {
- if(V_VT(Headers) != VT_BSTR)
- return E_INVALIDARG;
-
- headers = V_BSTR(Headers);
- TRACE("Headers: %s\n", debugstr_w(headers));
}
- hres = navigate_url(&This->doc_host, V_BSTR(URL), post_data, post_data_len, headers);
-
- if(post_data)
- SafeArrayUnaccessData(V_ARRAY(PostData));
-
- return hres;
+ return navigate_url(&This->doc_host, V_BSTR(URL), Flags, TargetFrameName, PostData, Headers);
}
static HRESULT WINAPI InternetExplorer_QueryStatusWB(IWebBrowser2 *iface, OLECMDID cmdID, OLECMDF *pcmdf)
diff --git a/dlls/shdocvw/navigate.c b/dlls/shdocvw/navigate.c
index 7ca73ac..b57df99 100644
--- a/dlls/shdocvw/navigate.c
+++ b/dlls/shdocvw/navigate.c
@@ -476,7 +476,7 @@ static HRESULT navigate(DocHost *This, I
}
-HRESULT navigate_url(DocHost *This, LPCWSTR url, PBYTE post_data, ULONG post_data_len,
+static HRESULT bind_url_to_object(DocHost *This, LPCWSTR url, PBYTE post_data, ULONG post_data_len,
LPWSTR headers)
{
IBindStatusCallback *callback;
@@ -507,6 +507,47 @@ HRESULT navigate_url(DocHost *This, LPCW
return hres;
}
+HRESULT navigate_url(DocHost *This, BSTR url, VARIANT *Flags, VARIANT *TargetFrameName,
+ VARIANT *PostData, VARIANT *Headers)
+{
+ PBYTE post_data = NULL;
+ ULONG post_data_len = 0;
+ LPWSTR headers = NULL;
+ HRESULT hres;
+
+ TRACE("navigating to %s\n", debugstr_w(url));
+
+ if((Flags && V_VT(Flags) != VT_EMPTY)
+ || (TargetFrameName && V_VT(TargetFrameName) != VT_EMPTY))
+ FIXME("Unsupported arguments\n");
+
+ if(PostData && V_VT(PostData) != VT_EMPTY && V_VT(PostData) != VT_ERROR) {
+ if(V_VT(PostData) != (VT_ARRAY | VT_UI1)
+ || V_ARRAY(PostData)->cDims != 1) {
+ WARN("Invalid PostData\n");
+ return E_INVALIDARG;
+ }
+
+ SafeArrayAccessData(V_ARRAY(PostData), (void**)&post_data);
+ post_data_len = V_ARRAY(PostData)->rgsabound[0].cElements;
+ }
+
+ if(Headers && V_VT(Headers) != VT_EMPTY && V_VT(Headers) != VT_ERROR) {
+ if(V_VT(Headers) != VT_BSTR)
+ return E_INVALIDARG;
+
+ headers = V_BSTR(Headers);
+ TRACE("Headers: %s\n", debugstr_w(headers));
+ }
+
+ hres = bind_url_to_object(This, url, post_data, post_data_len, headers);
+
+ if(post_data)
+ SafeArrayUnaccessData(V_ARRAY(PostData));
+
+ return hres;
+}
+
HRESULT navigate_hlink(DocHost *This, IMoniker *mon, IBindCtx *bindctx,
IBindStatusCallback *callback)
{
diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h
index a022eb2..e8ca951 100644
--- a/dlls/shdocvw/shdocvw.h
+++ b/dlls/shdocvw/shdocvw.h
@@ -192,7 +192,7 @@ HRESULT WebBrowserV2_Create(IUnknown*,RE
void create_doc_view_hwnd(DocHost*);
void deactivate_document(DocHost*);
void call_sink(ConnectionPoint*,DISPID,DISPPARAMS*);
-HRESULT navigate_url(DocHost*,LPCWSTR,PBYTE,ULONG,LPWSTR);
+HRESULT navigate_url(DocHost*,BSTR,VARIANT*,VARIANT*,VARIANT*,VARIANT*);
HRESULT InternetExplorer_Create(IUnknown*,REFIID,void**);
void InternetExplorer_WebBrowser_Init(InternetExplorer*);
diff --git a/dlls/shdocvw/webbrowser.c b/dlls/shdocvw/webbrowser.c
index 20fb8bf..47483c1 100644
--- a/dlls/shdocvw/webbrowser.c
+++ b/dlls/shdocvw/webbrowser.c
@@ -660,52 +660,21 @@ static HRESULT WINAPI WebBrowser_Navigat
VARIANT *TargetFrameName, VARIANT *PostData, VARIANT *Headers)
{
WebBrowser *This = WEBBROWSER_THIS(iface);
- PBYTE post_data = NULL;
- ULONG post_data_len = 0;
- LPWSTR headers = NULL;
- HRESULT hres;
TRACE("(%p)->(%p %p %p %p %p)\n", This, URL, Flags, TargetFrameName, PostData, Headers);
if(!This->client)
return E_FAIL;
- if((Flags && V_VT(Flags) != VT_EMPTY)
- || (TargetFrameName && V_VT(TargetFrameName) != VT_EMPTY))
- FIXME("Unsupported arguments\n");
-
-
if(!URL)
return S_OK;
- if(V_VT(URL) != VT_BSTR)
+ if(V_VT(URL) != VT_BSTR) {
+ FIXME("Unsupported V_VT(URL) %d\n", V_VT(URL));
return E_INVALIDARG;
-
- if(PostData && V_VT(PostData) != VT_EMPTY && V_VT(PostData) != VT_ERROR) {
- if(V_VT(PostData) != (VT_ARRAY | VT_UI1)
- || V_ARRAY(PostData)->cDims != 1) {
- WARN("Invalid PostData\n");
- return E_INVALIDARG;
- }
-
- SafeArrayAccessData(V_ARRAY(PostData), (void**)&post_data);
- post_data_len = V_ARRAY(PostData)->rgsabound[0].cElements;
}
- if(Headers && V_VT(Headers) != VT_EMPTY && V_VT(Headers) != VT_ERROR) {
- if(V_VT(Headers) != VT_BSTR)
- return E_INVALIDARG;
-
- headers = V_BSTR(Headers);
- TRACE("Headers: %s\n", debugstr_w(headers));
- }
-
- hres = navigate_url(&This->doc_host, V_BSTR(URL), post_data, post_data_len, headers);
-
- if(post_data)
- SafeArrayUnaccessData(V_ARRAY(PostData));
-
- return hres;
+ return navigate_url(&This->doc_host, V_BSTR(URL), Flags, TargetFrameName, PostData, Headers);
}
static HRESULT WINAPI WebBrowser_QueryStatusWB(IWebBrowser2 *iface, OLECMDID cmdID, OLECMDF *pcmdf)
More information about the wine-cvs
mailing list