msxml3: Convert the domdoc object to use the IXMLDOMDocument2 interface.

This commit is contained in:
Huw Davies 2007-02-26 12:49:12 +00:00 committed by Alexandre Julliard
parent 94a0a90165
commit 9ceb5a3ea7
2 changed files with 223 additions and 138 deletions

View File

@ -163,7 +163,7 @@ static bsc domdoc_bsc = { &bsc_vtbl };
typedef struct _domdoc typedef struct _domdoc
{ {
const struct IXMLDOMDocumentVtbl *lpVtbl; const struct IXMLDOMDocument2Vtbl *lpVtbl;
LONG ref; LONG ref;
VARIANT_BOOL async; VARIANT_BOOL async;
VARIANT_BOOL validating; VARIANT_BOOL validating;
@ -194,7 +194,7 @@ LONG xmldoc_release(xmlDocPtr doc)
return ref; return ref;
} }
static inline domdoc *impl_from_IXMLDOMDocument( IXMLDOMDocument *iface ) static inline domdoc *impl_from_IXMLDOMDocument2( IXMLDOMDocument2 *iface )
{ {
return (domdoc *)((char*)iface - FIELD_OFFSET(domdoc, lpVtbl)); return (domdoc *)((char*)iface - FIELD_OFFSET(domdoc, lpVtbl));
} }
@ -204,14 +204,15 @@ static inline xmlDocPtr get_doc( domdoc *This )
return (xmlDocPtr) xmlNodePtr_from_domnode( This->node, XML_DOCUMENT_NODE ); return (xmlDocPtr) xmlNodePtr_from_domnode( This->node, XML_DOCUMENT_NODE );
} }
static HRESULT WINAPI domdoc_QueryInterface( IXMLDOMDocument *iface, REFIID riid, void** ppvObject ) static HRESULT WINAPI domdoc_QueryInterface( IXMLDOMDocument2 *iface, REFIID riid, void** ppvObject )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppvObject ); TRACE("%p %s %p\n", This, debugstr_guid( riid ), ppvObject );
if ( IsEqualGUID( riid, &IID_IXMLDOMDocument ) || if ( IsEqualGUID( riid, &IID_IUnknown ) ||
IsEqualGUID( riid, &IID_IUnknown ) ) IsEqualGUID( riid, &IID_IXMLDOMDocument ) ||
IsEqualGUID( riid, &IID_IXMLDOMDocument2 ) )
{ {
*ppvObject = iface; *ppvObject = iface;
} }
@ -233,18 +234,18 @@ static HRESULT WINAPI domdoc_QueryInterface( IXMLDOMDocument *iface, REFIID riid
static ULONG WINAPI domdoc_AddRef( static ULONG WINAPI domdoc_AddRef(
IXMLDOMDocument *iface ) IXMLDOMDocument2 *iface )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
TRACE("%p\n", This ); TRACE("%p\n", This );
return InterlockedIncrement( &This->ref ); return InterlockedIncrement( &This->ref );
} }
static ULONG WINAPI domdoc_Release( static ULONG WINAPI domdoc_Release(
IXMLDOMDocument *iface ) IXMLDOMDocument2 *iface )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
LONG ref; LONG ref;
TRACE("%p\n", This ); TRACE("%p\n", This );
@ -259,14 +260,14 @@ static ULONG WINAPI domdoc_Release(
return ref; return ref;
} }
static HRESULT WINAPI domdoc_GetTypeInfoCount( IXMLDOMDocument *iface, UINT* pctinfo ) static HRESULT WINAPI domdoc_GetTypeInfoCount( IXMLDOMDocument2 *iface, UINT* pctinfo )
{ {
FIXME("\n"); FIXME("\n");
return E_NOTIMPL; return E_NOTIMPL;
} }
static HRESULT WINAPI domdoc_GetTypeInfo( static HRESULT WINAPI domdoc_GetTypeInfo(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo ) UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo )
{ {
FIXME("\n"); FIXME("\n");
@ -274,7 +275,7 @@ static HRESULT WINAPI domdoc_GetTypeInfo(
} }
static HRESULT WINAPI domdoc_GetIDsOfNames( static HRESULT WINAPI domdoc_GetIDsOfNames(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
REFIID riid, REFIID riid,
LPOLESTR* rgszNames, LPOLESTR* rgszNames,
UINT cNames, UINT cNames,
@ -287,7 +288,7 @@ static HRESULT WINAPI domdoc_GetIDsOfNames(
static HRESULT WINAPI domdoc_Invoke( static HRESULT WINAPI domdoc_Invoke(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
DISPID dispIdMember, DISPID dispIdMember,
REFIID riid, REFIID riid,
LCID lcid, LCID lcid,
@ -303,341 +304,341 @@ static HRESULT WINAPI domdoc_Invoke(
static HRESULT WINAPI domdoc_get_nodeName( static HRESULT WINAPI domdoc_get_nodeName(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR* name ) BSTR* name )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_nodeName( This->node, name ); return IXMLDOMNode_get_nodeName( This->node, name );
} }
static HRESULT WINAPI domdoc_get_nodeValue( static HRESULT WINAPI domdoc_get_nodeValue(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT* value ) VARIANT* value )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_nodeValue( This->node, value ); return IXMLDOMNode_get_nodeValue( This->node, value );
} }
static HRESULT WINAPI domdoc_put_nodeValue( static HRESULT WINAPI domdoc_put_nodeValue(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT value) VARIANT value)
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_put_nodeValue( This->node, value ); return IXMLDOMNode_put_nodeValue( This->node, value );
} }
static HRESULT WINAPI domdoc_get_nodeType( static HRESULT WINAPI domdoc_get_nodeType(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
DOMNodeType* type ) DOMNodeType* type )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_nodeType( This->node, type ); return IXMLDOMNode_get_nodeType( This->node, type );
} }
static HRESULT WINAPI domdoc_get_parentNode( static HRESULT WINAPI domdoc_get_parentNode(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNode** parent ) IXMLDOMNode** parent )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_parentNode( This->node, parent ); return IXMLDOMNode_get_parentNode( This->node, parent );
} }
static HRESULT WINAPI domdoc_get_childNodes( static HRESULT WINAPI domdoc_get_childNodes(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNodeList** childList ) IXMLDOMNodeList** childList )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_childNodes( This->node, childList ); return IXMLDOMNode_get_childNodes( This->node, childList );
} }
static HRESULT WINAPI domdoc_get_firstChild( static HRESULT WINAPI domdoc_get_firstChild(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNode** firstChild ) IXMLDOMNode** firstChild )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_firstChild( This->node, firstChild ); return IXMLDOMNode_get_firstChild( This->node, firstChild );
} }
static HRESULT WINAPI domdoc_get_lastChild( static HRESULT WINAPI domdoc_get_lastChild(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNode** lastChild ) IXMLDOMNode** lastChild )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_lastChild( This->node, lastChild ); return IXMLDOMNode_get_lastChild( This->node, lastChild );
} }
static HRESULT WINAPI domdoc_get_previousSibling( static HRESULT WINAPI domdoc_get_previousSibling(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNode** previousSibling ) IXMLDOMNode** previousSibling )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_previousSibling( This->node, previousSibling ); return IXMLDOMNode_get_previousSibling( This->node, previousSibling );
} }
static HRESULT WINAPI domdoc_get_nextSibling( static HRESULT WINAPI domdoc_get_nextSibling(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNode** nextSibling ) IXMLDOMNode** nextSibling )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_nextSibling( This->node, nextSibling ); return IXMLDOMNode_get_nextSibling( This->node, nextSibling );
} }
static HRESULT WINAPI domdoc_get_attributes( static HRESULT WINAPI domdoc_get_attributes(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNamedNodeMap** attributeMap ) IXMLDOMNamedNodeMap** attributeMap )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_attributes( This->node, attributeMap ); return IXMLDOMNode_get_attributes( This->node, attributeMap );
} }
static HRESULT WINAPI domdoc_insertBefore( static HRESULT WINAPI domdoc_insertBefore(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNode* newChild, IXMLDOMNode* newChild,
VARIANT refChild, VARIANT refChild,
IXMLDOMNode** outNewChild ) IXMLDOMNode** outNewChild )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_insertBefore( This->node, newChild, refChild, outNewChild ); return IXMLDOMNode_insertBefore( This->node, newChild, refChild, outNewChild );
} }
static HRESULT WINAPI domdoc_replaceChild( static HRESULT WINAPI domdoc_replaceChild(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNode* newChild, IXMLDOMNode* newChild,
IXMLDOMNode* oldChild, IXMLDOMNode* oldChild,
IXMLDOMNode** outOldChild) IXMLDOMNode** outOldChild)
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_replaceChild( This->node, newChild, oldChild, outOldChild ); return IXMLDOMNode_replaceChild( This->node, newChild, oldChild, outOldChild );
} }
static HRESULT WINAPI domdoc_removeChild( static HRESULT WINAPI domdoc_removeChild(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNode* childNode, IXMLDOMNode* childNode,
IXMLDOMNode** oldChild) IXMLDOMNode** oldChild)
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_removeChild( This->node, childNode, oldChild ); return IXMLDOMNode_removeChild( This->node, childNode, oldChild );
} }
static HRESULT WINAPI domdoc_appendChild( static HRESULT WINAPI domdoc_appendChild(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNode* newChild, IXMLDOMNode* newChild,
IXMLDOMNode** outNewChild) IXMLDOMNode** outNewChild)
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_appendChild( This->node, newChild, outNewChild ); return IXMLDOMNode_appendChild( This->node, newChild, outNewChild );
} }
static HRESULT WINAPI domdoc_hasChildNodes( static HRESULT WINAPI domdoc_hasChildNodes(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT_BOOL* hasChild) VARIANT_BOOL* hasChild)
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_hasChildNodes( This->node, hasChild ); return IXMLDOMNode_hasChildNodes( This->node, hasChild );
} }
static HRESULT WINAPI domdoc_get_ownerDocument( static HRESULT WINAPI domdoc_get_ownerDocument(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMDocument** DOMDocument) IXMLDOMDocument** DOMDocument)
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_ownerDocument( This->node, DOMDocument ); return IXMLDOMNode_get_ownerDocument( This->node, DOMDocument );
} }
static HRESULT WINAPI domdoc_cloneNode( static HRESULT WINAPI domdoc_cloneNode(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT_BOOL deep, VARIANT_BOOL deep,
IXMLDOMNode** cloneRoot) IXMLDOMNode** cloneRoot)
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_cloneNode( This->node, deep, cloneRoot ); return IXMLDOMNode_cloneNode( This->node, deep, cloneRoot );
} }
static HRESULT WINAPI domdoc_get_nodeTypeString( static HRESULT WINAPI domdoc_get_nodeTypeString(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR* nodeType ) BSTR* nodeType )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_nodeTypeString( This->node, nodeType ); return IXMLDOMNode_get_nodeTypeString( This->node, nodeType );
} }
static HRESULT WINAPI domdoc_get_text( static HRESULT WINAPI domdoc_get_text(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR* text ) BSTR* text )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_text( This->node, text ); return IXMLDOMNode_get_text( This->node, text );
} }
static HRESULT WINAPI domdoc_put_text( static HRESULT WINAPI domdoc_put_text(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR text ) BSTR text )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_put_text( This->node, text ); return IXMLDOMNode_put_text( This->node, text );
} }
static HRESULT WINAPI domdoc_get_specified( static HRESULT WINAPI domdoc_get_specified(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT_BOOL* isSpecified ) VARIANT_BOOL* isSpecified )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_specified( This->node, isSpecified ); return IXMLDOMNode_get_specified( This->node, isSpecified );
} }
static HRESULT WINAPI domdoc_get_definition( static HRESULT WINAPI domdoc_get_definition(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNode** definitionNode ) IXMLDOMNode** definitionNode )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_definition( This->node, definitionNode ); return IXMLDOMNode_get_definition( This->node, definitionNode );
} }
static HRESULT WINAPI domdoc_get_nodeTypedValue( static HRESULT WINAPI domdoc_get_nodeTypedValue(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT* typedValue ) VARIANT* typedValue )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_nodeTypedValue( This->node, typedValue ); return IXMLDOMNode_get_nodeTypedValue( This->node, typedValue );
} }
static HRESULT WINAPI domdoc_put_nodeTypedValue( static HRESULT WINAPI domdoc_put_nodeTypedValue(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT typedValue ) VARIANT typedValue )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_put_nodeTypedValue( This->node, typedValue ); return IXMLDOMNode_put_nodeTypedValue( This->node, typedValue );
} }
static HRESULT WINAPI domdoc_get_dataType( static HRESULT WINAPI domdoc_get_dataType(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT* dataTypeName ) VARIANT* dataTypeName )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_dataType( This->node, dataTypeName ); return IXMLDOMNode_get_dataType( This->node, dataTypeName );
} }
static HRESULT WINAPI domdoc_put_dataType( static HRESULT WINAPI domdoc_put_dataType(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR dataTypeName ) BSTR dataTypeName )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_put_dataType( This->node, dataTypeName ); return IXMLDOMNode_put_dataType( This->node, dataTypeName );
} }
static HRESULT WINAPI domdoc_get_xml( static HRESULT WINAPI domdoc_get_xml(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR* xmlString ) BSTR* xmlString )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_xml( This->node, xmlString ); return IXMLDOMNode_get_xml( This->node, xmlString );
} }
static HRESULT WINAPI domdoc_transformNode( static HRESULT WINAPI domdoc_transformNode(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNode* styleSheet, IXMLDOMNode* styleSheet,
BSTR* xmlString ) BSTR* xmlString )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_transformNode( This->node, styleSheet, xmlString ); return IXMLDOMNode_transformNode( This->node, styleSheet, xmlString );
} }
static HRESULT WINAPI domdoc_selectNodes( static HRESULT WINAPI domdoc_selectNodes(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR queryString, BSTR queryString,
IXMLDOMNodeList** resultList ) IXMLDOMNodeList** resultList )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_selectNodes( This->node, queryString, resultList ); return IXMLDOMNode_selectNodes( This->node, queryString, resultList );
} }
static HRESULT WINAPI domdoc_selectSingleNode( static HRESULT WINAPI domdoc_selectSingleNode(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR queryString, BSTR queryString,
IXMLDOMNode** resultNode ) IXMLDOMNode** resultNode )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_selectSingleNode( This->node, queryString, resultNode ); return IXMLDOMNode_selectSingleNode( This->node, queryString, resultNode );
} }
static HRESULT WINAPI domdoc_get_parsed( static HRESULT WINAPI domdoc_get_parsed(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT_BOOL* isParsed ) VARIANT_BOOL* isParsed )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_parsed( This->node, isParsed ); return IXMLDOMNode_get_parsed( This->node, isParsed );
} }
static HRESULT WINAPI domdoc_get_namespaceURI( static HRESULT WINAPI domdoc_get_namespaceURI(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR* namespaceURI ) BSTR* namespaceURI )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_namespaceURI( This->node, namespaceURI ); return IXMLDOMNode_get_namespaceURI( This->node, namespaceURI );
} }
static HRESULT WINAPI domdoc_get_prefix( static HRESULT WINAPI domdoc_get_prefix(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR* prefixString ) BSTR* prefixString )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_prefix( This->node, prefixString ); return IXMLDOMNode_get_prefix( This->node, prefixString );
} }
static HRESULT WINAPI domdoc_get_baseName( static HRESULT WINAPI domdoc_get_baseName(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR* nameString ) BSTR* nameString )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_get_baseName( This->node, nameString ); return IXMLDOMNode_get_baseName( This->node, nameString );
} }
static HRESULT WINAPI domdoc_transformNodeToObject( static HRESULT WINAPI domdoc_transformNodeToObject(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMNode* stylesheet, IXMLDOMNode* stylesheet,
VARIANT outputObject) VARIANT outputObject)
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
return IXMLDOMNode_transformNodeToObject( This->node, stylesheet, outputObject ); return IXMLDOMNode_transformNodeToObject( This->node, stylesheet, outputObject );
} }
static HRESULT WINAPI domdoc_get_doctype( static HRESULT WINAPI domdoc_get_doctype(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMDocumentType** documentType ) IXMLDOMDocumentType** documentType )
{ {
FIXME("\n"); FIXME("\n");
@ -646,7 +647,7 @@ static HRESULT WINAPI domdoc_get_doctype(
static HRESULT WINAPI domdoc_get_implementation( static HRESULT WINAPI domdoc_get_implementation(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMImplementation** impl ) IXMLDOMImplementation** impl )
{ {
FIXME("\n"); FIXME("\n");
@ -654,10 +655,10 @@ static HRESULT WINAPI domdoc_get_implementation(
} }
static HRESULT WINAPI domdoc_get_documentElement( static HRESULT WINAPI domdoc_get_documentElement(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMElement** DOMElement ) IXMLDOMElement** DOMElement )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
xmlDocPtr xmldoc = NULL; xmlDocPtr xmldoc = NULL;
xmlNodePtr root = NULL; xmlNodePtr root = NULL;
IXMLDOMNode *element_node; IXMLDOMNode *element_node;
@ -684,7 +685,7 @@ static HRESULT WINAPI domdoc_get_documentElement(
static HRESULT WINAPI domdoc_documentElement( static HRESULT WINAPI domdoc_documentElement(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMElement* DOMElement ) IXMLDOMElement* DOMElement )
{ {
FIXME("\n"); FIXME("\n");
@ -693,12 +694,12 @@ static HRESULT WINAPI domdoc_documentElement(
static HRESULT WINAPI domdoc_createElement( static HRESULT WINAPI domdoc_createElement(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR tagname, BSTR tagname,
IXMLDOMElement** element ) IXMLDOMElement** element )
{ {
xmlNodePtr xmlnode; xmlNodePtr xmlnode;
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
xmlChar *xml_name; xmlChar *xml_name;
IUnknown *elem_unk; IUnknown *elem_unk;
HRESULT hr; HRESULT hr;
@ -720,7 +721,7 @@ static HRESULT WINAPI domdoc_createElement(
static HRESULT WINAPI domdoc_createDocumentFragment( static HRESULT WINAPI domdoc_createDocumentFragment(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMDocumentFragment** docFrag ) IXMLDOMDocumentFragment** docFrag )
{ {
FIXME("\n"); FIXME("\n");
@ -729,7 +730,7 @@ static HRESULT WINAPI domdoc_createDocumentFragment(
static HRESULT WINAPI domdoc_createTextNode( static HRESULT WINAPI domdoc_createTextNode(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR data, BSTR data,
IXMLDOMText** text ) IXMLDOMText** text )
{ {
@ -739,7 +740,7 @@ static HRESULT WINAPI domdoc_createTextNode(
static HRESULT WINAPI domdoc_createComment( static HRESULT WINAPI domdoc_createComment(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR data, BSTR data,
IXMLDOMComment** comment ) IXMLDOMComment** comment )
{ {
@ -749,7 +750,7 @@ static HRESULT WINAPI domdoc_createComment(
static HRESULT WINAPI domdoc_createCDATASection( static HRESULT WINAPI domdoc_createCDATASection(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR data, BSTR data,
IXMLDOMCDATASection** cdata ) IXMLDOMCDATASection** cdata )
{ {
@ -759,14 +760,14 @@ static HRESULT WINAPI domdoc_createCDATASection(
static HRESULT WINAPI domdoc_createProcessingInstruction( static HRESULT WINAPI domdoc_createProcessingInstruction(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR target, BSTR target,
BSTR data, BSTR data,
IXMLDOMProcessingInstruction** pi ) IXMLDOMProcessingInstruction** pi )
{ {
#ifdef HAVE_XMLNEWDOCPI #ifdef HAVE_XMLNEWDOCPI
xmlNodePtr xmlnode; xmlNodePtr xmlnode;
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
xmlChar *xml_target, *xml_content; xmlChar *xml_target, *xml_content;
TRACE("%p->(%s %s %p)\n", iface, debugstr_w(target), debugstr_w(data), pi); TRACE("%p->(%s %s %p)\n", iface, debugstr_w(target), debugstr_w(data), pi);
@ -790,7 +791,7 @@ static HRESULT WINAPI domdoc_createProcessingInstruction(
static HRESULT WINAPI domdoc_createAttribute( static HRESULT WINAPI domdoc_createAttribute(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR name, BSTR name,
IXMLDOMAttribute** attribute ) IXMLDOMAttribute** attribute )
{ {
@ -800,7 +801,7 @@ static HRESULT WINAPI domdoc_createAttribute(
static HRESULT WINAPI domdoc_createEntityReference( static HRESULT WINAPI domdoc_createEntityReference(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR name, BSTR name,
IXMLDOMEntityReference** entityRef ) IXMLDOMEntityReference** entityRef )
{ {
@ -810,11 +811,11 @@ static HRESULT WINAPI domdoc_createEntityReference(
static HRESULT WINAPI domdoc_getElementsByTagName( static HRESULT WINAPI domdoc_getElementsByTagName(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR tagName, BSTR tagName,
IXMLDOMNodeList** resultList ) IXMLDOMNodeList** resultList )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
xmlChar *name; xmlChar *name;
TRACE("(%p)->(%s, %p)\n", This, debugstr_w(tagName), resultList); TRACE("(%p)->(%s, %p)\n", This, debugstr_w(tagName), resultList);
@ -836,13 +837,13 @@ static DOMNodeType get_node_type(VARIANT Type)
} }
static HRESULT WINAPI domdoc_createNode( static HRESULT WINAPI domdoc_createNode(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT Type, VARIANT Type,
BSTR name, BSTR name,
BSTR namespaceURI, BSTR namespaceURI,
IXMLDOMNode** node ) IXMLDOMNode** node )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
DOMNodeType node_type; DOMNodeType node_type;
xmlNodePtr xmlnode = NULL; xmlNodePtr xmlnode = NULL;
xmlChar *xml_name; xmlChar *xml_name;
@ -876,7 +877,7 @@ static HRESULT WINAPI domdoc_createNode(
} }
static HRESULT WINAPI domdoc_nodeFromID( static HRESULT WINAPI domdoc_nodeFromID(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR idString, BSTR idString,
IXMLDOMNode** node ) IXMLDOMNode** node )
{ {
@ -980,11 +981,11 @@ static xmlDocPtr doread( LPWSTR filename )
} }
static HRESULT WINAPI domdoc_load( static HRESULT WINAPI domdoc_load(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT xmlSource, VARIANT xmlSource,
VARIANT_BOOL* isSuccessful ) VARIANT_BOOL* isSuccessful )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
LPWSTR filename = NULL; LPWSTR filename = NULL;
xmlDocPtr xmldoc = NULL; xmlDocPtr xmldoc = NULL;
HRESULT hr = S_FALSE; HRESULT hr = S_FALSE;
@ -1027,7 +1028,7 @@ static HRESULT WINAPI domdoc_load(
static HRESULT WINAPI domdoc_get_readyState( static HRESULT WINAPI domdoc_get_readyState(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
long* value ) long* value )
{ {
FIXME("\n"); FIXME("\n");
@ -1036,12 +1037,12 @@ static HRESULT WINAPI domdoc_get_readyState(
static HRESULT WINAPI domdoc_get_parseError( static HRESULT WINAPI domdoc_get_parseError(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
IXMLDOMParseError** errorObj ) IXMLDOMParseError** errorObj )
{ {
BSTR error_string = NULL; BSTR error_string = NULL;
static const WCHAR err[] = {'e','r','r','o','r',0}; static const WCHAR err[] = {'e','r','r','o','r',0};
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
FIXME("(%p)->(%p): creating a dummy parseError\n", iface, errorObj); FIXME("(%p)->(%p): creating a dummy parseError\n", iface, errorObj);
@ -1055,7 +1056,7 @@ static HRESULT WINAPI domdoc_get_parseError(
static HRESULT WINAPI domdoc_get_url( static HRESULT WINAPI domdoc_get_url(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR* urlString ) BSTR* urlString )
{ {
FIXME("\n"); FIXME("\n");
@ -1064,10 +1065,10 @@ static HRESULT WINAPI domdoc_get_url(
static HRESULT WINAPI domdoc_get_async( static HRESULT WINAPI domdoc_get_async(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT_BOOL* isAsync ) VARIANT_BOOL* isAsync )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
TRACE("%p <- %d\n", isAsync, This->async); TRACE("%p <- %d\n", isAsync, This->async);
*isAsync = This->async; *isAsync = This->async;
@ -1076,10 +1077,10 @@ static HRESULT WINAPI domdoc_get_async(
static HRESULT WINAPI domdoc_put_async( static HRESULT WINAPI domdoc_put_async(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT_BOOL isAsync ) VARIANT_BOOL isAsync )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
TRACE("%d\n", isAsync); TRACE("%d\n", isAsync);
This->async = isAsync; This->async = isAsync;
@ -1088,7 +1089,7 @@ static HRESULT WINAPI domdoc_put_async(
static HRESULT WINAPI domdoc_abort( static HRESULT WINAPI domdoc_abort(
IXMLDOMDocument *iface ) IXMLDOMDocument2 *iface )
{ {
FIXME("\n"); FIXME("\n");
return E_NOTIMPL; return E_NOTIMPL;
@ -1111,11 +1112,11 @@ static BOOL bstr_to_utf8( BSTR bstr, char **pstr, int *plen )
} }
static HRESULT WINAPI domdoc_loadXML( static HRESULT WINAPI domdoc_loadXML(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
BSTR bstrXML, BSTR bstrXML,
VARIANT_BOOL* isSuccessful ) VARIANT_BOOL* isSuccessful )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
xmlDocPtr xmldoc = NULL; xmlDocPtr xmldoc = NULL;
char *str; char *str;
int len; int len;
@ -1155,10 +1156,10 @@ static HRESULT WINAPI domdoc_loadXML(
static HRESULT WINAPI domdoc_save( static HRESULT WINAPI domdoc_save(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT destination ) VARIANT destination )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
HANDLE handle; HANDLE handle;
xmlChar *mem; xmlChar *mem;
int size; int size;
@ -1195,10 +1196,10 @@ static HRESULT WINAPI domdoc_save(
} }
static HRESULT WINAPI domdoc_get_validateOnParse( static HRESULT WINAPI domdoc_get_validateOnParse(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT_BOOL* isValidating ) VARIANT_BOOL* isValidating )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
TRACE("%p <- %d\n", isValidating, This->validating); TRACE("%p <- %d\n", isValidating, This->validating);
*isValidating = This->validating; *isValidating = This->validating;
@ -1207,10 +1208,10 @@ static HRESULT WINAPI domdoc_get_validateOnParse(
static HRESULT WINAPI domdoc_put_validateOnParse( static HRESULT WINAPI domdoc_put_validateOnParse(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT_BOOL isValidating ) VARIANT_BOOL isValidating )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
TRACE("%d\n", isValidating); TRACE("%d\n", isValidating);
This->validating = isValidating; This->validating = isValidating;
@ -1219,10 +1220,10 @@ static HRESULT WINAPI domdoc_put_validateOnParse(
static HRESULT WINAPI domdoc_get_resolveExternals( static HRESULT WINAPI domdoc_get_resolveExternals(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT_BOOL* isResolving ) VARIANT_BOOL* isResolving )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
TRACE("%p <- %d\n", isResolving, This->resolving); TRACE("%p <- %d\n", isResolving, This->resolving);
*isResolving = This->resolving; *isResolving = This->resolving;
@ -1231,10 +1232,10 @@ static HRESULT WINAPI domdoc_get_resolveExternals(
static HRESULT WINAPI domdoc_put_resolveExternals( static HRESULT WINAPI domdoc_put_resolveExternals(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT_BOOL isResolving ) VARIANT_BOOL isResolving )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
TRACE("%d\n", isResolving); TRACE("%d\n", isResolving);
This->resolving = isResolving; This->resolving = isResolving;
@ -1243,10 +1244,10 @@ static HRESULT WINAPI domdoc_put_resolveExternals(
static HRESULT WINAPI domdoc_get_preserveWhiteSpace( static HRESULT WINAPI domdoc_get_preserveWhiteSpace(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT_BOOL* isPreserving ) VARIANT_BOOL* isPreserving )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
TRACE("%p <- %d\n", isPreserving, This->preserving); TRACE("%p <- %d\n", isPreserving, This->preserving);
*isPreserving = This->preserving; *isPreserving = This->preserving;
@ -1255,10 +1256,10 @@ static HRESULT WINAPI domdoc_get_preserveWhiteSpace(
static HRESULT WINAPI domdoc_put_preserveWhiteSpace( static HRESULT WINAPI domdoc_put_preserveWhiteSpace(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT_BOOL isPreserving ) VARIANT_BOOL isPreserving )
{ {
domdoc *This = impl_from_IXMLDOMDocument( iface ); domdoc *This = impl_from_IXMLDOMDocument2( iface );
TRACE("%d\n", isPreserving); TRACE("%d\n", isPreserving);
This->preserving = isPreserving; This->preserving = isPreserving;
@ -1267,7 +1268,7 @@ static HRESULT WINAPI domdoc_put_preserveWhiteSpace(
static HRESULT WINAPI domdoc_put_onReadyStateChange( static HRESULT WINAPI domdoc_put_onReadyStateChange(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT readyStateChangeSink ) VARIANT readyStateChangeSink )
{ {
FIXME("\n"); FIXME("\n");
@ -1276,7 +1277,7 @@ static HRESULT WINAPI domdoc_put_onReadyStateChange(
static HRESULT WINAPI domdoc_put_onDataAvailable( static HRESULT WINAPI domdoc_put_onDataAvailable(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT onDataAvailableSink ) VARIANT onDataAvailableSink )
{ {
FIXME("\n"); FIXME("\n");
@ -1284,14 +1285,64 @@ static HRESULT WINAPI domdoc_put_onDataAvailable(
} }
static HRESULT WINAPI domdoc_put_onTransformNode( static HRESULT WINAPI domdoc_put_onTransformNode(
IXMLDOMDocument *iface, IXMLDOMDocument2 *iface,
VARIANT onTransformNodeSink ) VARIANT onTransformNodeSink )
{ {
FIXME("\n"); FIXME("\n");
return E_NOTIMPL; return E_NOTIMPL;
} }
static const struct IXMLDOMDocumentVtbl domdoc_vtbl = static HRESULT WINAPI domdoc_get_namespaces(
IXMLDOMDocument2* This,
IXMLDOMSchemaCollection** schemaCollection )
{
FIXME("\n");
return E_NOTIMPL;
}
static HRESULT WINAPI domdoc_get_schemas(
IXMLDOMDocument2* This,
VARIANT* var1 )
{
FIXME("\n");
return E_NOTIMPL;
}
static HRESULT WINAPI domdoc_putref_schemas(
IXMLDOMDocument2* This,
VARIANT var1)
{
FIXME("\n");
return E_NOTIMPL;
}
static HRESULT WINAPI domdoc_validate(
IXMLDOMDocument2* This,
IXMLDOMParseError** err)
{
FIXME("\n");
return E_NOTIMPL;
}
static HRESULT WINAPI domdoc_setProperty(
IXMLDOMDocument2* This,
BSTR p,
VARIANT var)
{
FIXME("\n");
return E_NOTIMPL;
}
static HRESULT WINAPI domdoc_getProperty(
IXMLDOMDocument2* This,
BSTR p,
VARIANT* var)
{
FIXME("\n");
return E_NOTIMPL;
}
static const struct IXMLDOMDocument2Vtbl domdoc_vtbl =
{ {
domdoc_QueryInterface, domdoc_QueryInterface,
domdoc_AddRef, domdoc_AddRef,
@ -1369,6 +1420,12 @@ static const struct IXMLDOMDocumentVtbl domdoc_vtbl =
domdoc_put_onReadyStateChange, domdoc_put_onReadyStateChange,
domdoc_put_onDataAvailable, domdoc_put_onDataAvailable,
domdoc_put_onTransformNode, domdoc_put_onTransformNode,
domdoc_get_namespaces,
domdoc_get_schemas,
domdoc_putref_schemas,
domdoc_validate,
domdoc_setProperty,
domdoc_getProperty
}; };
HRESULT DOMDocument_create(IUnknown *pUnkOuter, LPVOID *ppObj) HRESULT DOMDocument_create(IUnknown *pUnkOuter, LPVOID *ppObj)

View File

@ -29,7 +29,8 @@
#include "wine/test.h" #include "wine/test.h"
const CLSID CLSID_DOMDocument2 = {0xf6d90f11, 0x9c73, 0x11d3, {0xb3, 0x2e, 0x00,0xc0, 0x4f, 0x99, 0x0b, 0xb4}}; const CLSID CLSID_DOMDocument2 = {0xf6d90f11, 0x9c73, 0x11d3, {0xb3, 0x2e, 0x00, 0xc0, 0x4f, 0x99, 0x0b, 0xb4}};
const IID IID_IXMLDOMDocument2 = {0x2933bf95, 0x7b36, 0x11d2, {0xb2, 0x0e, 0x00, 0xc0, 0x4f, 0x98, 0x3e, 0x60}};
static const WCHAR szEmpty[] = { 0 }; static const WCHAR szEmpty[] = { 0 };
static const WCHAR szIncomplete[] = { static const WCHAR szIncomplete[] = {
@ -1154,6 +1155,32 @@ static void test_XMLHTTP(void)
SysFreeString(bstrResponse); SysFreeString(bstrResponse);
} }
static void test_IXMLDOMDocument2(void)
{
HRESULT r;
VARIANT_BOOL b;
BSTR str;
IXMLDOMDocument *doc;
IXMLDOMDocument2 *doc2;
r = CoCreateInstance( &CLSID_DOMDocument, NULL,
CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (LPVOID*)&doc );
if( r != S_OK )
return;
str = SysAllocString( szComplete4 );
r = IXMLDOMDocument_loadXML( doc, str, &b );
ok( r == S_OK, "loadXML failed\n");
ok( b == VARIANT_TRUE, "failed to load XML string\n");
SysFreeString( str );
r = IXMLDOMDocument_QueryInterface( doc, &IID_IXMLDOMDocument2, (void**)&doc2 );
ok( r == S_OK, "ret %08x\n", r );
ok( doc == (IXMLDOMDocument*)doc2, "interfaces differ\n");
IXMLDOMDocument2_Release( doc2 );
IXMLDOMDocument_Release( doc );
}
START_TEST(domdoc) START_TEST(domdoc)
{ {
HRESULT r; HRESULT r;
@ -1170,6 +1197,7 @@ START_TEST(domdoc)
test_get_childNodes(); test_get_childNodes();
test_removeChild(); test_removeChild();
test_XMLHTTP(); test_XMLHTTP();
test_IXMLDOMDocument2();
CoUninitialize(); CoUninitialize();
} }