diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index bb93db9f292..9dec890d1a4 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -4974,6 +4974,46 @@ static const IMarkupServicesVtbl MarkupServicesVtbl = { MarkupServices_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 9ed2e5f4e6d..7dc93674936 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 d4ef42e94e5..8a082829573 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,