Jacek Caban : mshtml: Added IPersistPropertyBag calls test.

Alexandre Julliard julliard at winehq.org
Fri Dec 10 11:57:01 CST 2010


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Dec 10 16:35:59 2010 +0100

mshtml: Added IPersistPropertyBag calls test.

---

 dlls/mshtml/tests/activex.c |   84 +++++++++++++++++++++++++++++++++++--------
 1 files changed, 69 insertions(+), 15 deletions(-)

diff --git a/dlls/mshtml/tests/activex.c b/dlls/mshtml/tests/activex.c
index 9984ae0..8e46a25 100644
--- a/dlls/mshtml/tests/activex.c
+++ b/dlls/mshtml/tests/activex.c
@@ -60,6 +60,8 @@ DEFINE_EXPECT(CreateInstance);
 DEFINE_EXPECT(FreezeEvents_TRUE);
 DEFINE_EXPECT(FreezeEvents_FALSE);
 DEFINE_EXPECT(QuickActivate);
+DEFINE_EXPECT(IPersistPropertyBag_InitNew);
+DEFINE_EXPECT(IPersistPropertyBag_Load);
 
 static HWND container_hwnd;
 
@@ -68,18 +70,6 @@ static HWND container_hwnd;
 static const GUID CLSID_TestActiveX =
     {0x178fc163,0xf585,0x4e24,{0x9c,0x13,0x4b,0xb7,0xf6,0x68,0x07,0x46}};
 
-static const char *debugstr_guid(REFIID riid)
-{
-    static char buf[50];
-
-    sprintf(buf, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
-            riid->Data1, riid->Data2, riid->Data3, riid->Data4[0],
-            riid->Data4[1], riid->Data4[2], riid->Data4[3], riid->Data4[4],
-            riid->Data4[5], riid->Data4[6], riid->Data4[7]);
-
-    return buf;
-}
-
 static const char object_ax_str[] =
     "<html><head></head><body>"
     "<object classid=\"clsid:" TESTACTIVEX_CLSID "\" width=\"300\" height=\"200\" id=\"objid\">"
@@ -102,7 +92,7 @@ static const REFIID pluginhost_iids[] = {
     NULL
 };
 
-static const char *dbgstr_guid(REFIID riid)
+static const char *debugstr_guid(REFIID riid)
 {
     static char buf[50];
 
@@ -138,7 +128,7 @@ static void _test_ifaces(unsigned line, IUnknown *iface, REFIID *iids)
 
      for(piid = iids; *piid; piid++) {
         hres = IDispatch_QueryInterface(iface, *piid, (void**)&unk);
-        ok_(__FILE__,line) (hres == S_OK, "Could not get %s interface: %08x\n", dbgstr_guid(*piid), hres);
+        ok_(__FILE__,line) (hres == S_OK, "Could not get %s interface: %08x\n", debugstr_guid(*piid), hres);
         if(SUCCEEDED(hres))
             IUnknown_Release(unk);
     }
@@ -280,6 +270,62 @@ static const IQuickActivateVtbl QuickActivateVtbl = {
 
 static IQuickActivate QuickActivate = { &QuickActivateVtbl };
 
+static HRESULT WINAPI PersistPropertyBag_QueryInterface(IPersistPropertyBag *iface, REFIID riid, void **ppv)
+{
+    return ax_qi(riid, ppv);
+}
+
+static ULONG WINAPI PersistPropertyBag_AddRef(IPersistPropertyBag *iface)
+{
+    return 2;
+}
+
+static ULONG WINAPI PersistPropertyBag_Release(IPersistPropertyBag *iface)
+{
+    return 1;
+}
+
+static HRESULT WINAPI PersistPropertyBag_GetClassID(IPersistPropertyBag *face, CLSID *pClassID)
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI PersistPropertyBag_InitNew(IPersistPropertyBag *face)
+{
+    CHECK_EXPECT(IPersistPropertyBag_InitNew);
+    return S_OK;
+}
+
+static HRESULT WINAPI PersistPropertyBag_Load(IPersistPropertyBag *face, IPropertyBag *pPropBag, IErrorLog *pErrorLog)
+{
+    CHECK_EXPECT(IPersistPropertyBag_Load);
+
+    ok(pPropBag != NULL, "pPropBag == NULL\n");
+    ok(!pErrorLog, "pErrorLog != NULL\n");
+
+    return S_OK;
+}
+
+static HRESULT WINAPI PersistPropertyBag_Save(IPersistPropertyBag *face, IPropertyBag *pPropBag, BOOL fClearDisrty, BOOL fSaveAllProperties)
+{
+    ok(0, "unexpected call\n");
+    return E_NOTIMPL;
+}
+
+static const IPersistPropertyBagVtbl PersistPropertyBagVtbl = {
+    PersistPropertyBag_QueryInterface,
+    PersistPropertyBag_AddRef,
+    PersistPropertyBag_Release,
+    PersistPropertyBag_GetClassID,
+    PersistPropertyBag_InitNew,
+    PersistPropertyBag_Load,
+    PersistPropertyBag_Save
+
+};
+
+static IPersistPropertyBag PersistPropertyBag = { &PersistPropertyBagVtbl };
+
 static HRESULT ax_qi(REFIID riid, void **ppv)
 {
     if(IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IOleControl)) {
@@ -292,6 +338,11 @@ static HRESULT ax_qi(REFIID riid, void **ppv)
         return S_OK;
     }
 
+    if(IsEqualGUID(riid, &IID_IPersistPropertyBag)) {
+        *ppv = &PersistPropertyBag;
+        return S_OK;
+    }
+
     *ppv = NULL;
     return E_NOINTERFACE;
 }
@@ -351,6 +402,8 @@ static const IClassFactoryVtbl ClassFactoryVtbl = {
     ClassFactory_LockServer
 };
 
+static IClassFactory activex_cf = { &ClassFactoryVtbl };
+
 static HRESULT cs_qi(REFIID,void **);
 static IOleDocumentView *view;
 
@@ -726,7 +779,6 @@ static HRESULT cs_qi(REFIID riid, void **ppv)
     return *ppv ? S_OK : E_NOINTERFACE;
 }
 
-static IClassFactory activex_cf = { &ClassFactoryVtbl };
 static IHTMLDocument2 *notif_doc;
 static BOOL doc_complete;
 
@@ -914,6 +966,7 @@ static void test_object_ax(void)
     SET_EXPECT(FreezeEvents_TRUE);
     SET_EXPECT(QuickActivate);
     SET_EXPECT(FreezeEvents_FALSE);
+    SET_EXPECT(IPersistPropertyBag_Load);
 
     doc = create_doc(object_ax_str, &called_CreateInstance);
 
@@ -923,6 +976,7 @@ static void test_object_ax(void)
     CHECK_CALLED(QuickActivate);
     todo_wine
     CHECK_CALLED(FreezeEvents_FALSE);
+    CHECK_CALLED(IPersistPropertyBag_Load);
 
     release_doc(doc);
 }




More information about the wine-cvs mailing list