Jacek Caban : mshtml: Added IViewObject::SetSink tests.

Alexandre Julliard julliard at winehq.org
Mon Feb 15 10:06:18 CST 2010


Module: wine
Branch: master
Commit: 38933b1a31b1a389f78a65430e79e03f3983ff13
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=38933b1a31b1a389f78a65430e79e03f3983ff13

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Feb 15 16:04:06 2010 +0100

mshtml: Added IViewObject::SetSink tests.

---

 dlls/mshtml/tests/htmldoc.c |  104 ++++++++++++++++++++++++++++++++++++-------
 1 files changed, 87 insertions(+), 17 deletions(-)

diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index 1cb18c1..d49a6ff 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -152,6 +152,7 @@ DEFINE_EXPECT(Frame_EnableModeless_FALSE);
 DEFINE_EXPECT(Frame_GetWindow);
 DEFINE_EXPECT(TranslateUrl);
 DEFINE_EXPECT(Advise_Close);
+DEFINE_EXPECT(OnViewChange);
 
 static IUnknown *doc_unk;
 static IMoniker *doc_mon;
@@ -2678,50 +2679,60 @@ static const IServiceProviderVtbl ServiceProviderVtbl = {
 
 static IServiceProvider ServiceProvider = { &ServiceProviderVtbl };
 
-static HRESULT WINAPI AdviseSink_QueryInterface(IAdviseSink *iface,
+static HRESULT WINAPI AdviseSink_QueryInterface(IAdviseSinkEx *iface,
         REFIID riid, void **ppv)
 {
     return QueryInterface(riid, ppv);
 }
 
-static ULONG WINAPI AdviseSink_AddRef(IAdviseSink *iface)
+static ULONG WINAPI AdviseSink_AddRef(IAdviseSinkEx *iface)
 {
     return 2;
 }
 
-static ULONG WINAPI AdviseSink_Release(IAdviseSink *iface)
+static ULONG WINAPI AdviseSink_Release(IAdviseSinkEx *iface)
 {
     return 1;
 }
 
-static void WINAPI AdviseSink_OnDataChange(IAdviseSink *iface,
+static void WINAPI AdviseSink_OnDataChange(IAdviseSinkEx *iface,
         FORMATETC *pFormatetc, STGMEDIUM *pStgmed)
 {
     ok(0, "unexpected call\n");
 }
 
-static void WINAPI AdviseSink_OnViewChange(IAdviseSink *iface,
+static void WINAPI AdviseSink_OnViewChange(IAdviseSinkEx *iface,
         DWORD dwAspect, LONG lindex)
 {
     ok(0, "unexpected call\n");
 }
 
-static void WINAPI AdviseSink_OnRename(IAdviseSink *iface, IMoniker *pmk)
+static void WINAPI AdviseSink_OnRename(IAdviseSinkEx *iface, IMoniker *pmk)
 {
     ok(0, "unexpected call\n");
 }
 
-static void WINAPI AdviseSink_OnSave(IAdviseSink *iface)
+static void WINAPI AdviseSink_OnSave(IAdviseSinkEx *iface)
 {
     ok(0, "unexpected call\n");
 }
 
-static void WINAPI AdviseSink_OnClose(IAdviseSink *iface)
+static void WINAPI AdviseSink_OnClose(IAdviseSinkEx *iface)
+{
+    ok(0, "unexpected call\n");
+}
+
+static void WINAPI AdviseSinkEx_OnViewStatusChange(IAdviseSinkEx *iface, DWORD dwViewStatus)
+{
+    ok(0, "unexpected call\n");
+}
+
+static void WINAPI ObjectAdviseSink_OnClose(IAdviseSinkEx *iface)
 {
     CHECK_EXPECT(Advise_Close);
 }
 
-static const IAdviseSinkVtbl AdviseSinkVtbl = {
+static const IAdviseSinkExVtbl AdviseSinkVtbl = {
     AdviseSink_QueryInterface,
     AdviseSink_AddRef,
     AdviseSink_Release,
@@ -2729,10 +2740,47 @@ static const IAdviseSinkVtbl AdviseSinkVtbl = {
     AdviseSink_OnViewChange,
     AdviseSink_OnRename,
     AdviseSink_OnSave,
-    AdviseSink_OnClose
+    ObjectAdviseSink_OnClose,
+    AdviseSinkEx_OnViewStatusChange
+};
+
+static IAdviseSinkEx AdviseSink = { &AdviseSinkVtbl };
+
+static HRESULT WINAPI ViewAdviseSink_QueryInterface(IAdviseSinkEx *iface,
+        REFIID riid, void **ppv)
+{
+    if(IsEqualGUID(&IID_IAdviseSinkEx, riid)) {
+        *ppv = iface;
+        return S_OK;
+    }
+
+    ok(0, "unexpected riid %s\n", debugstr_guid(riid));
+    *ppv = NULL;
+    return E_NOINTERFACE;
+}
+
+static void WINAPI ViewAdviseSink_OnViewChange(IAdviseSinkEx *iface,
+        DWORD dwAspect, LONG lindex)
+{
+    CHECK_EXPECT2(OnViewChange);
+
+    ok(dwAspect == DVASPECT_CONTENT, "dwAspect = %d\n", dwAspect);
+    ok(lindex == -1, "lindex = %d\n", lindex);
+}
+
+static const IAdviseSinkExVtbl ViewAdviseSinkVtbl = {
+    ViewAdviseSink_QueryInterface,
+    AdviseSink_AddRef,
+    AdviseSink_Release,
+    AdviseSink_OnDataChange,
+    ViewAdviseSink_OnViewChange,
+    AdviseSink_OnRename,
+    AdviseSink_OnSave,
+    AdviseSink_OnClose,
+    AdviseSinkEx_OnViewStatusChange
 };
 
-static IAdviseSink AdviseSink = { &AdviseSinkVtbl };
+static IAdviseSinkEx ViewAdviseSink = { &ViewAdviseSinkVtbl };
 
 DEFINE_GUID(IID_unk1, 0xD48A6EC6,0x6A4A,0x11CF,0x94,0xA7,0x44,0x45,0x53,0x54,0x00,0x00); /* HTMLWindow2 ? */
 DEFINE_GUID(IID_IThumbnailView, 0x7BB0B520,0xB1A7,0x11D2,0xBB,0x23,0x00,0xC0,0x4F,0x79,0xAB,0xCD);
@@ -2919,6 +2967,20 @@ static void _test_readyState(unsigned line, IUnknown *unk)
     IHTMLDocument2_Release(htmldoc);
 }
 
+static void test_ViewAdviseSink(IHTMLDocument2 *doc)
+{
+    IViewObject *view;
+    HRESULT hres;
+
+    hres = IHTMLDocument2_QueryInterface(doc, &IID_IViewObject, (void**)&view);
+    ok(hres == S_OK, "QueryInterface(IID_IViewObject) failed: %08x\n", hres);
+
+    hres = IViewObject_SetAdvise(view, DVASPECT_CONTENT, ADVF_PRIMEFIRST, (IAdviseSink*)&ViewAdviseSink);
+    ok(hres == S_OK, "SetAdvise failed: %08x\n", hres);
+
+    IViewObject_Release(view);
+}
+
 static void test_ConnectionPoint(IConnectionPointContainer *container, REFIID riid)
 {
     IConnectionPointContainer *tmp_container = NULL;
@@ -3100,6 +3162,7 @@ static void test_download(DWORD flags)
     SET_EXPECT(SetStatusText);
     if(!(flags & DWL_EMPTY))
         SET_EXPECT(Exec_SETDOWNLOADSTATE_1);
+    SET_EXPECT(OnViewChange);
     SET_EXPECT(GetDropTarget);
     if(flags & DWL_TRYCSS)
         SET_EXPECT(Exec_ShellDocView_84);
@@ -3148,6 +3211,7 @@ static void test_download(DWORD flags)
     CHECK_CALLED(SetStatusText);
     if(!(flags & DWL_EMPTY))
         CHECK_CALLED(Exec_SETDOWNLOADSTATE_1);
+    CHECK_CALLED(OnViewChange);
     CHECK_CALLED(GetDropTarget);
     if(flags & DWL_TRYCSS)
         SET_CALLED(Exec_ShellDocView_84);
@@ -3845,14 +3909,14 @@ static void test_Advise(IHTMLDocument2 *doc)
     ok(hres == E_INVALIDARG || hres == S_OK, "Advise returned: %08x\n", hres);
     ok(conn == 0 || conn == 1, "conn = %d\n", conn);
 
-    hres = IOleObject_Advise(oleobj, &AdviseSink, NULL);
+    hres = IOleObject_Advise(oleobj, (IAdviseSink*)&AdviseSink, NULL);
     ok(hres == E_INVALIDARG, "Advise returned: %08x\n", hres);
 
-    hres = IOleObject_Advise(oleobj, &AdviseSink, &conn);
+    hres = IOleObject_Advise(oleobj, (IAdviseSink*)&AdviseSink, &conn);
     ok(hres == S_OK, "Advise returned: %08x\n", hres);
     ok(conn == 1, "conn = %d\n", conn);
 
-    hres = IOleObject_Advise(oleobj, &AdviseSink, &conn);
+    hres = IOleObject_Advise(oleobj, (IAdviseSink*)&AdviseSink, &conn);
     ok(hres == S_OK, "Advise returned: %08x\n", hres);
     ok(conn == 2, "conn = %d\n", conn);
 
@@ -4281,6 +4345,7 @@ static void test_HTMLDocument(BOOL do_load)
     test_IsDirty(doc, S_FALSE);
     test_MSHTML_QueryStatus(doc, OLECMDF_SUPPORTED);
     test_external(doc, FALSE);
+    test_ViewAdviseSink(doc);
     test_ConnectionPointContainer(doc);
     test_GetCurMoniker((IUnknown*)doc, NULL, NULL);
     test_Persist(doc, &Moniker);
@@ -4376,6 +4441,7 @@ static void test_HTMLDocument_hlink(void)
         return;
     doc_unk = (IUnknown*)doc;
 
+    test_ViewAdviseSink(doc);
     test_ConnectionPointContainer(doc);
     test_GetCurMoniker((IUnknown*)doc, NULL, NULL);
     test_Persist(doc, &Moniker);
@@ -4476,6 +4542,7 @@ static void test_HTMLDocument_http(void)
     hres = CreateURLMoniker(NULL, http_urlW, &http_mon);
     ok(hres == S_OK, "CreateURLMoniker failed: %08x\n", hres);
 
+    test_ViewAdviseSink(doc);
     test_ConnectionPointContainer(doc);
     test_GetCurMoniker((IUnknown*)doc, NULL, NULL);
     test_Persist(doc, http_mon);
@@ -4551,11 +4618,12 @@ static void test_HTMLDocument_StreamLoad(void)
     hres = IUnknown_QueryInterface(doc, &IID_IOleObject, (void**)&oleobj);
     ok(hres == S_OK, "Could not get IOleObject: %08x\n", hres);
 
-    hres = IOleObject_Advise(oleobj, &AdviseSink, &conn);
+    hres = IOleObject_Advise(oleobj, (IAdviseSink*)&AdviseSink, &conn);
     ok(hres == S_OK, "Advise failed: %08x\n", hres);
 
     test_readyState((IUnknown*)doc);
     test_IsDirty(doc, S_FALSE);
+    test_ViewAdviseSink(doc);
     test_ConnectionPointContainer(doc);
     test_QueryService(doc, FALSE);
     test_ClientSite(oleobj, CLIENTSITE_EXPECTPATH);
@@ -4608,11 +4676,12 @@ static void test_HTMLDocument_StreamInitNew(void)
     hres = IUnknown_QueryInterface(doc, &IID_IOleObject, (void**)&oleobj);
     ok(hres == S_OK, "Could not get IOleObject: %08x\n", hres);
 
-    hres = IOleObject_Advise(oleobj, &AdviseSink, &conn);
+    hres = IOleObject_Advise(oleobj, (IAdviseSink*)&AdviseSink, &conn);
     ok(hres == S_OK, "Advise failed: %08x\n", hres);
 
     test_readyState((IUnknown*)doc);
     test_IsDirty(doc, S_FALSE);
+    test_ViewAdviseSink(doc);
     test_ConnectionPointContainer(doc);
     test_ClientSite(oleobj, CLIENTSITE_EXPECTPATH);
     test_DoVerb(oleobj);
@@ -4691,10 +4760,11 @@ static void test_editing_mode(BOOL do_load)
     hres = IUnknown_QueryInterface(doc, &IID_IOleObject, (void**)&oleobj);
     ok(hres == S_OK, "Could not get IOleObject: %08x\n", hres);
 
-    hres = IOleObject_Advise(oleobj, &AdviseSink, &conn);
+    hres = IOleObject_Advise(oleobj, (IAdviseSink*)&AdviseSink, &conn);
     ok(hres == S_OK, "Advise failed: %08x\n", hres);
 
     test_readyState((IUnknown*)doc);
+    test_ViewAdviseSink(doc);
     test_ConnectionPointContainer(doc);
     test_ClientSite(oleobj, CLIENTSITE_EXPECTPATH);
     test_DoVerb(oleobj);




More information about the wine-cvs mailing list