Module: wine Branch: master Commit: 1017c2b3ee44b0e520527fc40ea6b1d91fa56041 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1017c2b3ee44b0e520527fc40e...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Nov 7 12:55:28 2012 +0100
mshtml: Added IHTMLObjectElement::name property implementation.
---
dlls/mshtml/htmlobject.c | 21 +++++++++++++++++---- dlls/mshtml/tests/dom.c | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 5 deletions(-)
diff --git a/dlls/mshtml/htmlobject.c b/dlls/mshtml/htmlobject.c index fc22419..9e9bbdd 100644 --- a/dlls/mshtml/htmlobject.c +++ b/dlls/mshtml/htmlobject.c @@ -162,15 +162,28 @@ static HRESULT WINAPI HTMLObjectElement_get_align(IHTMLObjectElement *iface, BST static HRESULT WINAPI HTMLObjectElement_put_name(IHTMLObjectElement *iface, BSTR v) { HTMLObjectElement *This = impl_from_IHTMLObjectElement(iface); - FIXME("(%p)->(%s)\n", This, debugstr_w(v)); - return E_NOTIMPL; + nsAString nsstr; + nsresult nsres; + + TRACE("(%p)->(%s)\n", This, debugstr_w(v)); + + nsAString_InitDepend(&nsstr, v); + nsres = nsIDOMHTMLObjectElement_SetName(This->nsobject, &nsstr); + nsAString_Finish(&nsstr); + return NS_SUCCEEDED(nsres) ? S_OK : E_FAIL; }
static HRESULT WINAPI HTMLObjectElement_get_name(IHTMLObjectElement *iface, BSTR *p) { HTMLObjectElement *This = impl_from_IHTMLObjectElement(iface); - FIXME("(%p)->(%p)\n", This, p); - return E_NOTIMPL; + nsAString nsstr; + nsresult nsres; + + TRACE("(%p)->(%p)\n", This, p); + + nsAString_Init(&nsstr, NULL); + nsres = nsIDOMHTMLObjectElement_GetName(This->nsobject, &nsstr); + return return_nsstr(nsres, &nsstr, p); }
static HRESULT WINAPI HTMLObjectElement_put_codeBase(IHTMLObjectElement *iface, BSTR v) diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 26567d2..3f9bd5f 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -56,7 +56,7 @@ static const char elem_test_str[] = "<textarea id="X">text text</textarea>" "<table id="tbl"><tbody><tr></tr><tr id="row2"><td>td1 text</td><td>td2 text</td></tr></tbody></table>" "<script id="sc" type="text/javascript"><!--\nfunction Testing() {}\n// -->\n</script>" - "<test /><object id="objid" vspace=100></object><embed />" + "<test /><object id="objid" name="objname" vspace=100></object><embed />" "<img id="imgid" name="WineImg"/>" "<iframe src="about:blank" id="ifr"></iframe>" "<form id="frm"></form>" @@ -1573,6 +1573,40 @@ static void _test_object_vspace(unsigned line, IUnknown *unk, LONG exl) IHTMLObjectElement_Release(object); }
+#define test_object_name(a,b) _test_object_name(__LINE__,a,b) +static void _test_object_name(unsigned line, IHTMLElement *elem, const char *exname) +{ + IHTMLObjectElement *object = _get_object_iface(line, (IUnknown*)elem); + BSTR str; + HRESULT hres; + + str = (void*)0xdeadbeef; + hres = IHTMLObjectElement_get_name(object, &str); + ok_(__FILE__,line)(hres == S_OK, "get_name failed: %08x\n", hres); + if(exname) + ok_(__FILE__,line)(!strcmp_wa(str, exname), "name=%s, expected %s\n", wine_dbgstr_w(str), exname); + else + ok_(__FILE__,line)(!str, "name=%s, expected NULL\n", wine_dbgstr_w(str)); + SysFreeString(str); + IHTMLObjectElement_Release(object); +} + +#define set_object_name(a,b) _set_object_name(__LINE__,a,b) +static void _set_object_name(unsigned line, IHTMLElement *elem, const char *name) +{ + IHTMLObjectElement *object = _get_object_iface(line, (IUnknown*)elem); + BSTR str; + HRESULT hres; + + str = a2bstr(name); + hres = IHTMLObjectElement_put_name(object, str); + ok_(__FILE__,line)(hres == S_OK, "put_name failed: %08x\n", hres); + SysFreeString(str); + IHTMLObjectElement_Release(object); + + _test_object_name(line, elem, name); +} + #define create_option_elem(d,t,v) _create_option_elem(__LINE__,d,t,v) static IHTMLOptionElement *_create_option_elem(unsigned line, IHTMLDocument2 *doc, const char *txt, const char *val) @@ -5914,6 +5948,9 @@ static void test_elems(IHTMLDocument2 *doc) ok(elem != NULL, "elem == NULL\n"); if(elem) { test_object_vspace((IUnknown*)elem, 100); + test_object_name(elem, "objname"); + set_object_name(elem, "test"); + set_object_name(elem, NULL); IHTMLElement_Release(elem); }