From 500a813579d1747d70e08f13de5b9644ec3ee839 Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Thu, 18 Jun 2020 14:39:00 +0800 Subject: [PATCH] ieframe: Implement IPersistStorage::GetClassID(). Signed-off-by: Dmitry Timoshkov Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/ieframe/persist.c | 10 ++++++++-- dlls/ieframe/tests/webbrowser.c | 21 +++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/dlls/ieframe/persist.c b/dlls/ieframe/persist.c index bef5ef7344f..a0a7c94fbe8 100644 --- a/dlls/ieframe/persist.c +++ b/dlls/ieframe/persist.c @@ -56,8 +56,14 @@ static ULONG WINAPI PersistStorage_Release(IPersistStorage *iface) static HRESULT WINAPI PersistStorage_GetClassID(IPersistStorage *iface, CLSID *pClassID) { WebBrowser *This = impl_from_IPersistStorage(iface); - FIXME("(%p)->(%p)\n", This, pClassID); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, pClassID); + + if (!pClassID) + return E_INVALIDARG; + + *pClassID = This->version == 1 ? CLSID_WebBrowser_V1: CLSID_WebBrowser; + return S_OK; } static HRESULT WINAPI PersistStorage_IsDirty(IPersistStorage *iface) diff --git a/dlls/ieframe/tests/webbrowser.c b/dlls/ieframe/tests/webbrowser.c index 898d0e68051..95d5fc4988e 100644 --- a/dlls/ieframe/tests/webbrowser.c +++ b/dlls/ieframe/tests/webbrowser.c @@ -2220,6 +2220,25 @@ static void test_EnumVerbs(IWebBrowser2 *wb) IEnumOLEVERB_Release(enum_verbs); } +static void test_Persist(IWebBrowser2 *wb, int version) +{ + IPersist *persist; + GUID guid; + HRESULT hr; + + hr = IWebBrowser2_QueryInterface(wb, &IID_IPersist, (void **)&persist); + ok(hr == S_OK, "QueryInterface(IID_IPersist failed: %08x\n", hr); + + hr = IPersist_GetClassID(persist, &guid); + ok(hr == S_OK, "GetClassID failed: %08x\n", hr); + if (version == 1) + ok(IsEqualGUID(&guid, &CLSID_WebBrowser_V1), "got wrong CLSID: %s\n", wine_dbgstr_guid(&guid)); + else + ok(IsEqualGUID(&guid, &CLSID_WebBrowser), "got wrong CLSID: %s\n", wine_dbgstr_guid(&guid)); + + IPersist_Release(persist); +} + static void test_ie_funcs(IWebBrowser2 *wb) { IDispatch *disp; @@ -3741,6 +3760,7 @@ static void test_WebBrowser(DWORD flags, BOOL do_close) test_olecmd(webbrowser, FALSE); test_Navigate2(webbrowser, L"about:blank"); test_QueryStatusWB(webbrowser, TRUE); + test_Persist(webbrowser, 2); if(do_download) { IHTMLDocument2 *doc, *doc2; @@ -3849,6 +3869,7 @@ static void test_WebBrowserV1(void) test_ready_state(READYSTATE_UNINITIALIZED, BUSY_FAIL); test_ClassInfo(wb); test_EnumVerbs(wb); + test_Persist(wb, 1); ref = IWebBrowser2_Release(wb); ok(ref == 0, "ref=%d, expected 0\n", ref);