[PATCH 3/3] mshtml: Add IMarkupContainer interface stub.

Dmitry Timoshkov dmitry at baikal.ru
Fri May 31 04:59:32 CDT 2019


Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
---
 dlls/mshtml/htmldoc.c        | 43 ++++++++++++++++++++++++++++++++++++
 dlls/mshtml/mshtml_private.h |  1 +
 dlls/mshtml/tests/dom.c      |  2 ++
 3 files changed, 46 insertions(+)

diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index 665e7ffdcb..492216b426 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -4974,6 +4974,46 @@ static const IMarkupServicesVtbl MarkupServicesVtbl = {
     markupsvcs_EndUndoUnit
 };
 
+/**********************************************************
+ * IMarkupContainer implementation
+ */
+static inline HTMLDocument *impl_from_IMarkupContainer(IMarkupContainer *iface)
+{
+    return CONTAINING_RECORD(iface, HTMLDocument, IMarkupContainer_iface);
+}
+
+static HRESULT WINAPI markupcontainer_QueryInterface(IMarkupContainer *iface, REFIID riid, void **ppvObject)
+{
+    HTMLDocument *This = impl_from_IMarkupContainer(iface);
+    return htmldoc_query_interface(This, riid, ppvObject);
+}
+
+static ULONG WINAPI markupcontainer_AddRef(IMarkupContainer *iface)
+{
+    HTMLDocument *This = impl_from_IMarkupContainer(iface);
+    return htmldoc_addref(This);
+}
+
+static ULONG WINAPI markupcontainer_Release(IMarkupContainer *iface)
+{
+    HTMLDocument *This = impl_from_IMarkupContainer(iface);
+    return htmldoc_release(This);
+}
+
+static HRESULT WINAPI markupcontainer_OwningDoc(IMarkupContainer *iface, IHTMLDocument2 **ppDoc)
+{
+    HTMLDocument *This = impl_from_IMarkupContainer(iface);
+    FIXME("(%p)->(%p)\n", This, ppDoc);
+    return E_NOTIMPL;
+}
+
+static const IMarkupContainerVtbl MarkupContainerVtbl = {
+    markupcontainer_QueryInterface,
+    markupcontainer_AddRef,
+    markupcontainer_Release,
+    markupcontainer_OwningDoc
+};
+
 static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
 {
     *ppv = NULL;
@@ -5054,6 +5094,8 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
         *ppv = &This->IProvideMultipleClassInfo_iface;
     else if(IsEqualGUID(&IID_IMarkupServices, riid))
         *ppv = &This->IMarkupServices_iface;
+    else if(IsEqualGUID(&IID_IMarkupContainer, riid))
+        *ppv = &This->IMarkupContainer_iface;
     else if(IsEqualGUID(&CLSID_CMarkup, riid)) {
         FIXME("(%p)->(CLSID_CMarkup %p)\n", This, ppv);
         *ppv = NULL;
@@ -5102,6 +5144,7 @@ static void init_doc(HTMLDocument *doc, IUnknown *outer, IDispatchEx *dispex)
     doc->ISupportErrorInfo_iface.lpVtbl = &SupportErrorInfoVtbl;
     doc->IProvideMultipleClassInfo_iface.lpVtbl = &ProvideMultipleClassInfoVtbl;
     doc->IMarkupServices_iface.lpVtbl = &MarkupServicesVtbl;
+    doc->IMarkupContainer_iface.lpVtbl = &MarkupContainerVtbl;
 
     doc->outer_unk = outer;
     doc->dispex = dispex;
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 9ed2e5f4e6..7dc9367493 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -624,6 +624,7 @@ struct HTMLDocument {
     IObjectSafety               IObjectSafety_iface;
     IProvideMultipleClassInfo   IProvideMultipleClassInfo_iface;
     IMarkupServices             IMarkupServices_iface;
+    IMarkupContainer            IMarkupContainer_iface;
 
     IUnknown *outer_unk;
     IDispatchEx *dispex;
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index d4ef42e94e..8a08282957 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -175,6 +175,7 @@ static const IID * const doc_node_iids[] = {
     &IID_IDispatchEx,
     &IID_IConnectionPointContainer,
     &IID_IInternetHostSecurityManager,
+    &IID_IMarkupContainer,
     &IID_IMarkupServices,
     &IID_IOleContainer,
     &IID_IObjectSafety,
@@ -192,6 +193,7 @@ static const IID * const doc_obj_iids[] = {
     &IID_IDispatchEx,
     &IID_IConnectionPointContainer,
     &IID_ICustomDoc,
+    &IID_IMarkupContainer,
     &IID_IMarkupServices,
     &IID_IOleContainer,
     &IID_IObjectSafety,
-- 
2.20.1




More information about the wine-devel mailing list