Jacek Caban : mshtml: Added history update notification support.
Alexandre Julliard
julliard at winehq.org
Fri Jan 20 13:09:31 CST 2012
Module: wine
Branch: master
Commit: 5e847895786aed617c2f8ee3d28872c377cf039b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5e847895786aed617c2f8ee3d28872c377cf039b
Author: Jacek Caban <jacek at 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) {
More information about the wine-cvs
mailing list