Jacek Caban : mshtml: Added IHTMLWindow::get_external implementation.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Aug 1 05:16:49 CDT 2007
Module: wine
Branch: master
Commit: a84520169f95a9084dec7caea86a929573d819ec
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a84520169f95a9084dec7caea86a929573d819ec
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Aug 1 00:59:48 2007 +0200
mshtml: Added IHTMLWindow::get_external implementation.
---
dlls/mshtml/htmlwindow.c | 11 +++++++++--
dlls/mshtml/tests/htmldoc.c | 38 ++++++++++++++++++++++++++++++++++++--
2 files changed, 45 insertions(+), 4 deletions(-)
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index 83adbdc..1acb6db 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -662,8 +662,15 @@ static HRESULT WINAPI HTMLWindow2_resizeBy(IHTMLWindow2 *iface, long x, long y)
static HRESULT WINAPI HTMLWindow2_get_external(IHTMLWindow2 *iface, IDispatch **p)
{
HTMLWindow *This = HTMLWINDOW2_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%p)\n", This, p);
+
+ *p = NULL;
+
+ if(!This->doc->hostui)
+ return S_OK;
+
+ return IDocHostUIHandler_GetExternal(This->doc->hostui, p);
}
#undef HTMLWINDOW2_THIS
diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index 2b32955..4379cdc 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -127,6 +127,7 @@ DEFINE_EXPECT(OnFocus_FALSE);
DEFINE_EXPECT(RequestUIActivate);
DEFINE_EXPECT(InPlaceFrame_SetBorderSpace);
DEFINE_EXPECT(InPlaceUIWindow_SetActiveObject);
+DEFINE_EXPECT(GetExternal);
static IUnknown *doc_unk;
static BOOL expect_LockContainer_fLock;
@@ -1861,8 +1862,9 @@ static HRESULT WINAPI DocHostUIHandler_GetDropTarget(IDocHostUIHandler2 *iface,
static HRESULT WINAPI DocHostUIHandler_GetExternal(IDocHostUIHandler2 *iface, IDispatch **ppDispatch)
{
- ok(0, "unexpected call\n");
- return E_NOTIMPL;
+ CHECK_EXPECT(GetExternal);
+ *ppDispatch = (void*)1;
+ return S_FALSE;
}
static HRESULT WINAPI DocHostUIHandler_TranslateUrl(IDocHostUIHandler2 *iface, DWORD dwTranslate,
@@ -3444,6 +3446,36 @@ static void test_Navigate(IUnknown *unk)
IHlinkTarget_Release(hlink);
}
+static void test_external(IUnknown *unk, BOOL initialized)
+{
+ IDispatch *external;
+ IHTMLDocument2 *doc;
+ IHTMLWindow2 *htmlwin;
+ HRESULT hres;
+
+ hres = IUnknown_QueryInterface(unk, &IID_IHTMLDocument2, (void**)&doc);
+ ok(hres == S_OK, "QueryInterface(IID_IHTMLWindow2) failed: %08x\n", hres);
+
+ hres = IHTMLDocument2_get_parentWindow(doc, &htmlwin);
+ IHTMLDocument2_Release(doc);
+ ok(hres == S_OK, "get_parentWindow failed: %08x\n", hres);
+
+ if(initialized)
+ SET_EXPECT(GetExternal);
+ external = (void*)0xdeadbeef;
+ hres = IHTMLWindow2_get_external(htmlwin, &external);
+ if(initialized) {
+ ok(hres == S_FALSE, "get_external failed: %08x\n", hres);
+ CHECK_CALLED(GetExternal);
+ ok(external == (void*)1, "external != NULL\n");
+ }else {
+ ok(hres == S_OK, "get_external failed: %08x\n", hres);
+ ok(external == NULL, "external != NULL\n");
+ }
+
+ IHTMLWindow2_Release(htmlwin);
+}
+
static void test_StreamLoad(IUnknown *unk)
{
IPersistStreamInit *init;
@@ -3528,6 +3560,7 @@ static void test_HTMLDocument(enum load_state_t ls)
test_QueryInterface(unk);
test_IsDirty(unk, S_FALSE);
test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
+ test_external(unk, FALSE);
test_ConnectionPointContainer(unk);
test_GetCurMoniker(unk, NULL, NULL);
test_Persist(unk);
@@ -3550,6 +3583,7 @@ static void test_HTMLDocument(enum load_state_t ls)
test_OleCommandTarget(unk);
test_OnAmbientPropertyChange(unk);
test_Window(unk, TRUE);
+ test_external(unk, TRUE);
test_UIDeactivate();
test_OleCommandTarget(unk);
More information about the wine-cvs
mailing list