Ignore this patch.
"Alistair Leslie-Hughes" leslie_alistair@hotmail.com wrote in message news:49269ECA.7070202@hotmail.com...
Hi,
Changelog: msxml3: Implement IXMLDOMAttribute get/put value
Best Regards Alistair Leslie-Hughes
--------------------------------------------------------------------------------
From 485959eb359d1efdf66c4be1aa110ba47877847c Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Fri, 21 Nov 2008 21:36:30 +1100 Subject: [PATCH] Implement IXMLDOMAttribute get/put value To: wine-patches wine-patches@winehq.org
dlls/msxml3/attribute.c | 8 ++++---- dlls/msxml3/node.c | 21 +++++++++++++++------ dlls/msxml3/tests/domdoc.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 10 deletions(-)
diff --git a/dlls/msxml3/attribute.c b/dlls/msxml3/attribute.c index 2681a76..92cafad 100644 --- a/dlls/msxml3/attribute.c +++ b/dlls/msxml3/attribute.c @@ -482,16 +482,16 @@ static HRESULT WINAPI domattr_get_value( IXMLDOMAttribute *iface, VARIANT *var1) {
- FIXME("\n");
- return E_NOTIMPL;
- domattr *This = impl_from_IXMLDOMAttribute( iface );
- return IXMLDOMNode_get_nodeValue( This->node, var1 );
}
static HRESULT WINAPI domattr_put_value( IXMLDOMAttribute *iface, VARIANT var1) {
- FIXME("\n");
- return E_NOTIMPL;
- domattr *This = impl_from_IXMLDOMAttribute( iface );
- return IXMLDOMNode_put_nodeValue( This->node, var1 );
}
static const struct IXMLDOMAttributeVtbl domattr_vtbl = diff --git a/dlls/msxml3/node.c b/dlls/msxml3/node.c index 19cee8f..6693803 100644 --- a/dlls/msxml3/node.c +++ b/dlls/msxml3/node.c @@ -339,13 +339,22 @@ static HRESULT WINAPI xmlnode_put_nodeValue(
TRACE("%p type(%d)\n", This, This->node->type);
- VariantInit(&string_value);
- hr = VariantChangeType(&string_value, &value, 0, VT_BSTR);
- if(FAILED(hr))
- /* Attribute nodes treat NULL Variants as empty strings. */
- if(V_VT(&value) == VT_NULL && This->node->type == XML_ATTRIBUTE_NODE) {
VariantClear(&string_value);
WARN("Couldn't convert to VT_BSTR\n");
return hr;
V_VT(&string_value) = VT_BSTR;
V_BSTR(&string_value) = SysAllocStringLen(NULL, 0);
}
else
{
VariantInit(&string_value);
hr = VariantChangeType(&string_value, &value, 0, VT_BSTR);
if(FAILED(hr))
{
VariantClear(&string_value);
WARN("Couldn't convert to VT_BSTR\n");
return hr;
}
}
hr = S_FALSE;
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index e27c506..c975d73 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -2796,12 +2796,18 @@ static void test_xmlTypes(void) ok( V_VT(&v) == VT_NULL, "incorrect dataType type\n"); VariantClear(&v);
V_VT(&v) = VT_NULL;
V_I4(&v) = 0;
hr = IXMLDOMElement_put_nodeValue(pElement, v);
ok(hr == DISP_E_TYPEMISMATCH, "ret %08x\n", hr );
/* Attribute */ hr = IXMLDOMDocument_createAttribute(doc, szAttribute,
&pAttrubute); ok(hr == S_OK, "ret %08x\n", hr ); if(hr == S_OK) { IXMLDOMNode *pNewChild = (IXMLDOMNode *)0x1;
IXMLDOMNode *pAttrNode = NULL; hr = IXMLDOMAttribute_get_nextSibling(pAttrubute,
NULL); ok(hr == E_INVALIDARG, "ret %08x\n", hr ); @@ -2876,6 +2882,30 @@ static void test_xmlTypes(void) ok( V_VT(&v) == VT_NULL, "incorrect dataType type\n"); VariantClear(&v);
/* test value */
V_VT(&v) = VT_NULL;
VariantClear(&v);
hr = IXMLDOMAttribute_put_value(pAttrubute, v);
ok(hr == S_OK, "ret %08x\n", hr );
VariantClear(&v);
hr = IXMLDOMAttribute_get_value(pAttrubute, &v);
ok(hr == S_OK, "ret %08x\n", hr );
ok( !lstrcmpW( V_BSTR(&v), _bstr_("") ), "incorrect
get_value string\n");
VariantClear(&v);
IXMLDOMAttribute_QueryInterface(pAttrubute,
&IID_IXMLDOMNode, (LPVOID*)&pAttrNode);
if(hr == S_OK)
{
V_VT(&v) = VT_NULL;
VariantClear(&v);
hr = IXMLDOMNode_put_nodeValue(pAttrNode, v);
ok(hr == S_OK, "ret %08x\n", hr );
VariantClear(&v);
IXMLDOMNode_Release(pAttrNode);
}
IXMLDOMAttribute_Release(pAttrubute); /* Check Element again with the Add Attribute*/
-- 1.5.4.3
--------------------------------------------------------------------------------