Commit 6ce537ba authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

msxml3: Don't use xmlnode's IXMLDOMNode iface in get_nodeValue implementations.

parent 7a68fad2
...@@ -190,10 +190,13 @@ static HRESULT WINAPI domattr_get_nodeName( ...@@ -190,10 +190,13 @@ static HRESULT WINAPI domattr_get_nodeName(
static HRESULT WINAPI domattr_get_nodeValue( static HRESULT WINAPI domattr_get_nodeValue(
IXMLDOMAttribute *iface, IXMLDOMAttribute *iface,
VARIANT* var1 ) VARIANT* value)
{ {
domattr *This = impl_from_IXMLDOMAttribute( iface ); domattr *This = impl_from_IXMLDOMAttribute( iface );
return IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), var1 );
TRACE("(%p)->(%p)\n", This, value);
return node_get_content(&This->node, value);
} }
static HRESULT WINAPI domattr_put_nodeValue( static HRESULT WINAPI domattr_put_nodeValue(
...@@ -487,10 +490,13 @@ static HRESULT WINAPI domattr_get_name( ...@@ -487,10 +490,13 @@ static HRESULT WINAPI domattr_get_name(
static HRESULT WINAPI domattr_get_value( static HRESULT WINAPI domattr_get_value(
IXMLDOMAttribute *iface, IXMLDOMAttribute *iface,
VARIANT *var1) VARIANT *value)
{ {
domattr *This = impl_from_IXMLDOMAttribute( iface ); domattr *This = impl_from_IXMLDOMAttribute( iface );
return IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), var1 );
TRACE("(%p)->(%p)\n", This, value);
return node_get_content(&This->node, value);
} }
static HRESULT WINAPI domattr_put_value( static HRESULT WINAPI domattr_put_value(
......
...@@ -201,10 +201,13 @@ static HRESULT WINAPI domcdata_get_nodeName( ...@@ -201,10 +201,13 @@ static HRESULT WINAPI domcdata_get_nodeName(
static HRESULT WINAPI domcdata_get_nodeValue( static HRESULT WINAPI domcdata_get_nodeValue(
IXMLDOMCDATASection *iface, IXMLDOMCDATASection *iface,
VARIANT* var1 ) VARIANT* value)
{ {
domcdata *This = impl_from_IXMLDOMCDATASection( iface ); domcdata *This = impl_from_IXMLDOMCDATASection( iface );
return IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), var1 );
TRACE("(%p)->(%p)\n", This, value);
return node_get_content(&This->node, value);
} }
static HRESULT WINAPI domcdata_put_nodeValue( static HRESULT WINAPI domcdata_put_nodeValue(
......
...@@ -194,10 +194,13 @@ static HRESULT WINAPI domcomment_get_nodeName( ...@@ -194,10 +194,13 @@ static HRESULT WINAPI domcomment_get_nodeName(
static HRESULT WINAPI domcomment_get_nodeValue( static HRESULT WINAPI domcomment_get_nodeValue(
IXMLDOMComment *iface, IXMLDOMComment *iface,
VARIANT* var1 ) VARIANT* value)
{ {
domcomment *This = impl_from_IXMLDOMComment( iface ); domcomment *This = impl_from_IXMLDOMComment( iface );
return IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), var1 );
TRACE("(%p)->(%p)\n", This, value);
return node_get_content(&This->node, value);
} }
static HRESULT WINAPI domcomment_put_nodeValue( static HRESULT WINAPI domcomment_put_nodeValue(
......
...@@ -194,10 +194,17 @@ static HRESULT WINAPI domfrag_get_nodeName( ...@@ -194,10 +194,17 @@ static HRESULT WINAPI domfrag_get_nodeName(
static HRESULT WINAPI domfrag_get_nodeValue( static HRESULT WINAPI domfrag_get_nodeValue(
IXMLDOMDocumentFragment *iface, IXMLDOMDocumentFragment *iface,
VARIANT* var1 ) VARIANT* value)
{ {
domfrag *This = impl_from_IXMLDOMDocumentFragment( iface ); domfrag *This = impl_from_IXMLDOMDocumentFragment( iface );
return IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), var1 );
FIXME("(%p)->(%p)\n", This, value);
if(!value)
return E_INVALIDARG;
V_VT(value) = VT_NULL;
return S_FALSE;
} }
static HRESULT WINAPI domfrag_put_nodeValue( static HRESULT WINAPI domfrag_put_nodeValue(
......
...@@ -700,7 +700,15 @@ static HRESULT WINAPI domdoc_get_nodeValue( ...@@ -700,7 +700,15 @@ static HRESULT WINAPI domdoc_get_nodeValue(
VARIANT* value ) VARIANT* value )
{ {
domdoc *This = impl_from_IXMLDOMDocument3( iface ); domdoc *This = impl_from_IXMLDOMDocument3( iface );
return IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), value );
TRACE("(%p)->(%p)\n", This, value);
if(!value)
return E_INVALIDARG;
V_VT(value) = VT_NULL;
V_BSTR(value) = NULL; /* tests show that we should do this */
return S_FALSE;
} }
......
...@@ -202,10 +202,18 @@ static HRESULT WINAPI domelem_get_nodeName( ...@@ -202,10 +202,18 @@ static HRESULT WINAPI domelem_get_nodeName(
static HRESULT WINAPI domelem_get_nodeValue( static HRESULT WINAPI domelem_get_nodeValue(
IXMLDOMElement *iface, IXMLDOMElement *iface,
VARIANT* var1 ) VARIANT* value)
{ {
domelem *This = impl_from_IXMLDOMElement( iface ); domelem *This = impl_from_IXMLDOMElement( iface );
return IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), var1 );
TRACE("(%p)->(%p)\n", This, value);
if(!value)
return E_INVALIDARG;
V_VT(value) = VT_NULL;
V_BSTR(value) = NULL; /* tests show that we should do this */
return S_FALSE;
} }
static HRESULT WINAPI domelem_put_nodeValue( static HRESULT WINAPI domelem_put_nodeValue(
......
...@@ -190,10 +190,17 @@ static HRESULT WINAPI entityref_get_nodeName( ...@@ -190,10 +190,17 @@ static HRESULT WINAPI entityref_get_nodeName(
static HRESULT WINAPI entityref_get_nodeValue( static HRESULT WINAPI entityref_get_nodeValue(
IXMLDOMEntityReference *iface, IXMLDOMEntityReference *iface,
VARIANT* var1 ) VARIANT* value)
{ {
entityref *This = impl_from_IXMLDOMEntityReference( iface ); entityref *This = impl_from_IXMLDOMEntityReference( iface );
return IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), var1 );
FIXME("(%p)->(%p)\n", This, value);
if(!value)
return E_INVALIDARG;
V_VT(value) = VT_NULL;
return S_FALSE;
} }
static HRESULT WINAPI entityref_put_nodeValue( static HRESULT WINAPI entityref_put_nodeValue(
......
...@@ -160,6 +160,7 @@ extern BOOL node_query_interface(xmlnode*,REFIID,void**); ...@@ -160,6 +160,7 @@ extern BOOL node_query_interface(xmlnode*,REFIID,void**);
extern xmlnode *get_node_obj(IXMLDOMNode*); extern xmlnode *get_node_obj(IXMLDOMNode*);
extern HRESULT node_get_nodeName(xmlnode*,BSTR*); extern HRESULT node_get_nodeName(xmlnode*,BSTR*);
extern HRESULT node_get_content(xmlnode*,VARIANT*);
extern HRESULT DOMDocument_create_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument3 **document); extern HRESULT DOMDocument_create_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument3 **document);
......
...@@ -198,52 +198,28 @@ static HRESULT WINAPI xmlnode_get_nodeName( ...@@ -198,52 +198,28 @@ static HRESULT WINAPI xmlnode_get_nodeName(
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI xmlnode_get_nodeValue( HRESULT node_get_content(xmlnode *This, VARIANT *value)
IXMLDOMNode *iface,
VARIANT* value)
{ {
xmlnode *This = impl_from_IXMLDOMNode( iface ); xmlChar *content;
HRESULT r = S_FALSE;
TRACE("(%p)->(%p)\n", This, value);
if(!value) if(!value)
return E_INVALIDARG; return E_INVALIDARG;
V_BSTR(value) = NULL; content = xmlNodeGetContent(This->node);
V_VT(value) = VT_NULL; V_VT(value) = VT_BSTR;
V_BSTR(value) = bstr_from_xmlChar( content );
switch ( This->node->type ) xmlFree(content);
{
case XML_CDATA_SECTION_NODE:
case XML_COMMENT_NODE:
case XML_PI_NODE:
case XML_ATTRIBUTE_NODE:
{
xmlChar *content = xmlNodeGetContent(This->node);
V_VT(value) = VT_BSTR;
V_BSTR(value) = bstr_from_xmlChar( content );
xmlFree(content);
r = S_OK;
break;
}
case XML_TEXT_NODE:
V_VT(value) = VT_BSTR;
V_BSTR(value) = bstr_from_xmlChar( This->node->content );
r = S_OK;
break;
case XML_ELEMENT_NODE:
case XML_DOCUMENT_NODE:
/* these seem to return NULL */
break;
default: TRACE("%p returned %s\n", This, debugstr_w(V_BSTR(value)));
FIXME("node %p type %d\n", This, This->node->type); return S_OK;
} }
TRACE("%p returned %s\n", This, debugstr_w( V_BSTR(value) ) );
return r; static HRESULT WINAPI xmlnode_get_nodeValue(
IXMLDOMNode *iface,
VARIANT* value)
{
ERR("Should not be called\n");
return E_NOTIMPL;
} }
static HRESULT WINAPI xmlnode_put_nodeValue( static HRESULT WINAPI xmlnode_put_nodeValue(
...@@ -1821,10 +1797,17 @@ static HRESULT WINAPI unknode_get_nodeName( ...@@ -1821,10 +1797,17 @@ static HRESULT WINAPI unknode_get_nodeName(
static HRESULT WINAPI unknode_get_nodeValue( static HRESULT WINAPI unknode_get_nodeValue(
IXMLDOMNode *iface, IXMLDOMNode *iface,
VARIANT* var1 ) VARIANT* value)
{ {
unknode *This = impl_from_unkIXMLDOMNode( iface ); unknode *This = impl_from_unkIXMLDOMNode( iface );
return IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), var1 );
FIXME("(%p)->(%p)\n", This, value);
if(!value)
return E_INVALIDARG;
V_VT(value) = VT_NULL;
return S_FALSE;
} }
static HRESULT WINAPI unknode_put_nodeValue( static HRESULT WINAPI unknode_put_nodeValue(
......
...@@ -191,10 +191,13 @@ static HRESULT WINAPI dom_pi_get_nodeName( ...@@ -191,10 +191,13 @@ static HRESULT WINAPI dom_pi_get_nodeName(
static HRESULT WINAPI dom_pi_get_nodeValue( static HRESULT WINAPI dom_pi_get_nodeValue(
IXMLDOMProcessingInstruction *iface, IXMLDOMProcessingInstruction *iface,
VARIANT* var1 ) VARIANT* value)
{ {
dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface ); dom_pi *This = impl_from_IXMLDOMProcessingInstruction( iface );
return IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), var1 );
TRACE("(%p)->(%p)\n", This, value);
return node_get_content(&This->node, value);
} }
static HRESULT WINAPI dom_pi_put_nodeValue( static HRESULT WINAPI dom_pi_put_nodeValue(
......
...@@ -202,10 +202,18 @@ static HRESULT WINAPI domtext_get_nodeName( ...@@ -202,10 +202,18 @@ static HRESULT WINAPI domtext_get_nodeName(
static HRESULT WINAPI domtext_get_nodeValue( static HRESULT WINAPI domtext_get_nodeValue(
IXMLDOMText *iface, IXMLDOMText *iface,
VARIANT* var1 ) VARIANT* value )
{ {
domtext *This = impl_from_IXMLDOMText( iface ); domtext *This = impl_from_IXMLDOMText( iface );
return IXMLDOMNode_get_nodeValue( IXMLDOMNode_from_impl(&This->node), var1 );
TRACE("(%p)->(%p)\n", This, value);
if(!value)
return E_INVALIDARG;
V_VT(value) = VT_BSTR;
V_BSTR(value) = bstr_from_xmlChar(This->node.node->content);
return S_OK;
} }
static HRESULT WINAPI domtext_put_nodeValue( static HRESULT WINAPI domtext_put_nodeValue(
...@@ -487,19 +495,13 @@ static HRESULT WINAPI domtext_get_data( ...@@ -487,19 +495,13 @@ static HRESULT WINAPI domtext_get_data(
IXMLDOMText *iface, IXMLDOMText *iface,
BSTR *p) BSTR *p)
{ {
HRESULT hr; domtext *This = impl_from_IXMLDOMText( iface );
VARIANT vRet;
if(!p) if(!p)
return E_INVALIDARG; return E_INVALIDARG;
hr = IXMLDOMNode_get_nodeValue( iface, &vRet ); *p = bstr_from_xmlChar(This->node.node->content);
if(hr == S_OK) return S_OK;
{
*p = V_BSTR(&vRet);
}
return hr;
} }
static HRESULT WINAPI domtext_put_data( static HRESULT WINAPI domtext_put_data(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment