From a4deae49b37397d4f9dfcf179ea904e377771869 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Tue, 13 Oct 2009 20:49:13 +0200 Subject: [PATCH] mshtml: Added IHTMLBaseFrame interface stub implementation. --- dlls/mshtml/htmliframe.c | 219 ++++++++++++++++++++++++++++++++++++++- dlls/mshtml/tests/dom.c | 1 + 2 files changed, 219 insertions(+), 1 deletion(-) diff --git a/dlls/mshtml/htmliframe.c b/dlls/mshtml/htmliframe.c index a482a5b05ae..4ddff4e3c74 100644 --- a/dlls/mshtml/htmliframe.c +++ b/dlls/mshtml/htmliframe.c @@ -33,6 +33,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml); typedef struct { HTMLElement element; + const IHTMLFrameBaseVtbl *lpIHTMLFrameBaseVtbl; const IHTMLFrameBase2Vtbl *lpIHTMLFrameBase2Vtbl; LONG ref; @@ -41,6 +42,7 @@ typedef struct { HTMLWindow *content_window; } HTMLIFrame; +#define HTMLFRAMEBASE(x) (&(x)->lpIHTMLFrameBaseVtbl) #define HTMLFRAMEBASE2(x) (&(x)->lpIHTMLFrameBase2Vtbl) static HRESULT create_content_window(HTMLIFrame *This, nsIDOMHTMLDocument *nsdoc, HTMLWindow **ret) @@ -77,6 +79,217 @@ static HRESULT create_content_window(HTMLIFrame *This, nsIDOMHTMLDocument *nsdoc return hres; } +#define HTMLFRAMEBASE_THIS(iface) DEFINE_THIS(HTMLIFrame, IHTMLFrameBase, iface) + +static HRESULT WINAPI HTMLIFrameBase_QueryInterface(IHTMLFrameBase *iface, REFIID riid, void **ppv) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + + return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(&This->element.node), riid, ppv); +} + +static ULONG WINAPI HTMLIFrameBase_AddRef(IHTMLFrameBase *iface) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + + return IHTMLDOMNode_AddRef(HTMLDOMNODE(&This->element.node)); +} + +static ULONG WINAPI HTMLIFrameBase_Release(IHTMLFrameBase *iface) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + + return IHTMLDOMNode_Release(HTMLDOMNODE(&This->element.node)); +} + +static HRESULT WINAPI HTMLIFrameBase_GetTypeInfoCount(IHTMLFrameBase *iface, UINT *pctinfo) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + + return IDispatchEx_GetTypeInfoCount(DISPATCHEX(&This->element.node.dispex), pctinfo); +} + +static HRESULT WINAPI HTMLIFrameBase_GetTypeInfo(IHTMLFrameBase *iface, UINT iTInfo, + LCID lcid, ITypeInfo **ppTInfo) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + + return IDispatchEx_GetTypeInfo(DISPATCHEX(&This->element.node.dispex), iTInfo, lcid, ppTInfo); +} + +static HRESULT WINAPI HTMLIFrameBase_GetIDsOfNames(IHTMLFrameBase *iface, REFIID riid, + LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + + return IDispatchEx_GetIDsOfNames(DISPATCHEX(&This->element.node.dispex), riid, rgszNames, + cNames, lcid, rgDispId); +} + +static HRESULT WINAPI HTMLIFrameBase_Invoke(IHTMLFrameBase *iface, DISPID dispIdMember, + REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, + VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + + return IDispatchEx_Invoke(DISPATCHEX(&This->element.node.dispex), dispIdMember, riid, lcid, + wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); +} + +static HRESULT WINAPI HTMLIFrameBase_put_src(IHTMLFrameBase *iface, BSTR v) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_get_src(IHTMLFrameBase *iface, BSTR *p) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_put_name(IHTMLFrameBase *iface, BSTR v) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_get_name(IHTMLFrameBase *iface, BSTR *p) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_put_border(IHTMLFrameBase *iface, VARIANT v) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_get_border(IHTMLFrameBase *iface, VARIANT *p) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_put_frameBorder(IHTMLFrameBase *iface, BSTR v) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_get_frameBorder(IHTMLFrameBase *iface, BSTR *p) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_put_frameSpacing(IHTMLFrameBase *iface, VARIANT v) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_get_frameSpacing(IHTMLFrameBase *iface, VARIANT *p) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_put_marginWidth(IHTMLFrameBase *iface, VARIANT v) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_get_marginWidth(IHTMLFrameBase *iface, VARIANT *p) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_put_marginHeight(IHTMLFrameBase *iface, VARIANT v) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_get_marginHeight(IHTMLFrameBase *iface, VARIANT *p) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_put_noResize(IHTMLFrameBase *iface, VARIANT_BOOL v) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%x)\n", This, v); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_get_noResize(IHTMLFrameBase *iface, VARIANT_BOOL *p) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_put_scrolling(IHTMLFrameBase *iface, BSTR v) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%s)\n", This, debugstr_w(v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameBase_get_scrolling(IHTMLFrameBase *iface, BSTR *p) +{ + HTMLIFrame *This = HTMLFRAMEBASE_THIS(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static const IHTMLFrameBaseVtbl HTMLIFrameBaseVtbl = { + HTMLIFrameBase_QueryInterface, + HTMLIFrameBase_AddRef, + HTMLIFrameBase_Release, + HTMLIFrameBase_GetTypeInfoCount, + HTMLIFrameBase_GetTypeInfo, + HTMLIFrameBase_GetIDsOfNames, + HTMLIFrameBase_Invoke, + HTMLIFrameBase_put_src, + HTMLIFrameBase_get_src, + HTMLIFrameBase_put_name, + HTMLIFrameBase_get_name, + HTMLIFrameBase_put_border, + HTMLIFrameBase_get_border, + HTMLIFrameBase_put_frameBorder, + HTMLIFrameBase_get_frameBorder, + HTMLIFrameBase_put_frameSpacing, + HTMLIFrameBase_get_frameSpacing, + HTMLIFrameBase_put_marginWidth, + HTMLIFrameBase_get_marginWidth, + HTMLIFrameBase_put_marginHeight, + HTMLIFrameBase_get_marginHeight, + HTMLIFrameBase_put_noResize, + HTMLIFrameBase_get_noResize, + HTMLIFrameBase_put_scrolling, + HTMLIFrameBase_get_scrolling +}; + #define HTMLFRAMEBASE2_THIS(iface) DEFINE_THIS(HTMLIFrame, IHTMLFrameBase2, iface) static HRESULT WINAPI HTMLIFrameBase2_QueryInterface(IHTMLFrameBase2 *iface, REFIID riid, void **ppv) @@ -265,7 +478,10 @@ static HRESULT HTMLIFrame_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) *ppv = NULL; - if(IsEqualGUID(&IID_IHTMLFrameBase2, riid)) { + if(IsEqualGUID(&IID_IHTMLFrameBase, riid)) { + TRACE("(%p)->(IID_IHTMLFrameBase %p)\n", This, ppv); + *ppv = HTMLFRAMEBASE(This); + }else if(IsEqualGUID(&IID_IHTMLFrameBase2, riid)) { TRACE("(%p)->(IID_IHTMLFrameBase2 %p)\n", This, ppv); *ppv = HTMLFRAMEBASE2(This); }else { @@ -319,6 +535,7 @@ HTMLElement *HTMLIFrame_Create(nsIDOMHTMLElement *nselem) ret = heap_alloc_zero(sizeof(HTMLIFrame)); + ret->lpIHTMLFrameBaseVtbl = &HTMLIFrameBaseVtbl; ret->lpIHTMLFrameBase2Vtbl = &HTMLIFrameBase2Vtbl; ret->element.node.vtbl = &HTMLIFrameImplVtbl; diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index f826a0177c1..d319c0364fa 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -304,6 +304,7 @@ static const IID * const iframe_iids[] = { &IID_IHTMLElement, &IID_IHTMLElement2, &IID_IHTMLElement3, + &IID_IHTMLFrameBase, &IID_IHTMLFrameBase2, &IID_IDispatchEx, &IID_IConnectionPointContainer,