Jacek Caban : mshtml: Added IHTMLIFrameElement stub implementation.

Alexandre Julliard julliard at winehq.org
Thu Jan 14 11:33:37 CST 2010


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Jan 14 09:47:59 2010 -0600

mshtml: Added IHTMLIFrameElement stub implementation.

---

 dlls/mshtml/htmliframe.c |  127 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 126 insertions(+), 1 deletions(-)

diff --git a/dlls/mshtml/htmliframe.c b/dlls/mshtml/htmliframe.c
index ddb32c8..689b432 100644
--- a/dlls/mshtml/htmliframe.c
+++ b/dlls/mshtml/htmliframe.c
@@ -33,15 +33,139 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
 
 typedef struct {
     HTMLFrameBase framebase;
+    const IHTMLIFrameElementVtbl *lpIHTMLIFrameElementVtbl;
 } HTMLIFrame;
 
+#define HTMLIFRAMEELEM(x)   ((IHTMLIFrameElement*)  &(x)->lpIHTMLIFrameElementVtbl)
+
+#define HTMLIFRAME_THIS(iface) DEFINE_THIS(HTMLIFrame, IHTMLIFrameElement, iface)
+
+static HRESULT WINAPI HTMLIFrameElement_QueryInterface(IHTMLIFrameElement *iface,
+        REFIID riid, void **ppv)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+
+    return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->framebase.element.node), riid, ppv);
+}
+
+static ULONG WINAPI HTMLIFrameElement_AddRef(IHTMLIFrameElement *iface)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+
+    return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->framebase.element.node));
+}
+
+static ULONG WINAPI HTMLIFrameElement_Release(IHTMLIFrameElement *iface)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+
+    return IHTMLDOMNode_Release(HTMLDOMNODE(&This->framebase.element.node));
+}
+
+static HRESULT WINAPI HTMLIFrameElement_GetTypeInfoCount(IHTMLIFrameElement *iface, UINT *pctinfo)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+    return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->framebase.element.node.dispex), pctinfo);
+}
+
+static HRESULT WINAPI HTMLIFrameElement_GetTypeInfo(IHTMLIFrameElement *iface, UINT iTInfo,
+        LCID lcid, ITypeInfo **ppTInfo)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+    return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->framebase.element.node.dispex), iTInfo, lcid, ppTInfo);
+}
+
+static HRESULT WINAPI HTMLIFrameElement_GetIDsOfNames(IHTMLIFrameElement *iface, REFIID riid,
+        LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+    return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->framebase.element.node.dispex), riid, rgszNames, cNames, lcid, rgDispId);
+}
+
+static HRESULT WINAPI HTMLIFrameElement_Invoke(IHTMLIFrameElement *iface, DISPID dispIdMember,
+        REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
+        VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+    return IDispatchEx_Invoke(DISPATCHEX(&This->framebase.element.node.dispex), dispIdMember, riid,
+            lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
+}
+
+static HRESULT WINAPI HTMLIFrameElement_put_vspace(IHTMLIFrameElement *iface, LONG v)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+    FIXME("(%p)->(%d)\n", This, v);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLIFrameElement_get_vspace(IHTMLIFrameElement *iface, LONG *p)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+    FIXME("(%p)->(%p)\n", This, p);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLIFrameElement_put_hspace(IHTMLIFrameElement *iface, LONG v)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+    FIXME("(%p)->(%d)\n", This, v);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLIFrameElement_get_hspace(IHTMLIFrameElement *iface, LONG *p)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+    FIXME("(%p)->(%p)\n", This, p);
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLIFrameElement_put_align(IHTMLIFrameElement *iface, BSTR v)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+    FIXME("(%p)->(%s)\n", This, debugstr_w(v));
+    return E_NOTIMPL;
+}
+
+static HRESULT WINAPI HTMLIFrameElement_get_align(IHTMLIFrameElement *iface, BSTR *p)
+{
+    HTMLIFrame *This = HTMLIFRAME_THIS(iface);
+    FIXME("(%p)->(%p)\n", This, p);
+    return E_NOTIMPL;
+}
+
+#undef HTMLIFRAME_THIS
+
+static const IHTMLIFrameElementVtbl HTMLIFrameElementVtbl = {
+    HTMLIFrameElement_QueryInterface,
+    HTMLIFrameElement_AddRef,
+    HTMLIFrameElement_Release,
+    HTMLIFrameElement_GetTypeInfoCount,
+    HTMLIFrameElement_GetTypeInfo,
+    HTMLIFrameElement_GetIDsOfNames,
+    HTMLIFrameElement_Invoke,
+    HTMLIFrameElement_put_vspace,
+    HTMLIFrameElement_get_vspace,
+    HTMLIFrameElement_put_hspace,
+    HTMLIFrameElement_get_hspace,
+    HTMLIFrameElement_put_align,
+    HTMLIFrameElement_get_align
+};
+
 #define HTMLIFRAME_NODE_THIS(iface) DEFINE_THIS2(HTMLIFrame, framebase.element.node, iface)
 
 static HRESULT HTMLIFrame_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
 {
     HTMLIFrame *This = HTMLIFRAME_NODE_THIS(iface);
 
-    return HTMLFrameBase_QI(&This->framebase, riid, ppv);
+    if(IsEqualGUID(&IID_IHTMLIFrameElement, riid)) {
+        TRACE("(%p)->(IID_IHTMLIFrameElement %p)\n", This, ppv);
+        *ppv = HTMLIFRAMEELEM(This);
+    }else {
+        return HTMLFrameBase_QI(&This->framebase, riid, ppv);
+    }
+
+    IUnknown_AddRef((IUnknown*)*ppv);
+    return S_OK;
 }
 
 static void HTMLIFrame_destructor(HTMLDOMNode *iface)
@@ -154,6 +278,7 @@ HTMLElement *HTMLIFrame_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem)
 
     ret = heap_alloc_zero(sizeof(HTMLIFrame));
 
+    ret->lpIHTMLIFrameElementVtbl = &HTMLIFrameElementVtbl;
     ret->framebase.element.node.vtbl = &HTMLIFrameImplVtbl;
 
     HTMLFrameBase_Init(&ret->framebase, doc, nselem, &HTMLIFrame_dispex);




More information about the wine-cvs mailing list