Piotr Caban : mshtml: Add IElementTraversal stub implementation.

Alexandre Julliard julliard at winehq.org
Tue Jul 25 16:11:27 CDT 2017


Module: wine
Branch: master
Commit: 59028126f00f31720c78b2149cdb6a7696c5df7c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=59028126f00f31720c78b2149cdb6a7696c5df7c

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Tue Jul 25 17:57:08 2017 +0200

mshtml: Add IElementTraversal stub implementation.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mshtml/htmlelem.c       | 107 +++++++++++++++++++++++++++++++++++++++++++
 dlls/mshtml/mshtml_private.h |   1 +
 2 files changed, 108 insertions(+)

diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index dd23517..faa2399 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -4896,6 +4896,110 @@ static const IProvideMultipleClassInfoVtbl ProvideMultipleClassInfoVtbl = {
     ProvideMultipleClassInfo_GetInfoOfIndex
 };
 
+static inline HTMLElement *impl_from_IElementTraversal(IElementTraversal *iface)
+{
+    return CONTAINING_RECORD(iface, HTMLElement, IElementTraversal_iface);
+}
+
+static HRESULT WINAPI ElementTraversal_QueryInterface(IElementTraversal *iface, REFIID riid, void **ppv)
+{
+    HTMLElement *This = impl_from_IElementTraversal(iface);
+    return IHTMLElement_QueryInterface(&This->IHTMLElement_iface, riid, ppv);
+}
+
+static ULONG WINAPI ElementTraversal_AddRef(IElementTraversal *iface)
+{
+    HTMLElement *This = impl_from_IElementTraversal(iface);
+
+    return IHTMLElement_AddRef(&This->IHTMLElement_iface);
+}
+
+static ULONG WINAPI ElementTraversal_Release(IElementTraversal *iface)
+{
+    HTMLElement *This = impl_from_IElementTraversal(iface);
+
+    return IHTMLElement_Release(&This->IHTMLElement_iface);
+}
+
+static HRESULT WINAPI ElementTraversal_GetTypeInfoCount(IElementTraversal *iface, UINT *pctinfo)
+{
+    HTMLElement *This = impl_from_IElementTraversal(iface);
+    return IDispatchEx_GetTypeInfoCount(&This->node.event_target.dispex.IDispatchEx_iface, pctinfo);
+}
+
+static HRESULT WINAPI ElementTraversal_GetTypeInfo(IElementTraversal *iface, UINT iTInfo,
+        LCID lcid, ITypeInfo **ppTInfo)
+{
+    HTMLElement *This = impl_from_IElementTraversal(iface);
+    return IDispatchEx_GetTypeInfo(&This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
+}
+
+static HRESULT WINAPI ElementTraversal_GetIDsOfNames(IElementTraversal *iface, REFIID riid,
+        LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+    HTMLElement *This = impl_from_IElementTraversal(iface);
+    return IDispatchEx_GetIDsOfNames(&This->node.event_target.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
+            lcid, rgDispId);
+}
+
+static HRESULT WINAPI ElementTraversal_Invoke(IElementTraversal *iface, DISPID dispIdMember, REFIID riid,
+        LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+    HTMLElement *This = impl_from_IElementTraversal(iface);
+    return IDispatchEx_Invoke(&This->node.event_target.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
+            wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+}
+
+static HRESULT WINAPI ElementTraversal_get_firstElementChild(IElementTraversal *iface, IHTMLElement **p)
+{
+    HTMLElement *This = impl_from_IElementTraversal(iface);
+    FIXME("(%p)->(%p)\n", This, p);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ElementTraversal_get_lastElementChild(IElementTraversal *iface, IHTMLElement **p)
+{
+    HTMLElement *This = impl_from_IElementTraversal(iface);
+    FIXME("(%p)->(%p)\n", This, p);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ElementTraversal_get_previousElementSibling(IElementTraversal *iface, IHTMLElement **p)
+{
+    HTMLElement *This = impl_from_IElementTraversal(iface);
+    FIXME("(%p)->(%p)\n", This, p);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ElementTraversal_get_nextElementSibling(IElementTraversal *iface, IHTMLElement **p)
+{
+    HTMLElement *This = impl_from_IElementTraversal(iface);
+    FIXME("(%p)->(%p)\n", This, p);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ElementTraversal_get_childElementCount(IElementTraversal *iface, LONG *p)
+{
+    HTMLElement *This = impl_from_IElementTraversal(iface);
+    FIXME("(%p)->(%p)\n", This, p);
+    return E_NOTIMPL;
+}
+
+static const IElementTraversalVtbl ElementTraversalVtbl = {
+    ElementTraversal_QueryInterface,
+    ElementTraversal_AddRef,
+    ElementTraversal_Release,
+    ElementTraversal_GetTypeInfoCount,
+    ElementTraversal_GetTypeInfo,
+    ElementTraversal_GetIDsOfNames,
+    ElementTraversal_Invoke,
+    ElementTraversal_get_firstElementChild,
+    ElementTraversal_get_lastElementChild,
+    ElementTraversal_get_previousElementSibling,
+    ElementTraversal_get_nextElementSibling,
+    ElementTraversal_get_childElementCount
+};
+
 static inline HTMLElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
 {
     return CONTAINING_RECORD(iface, HTMLElement, node);
@@ -4923,6 +5027,8 @@ HRESULT HTMLElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
         *ppv = &This->IHTMLUniqueName_iface;
     }else if(IsEqualGUID(&IID_IElementSelector, riid)) {
         *ppv = &This->IElementSelector_iface;
+    }else if(IsEqualGUID(&IID_IElementTraversal, riid)) {
+        *ppv = &This->IElementTraversal_iface;
     }else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
         *ppv = &This->cp_container.IConnectionPointContainer_iface;
     }else if(IsEqualGUID(&IID_IProvideClassInfo, riid)) {
@@ -5214,6 +5320,7 @@ void HTMLElement_Init(HTMLElement *This, HTMLDocumentNode *doc, nsIDOMHTMLElemen
     This->IHTMLElement6_iface.lpVtbl = &HTMLElement6Vtbl;
     This->IHTMLUniqueName_iface.lpVtbl = &HTMLUniqueNameVtbl;
     This->IElementSelector_iface.lpVtbl = &ElementSelectorVtbl;
+    This->IElementTraversal_iface.lpVtbl = &ElementTraversalVtbl;
     This->IProvideMultipleClassInfo_iface.lpVtbl = &ProvideMultipleClassInfoVtbl;
 
     if(dispex_data && !dispex_data->vtbl)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index f95adc0..fbbd458 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -757,6 +757,7 @@ typedef struct {
     IHTMLElement6 IHTMLElement6_iface;
     IHTMLUniqueName IHTMLUniqueName_iface;
     IElementSelector IElementSelector_iface;
+    IElementTraversal IElementTraversal_iface;
     IProvideMultipleClassInfo IProvideMultipleClassInfo_iface;
 
     nsIDOMHTMLElement *nselem;




More information about the wine-cvs mailing list