Module: wine Branch: master Commit: 18309c575a4c073a895dcd5e5f573ebae97bd4d7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=18309c575a4c073a895dcd5e5f...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Apr 21 13:49:40 2017 +0200
mshtml: Added IProvideMultipleTypeInfo stub implementation for HTMLDocument object.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mshtml/htmldoc.c | 59 +++++++++++++++++++++++++++++++++----------- dlls/mshtml/main.c | 2 ++ dlls/mshtml/mshtml_private.h | 2 +- 3 files changed, 47 insertions(+), 16 deletions(-)
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index 57679fc..e30d752 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -4444,43 +4444,68 @@ static const IDispatchExVtbl DocDispatchExVtbl = { DocDispatchEx_GetNameSpaceParent };
-static inline HTMLDocument *impl_from_IProvideClassInfo(IProvideClassInfo *iface) +static inline HTMLDocument *impl_from_IProvideMultipleClassInfo(IProvideMultipleClassInfo *iface) { - return CONTAINING_RECORD(iface, HTMLDocument, IProvideClassInfo_iface); + return CONTAINING_RECORD(iface, HTMLDocument, IProvideMultipleClassInfo_iface); }
-static HRESULT WINAPI ProvideClassInfo_QueryInterface(IProvideClassInfo *iface, +static HRESULT WINAPI ProvideClassInfo_QueryInterface(IProvideMultipleClassInfo *iface, REFIID riid, void **ppv) { - HTMLDocument *This = impl_from_IProvideClassInfo(iface); + HTMLDocument *This = impl_from_IProvideMultipleClassInfo(iface); return htmldoc_query_interface(This, riid, ppv); }
-static ULONG WINAPI ProvideClassInfo_AddRef(IProvideClassInfo *iface) +static ULONG WINAPI ProvideClassInfo_AddRef(IProvideMultipleClassInfo *iface) { - HTMLDocument *This = impl_from_IProvideClassInfo(iface); + HTMLDocument *This = impl_from_IProvideMultipleClassInfo(iface); return htmldoc_addref(This); }
-static ULONG WINAPI ProvideClassInfo_Release(IProvideClassInfo *iface) +static ULONG WINAPI ProvideClassInfo_Release(IProvideMultipleClassInfo *iface) { - HTMLDocument *This = impl_from_IProvideClassInfo(iface); + HTMLDocument *This = impl_from_IProvideMultipleClassInfo(iface); return htmldoc_release(This); }
-static HRESULT WINAPI ProvideClassInfo_GetClassInfo(IProvideClassInfo* iface, - ITypeInfo **ppTI) +static HRESULT WINAPI ProvideClassInfo_GetClassInfo(IProvideMultipleClassInfo *iface, ITypeInfo **ppTI) { - HTMLDocument *This = impl_from_IProvideClassInfo(iface); + HTMLDocument *This = impl_from_IProvideMultipleClassInfo(iface); TRACE("(%p)->(%p)\n", This, ppTI); return get_class_typeinfo(&CLSID_HTMLDocument, ppTI); }
-static const IProvideClassInfoVtbl ProvideClassInfoVtbl = { +static HRESULT WINAPI ProvideClassInfo2_GetGUID(IProvideMultipleClassInfo *iface, DWORD dwGuidKind, GUID *pGUID) +{ + HTMLDocument *This = impl_from_IProvideMultipleClassInfo(iface); + FIXME("(%p)->(%u %p)\n", This, dwGuidKind, pGUID); + return E_NOTIMPL; +} + +static HRESULT WINAPI ProvideMultipleClassInfo_GetMultiTypeInfoCount(IProvideMultipleClassInfo *iface, ULONG *pcti) +{ + HTMLDocument *This = impl_from_IProvideMultipleClassInfo(iface); + FIXME("(%p)->(%p)\n", This, pcti); + *pcti = 1; + return S_OK; +} + +static HRESULT WINAPI ProvideMultipleClassInfo_GetInfoOfIndex(IProvideMultipleClassInfo *iface, ULONG iti, + DWORD dwFlags, ITypeInfo **pptiCoClass, DWORD *pdwTIFlags, ULONG *pcdispidReserved, IID *piidPrimary, IID *piidSource) +{ + HTMLDocument *This = impl_from_IProvideMultipleClassInfo(iface); + FIXME("(%p)->(%u %x %p %p %p %p %p)\n", This, iti, dwFlags, pptiCoClass, pdwTIFlags, pcdispidReserved, piidPrimary, piidSource); + return E_NOTIMPL; +} + +static const IProvideMultipleClassInfoVtbl ProvideMultipleClassInfoVtbl = { ProvideClassInfo_QueryInterface, ProvideClassInfo_AddRef, ProvideClassInfo_Release, - ProvideClassInfo_GetClassInfo + ProvideClassInfo_GetClassInfo, + ProvideClassInfo2_GetGUID, + ProvideMultipleClassInfo_GetMultiTypeInfoCount, + ProvideMultipleClassInfo_GetInfoOfIndex };
static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv) @@ -4562,7 +4587,11 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv) else if(IsEqualGUID(&IID_IObjectSafety, riid)) *ppv = &This->IObjectSafety_iface; else if(IsEqualGUID(&IID_IProvideClassInfo, riid)) - *ppv = &This->IProvideClassInfo_iface; + *ppv = &This->IProvideMultipleClassInfo_iface; + else if(IsEqualGUID(&IID_IProvideClassInfo2, riid)) + *ppv = &This->IProvideMultipleClassInfo_iface; + else if(IsEqualGUID(&IID_IProvideMultipleClassInfo, riid)) + *ppv = &This->IProvideMultipleClassInfo_iface; else if(IsEqualGUID(&CLSID_CMarkup, riid)) { FIXME("(%p)->(CLSID_CMarkup %p)\n", This, ppv); *ppv = NULL; @@ -4608,7 +4637,7 @@ static void init_doc(HTMLDocument *doc, IUnknown *outer, IDispatchEx *dispex) doc->IDispatchEx_iface.lpVtbl = &DocDispatchExVtbl; doc->IDocumentSelector_iface.lpVtbl = &DocumentSelectorVtbl; doc->ISupportErrorInfo_iface.lpVtbl = &SupportErrorInfoVtbl; - doc->IProvideClassInfo_iface.lpVtbl = &ProvideClassInfoVtbl; + doc->IProvideMultipleClassInfo_iface.lpVtbl = &ProvideMultipleClassInfoVtbl;
doc->outer_unk = outer; doc->dispex = dispex; diff --git a/dlls/mshtml/main.c b/dlls/mshtml/main.c index 262fda6..af716d1 100644 --- a/dlls/mshtml/main.c +++ b/dlls/mshtml/main.c @@ -615,6 +615,8 @@ const char *debugstr_mshtml_guid(const GUID *iid) X(IID_IPersistStreamInit); X(IID_IPropertyNotifySink); X(IID_IProvideClassInfo); + X(IID_IProvideClassInfo2); + X(IID_IProvideMultipleClassInfo); X(IID_IServiceProvider); X(IID_ISupportErrorInfo); X(IID_ITargetContainer); diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index c0b1d29..a0c0dab 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -575,7 +575,7 @@ struct HTMLDocument { IObjectWithSite IObjectWithSite_iface; IOleContainer IOleContainer_iface; IObjectSafety IObjectSafety_iface; - IProvideClassInfo IProvideClassInfo_iface; + IProvideMultipleClassInfo IProvideMultipleClassInfo_iface;
IUnknown *outer_unk; IDispatchEx *dispex;