Module: wine Branch: master Commit: 02b54914e53ed820d369ee105fc946efd454ea4f URL: http://source.winehq.org/git/wine.git/?a=commit;h=02b54914e53ed820d369ee105f...
Author: Jacek Caban jacek@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)