Jacek Caban : mshtml: Added IProvideMultipleTypeInfo implementation for HTMLWindow object.
Alexandre Julliard
julliard at winehq.org
Fri Apr 21 15:18:16 CDT 2017
Module: wine
Branch: master
Commit: 78490956f945664a3c2a5d77d5a1049cada981db
URL: http://source.winehq.org/git/wine.git/?a=commit;h=78490956f945664a3c2a5d77d5a1049cada981db
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Apr 21 13:49:51 2017 +0200
mshtml: Added IProvideMultipleTypeInfo implementation for HTMLWindow object.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mshtml/htmlwindow.c | 71 ++++++++++++++++++++++++++++++++++++++++++++
dlls/mshtml/mshtml_private.h | 1 +
2 files changed, 72 insertions(+)
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index 7387e10..b68579b 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -184,6 +184,12 @@ static HRESULT WINAPI HTMLWindow2_QueryInterface(IHTMLWindow2 *iface, REFIID rii
*ppv = &This->ITravelLogClient_iface;
}else if(IsEqualGUID(&IID_IObjectIdentity, riid)) {
*ppv = &This->IObjectIdentity_iface;
+ }else if(IsEqualGUID(&IID_IProvideClassInfo, riid)) {
+ *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(&IID_IMarshal, riid)) {
*ppv = NULL;
FIXME("(%p)->(IID_IMarshal %p)\n", This, ppv);
@@ -2463,6 +2469,70 @@ static const IObjectIdentityVtbl ObjectIdentityVtbl = {
ObjectIdentity_IsEqualObject
};
+static inline HTMLWindow *impl_from_IProvideMultipleClassInfo(IProvideMultipleClassInfo *iface)
+{
+ return CONTAINING_RECORD(iface, HTMLWindow, IProvideMultipleClassInfo_iface);
+}
+
+static HRESULT WINAPI ProvideClassInfo_QueryInterface(IProvideMultipleClassInfo *iface,
+ REFIID riid, void **ppv)
+{
+ HTMLWindow *This = impl_from_IProvideMultipleClassInfo(iface);
+ return IHTMLWindow2_QueryInterface(&This->IHTMLWindow2_iface, riid, ppv);
+}
+
+static ULONG WINAPI ProvideClassInfo_AddRef(IProvideMultipleClassInfo *iface)
+{
+ HTMLWindow *This = impl_from_IProvideMultipleClassInfo(iface);
+ return IHTMLWindow2_AddRef(&This->IHTMLWindow2_iface);
+}
+
+static ULONG WINAPI ProvideClassInfo_Release(IProvideMultipleClassInfo *iface)
+{
+ HTMLWindow *This = impl_from_IProvideMultipleClassInfo(iface);
+ return IHTMLWindow2_Release(&This->IHTMLWindow2_iface);
+}
+
+static HRESULT WINAPI ProvideClassInfo_GetClassInfo(IProvideMultipleClassInfo *iface, ITypeInfo **ppTI)
+{
+ HTMLWindow *This = impl_from_IProvideMultipleClassInfo(iface);
+ TRACE("(%p)->(%p)\n", This, ppTI);
+ return get_class_typeinfo(&CLSID_HTMLWindow2, ppTI);
+}
+
+static HRESULT WINAPI ProvideClassInfo2_GetGUID(IProvideMultipleClassInfo *iface, DWORD dwGuidKind, GUID *pGUID)
+{
+ HTMLWindow *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)
+{
+ HTMLWindow *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)
+{
+ HTMLWindow *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,
+ ProvideClassInfo2_GetGUID,
+ ProvideMultipleClassInfo_GetMultiTypeInfoCount,
+ ProvideMultipleClassInfo_GetInfoOfIndex
+};
+
static inline HTMLWindow *impl_from_IDispatchEx(IDispatchEx *iface)
{
return CONTAINING_RECORD(iface, HTMLWindow, IDispatchEx_iface);
@@ -3004,6 +3074,7 @@ static void *alloc_window(size_t size)
window->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl;
window->ITravelLogClient_iface.lpVtbl = &TravelLogClientVtbl;
window->IObjectIdentity_iface.lpVtbl = &ObjectIdentityVtbl;
+ window->IProvideMultipleClassInfo_iface.lpVtbl = &ProvideMultipleClassInfoVtbl;
window->ref = 1;
return window;
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index a0c0dab..e710a48 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -431,6 +431,7 @@ struct HTMLWindow {
IServiceProvider IServiceProvider_iface;
ITravelLogClient ITravelLogClient_iface;
IObjectIdentity IObjectIdentity_iface;
+ IProvideMultipleClassInfo IProvideMultipleClassInfo_iface;
LONG ref;
More information about the wine-cvs
mailing list