Alistair Leslie-Hughes : shdocvw: OnAmbientPropertyChange should refresh all properties with a DISPID_UNKNOWN .
Alexandre Julliard
julliard at winehq.org
Tue Feb 3 09:13:35 CST 2009
Module: wine
Branch: master
Commit: 69a8066b18d07197da0e756c3f5be73283db70df
URL: http://source.winehq.org/git/wine.git/?a=commit;h=69a8066b18d07197da0e756c3f5be73283db70df
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Tue Feb 3 20:41:16 2009 +1100
shdocvw: OnAmbientPropertyChange should refresh all properties with a DISPID_UNKNOWN.
---
dlls/shdocvw/oleobject.c | 5 +++++
dlls/shdocvw/tests/webbrowser.c | 26 ++++++++++++++++++++++++++
2 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/dlls/shdocvw/oleobject.c b/dlls/shdocvw/oleobject.c
index 198ff2a..cd5e605 100644
--- a/dlls/shdocvw/oleobject.c
+++ b/dlls/shdocvw/oleobject.c
@@ -718,6 +718,11 @@ static HRESULT WINAPI OleControl_OnAmbientPropertyChange(IOleControl *iface, DIS
TRACE("(%p)->(%d)\n", This, dispID);
switch(dispID) {
+ case DISPID_UNKNOWN:
+ /* Unknown means multiple properties changed, so check them all. */
+ on_offlineconnected_change(This);
+ on_silent_change(This);
+ return S_OK;
case DISPID_AMBIENT_OFFLINEIFNOTCONNECTED:
return on_offlineconnected_change(This);
case DISPID_AMBIENT_SILENT:
diff --git a/dlls/shdocvw/tests/webbrowser.c b/dlls/shdocvw/tests/webbrowser.c
index 5b04119..27cd353 100644
--- a/dlls/shdocvw/tests/webbrowser.c
+++ b/dlls/shdocvw/tests/webbrowser.c
@@ -1773,6 +1773,31 @@ static void test_Offline(IWebBrowser2 *wb, IOleControl *control, BOOL is_clients
ok(b == VARIANT_FALSE, "b=%x\n", b);
}
+static void test_ambient_unknown(IWebBrowser2 *wb, IOleControl *control, BOOL is_clientsite)
+{
+ HRESULT hres;
+
+ SET_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
+ SET_EXPECT(Invoke_AMBIENT_SILENT);
+ SET_EXPECT(Invoke_AMBIENT_USERMODE);
+ SET_EXPECT(Invoke_AMBIENT_DLCONTROL);
+ SET_EXPECT(Invoke_AMBIENT_USERAGENT);
+ SET_EXPECT(Invoke_AMBIENT_PALETTE);
+
+ hres = IOleControl_OnAmbientPropertyChange(control, DISPID_UNKNOWN);
+ ok(hres == S_OK, "OnAmbientPropertyChange failed %08x\n", hres);
+
+ if(is_clientsite)
+ {
+ CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
+ CHECK_CALLED(Invoke_AMBIENT_SILENT);
+ todo_wine CHECK_CALLED(Invoke_AMBIENT_USERMODE);
+ todo_wine CHECK_CALLED(Invoke_AMBIENT_DLCONTROL);
+ todo_wine CHECK_CALLED(Invoke_AMBIENT_USERAGENT);
+ todo_wine CHECK_CALLED(Invoke_AMBIENT_PALETTE);
+ }
+}
+
static void test_wb_funcs(IUnknown *unk, BOOL is_clientsite)
{
IWebBrowser2 *wb;
@@ -1787,6 +1812,7 @@ static void test_wb_funcs(IUnknown *unk, BOOL is_clientsite)
test_Silent(wb, control, is_clientsite);
test_Offline(wb, control, is_clientsite);
+ test_ambient_unknown(wb, control, is_clientsite);
IWebBrowser_Release(wb);
IOleControl_Release(control);
More information about the wine-cvs
mailing list