Module: wine Branch: master Commit: 42349000c4a87d3a1c71f107a1119769fbba1bb2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=42349000c4a87d3a1c71f107a1...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Oct 2 14:20:34 2007 +0200
mshtml: Added get_tagName implementation.
---
dlls/mshtml/htmlelem.c | 20 ++++++++++++++++++-- dlls/mshtml/tests/dom.c | 21 ++++++++++++++++++++- 2 files changed, 38 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 77d50b0..609a64d 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -279,8 +279,24 @@ static HRESULT WINAPI HTMLElement_get_id(IHTMLElement *iface, BSTR *p) static HRESULT WINAPI HTMLElement_get_tagName(IHTMLElement *iface, BSTR *p) { HTMLElement *This = HTMLELEM_THIS(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + const PRUnichar *tag; + nsAString tag_str; + nsresult nsres; + + TRACE("(%p)->(%p)\n", This, p); + + nsAString_Init(&tag_str, NULL); + nsres = nsIDOMHTMLElement_GetTagName(This->nselem, &tag_str); + if(NS_SUCCEEDED(nsres)) { + nsAString_GetData(&tag_str, &tag, NULL); + *p = SysAllocString(tag); + }else { + ERR("GetTagName failed: %08x\n", nsres); + *p = NULL; + } + nsAString_Finish(&tag_str); + + return S_OK; }
static HRESULT WINAPI HTMLElement_get_parentElement(IHTMLElement *iface, IHTMLElement **p) diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 3c7a18a..fefe054 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -80,11 +80,29 @@ static void _test_node_name(unsigned line, IUnknown *unk, const char *exname) hres = IHTMLDOMNode_get_nodeName(node, &name); IHTMLDOMNode_Release(node); ok_(__FILE__, line) (hres == S_OK, "get_nodeName failed: %08x\n", hres); - ok_(__FILE__, line) (!strcmp_wa(name, exname), "got name: %s, expected HTML\n", dbgstr_w(name)); + ok_(__FILE__, line) (!strcmp_wa(name, exname), "got name: %s, expected %s\n", dbgstr_w(name), exname);
SysFreeString(name); }
+#define test_elem_tag(u,n) _test_elem_tag(__LINE__,u,n) +static void _test_elem_tag(unsigned line, IUnknown *unk, const char *extag) +{ + IHTMLElement *elem; + BSTR tag; + HRESULT hres; + + hres = IUnknown_QueryInterface(unk, &IID_IHTMLElement, (void**)&elem); + ok_(__FILE__, line) (hres == S_OK, "QueryInterface(IID_IHTMLElement) failed: %08x\n", hres); + + hres = IHTMLElement_get_tagName(elem, &tag); + IHTMLElement_Release(elem); + ok_(__FILE__, line) (hres == S_OK, "get_tagName failed: %08x\n", hres); + ok_(__FILE__, line) (!strcmp_wa(tag, extag), "got tag: %s, expected %s\n", dbgstr_w(tag), extag); + + SysFreeString(tag); +} + static void test_doc_elem(IHTMLDocument2 *doc) { IHTMLElement *elem; @@ -99,6 +117,7 @@ static void test_doc_elem(IHTMLDocument2 *doc) ok(hres == S_OK, "get_documentElement failed: %08x\n", hres);
test_node_name((IUnknown*)elem, "HTML"); + test_elem_tag((IUnknown*)elem, "HTML");
IHTMLElement_Release(elem); }