Module: wine Branch: master Commit: 5e847895786aed617c2f8ee3d28872c377cf039b URL: http://source.winehq.org/git/wine.git/?a=commit;h=5e847895786aed617c2f8ee3d2...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Jan 20 15:11:06 2012 +0100
mshtml: Added history update notification support.
---
dlls/mshtml/persist.c | 35 ++++++++++++++++++++++++++++++++++- dlls/mshtml/tests/htmldoc.c | 2 +- 2 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c index e66cbcb..6cb7b72 100644 --- a/dlls/mshtml/persist.c +++ b/dlls/mshtml/persist.c @@ -44,6 +44,9 @@
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
+/* Undocumented notification, see tests */ +#define CMDID_EXPLORER_UPDATEHISTORY 38 + typedef struct { task_t header; HTMLDocumentObj *doc; @@ -70,6 +73,35 @@ static BOOL use_gecko_script(HTMLWindow *window) return FAILED(hres) || scheme != URL_SCHEME_ABOUT; }
+static void notify_travellog_update(HTMLDocumentObj *doc) +{ + IOleCommandTarget *cmdtrg; + HRESULT hres; + + if(!doc->is_webbrowser) + return; + + /* Don't notify if we were in about: page */ + if(doc->basedoc.window->uri) { + DWORD scheme; + + hres = IUri_GetScheme(doc->basedoc.window->uri, &scheme); + if(SUCCEEDED(hres) && scheme == URL_SCHEME_ABOUT) + return; + } + + hres = IOleClientSite_QueryInterface(doc->client, &IID_IOleCommandTarget, (void**)&cmdtrg); + if(SUCCEEDED(hres)) { + VARIANT vin; + + V_VT(&vin) = VT_I4; + V_I4(&vin) = 0; + + IOleCommandTarget_Exec(cmdtrg, &CGID_Explorer, CMDID_EXPLORER_UPDATEHISTORY, 0, &vin, NULL); + IOleCommandTarget_Release(cmdtrg); + } +} + void set_current_uri(HTMLWindow *window, IUri *uri) { if(window->uri) { @@ -96,11 +128,12 @@ void set_current_mon(HTMLWindow *This, IMoniker *mon) HRESULT hres;
if(This->mon) { + if(This->doc_obj) + notify_travellog_update(This->doc_obj); IMoniker_Release(This->mon); This->mon = NULL; }
- if(!mon) return;
diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c index 83f44f4..3f356e4 100644 --- a/dlls/mshtml/tests/htmldoc.c +++ b/dlls/mshtml/tests/htmldoc.c @@ -5113,7 +5113,7 @@ static void test_download(DWORD flags) CLEAR_CALLED(Exec_UPDATECOMMANDS); CLEAR_CALLED(Exec_SETTITLE); if(flags & DWL_EXPECT_HISTUPDATE) - todo_wine CHECK_CALLED(Exec_Explorer_38); + CHECK_CALLED(Exec_Explorer_38); todo_wine CHECK_CALLED_BROKEN(UpdateBackForwardState); } if(!is_js) {