Jacek Caban : mshtml: Add IHTMLDOMImplementation2 stub implementation.

Alexandre Julliard julliard at winehq.org
Mon Mar 4 15:08:26 CST 2019


Module: wine
Branch: master
Commit: bd0c7c7af43fbeef2c28fc6fe7537cce9e5898fd
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=bd0c7c7af43fbeef2c28fc6fe7537cce9e5898fd

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Mar  4 18:14:10 2019 +0100

mshtml: Add IHTMLDOMImplementation2 stub implementation.

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

---

 dlls/mshtml/omnavigator.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 108 insertions(+)

diff --git a/dlls/mshtml/omnavigator.c b/dlls/mshtml/omnavigator.c
index e0b8f73..0f44004 100644
--- a/dlls/mshtml/omnavigator.c
+++ b/dlls/mshtml/omnavigator.c
@@ -47,6 +47,7 @@ typedef struct {
 typedef struct {
     DispatchEx dispex;
     IHTMLDOMImplementation IHTMLDOMImplementation_iface;
+    IHTMLDOMImplementation2 IHTMLDOMImplementation2_iface;
 
     LONG ref;
 } HTMLDOMImplementation;
@@ -64,6 +65,8 @@ static HRESULT WINAPI HTMLDOMImplementation_QueryInterface(IHTMLDOMImplementatio
 
     if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IHTMLDOMImplementation, riid)) {
         *ppv = &This->IHTMLDOMImplementation_iface;
+    }else if(IsEqualGUID(&IID_IHTMLDOMImplementation2, riid)) {
+        *ppv = &This->IHTMLDOMImplementation2_iface;
     }else if(dispex_query_interface(&This->dispex, riid, ppv)) {
         return *ppv ? S_OK : E_NOINTERFACE;
     }else {
@@ -157,6 +160,110 @@ static const IHTMLDOMImplementationVtbl HTMLDOMImplementationVtbl = {
     HTMLDOMImplementation_hasFeature
 };
 
+static inline HTMLDOMImplementation *impl_from_IHTMLDOMImplementation2(IHTMLDOMImplementation2 *iface)
+{
+    return CONTAINING_RECORD(iface, HTMLDOMImplementation, IHTMLDOMImplementation2_iface);
+}
+
+static HRESULT WINAPI HTMLDOMImplementation2_QueryInterface(IHTMLDOMImplementation2 *iface, REFIID riid, void **ppv)
+{
+    HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation2(iface);
+    return IHTMLDOMImplementation_QueryInterface(&This->IHTMLDOMImplementation_iface, riid, ppv);
+}
+
+static ULONG WINAPI HTMLDOMImplementation2_AddRef(IHTMLDOMImplementation2 *iface)
+{
+    HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation2(iface);
+    return IHTMLDOMImplementation_AddRef(&This->IHTMLDOMImplementation_iface);
+}
+
+static ULONG WINAPI HTMLDOMImplementation2_Release(IHTMLDOMImplementation2 *iface)
+{
+    HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation2(iface);
+    return IHTMLDOMImplementation_Release(&This->IHTMLDOMImplementation_iface);
+}
+
+static HRESULT WINAPI HTMLDOMImplementation2_GetTypeInfoCount(IHTMLDOMImplementation2 *iface, UINT *pctinfo)
+{
+    HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation2(iface);
+    return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
+}
+
+static HRESULT WINAPI HTMLDOMImplementation2_GetTypeInfo(IHTMLDOMImplementation2 *iface, UINT iTInfo,
+        LCID lcid, ITypeInfo **ppTInfo)
+{
+    HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation2(iface);
+    return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
+}
+
+static HRESULT WINAPI HTMLDOMImplementation2_GetIDsOfNames(IHTMLDOMImplementation2 *iface, REFIID riid,
+        LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+    HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation2(iface);
+    return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames,
+            cNames, lcid, rgDispId);
+}
+
+static HRESULT WINAPI HTMLDOMImplementation2_Invoke(IHTMLDOMImplementation2 *iface, DISPID dispIdMember,
+        REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
+        EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+    HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation2(iface);
+    return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid,
+            lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+}
+
+static HRESULT WINAPI HTMLDOMImplementation2_createDocumentType(IHTMLDOMImplementation2 *iface, BSTR name,
+        VARIANT *public_id, VARIANT *system_id, IDOMDocumentType **new_type)
+{
+    HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation2(iface);
+    FIXME("(%p)->(%s %s %s %p)\n", This, debugstr_w(name), debugstr_variant(public_id),
+          debugstr_variant(system_id), new_type);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMImplementation2_createDocument(IHTMLDOMImplementation2 *iface, VARIANT *ns,
+        VARIANT *tag_name, IDOMDocumentType *document_type, IHTMLDocument7 **new_document)
+{
+    HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation2(iface);
+    FIXME("(%p)->(%s %s %p %p)\n", This, debugstr_variant(ns), debugstr_variant(tag_name),
+          document_type, new_document);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMImplementation2_createHTMLDocument(IHTMLDOMImplementation2 *iface, BSTR title,
+        IHTMLDocument7 **new_document)
+{
+    HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation2(iface);
+    FIXME("(%p)->(%s %p)\n", This, debugstr_w(title), new_document);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLDOMImplementation2_hasFeature(IHTMLDOMImplementation2 *iface, BSTR feature,
+        VARIANT version, VARIANT_BOOL *pfHasFeature)
+{
+    HTMLDOMImplementation *This = impl_from_IHTMLDOMImplementation2(iface);
+
+    FIXME("(%p)->(%s %s %p) returning false\n", This, debugstr_w(feature), debugstr_variant(&version), pfHasFeature);
+
+    *pfHasFeature = VARIANT_FALSE;
+    return S_OK;
+}
+
+static const IHTMLDOMImplementation2Vtbl HTMLDOMImplementation2Vtbl = {
+    HTMLDOMImplementation2_QueryInterface,
+    HTMLDOMImplementation2_AddRef,
+    HTMLDOMImplementation2_Release,
+    HTMLDOMImplementation2_GetTypeInfoCount,
+    HTMLDOMImplementation2_GetTypeInfo,
+    HTMLDOMImplementation2_GetIDsOfNames,
+    HTMLDOMImplementation2_Invoke,
+    HTMLDOMImplementation2_createDocumentType,
+    HTMLDOMImplementation2_createDocument,
+    HTMLDOMImplementation2_createHTMLDocument,
+    HTMLDOMImplementation2_hasFeature
+};
+
 static const tid_t HTMLDOMImplementation_iface_tids[] = {
     IHTMLDOMImplementation_tid,
     0
@@ -176,6 +283,7 @@ HRESULT create_dom_implementation(IHTMLDOMImplementation **ret)
         return E_OUTOFMEMORY;
 
     dom_implementation->IHTMLDOMImplementation_iface.lpVtbl = &HTMLDOMImplementationVtbl;
+    dom_implementation->IHTMLDOMImplementation2_iface.lpVtbl = &HTMLDOMImplementation2Vtbl;
     dom_implementation->ref = 1;
 
     init_dispex(&dom_implementation->dispex, (IUnknown*)&dom_implementation->IHTMLDOMImplementation_iface,




More information about the wine-cvs mailing list