Jacek Caban : mshtml: Added OnFrameWindowActivate implementation.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Jul 11 06:10:18 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 081d50d297b5729d448ff1b6b7d8ba112ce8c17d
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=081d50d297b5729d448ff1b6b7d8ba112ce8c17d

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sat Jul  8 16:11:25 2006 +0200

mshtml: Added OnFrameWindowActivate implementation.

---

 dlls/mshtml/olewnd.c        |   12 +++++++--
 dlls/mshtml/tests/htmldoc.c |   56 +++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 63 insertions(+), 5 deletions(-)

diff --git a/dlls/mshtml/olewnd.c b/dlls/mshtml/olewnd.c
index ea6a3c2..ef377ab 100644
--- a/dlls/mshtml/olewnd.c
+++ b/dlls/mshtml/olewnd.c
@@ -91,11 +91,17 @@ static HRESULT WINAPI OleInPlaceActiveOb
     return E_NOTIMPL;
 }
 
-static HRESULT WINAPI OleInPlaceActiveObject_OnFrameWindowActivate(IOleInPlaceActiveObject *iface, BOOL fActivate)
+static HRESULT WINAPI OleInPlaceActiveObject_OnFrameWindowActivate(IOleInPlaceActiveObject *iface,
+        BOOL fActivate)
 {
     HTMLDocument *This = ACTOBJ_THIS(iface);
-    FIXME("(%p)->(%x)\n", This, fActivate);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%x)\n", This, fActivate);
+
+    if(This->hostui)
+        IDocHostUIHandler_OnFrameWindowActivate(This->hostui, fActivate);
+
+    return S_OK;
 }
 
 static HRESULT WINAPI OleInPlaceActiveObject_OnDocWindowActivate(IOleInPlaceActiveObject *iface, BOOL fActivate)
diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index 78ce95b..697ddaf 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -101,6 +101,7 @@ DEFINE_EXPECT(Invoke_AMBIENT_PALETTE);
 DEFINE_EXPECT(GetDropTarget);
 DEFINE_EXPECT(UpdateUI);
 DEFINE_EXPECT(Navigate);
+DEFINE_EXPECT(OnFrameWindowActivate);
 
 static BOOL expect_LockContainer_fLock;
 static BOOL expect_SetActiveObject_active;
@@ -832,10 +833,12 @@ static HRESULT WINAPI DocHostUIHandler_O
     return E_NOTIMPL;
 }
 
+static BOOL expect_OnFrameWindowActivate_fActivate;
 static HRESULT WINAPI DocHostUIHandler_OnFrameWindowActivate(IDocHostUIHandler2 *iface, BOOL fActivate)
 {
-    ok(0, "unexpected call\n");
-    return E_NOTIMPL;
+    CHECK_EXPECT2(OnFrameWindowActivate);
+    ok(fActivate == expect_OnFrameWindowActivate_fActivate, "fActivate=%x\n", fActivate);
+    return S_OK;
 }
 
 static HRESULT WINAPI DocHostUIHandler_ResizeBorder(IDocHostUIHandler2 *iface, LPCRECT prcBorder,
@@ -1808,6 +1811,50 @@ static void test_Close(IUnknown *unk, BO
     IOleObject_Release(oleobj);
 }
 
+static void test_OnFrameWindowActivate(IUnknown *unk)
+{
+    IOleInPlaceActiveObject *inplaceact;
+    HRESULT hres;
+
+    hres = IUnknown_QueryInterface(unk, &IID_IOleInPlaceActiveObject, (void**)&inplaceact);
+    ok(hres == S_OK, "QueryInterface(IID_IOleInPlaceActiveObject) failed: %08lx\n", hres);
+    if(FAILED(hres))
+        return;
+
+    if(set_clientsite) {
+        expect_OnFrameWindowActivate_fActivate = TRUE;
+        SET_EXPECT(OnFrameWindowActivate);
+        hres = IOleInPlaceActiveObject_OnFrameWindowActivate(inplaceact, TRUE);
+        ok(hres == S_OK, "OnFrameWindowActivate failed: %08lx\n", hres);
+        CHECK_CALLED(OnFrameWindowActivate);
+
+        SET_EXPECT(OnFrameWindowActivate);
+        hres = IOleInPlaceActiveObject_OnFrameWindowActivate(inplaceact, TRUE);
+        ok(hres == S_OK, "OnFrameWindowActivate failed: %08lx\n", hres);
+        CHECK_CALLED(OnFrameWindowActivate);
+
+        expect_OnFrameWindowActivate_fActivate = FALSE;
+        SET_EXPECT(OnFrameWindowActivate);
+        hres = IOleInPlaceActiveObject_OnFrameWindowActivate(inplaceact, FALSE);
+        ok(hres == S_OK, "OnFrameWindowActivate failed: %08lx\n", hres);
+        CHECK_CALLED(OnFrameWindowActivate);
+
+        expect_OnFrameWindowActivate_fActivate = TRUE;
+        SET_EXPECT(OnFrameWindowActivate);
+        hres = IOleInPlaceActiveObject_OnFrameWindowActivate(inplaceact, TRUE);
+        ok(hres == S_OK, "OnFrameWindowActivate failed: %08lx\n", hres);
+        CHECK_CALLED(OnFrameWindowActivate);
+    }else {
+        hres = IOleInPlaceActiveObject_OnFrameWindowActivate(inplaceact, FALSE);
+        ok(hres == S_OK, "OnFrameWindowActivate failed: %08lx\n", hres);
+
+        hres = IOleInPlaceActiveObject_OnFrameWindowActivate(inplaceact, TRUE);
+        ok(hres == S_OK, "OnFrameWindowActivate failed: %08lx\n", hres);
+    }
+
+    IOleInPlaceActiveObject_Release(inplaceact);
+}
+
 static void test_InPlaceDeactivate(IUnknown *unk, BOOL expect_call)
 {
     IOleInPlaceObjectWindowless *windowlessobj = NULL;
@@ -1851,12 +1898,17 @@ static HRESULT test_Activate(IUnknown *u
     ok(hres == S_OK, "GetUserClassID failed: %08lx\n", hres);
     ok(IsEqualGUID(&guid, &CLSID_HTMLDocument), "guid != CLSID_HTMLDocument\n");
 
+    test_OnFrameWindowActivate(unk);
+
     test_ClientSite(oleobj, flags);
     test_InPlaceDeactivate(unk, FALSE);
 
     hres = test_DoVerb(oleobj);
 
     IOleObject_Release(oleobj);
+
+    test_OnFrameWindowActivate(unk);
+
     return hres;
 }
 




More information about the wine-cvs mailing list