Module: wine Branch: master Commit: 5dddf32c2039bc1b2e6b4c10f20e007b97873548 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5dddf32c2039bc1b2e6b4c10f2...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Jun 15 17:44:00 2016 +0200
mshtml: Added IDocumentSelector stub implementation.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mshtml/htmldoc.c | 82 ++++++++++++++++++++++++++++++++++++++++++++ dlls/mshtml/mshtml_private.h | 2 ++ 2 files changed, 84 insertions(+)
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index 04e5280..1bf3323 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -4001,6 +4001,84 @@ static const IHTMLDocument7Vtbl HTMLDocument7Vtbl = { HTMLDocument7_get_head };
+static inline HTMLDocument *impl_from_IDocumentSelector(IDocumentSelector *iface) +{ + return CONTAINING_RECORD(iface, HTMLDocument, IDocumentSelector_iface); +} + +static HRESULT WINAPI DocumentSelector_QueryInterface(IDocumentSelector *iface, REFIID riid, void **ppv) +{ + HTMLDocument *This = impl_from_IDocumentSelector(iface); + return htmldoc_query_interface(This, riid, ppv); +} + +static ULONG WINAPI DocumentSelector_AddRef(IDocumentSelector *iface) +{ + HTMLDocument *This = impl_from_IDocumentSelector(iface); + return htmldoc_addref(This); +} + +static ULONG WINAPI DocumentSelector_Release(IDocumentSelector *iface) +{ + HTMLDocument *This = impl_from_IDocumentSelector(iface); + return htmldoc_release(This); +} + +static HRESULT WINAPI DocumentSelector_GetTypeInfoCount(IDocumentSelector *iface, UINT *pctinfo) +{ + HTMLDocument *This = impl_from_IDocumentSelector(iface); + return IDispatchEx_GetTypeInfoCount(&This->IDispatchEx_iface, pctinfo); +} + +static HRESULT WINAPI DocumentSelector_GetTypeInfo(IDocumentSelector *iface, UINT iTInfo, + LCID lcid, ITypeInfo **ppTInfo) +{ + HTMLDocument *This = impl_from_IDocumentSelector(iface); + return IDispatchEx_GetTypeInfo(&This->IDispatchEx_iface, iTInfo, lcid, ppTInfo); +} + +static HRESULT WINAPI DocumentSelector_GetIDsOfNames(IDocumentSelector *iface, REFIID riid, + LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) +{ + HTMLDocument *This = impl_from_IDocumentSelector(iface); + return IDispatchEx_GetIDsOfNames(&This->IDispatchEx_iface, riid, rgszNames, cNames, lcid, + rgDispId); +} + +static HRESULT WINAPI DocumentSelector_Invoke(IDocumentSelector *iface, DISPID dispIdMember, REFIID riid, + LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + HTMLDocument *This = impl_from_IDocumentSelector(iface); + return IDispatchEx_Invoke(&This->IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, + pDispParams, pVarResult, pExcepInfo, puArgErr); +} + +static HRESULT WINAPI DocumentSelector_querySelector(IDocumentSelector *iface, BSTR v, IHTMLElement **pel) +{ + HTMLDocument *This = impl_from_IDocumentSelector(iface); + FIXME("(%p)->(%s %p)\n", This, debugstr_w(v), pel); + return E_NOTIMPL; +} + +static HRESULT WINAPI DocumentSelector_querySelectorAll(IDocumentSelector *iface, BSTR v, IHTMLDOMChildrenCollection **pel) +{ + HTMLDocument *This = impl_from_IDocumentSelector(iface); + FIXME("(%p)->(%s %p)\n", This, debugstr_w(v), pel); + return E_NOTIMPL; +} + +static const IDocumentSelectorVtbl DocumentSelectorVtbl = { + DocumentSelector_QueryInterface, + DocumentSelector_AddRef, + DocumentSelector_Release, + DocumentSelector_GetTypeInfoCount, + DocumentSelector_GetTypeInfo, + DocumentSelector_GetIDsOfNames, + DocumentSelector_Invoke, + DocumentSelector_querySelector, + DocumentSelector_querySelectorAll +}; + static void HTMLDocument_on_advise(IUnknown *iface, cp_static_data_t *cp) { HTMLDocument *This = impl_from_IHTMLDocument2((IHTMLDocument2*)iface); @@ -4326,6 +4404,8 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv) *ppv = &This->IHTMLDocument6_iface; else if(IsEqualGUID(&IID_IHTMLDocument7, riid)) *ppv = &This->IHTMLDocument7_iface; + else if(IsEqualGUID(&IID_IDocumentSelector, riid)) + *ppv = &This->IDocumentSelector_iface; else if(IsEqualGUID(&IID_IPersist, riid)) *ppv = &This->IPersistFile_iface; else if(IsEqualGUID(&IID_IPersistMoniker, riid)) @@ -4426,6 +4506,7 @@ static void init_doc(HTMLDocument *doc, IUnknown *unk_impl, IDispatchEx *dispex) doc->IHTMLDocument6_iface.lpVtbl = &HTMLDocument6Vtbl; doc->IHTMLDocument7_iface.lpVtbl = &HTMLDocument7Vtbl; doc->IDispatchEx_iface.lpVtbl = &DocDispatchExVtbl; + doc->IDocumentSelector_iface.lpVtbl = &DocumentSelectorVtbl; doc->ISupportErrorInfo_iface.lpVtbl = &SupportErrorInfoVtbl; doc->IProvideClassInfo_iface.lpVtbl = &ProvideClassInfoVtbl;
@@ -4644,6 +4725,7 @@ static const tid_t HTMLDocumentNode_iface_tids[] = { IHTMLDocument3_tid, IHTMLDocument4_tid, IHTMLDocument5_tid, + IDocumentSelector_tid, 0 };
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 095b9dc..c1816bf 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -124,6 +124,7 @@ typedef struct event_target_t event_target_t; XDIID(DispHTMLXMLHttpRequest) \ XDIID(HTMLDocumentEvents) \ XDIID(HTMLElementEvents2) \ + XIID(IDocumentSelector) \ XIID(IHTMLAnchorElement) \ XIID(IHTMLAreaElement) \ XIID(IHTMLAttributeCollection) \ @@ -530,6 +531,7 @@ struct HTMLDocument { IHTMLDocument5 IHTMLDocument5_iface; IHTMLDocument6 IHTMLDocument6_iface; IHTMLDocument7 IHTMLDocument7_iface; + IDocumentSelector IDocumentSelector_iface; IPersistMoniker IPersistMoniker_iface; IPersistFile IPersistFile_iface; IPersistHistory IPersistHistory_iface;