From 12a35ac9de888a303580629c6204bbfb4ad5c9b3 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Mon, 3 Sep 2012 12:52:53 +0200 Subject: [PATCH] mshtml: Added IHTMLIFrameElement2 stub implementation. --- dlls/mshtml/htmliframe.c | 107 +++++++++++++++++++++++++++++++++++ dlls/mshtml/mshtml_private.h | 1 + dlls/mshtml/tests/dom.c | 1 + 3 files changed, 109 insertions(+) diff --git a/dlls/mshtml/htmliframe.c b/dlls/mshtml/htmliframe.c index 3cae2374ff0..dccc7d0e804 100644 --- a/dlls/mshtml/htmliframe.c +++ b/dlls/mshtml/htmliframe.c @@ -34,6 +34,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml); typedef struct { HTMLFrameBase framebase; IHTMLIFrameElement IHTMLIFrameElement_iface; + IHTMLIFrameElement2 IHTMLIFrameElement2_iface; } HTMLIFrame; static inline HTMLIFrame *impl_from_IHTMLIFrameElement(IHTMLIFrameElement *iface) @@ -153,6 +154,107 @@ static const IHTMLIFrameElementVtbl HTMLIFrameElementVtbl = { HTMLIFrameElement_get_align }; +static inline HTMLIFrame *impl_from_IHTMLIFrameElement2(IHTMLIFrameElement2 *iface) +{ + return CONTAINING_RECORD(iface, HTMLIFrame, IHTMLIFrameElement2_iface); +} + +static HRESULT WINAPI HTMLIFrameElement2_QueryInterface(IHTMLIFrameElement2 *iface, + REFIID riid, void **ppv) +{ + HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface); + + return IHTMLDOMNode_QueryInterface(&This->framebase.element.node.IHTMLDOMNode_iface, riid, ppv); +} + +static ULONG WINAPI HTMLIFrameElement2_AddRef(IHTMLIFrameElement2 *iface) +{ + HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface); + + return IHTMLDOMNode_AddRef(&This->framebase.element.node.IHTMLDOMNode_iface); +} + +static ULONG WINAPI HTMLIFrameElement2_Release(IHTMLIFrameElement2 *iface) +{ + HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface); + + return IHTMLDOMNode_Release(&This->framebase.element.node.IHTMLDOMNode_iface); +} + +static HRESULT WINAPI HTMLIFrameElement2_GetTypeInfoCount(IHTMLIFrameElement2 *iface, UINT *pctinfo) +{ + HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface); + return IDispatchEx_GetTypeInfoCount(&This->framebase.element.node.dispex.IDispatchEx_iface, + pctinfo); +} + +static HRESULT WINAPI HTMLIFrameElement2_GetTypeInfo(IHTMLIFrameElement2 *iface, UINT iTInfo, + LCID lcid, ITypeInfo **ppTInfo) +{ + HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface); + return IDispatchEx_GetTypeInfo(&This->framebase.element.node.dispex.IDispatchEx_iface, iTInfo, + lcid, ppTInfo); +} + +static HRESULT WINAPI HTMLIFrameElement2_GetIDsOfNames(IHTMLIFrameElement2 *iface, REFIID riid, + LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId) +{ + HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface); + return IDispatchEx_GetIDsOfNames(&This->framebase.element.node.dispex.IDispatchEx_iface, riid, + rgszNames, cNames, lcid, rgDispId); +} + +static HRESULT WINAPI HTMLIFrameElement2_Invoke(IHTMLIFrameElement2 *iface, DISPID dispIdMember, + REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, + VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) +{ + HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface); + return IDispatchEx_Invoke(&This->framebase.element.node.dispex.IDispatchEx_iface, dispIdMember, + riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); +} + +static HRESULT WINAPI HTMLIFrameElement2_put_height(IHTMLIFrameElement2 *iface, VARIANT v) +{ + HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameElement2_get_height(IHTMLIFrameElement2 *iface, VARIANT *p) +{ + HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameElement2_put_width(IHTMLIFrameElement2 *iface, VARIANT v) +{ + HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface); + FIXME("(%p)->(%s)\n", This, debugstr_variant(&v)); + return E_NOTIMPL; +} + +static HRESULT WINAPI HTMLIFrameElement2_get_width(IHTMLIFrameElement2 *iface, VARIANT *p) +{ + HTMLIFrame *This = impl_from_IHTMLIFrameElement2(iface); + FIXME("(%p)->(%p)\n", This, p); + return E_NOTIMPL; +} + +static const IHTMLIFrameElement2Vtbl HTMLIFrameElement2Vtbl = { + HTMLIFrameElement2_QueryInterface, + HTMLIFrameElement2_AddRef, + HTMLIFrameElement2_Release, + HTMLIFrameElement2_GetTypeInfoCount, + HTMLIFrameElement2_GetTypeInfo, + HTMLIFrameElement2_GetIDsOfNames, + HTMLIFrameElement2_Invoke, + HTMLIFrameElement2_put_height, + HTMLIFrameElement2_get_height, + HTMLIFrameElement2_put_width, + HTMLIFrameElement2_get_width +}; + static inline HTMLIFrame *impl_from_HTMLDOMNode(HTMLDOMNode *iface) { return CONTAINING_RECORD(iface, HTMLIFrame, framebase.element.node); @@ -165,6 +267,9 @@ static HRESULT HTMLIFrame_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) if(IsEqualGUID(&IID_IHTMLIFrameElement, riid)) { TRACE("(%p)->(IID_IHTMLIFrameElement %p)\n", This, ppv); *ppv = &This->IHTMLIFrameElement_iface; + }else if(IsEqualGUID(&IID_IHTMLIFrameElement2, riid)) { + TRACE("(%p)->(IID_IHTMLIFrameElement2 %p)\n", This, ppv); + *ppv = &This->IHTMLIFrameElement2_iface; }else { return HTMLFrameBase_QI(&This->framebase, riid, ppv); } @@ -266,6 +371,7 @@ static const tid_t HTMLIFrame_iface_tids[] = { IHTMLFrameBase_tid, IHTMLFrameBase2_tid, IHTMLIFrameElement_tid, + IHTMLIFrameElement2_tid, 0 }; @@ -285,6 +391,7 @@ HRESULT HTMLIFrame_Create(HTMLDocumentNode *doc, nsIDOMHTMLElement *nselem, HTML return E_OUTOFMEMORY; ret->IHTMLIFrameElement_iface.lpVtbl = &HTMLIFrameElementVtbl; + ret->IHTMLIFrameElement2_iface.lpVtbl = &HTMLIFrameElement2Vtbl; ret->framebase.element.node.vtbl = &HTMLIFrameImplVtbl; HTMLFrameBase_Init(&ret->framebase, doc, nselem, &HTMLIFrame_dispex); diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 2fecc12e553..8b5f8416ef2 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -146,6 +146,7 @@ typedef struct event_target_t event_target_t; XIID(IHTMLGenericElement) \ XIID(IHTMLHeadElement) \ XIID(IHTMLIFrameElement) \ + XIID(IHTMLIFrameElement2) \ XIID(IHTMLImageElementFactory) \ XIID(IHTMLImgElement) \ XIID(IHTMLInputElement) \ diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c index 760580e203d..1b7de7540c5 100644 --- a/dlls/mshtml/tests/dom.c +++ b/dlls/mshtml/tests/dom.c @@ -336,6 +336,7 @@ static const IID * const iframe_iids[] = { &IID_IHTMLFrameBase, &IID_IHTMLFrameBase2, &IID_IHTMLIFrameElement, + &IID_IHTMLIFrameElement2, &IID_IConnectionPointContainer, NULL };