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