mshtml: Add stub implementation of IProvideClassInfo interface.

Alexander Morozov amorozov at etersoft.ru
Mon Jul 11 09:32:36 CDT 2011


-------------- next part --------------
From ed19ee382e87b463057f903e1db7d1f79f440e5a Mon Sep 17 00:00:00 2001
From: Alexander Morozov <amorozov at etersoft.ru>
Date: Mon, 11 Jul 2011 18:27:28 +0400
Subject: [PATCH] mshtml: Add stub implementation of IProvideClassInfo
 interface.

---
 dlls/mshtml/htmldoc.c        |   44 ++++++++++++++++++++++++++++++++++++++++++
 dlls/mshtml/mshtml_private.h |    1 +
 dlls/mshtml/tests/dom.c      |    2 +
 3 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index 1ebb8eb..5ba48cd 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -1770,6 +1770,46 @@ static const IDispatchExVtbl DocDispatchExVtbl = {
     DocDispatchEx_GetNameSpaceParent
 };
 
+static inline HTMLDocument *impl_from_IProvideClassInfo(IProvideClassInfo *iface)
+{
+    return CONTAINING_RECORD(iface, HTMLDocument, IProvideClassInfo_iface);
+}
+
+static HRESULT WINAPI ProvideClassInfo_QueryInterface(IProvideClassInfo *iface,
+        REFIID riid, void **ppv)
+{
+    HTMLDocument *This = impl_from_IProvideClassInfo(iface);
+    return htmldoc_query_interface(This, riid, ppv);
+}
+
+static ULONG WINAPI ProvideClassInfo_AddRef(IProvideClassInfo *iface)
+{
+    HTMLDocument *This = impl_from_IProvideClassInfo(iface);
+    return htmldoc_addref(This);
+}
+
+static ULONG WINAPI ProvideClassInfo_Release(IProvideClassInfo *iface)
+{
+    HTMLDocument *This = impl_from_IProvideClassInfo(iface);
+    return htmldoc_release(This);
+}
+
+static HRESULT WINAPI ProvideClassInfo_GetClassInfo(IProvideClassInfo* iface,
+        ITypeInfo **ppTI)
+{
+    HTMLDocument *This = impl_from_IProvideClassInfo(iface);
+    FIXME("(%p)->(%p)\n", This, ppTI);
+    *ppTI = NULL;
+    return E_NOTIMPL;
+}
+
+static const IProvideClassInfoVtbl ProvideClassInfoVtbl = {
+    ProvideClassInfo_QueryInterface,
+    ProvideClassInfo_AddRef,
+    ProvideClassInfo_Release,
+    ProvideClassInfo_GetClassInfo
+};
+
 static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
 {
     *ppv = NULL;
@@ -1897,6 +1937,9 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
     }else if(IsEqualGUID(&IID_IObjectSafety, riid)) {
         TRACE("(%p)->(IID_IObjectSafety %p)\n", This, ppv);
         *ppv = &This->IObjectSafety_iface;
+    }else if(IsEqualGUID(&IID_IProvideClassInfo, riid)) {
+        TRACE("(%p)->(IID_IProvideClassInfo, %p)\n", This, ppv);
+        *ppv = &This->IProvideClassInfo_iface;
     }else {
         return FALSE;
     }
@@ -1913,6 +1956,7 @@ static void init_doc(HTMLDocument *doc, IUnknown *unk_impl, IDispatchEx *dispex)
     doc->IHTMLDocument2_iface.lpVtbl = &HTMLDocumentVtbl;
     doc->IDispatchEx_iface.lpVtbl = &DocDispatchExVtbl;
     doc->ISupportErrorInfo_iface.lpVtbl = &SupportErrorInfoVtbl;
+    doc->IProvideClassInfo_iface.lpVtbl = &ProvideClassInfoVtbl;
 
     doc->unk_impl = unk_impl;
     doc->dispex = dispex;
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index c98f0af..71afb8f 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -383,6 +383,7 @@ struct HTMLDocument {
     IObjectWithSite             IObjectWithSite_iface;
     IOleContainer               IOleContainer_iface;
     IObjectSafety               IObjectSafety_iface;
+    IProvideClassInfo           IProvideClassInfo_iface;
 
     IUnknown *unk_impl;
     IDispatchEx *dispex;
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index cd4dad9..21f183c 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -128,6 +128,7 @@ static const IID * const doc_node_iids[] = {
     &IID_IInternetHostSecurityManager,
     &IID_IOleContainer,
     &IID_IObjectSafety,
+    &IID_IProvideClassInfo,
     NULL
 };
 
@@ -142,6 +143,7 @@ static const IID * const doc_obj_iids[] = {
     &IID_ICustomDoc,
     &IID_IOleContainer,
     &IID_IObjectSafety,
+    &IID_IProvideClassInfo,
     NULL
 };
 
-- 
1.7.5.4



More information about the wine-patches mailing list