Module: wine Branch: master Commit: aeb1095b47482fdbdb46814d51a54601712837ef URL: http://source.winehq.org/git/wine.git/?a=commit;h=aeb1095b47482fdbdb46814d51...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Apr 21 18:12:32 2008 +0200
mshtml: Added IHTMLWindow2::get_document implementation.
---
dlls/mshtml/htmlwindow.c | 14 ++++++++++++-- dlls/mshtml/tests/dom.c | 21 ++++++++++++++++++++- 2 files changed, 32 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c index 5ed5701..43c893f 100644 --- a/dlls/mshtml/htmlwindow.c +++ b/dlls/mshtml/htmlwindow.c @@ -467,8 +467,18 @@ static HRESULT WINAPI HTMLWindow2_get_onscroll(IHTMLWindow2 *iface, VARIANT *p) static HRESULT WINAPI HTMLWindow2_get_document(IHTMLWindow2 *iface, IHTMLDocument2 **p) { HTMLWindow *This = HTMLWINDOW2_THIS(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, p); + + if(This->doc) { + /* FIXME: We should return a wrapper object here */ + *p = HTMLDOC(This->doc); + IHTMLDocument2_AddRef(*p); + }else { + *p = NULL; + } + + return S_OK; }
static HRESULT WINAPI HTMLWindow2_get_event(IHTMLWindow2 *iface, IHTMLEventObj **p) diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 90ccd4d..59c2a17 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -1081,7 +1081,6 @@ static void test_navigator(IHTMLDocument2 *doc)
hres = IHTMLDocument2_get_parentWindow(doc, &window); ok(hres == S_OK, "parentWidnow failed: %08x\n", hres); - test_ifaces((IUnknown*)window, window_iids);
hres = IHTMLWindow2_get_navigator(window, &navigator); ok(hres == S_OK, "get_navigator failed: %08x\n", hres); @@ -1187,6 +1186,25 @@ static void test_default_body(IHTMLBodyElement *body) ok(bstr == NULL, "bstr != NULL\n"); }
+static void test_window(IHTMLDocument2 *doc) +{ + IHTMLWindow2 *window; + IHTMLDocument2 *doc2 = NULL; + HRESULT hres; + + hres = IHTMLDocument2_get_parentWindow(doc, &window); + ok(hres == S_OK, "get_parentElement failed: %08x\n", hres); + test_ifaces((IUnknown*)window, window_iids); + test_disp((IUnknown*)window, &DIID_DispHTMLWindow2); + + hres = IHTMLWindow2_get_document(window, &doc2); + ok(hres == S_OK, "get_document failed: %08x\n", hres); + ok(doc2 != NULL, "doc2 == NULL\n"); + + IHTMLDocument_Release(doc2); + IHTMLWindow2_Release(window); +} + static void test_defaults(IHTMLDocument2 *doc) { IHTMLStyleSheetsCollection *stylesheetcol; @@ -1209,6 +1227,7 @@ static void test_defaults(IHTMLDocument2 *doc) ok(hres == S_OK, "get_style failed: %08x\n", hres);
test_default_style(style); + test_window(doc); test_compatmode(doc); test_location(doc); test_navigator(doc);