From 447e5d1fac0e870b188439a588e816d28bec5725 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com> Date: Sun, 16 Aug 2009 19:57:58 +1000 Subject: [PATCH] mshtml: Implement IHTMLLocation get_href. --- dlls/mshtml/htmllocation.c | 16 ++++++++++++++-- dlls/mshtml/tests/dom.c | 7 +++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/dlls/mshtml/htmllocation.c b/dlls/mshtml/htmllocation.c index e2001bb2eca..2026a06a755 100644 --- a/dlls/mshtml/htmllocation.c +++ b/dlls/mshtml/htmllocation.c @@ -128,8 +128,20 @@ static HRESULT WINAPI HTMLLocation_put_href(IHTMLLocation *iface, BSTR v) static HRESULT WINAPI HTMLLocation_get_href(IHTMLLocation *iface, BSTR *p) { HTMLLocation *This = HTMLLOCATION_THIS(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, p); + + if(!p) + return E_POINTER; + + if(!This->doc || !This->doc->url) { + FIXME("No current URL\n"); + return E_NOTIMPL; + } + + *p = SysAllocString(This->doc->url); + + return S_OK; } static HRESULT WINAPI HTMLLocation_put_protocol(IHTMLLocation *iface, BSTR v) diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 8bf29a8c70e..42512be592e 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -2411,6 +2411,13 @@ static void test_location(IHTMLDocument2 *doc) ok(hres == S_OK, "get_pathname failed: %08x\n", hres); ok(!strcmp_wa(str, "blank"), "unexpected pathname %s\n", dbgstr_w(str)); + hres = IHTMLLocation_get_href(location, NULL); + ok(hres == E_POINTER, "get_href passed: %08x\n", hres); + + hres = IHTMLLocation_get_href(location, &str); + ok(hres == S_OK, "get_href failed: %08x\n", hres); + ok(!strcmp_wa(str, "about:blank"), "unexpected href %s\n", dbgstr_w(str)); + ref = IHTMLLocation_Release(location); ok(!ref, "location chould be destroyed here\n"); } -- GitLab