Piotr Caban : ieframe: Test setting different client site in OleObject_SetClientSite.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Apr 13 11:51:48 CDT 2016
Module: wine
Branch: master
Commit: 9b6881a57787ba5f4f9801c088301c25c3a28b46
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9b6881a57787ba5f4f9801c088301c25c3a28b46
Author: Piotr Caban <piotr at codeweavers.com>
Date: Wed Apr 13 17:12:04 2016 +0200
ieframe: Test setting different client site in OleObject_SetClientSite.
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/ieframe/tests/webbrowser.c | 62 +++++++++++++++++++++++++++++++++++++++--
1 file changed, 60 insertions(+), 2 deletions(-)
diff --git a/dlls/ieframe/tests/webbrowser.c b/dlls/ieframe/tests/webbrowser.c
index 521e2ce..1ff7ca2 100644
--- a/dlls/ieframe/tests/webbrowser.c
+++ b/dlls/ieframe/tests/webbrowser.c
@@ -1123,6 +1123,7 @@ static const IOleClientSiteVtbl ClientSiteVtbl = {
};
static IOleClientSite ClientSite = { &ClientSiteVtbl };
+static IOleClientSite ClientSite2 = { &ClientSiteVtbl };
static HRESULT WINAPI IOleControlSite_fnQueryInterface(IOleControlSite *iface, REFIID riid, void **ppv)
{
@@ -2030,6 +2031,61 @@ static void test_ClientSite(IWebBrowser2 *unk, IOleClientSite *client, BOOL stop
IOleObject_Release(oleobj);
}
+static void test_change_ClientSite(IWebBrowser2 *unk)
+{
+ BOOL old_use_container_olecmd = use_container_olecmd;
+ IOleClientSite *doc_clientsite;
+ IOleInPlaceObject *inplace;
+ IOleCommandTarget *olecmd;
+ IOleObject *oleobj;
+ HRESULT hres;
+ HWND hwnd;
+
+ hres = IWebBrowser2_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj);
+ ok(hres == S_OK, "QueryInterface(IID_OleObject) failed: %08x\n", hres);
+ if(FAILED(hres))
+ return;
+
+ use_container_olecmd = FALSE;
+
+ SET_EXPECT(Site_GetWindow);
+ SET_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
+ SET_EXPECT(Invoke_AMBIENT_SILENT);
+
+ hres = IOleObject_SetClientSite(oleobj, &ClientSite2);
+ ok(hres == S_OK, "SetClientSite failed: %08x\n", hres);
+ IOleObject_Release(oleobj);
+
+ CHECK_CALLED(Site_GetWindow);
+ CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
+ CHECK_CALLED(Invoke_AMBIENT_SILENT);
+
+ doc_clientsite = get_dochost(unk);
+ hres = IOleClientSite_QueryInterface(doc_clientsite, &IID_IOleCommandTarget, (void**)&olecmd);
+ ok(hres == S_OK, "QueryInterface(IOleCommandTarget) failed: %08x\n", hres);
+ IOleClientSite_Release(doc_clientsite);
+
+ hres = IWebBrowser2_QueryInterface(unk, &IID_IOleInPlaceObject, (void**)&inplace);
+ ok(hres == S_OK, "QueryInterface(OleInPlaceObject) failed: %08x\n", hres);
+ hres = IOleInPlaceObject_GetWindow(inplace, &hwnd);
+ ok(hres == S_OK, "GetWindow failed: %08x\n", hres);
+ ok(hwnd == shell_embedding_hwnd, "unexpected hwnd %p\n", hwnd);
+ IOleInPlaceObject_Release(inplace);
+
+ if(old_use_container_olecmd) {
+ SET_EXPECT(Exec_UPDATECOMMANDS);
+
+ hres = IOleCommandTarget_Exec(olecmd, NULL, OLECMDID_UPDATECOMMANDS,
+ OLECMDEXECOPT_DONTPROMPTUSER, NULL, NULL);
+ ok(hres == S_OK, "Exec(OLECMDID_UPDATECOMMAND) failed: %08x\n", hres);
+
+ CHECK_CALLED(Exec_UPDATECOMMANDS);
+ use_container_olecmd = TRUE;
+ }
+
+ IOleCommandTarget_Release(olecmd);
+}
+
static void test_ClassInfo(IWebBrowser2 *unk)
{
IProvideClassInfo2 *class_info;
@@ -3777,10 +3833,12 @@ static void test_WebBrowser(DWORD flags, BOOL do_close)
test_external(webbrowser);
test_htmlwindow_close(webbrowser);
- if(do_close)
+ if(do_close) {
test_Close(webbrowser, do_download);
- else
+ }else {
+ test_change_ClientSite(webbrowser);
test_ClientSite(webbrowser, NULL, !do_download);
+ }
test_ie_funcs(webbrowser);
test_GetControlInfo(webbrowser);
test_wb_funcs(webbrowser, FALSE);
More information about the wine-cvs
mailing list