Piotr Caban : msxml3: Added IXMLDOMElement_getAttributeNode implementation.
Alexandre Julliard
julliard at winehq.org
Wed Jul 2 06:03:29 CDT 2008
Module: wine
Branch: master
Commit: c0661fdb90816ff5b19c86bb80709cec70896cad
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c0661fdb90816ff5b19c86bb80709cec70896cad
Author: Piotr Caban <piotr.caban at gmail.com>
Date: Tue Jul 1 19:47:08 2008 +0200
msxml3: Added IXMLDOMElement_getAttributeNode implementation.
---
dlls/msxml3/element.c | 29 +++++++++++++++++++++++++++--
dlls/msxml3/tests/domdoc.c | 4 ----
2 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
index 76af4c6..4b9bf6c 100644
--- a/dlls/msxml3/element.c
+++ b/dlls/msxml3/element.c
@@ -582,8 +582,33 @@ static HRESULT WINAPI domelem_getAttributeNode(
IXMLDOMElement *iface,
BSTR p, IXMLDOMAttribute** attributeNode )
{
- FIXME("\n");
- return E_NOTIMPL;
+ domelem *This = impl_from_IXMLDOMElement( iface );
+ xmlChar *xml_name;
+ xmlNodePtr element;
+ xmlAttrPtr attr;
+ IUnknown *unk;
+ HRESULT hr = E_FAIL;
+
+ TRACE("(%p)->(%s %p)\n", This, debugstr_w(p), attributeNode);
+
+ element = get_element( This );
+ if ( !element )
+ return E_FAIL;
+
+ xml_name = xmlChar_from_wchar(p);
+
+ attr = xmlHasProp(element, xml_name);
+ if(attr) {
+ unk = create_attribute((xmlNodePtr)attr);
+ hr = IUnknown_QueryInterface(unk, &IID_IXMLDOMAttribute, (void**)attributeNode);
+ IUnknown_Release(unk);
+ }else {
+ *attributeNode = NULL;
+ }
+
+ HeapFree(GetProcessHeap(), 0, xml_name);
+
+ return hr;
}
static HRESULT WINAPI domelem_setAttributeNode(
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 0479d80..d5c463d 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -939,10 +939,8 @@ static void test_domnode( void )
attr = (IXMLDOMAttribute*)0xdeadbeef;
r = IXMLDOMElement_getAttributeNode( element, str, &attr);
- todo_wine {
ok( r == E_FAIL, "getAttributeNode ret %08x\n", r );
ok( attr == NULL, "getAttributeNode ret %p, expected NULL\n", attr );
- }
SysFreeString( str );
str = SysAllocString( szdl );
@@ -962,10 +960,8 @@ static void test_domnode( void )
attr = NULL;
r = IXMLDOMElement_getAttributeNode( element, str, &attr);
- todo_wine {
ok( r == S_OK, "GetAttributeNode ret %08x\n", r );
ok( attr != NULL, "getAttributeNode returned NULL\n" );
- }
if(attr)
IXMLDOMAttribute_Release(attr);
More information about the wine-cvs
mailing list