From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlattr.c | 11 +++++++++-- dlls/mshtml/tests/dom.js | 13 +++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmlattr.c b/dlls/mshtml/htmlattr.c index 77d90837ef9..64e57718174 100644 --- a/dlls/mshtml/htmlattr.c +++ b/dlls/mshtml/htmlattr.c @@ -465,9 +465,16 @@ static HRESULT WINAPI HTMLDOMAttribute3_get_ownerElement(IHTMLDOMAttribute3 *ifa { HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute3(iface);
- FIXME("(%p)->(%p)\n", This, p); + TRACE("(%p)->(%p)\n", This, p); + + if(!This->elem) { + *p = NULL; + return S_OK; + }
- return E_NOTIMPL; + *p = &This->elem->IHTMLElement2_iface; + IHTMLElement2_AddRef(*p); + return S_OK; }
static const IHTMLDOMAttribute3Vtbl HTMLDOMAttribute3Vtbl = { diff --git a/dlls/mshtml/tests/dom.js b/dlls/mshtml/tests/dom.js index 300e22cd684..46dc239c3eb 100644 --- a/dlls/mshtml/tests/dom.js +++ b/dlls/mshtml/tests/dom.js @@ -1020,3 +1020,16 @@ sync_test("importNode", function() { ok(node2.hasChildNodes() === false, "node2 has child nodes"); ok(node2.parentNode === null, "node2.parentNode = " + node2.parentNode); }); + +sync_test("attributeNode", function() { + document.body.innerHTML = '<div id="test" attr="wine"></div>'; + var elem = document.getElementById("test"); + var attr = elem.attributes[0]; + + ok(attr.ownerDocument === document, "ownerDocument = " + attr.ownerDocument); + ok(attr.ownerElement === elem, "ownerElement = " + attr.ownerElement); + + attr = document.createAttribute("id"); + ok(attr.ownerDocument === document, "detached attr ownerDocument = " + attr.ownerDocument); + ok(attr.ownerElement === null, "detached attr ownerElement = " + attr.ownerElement); +});