mshtml: Implement HTMLAnchorElement_get_port().

Signed-off-by: Hans Leidekker <hans@codeweavers.com>
Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Hans Leidekker 2021-10-29 15:15:23 +02:00 committed by Alexandre Julliard
parent 6f8d366b57
commit 2bbb725bb0
2 changed files with 49 additions and 4 deletions

View file

@ -490,8 +490,35 @@ static HRESULT WINAPI HTMLAnchorElement_put_port(IHTMLAnchorElement *iface, BSTR
static HRESULT WINAPI HTMLAnchorElement_get_port(IHTMLAnchorElement *iface, BSTR *p)
{
HTMLAnchorElement *This = impl_from_IHTMLAnchorElement(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
IUri *uri;
HRESULT hres;
DWORD port;
WCHAR buf[11];
int len;
BSTR str;
TRACE("(%p)->(%p)\n", This, p);
uri = get_anchor_uri(This);
if(!uri) {
WARN("Could not create IUri\n");
*p = NULL;
return S_OK;
}
hres = IUri_GetPort(uri, &port);
IUri_Release(uri);
if(FAILED(hres))
return hres;
len = swprintf(buf, ARRAY_SIZE(buf), L"%u", port);
str = SysAllocStringLen(buf, len);
if (str)
*p = str;
else
hres = E_OUTOFMEMORY;
return hres;
}
static HRESULT WINAPI HTMLAnchorElement_put_protocol(IHTMLAnchorElement *iface, BSTR v)

View file

@ -1673,6 +1673,22 @@ static void _test_anchor_hostname(unsigned line, IUnknown *unk, const WCHAR *hos
SysFreeString(str);
}
#define test_anchor_port(a,p) _test_anchor_port(__LINE__,a,p)
static void _test_anchor_port(unsigned line, IUnknown *unk, const WCHAR *port)
{
IHTMLAnchorElement *anchor = _get_anchor_iface(line, unk);
BSTR str;
HRESULT hres;
hres = IHTMLAnchorElement_get_port(anchor, &str);
ok_(__FILE__,line)(hres == S_OK, "get_port failed: %08x\n", hres);
if(port)
ok_(__FILE__,line)(!lstrcmpW(str, port), "port = %s, expected %s\n", wine_dbgstr_w(str), wine_dbgstr_w(port));
else
ok_(__FILE__,line)(str == NULL, "port = %s, expected NULL\n", wine_dbgstr_w(str));
SysFreeString(str);
}
#define test_anchor_search(a,h,n) _test_anchor_search(__LINE__,a,h,n)
static void _test_anchor_search(unsigned line, IUnknown *elem, const WCHAR *search, BOOL allowbroken)
{
@ -9203,11 +9219,13 @@ static void test_elems(IHTMLDocument2 *doc)
elem = get_elem_by_id(doc, L"a", TRUE);
if(elem) {
test_anchor_href((IUnknown*)elem, L"http://test/");
test_anchor_port((IUnknown*)elem, L"80");
/* Change the href */
test_anchor_put_href((IUnknown*)elem, L"http://test1/");
test_anchor_href((IUnknown*)elem, L"http://test1/");
test_anchor_put_href((IUnknown*)elem, L"http://test1:8080/");
test_anchor_href((IUnknown*)elem, L"http://test1:8080/");
test_anchor_hostname((IUnknown*)elem, L"test1");
test_anchor_port((IUnknown*)elem, L"8080");
/* Restore the href */
test_anchor_put_href((IUnknown*)elem, L"http://test/");