Module: wine Branch: master Commit: ba9da24d7cff5601b6482f7dc66787ccd8297948 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ba9da24d7cff5601b6482f7dc6...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Jun 16 19:29:46 2016 +0200
mshtml: Added IElementSelector interface stub implementation.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mshtml/htmlelem.c | 80 ++++++++++++++++++++++++++++++++++++++++++++ dlls/mshtml/mshtml_private.h | 5 ++- 2 files changed, 84 insertions(+), 1 deletion(-)
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c index 67c8460..8aac47b 100644 --- a/dlls/mshtml/htmlelem.c +++ b/dlls/mshtml/htmlelem.c @@ -4020,6 +4020,83 @@ static const IHTMLUniqueNameVtbl HTMLUniqueNameVtbl = { HTMLUniqueName_get_uniqueID };
+static inline HTMLElement *impl_from_IElementSelector(IElementSelector *iface) +{ + return CONTAINING_RECORD(iface, HTMLElement, IElementSelector_iface); +} + +static HRESULT WINAPI ElementSelector_QueryInterface(IElementSelector *iface, REFIID riid, void **ppv) +{ + HTMLElement *This = impl_from_IElementSelector(iface); + return IHTMLElement_QueryInterface(&This->IHTMLElement_iface, riid, ppv); +} + +static ULONG WINAPI ElementSelector_AddRef(IElementSelector *iface) +{ + HTMLElement *This = impl_from_IElementSelector(iface); + return IHTMLElement_AddRef(&This->IHTMLElement_iface); +} + +static ULONG WINAPI ElementSelector_Release(IElementSelector *iface) +{ + HTMLElement *This = impl_from_IElementSelector(iface); + return IHTMLElement_Release(&This->IHTMLElement_iface); +} + +static HRESULT WINAPI ElementSelector_GetTypeInfoCount(IElementSelector *iface, UINT *pctinfo) +{ + HTMLElement *This = impl_from_IElementSelector(iface); + return IDispatchEx_GetTypeInfoCount(&This->node.event_target.dispex.IDispatchEx_iface, pctinfo); +} + +static HRESULT WINAPI ElementSelector_GetTypeInfo(IElementSelector *iface, UINT iTInfo, + LCID lcid, ITypeInfo **ppTInfo) +{ + HTMLElement *This = impl_from_IElementSelector(iface); + return IDispatchEx_GetTypeInfo(&This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo); +} + +static HRESULT WINAPI ElementSelector_GetIDsOfNames(IElementSelector *iface, REFIID riid, + LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) +{ + HTMLElement *This = impl_from_IElementSelector(iface); + return IDispatchEx_GetIDsOfNames(&This->node.event_target.dispex.IDispatchEx_iface, riid, rgszNames, cNames, lcid, rgDispId); +} + +static HRESULT WINAPI ElementSelector_Invoke(IElementSelector *iface, DISPID dispIdMember, REFIID riid, + LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + HTMLElement *This = impl_from_IElementSelector(iface); + return IDispatchEx_Invoke(&This->node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid, wFlags, + pDispParams, pVarResult, pExcepInfo, puArgErr); +} + +static HRESULT WINAPI ElementSelector_querySelector(IElementSelector *iface, BSTR v, IHTMLElement **pel) +{ + HTMLElement *This = impl_from_IElementSelector(iface); + FIXME("(%p)->(%s %p)\n", This, debugstr_w(v), pel); + return E_NOTIMPL; +} + +static HRESULT WINAPI ElementSelector_querySelectorAll(IElementSelector *iface, BSTR v, IHTMLDOMChildrenCollection **pel) +{ + HTMLElement *This = impl_from_IElementSelector(iface); + FIXME("(%p)->(%s %p)\n", This, debugstr_w(v), pel); + return E_NOTIMPL; +} + +static const IElementSelectorVtbl ElementSelectorVtbl = { + ElementSelector_QueryInterface, + ElementSelector_AddRef, + ElementSelector_Release, + ElementSelector_GetTypeInfoCount, + ElementSelector_GetTypeInfo, + ElementSelector_GetIDsOfNames, + ElementSelector_Invoke, + ElementSelector_querySelector, + ElementSelector_querySelectorAll +}; + static inline HTMLElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) { return CONTAINING_RECORD(iface, HTMLElement, node); @@ -4043,6 +4120,8 @@ HRESULT HTMLElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) *ppv = &This->IHTMLElement4_iface; }else if(IsEqualGUID(&IID_IHTMLUniqueName, riid)) { *ppv = &This->IHTMLUniqueName_iface; + }else if(IsEqualGUID(&IID_IElementSelector, riid)) { + *ppv = &This->IElementSelector_iface; }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) { *ppv = &This->cp_container.IConnectionPointContainer_iface; }else { @@ -4313,6 +4392,7 @@ void HTMLElement_Init(HTMLElement *This, HTMLDocumentNode *doc, nsIDOMHTMLElemen This->IHTMLElement3_iface.lpVtbl = &HTMLElement3Vtbl; This->IHTMLElement4_iface.lpVtbl = &HTMLElement4Vtbl; This->IHTMLUniqueName_iface.lpVtbl = &HTMLUniqueNameVtbl; + This->IElementSelector_iface.lpVtbl = &ElementSelectorVtbl;
if(dispex_data && !dispex_data->vtbl) dispex_data->vtbl = &HTMLElement_dispex_vtbl; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index d378bdd..9d07047 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -125,6 +125,7 @@ typedef struct event_target_t event_target_t; XDIID(HTMLDocumentEvents) \ XDIID(HTMLElementEvents2) \ XIID(IDocumentSelector) \ + XIID(IElementSelector) \ XIID(IHTMLAnchorElement) \ XIID(IHTMLAreaElement) \ XIID(IHTMLAttributeCollection) \ @@ -717,6 +718,7 @@ typedef struct { IHTMLElement3 IHTMLElement3_iface; IHTMLElement4 IHTMLElement4_iface; IHTMLUniqueName IHTMLUniqueName_iface; + IElementSelector IElementSelector_iface;
nsIDOMHTMLElement *nselem; HTMLStyle *style; @@ -733,7 +735,8 @@ typedef struct { IHTMLElement2_tid, \ IHTMLElement3_tid, \ IHTMLElement4_tid, \ - IHTMLUniqueName_tid + IHTMLUniqueName_tid, \ + IElementSelector_tid
extern cp_static_data_t HTMLElementEvents2_data DECLSPEC_HIDDEN; #define HTMLELEMENT_CPC {&DIID_HTMLElementEvents2, &HTMLElementEvents2_data}