msxml3: Fix support for IXMLDOMDocument3.

This commit is contained in:
Nikolay Sivov 2011-11-19 17:00:24 +03:00 committed by Alexandre Julliard
parent b26ad412d3
commit a9d8f9a0a2
4 changed files with 13 additions and 14 deletions

View File

@ -117,6 +117,7 @@ static tid_id_t tid_ids[] = {
{ &IID_IXMLDOMComment, LibXml2 }, { &IID_IXMLDOMComment, LibXml2 },
{ &IID_IXMLDOMDocument, LibXml2 }, { &IID_IXMLDOMDocument, LibXml2 },
{ &IID_IXMLDOMDocument2, LibXml2 }, { &IID_IXMLDOMDocument2, LibXml2 },
{ &IID_IXMLDOMDocument3, LibXml2 },
{ &IID_IXMLDOMDocumentFragment, LibXml2 }, { &IID_IXMLDOMDocumentFragment, LibXml2 },
{ &IID_IXMLDOMDocumentType, LibXml2 }, { &IID_IXMLDOMDocumentType, LibXml2 },
{ &IID_IXMLDOMElement, LibXml2 }, { &IID_IXMLDOMElement, LibXml2 },

View File

@ -813,6 +813,7 @@ static const tid_t domdoc_se_tids[] = {
IXMLDOMNode_tid, IXMLDOMNode_tid,
IXMLDOMDocument_tid, IXMLDOMDocument_tid,
IXMLDOMDocument2_tid, IXMLDOMDocument2_tid,
IXMLDOMDocument3_tid,
0 0
}; };
@ -926,13 +927,10 @@ static HRESULT WINAPI domdoc_GetTypeInfo(
UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo ) UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo )
{ {
domdoc *This = impl_from_IXMLDOMDocument3( iface ); domdoc *This = impl_from_IXMLDOMDocument3( iface );
HRESULT hr;
TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo); TRACE("(%p)->(%u %u %p)\n", This, iTInfo, lcid, ppTInfo);
hr = get_typeinfo(IXMLDOMDocument2_tid, ppTInfo); return get_typeinfo(IXMLDOMDocument3_tid, ppTInfo);
return hr;
} }
static HRESULT WINAPI domdoc_GetIDsOfNames( static HRESULT WINAPI domdoc_GetIDsOfNames(
@ -953,7 +951,7 @@ static HRESULT WINAPI domdoc_GetIDsOfNames(
if(!rgszNames || cNames == 0 || !rgDispId) if(!rgszNames || cNames == 0 || !rgDispId)
return E_INVALIDARG; return E_INVALIDARG;
hr = get_typeinfo(IXMLDOMDocument2_tid, &typeinfo); hr = get_typeinfo(IXMLDOMDocument3_tid, &typeinfo);
if(SUCCEEDED(hr)) if(SUCCEEDED(hr))
{ {
hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId); hr = ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
@ -982,7 +980,7 @@ static HRESULT WINAPI domdoc_Invoke(
TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), TRACE("(%p)->(%d %s %d %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
hr = get_typeinfo(IXMLDOMDocument2_tid, &typeinfo); hr = get_typeinfo(IXMLDOMDocument3_tid, &typeinfo);
if(SUCCEEDED(hr)) if(SUCCEEDED(hr))
{ {
hr = ITypeInfo_Invoke(typeinfo, &This->IXMLDOMDocument3_iface, dispIdMember, wFlags, hr = ITypeInfo_Invoke(typeinfo, &This->IXMLDOMDocument3_iface, dispIdMember, wFlags,
@ -2378,7 +2376,7 @@ static HRESULT WINAPI domdoc_save(
case VT_UNKNOWN: case VT_UNKNOWN:
{ {
IUnknown *pUnk = V_UNKNOWN(&destination); IUnknown *pUnk = V_UNKNOWN(&destination);
IXMLDOMDocument2 *document; IXMLDOMDocument3 *document;
IStream *stream; IStream *stream;
ret = IUnknown_QueryInterface(pUnk, &IID_IXMLDOMDocument3, (void**)&document); ret = IUnknown_QueryInterface(pUnk, &IID_IXMLDOMDocument3, (void**)&document);
@ -3011,7 +3009,7 @@ static HRESULT WINAPI domdoc_importNode(
return E_NOTIMPL; return E_NOTIMPL;
} }
static const struct IXMLDOMDocument3Vtbl domdoc_vtbl = static const struct IXMLDOMDocument3Vtbl XMLDOMDocument3Vtbl =
{ {
domdoc_QueryInterface, domdoc_QueryInterface,
domdoc_AddRef, domdoc_AddRef,
@ -3412,14 +3410,13 @@ static const IObjectSafetyVtbl domdocObjectSafetyVtbl = {
}; };
static const tid_t domdoc_iface_tids[] = { static const tid_t domdoc_iface_tids[] = {
IXMLDOMNode_tid, IXMLDOMDocument3_tid,
IXMLDOMDocument_tid,
IXMLDOMDocument2_tid,
0 0
}; };
static dispex_static_data_t domdoc_dispex = { static dispex_static_data_t domdoc_dispex = {
NULL, NULL,
IXMLDOMDocument2_tid, IXMLDOMDocument3_tid,
NULL, NULL,
domdoc_iface_tids domdoc_iface_tids
}; };
@ -3432,7 +3429,7 @@ HRESULT get_domdoc_from_xmldoc(xmlDocPtr xmldoc, IXMLDOMDocument3 **document)
if( !doc ) if( !doc )
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
doc->IXMLDOMDocument3_iface.lpVtbl = &domdoc_vtbl; doc->IXMLDOMDocument3_iface.lpVtbl = &XMLDOMDocument3Vtbl;
doc->IPersistStreamInit_iface.lpVtbl = &xmldoc_IPersistStreamInit_VTable; doc->IPersistStreamInit_iface.lpVtbl = &xmldoc_IPersistStreamInit_VTable;
doc->IObjectWithSite_iface.lpVtbl = &domdocObjectSite; doc->IObjectWithSite_iface.lpVtbl = &domdocObjectSite;
doc->IObjectSafety_iface.lpVtbl = &domdocObjectSafetyVtbl; doc->IObjectSafety_iface.lpVtbl = &domdocObjectSafetyVtbl;

View File

@ -44,6 +44,7 @@ typedef enum tid_t {
IXMLDOMComment_tid, IXMLDOMComment_tid,
IXMLDOMDocument_tid, IXMLDOMDocument_tid,
IXMLDOMDocument2_tid, IXMLDOMDocument2_tid,
IXMLDOMDocument3_tid,
IXMLDOMDocumentFragment_tid, IXMLDOMDocumentFragment_tid,
IXMLDOMDocumentType_tid, IXMLDOMDocumentType_tid,
IXMLDOMElement_tid, IXMLDOMElement_tid,

View File

@ -10712,7 +10712,7 @@ static const supporterror_t supporterror_test[] = {
static void test_supporterrorinfo(void) static void test_supporterrorinfo(void)
{ {
static REFIID iids[3] = { &IID_IXMLDOMDocument, &IID_IXMLDOMDocument2 }; static REFIID iids[4] = { &IID_IXMLDOMDocument, &IID_IXMLDOMDocument2, &IID_IXMLDOMDocument3 };
const supporterror_t *ptr = supporterror_test; const supporterror_t *ptr = supporterror_test;
ISupportErrorInfo *errorinfo, *info2; ISupportErrorInfo *errorinfo, *info2;
IXMLDOMDocument *doc; IXMLDOMDocument *doc;