Module: wine Branch: master Commit: 37c8166b8a80e6f3b11ba1464e9ec6d7e75ed07e URL: http://source.winehq.org/git/wine.git/?a=commit;h=37c8166b8a80e6f3b11ba1464e...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Aug 14 16:30:57 2015 +0200
ieframe: Added support for DownloadBegin and DownloadComplete events.
---
dlls/ieframe/dochost.c | 7 +++++-- dlls/ieframe/ieframe.h | 1 + dlls/ieframe/navigate.c | 8 ++++++++ dlls/ieframe/tests/webbrowser.c | 2 +- 4 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/dlls/ieframe/dochost.c b/dlls/ieframe/dochost.c index 55c1dfe..3c7afb6 100644 --- a/dlls/ieframe/dochost.c +++ b/dlls/ieframe/dochost.c @@ -646,8 +646,11 @@ static HRESULT WINAPI ClOleCommandTarget_Exec(IOleCommandTarget *iface, if(This->olecmd) return IOleCommandTarget_Exec(This->olecmd, pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut);
- FIXME("Default action not implemented.\n"); - return E_NOTIMPL; + if(!pvaIn || V_VT(pvaIn) != VT_I4) + return E_INVALIDARG; + + notify_download_state(This, V_I4(pvaIn)); + return S_OK; default: FIXME("Unimplemented cmdid %d\n", nCmdID); return E_NOTIMPL; diff --git a/dlls/ieframe/ieframe.h b/dlls/ieframe/ieframe.h index 031cfae..057c2f6 100644 --- a/dlls/ieframe/ieframe.h +++ b/dlls/ieframe/ieframe.h @@ -277,6 +277,7 @@ void set_doc_state(DocHost*,READYSTATE) DECLSPEC_HIDDEN; void deactivate_document(DocHost*) DECLSPEC_HIDDEN; void create_doc_view_hwnd(DocHost*) DECLSPEC_HIDDEN; void on_commandstate_change(DocHost*,LONG,VARIANT_BOOL) DECLSPEC_HIDDEN; +void notify_download_state(DocHost*,BOOL) DECLSPEC_HIDDEN;
#define WM_DOCHOSTTASK (WM_USER+0x300) void push_dochost_task(DocHost*,task_header_t*,task_proc_t,task_destr_t,BOOL) DECLSPEC_HIDDEN; diff --git a/dlls/ieframe/navigate.c b/dlls/ieframe/navigate.c index b1753a6..93d3f07 100644 --- a/dlls/ieframe/navigate.c +++ b/dlls/ieframe/navigate.c @@ -146,6 +146,13 @@ HRESULT set_dochost_url(DocHost *This, const WCHAR *url) return S_OK; }
+void notify_download_state(DocHost *dochost, BOOL is_downloading) +{ + DISPPARAMS dwl_dp = {NULL}; + TRACE("(%x)\n", is_downloading); + call_sink(dochost->cps.wbe2, is_downloading ? DISPID_DOWNLOADBEGIN : DISPID_DOWNLOADCOMPLETE, &dwl_dp); +} + static inline BindStatusCallback *impl_from_IBindStatusCallback(IBindStatusCallback *iface) { return CONTAINING_RECORD(iface, BindStatusCallback, IBindStatusCallback_iface); @@ -896,6 +903,7 @@ static HRESULT navigate_bsc(DocHost *This, BindStatusCallback *bsc, IMoniker *mo return S_OK; }
+ notify_download_state(This, TRUE); on_commandstate_change(This, CSC_NAVIGATEBACK, VARIANT_FALSE); on_commandstate_change(This, CSC_NAVIGATEFORWARD, VARIANT_FALSE);
diff --git a/dlls/ieframe/tests/webbrowser.c b/dlls/ieframe/tests/webbrowser.c index aa90755..36994a4 100644 --- a/dlls/ieframe/tests/webbrowser.c +++ b/dlls/ieframe/tests/webbrowser.c @@ -2718,7 +2718,7 @@ static void test_Navigate2(IWebBrowser2 *webbrowser, const char *nav_url) CHECK_CALLED(Invoke_AMBIENT_USERMODE); todo_wine CHECK_CALLED(Invoke_PROPERTYCHANGE); CHECK_CALLED(Invoke_BEFORENAVIGATE2); - todo_wine CHECK_CALLED(Invoke_DOWNLOADBEGIN); + CHECK_CALLED(Invoke_DOWNLOADBEGIN); if (use_container_olecmd) todo_wine CHECK_CALLED(Exec_SETDOWNLOADSTATE_1); CHECK_CALLED(EnableModeless_FALSE); CHECK_CALLED(Invoke_STATUSTEXTCHANGE);