Commit 877069c2 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

mshtml: Added IHTMLElement4 stub implementation.

parent 35a39e3c
......@@ -1620,6 +1620,9 @@ HRESULT HTMLElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv)
}else if(IsEqualGUID(&IID_IHTMLElement3, riid)) {
TRACE("(%p)->(IID_IHTMLElement3 %p)\n", This, ppv);
*ppv = &This->IHTMLElement3_iface;
}else if(IsEqualGUID(&IID_IHTMLElement4, riid)) {
TRACE("(%p)->(IID_IHTMLElement4 %p)\n", This, ppv);
*ppv = &This->IHTMLElement4_iface;
}else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) {
TRACE("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv);
*ppv = &This->cp_container.IConnectionPointContainer_iface;
......
......@@ -483,7 +483,169 @@ static const IHTMLElement3Vtbl HTMLElement3Vtbl = {
HTMLElement3_get_glyphMode
};
static inline HTMLElement *impl_from_IHTMLElement4(IHTMLElement4 *iface)
{
return CONTAINING_RECORD(iface, HTMLElement, IHTMLElement4_iface);
}
static HRESULT WINAPI HTMLElement4_QueryInterface(IHTMLElement4 *iface,
REFIID riid, void **ppv)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
return IHTMLElement_QueryInterface(&This->IHTMLElement_iface, riid, ppv);
}
static ULONG WINAPI HTMLElement4_AddRef(IHTMLElement4 *iface)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
return IHTMLElement_AddRef(&This->IHTMLElement_iface);
}
static ULONG WINAPI HTMLElement4_Release(IHTMLElement4 *iface)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
return IHTMLElement_Release(&This->IHTMLElement_iface);
}
static HRESULT WINAPI HTMLElement4_GetTypeInfoCount(IHTMLElement4 *iface, UINT *pctinfo)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
return IDispatchEx_GetTypeInfoCount(&This->node.dispex.IDispatchEx_iface, pctinfo);
}
static HRESULT WINAPI HTMLElement4_GetTypeInfo(IHTMLElement4 *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
return IDispatchEx_GetTypeInfo(&This->node.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
}
static HRESULT WINAPI HTMLElement4_GetIDsOfNames(IHTMLElement4 *iface, REFIID riid,
LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
return IDispatchEx_GetIDsOfNames(&This->node.dispex.IDispatchEx_iface, riid, rgszNames, cNames,
lcid, rgDispId);
}
static HRESULT WINAPI HTMLElement4_Invoke(IHTMLElement4 *iface, DISPID dispIdMember, REFIID riid,
LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
return IDispatchEx_Invoke(&This->node.dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
}
static HRESULT WINAPI HTMLElement4_put_onmousewheel(IHTMLElement4 *iface, VARIANT v)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLElement4_get_onmousewheel(IHTMLElement4 *iface, VARIANT *p)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLElement4_normalize(IHTMLElement4 *iface)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLElement4_getAttributeNode(IHTMLElement4 *iface, BSTR bstrname, IHTMLDOMAttribute **ppAttribute)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%s %p)\n", This, debugstr_w(bstrname), ppAttribute);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLElement4_setAttributeNode(IHTMLElement4 *iface, IHTMLDOMAttribute *pattr,
IHTMLDOMAttribute **ppretAttribute)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%p %p)\n", This, pattr, ppretAttribute);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLElement4_removeAttributeNode(IHTMLElement4 *iface, IHTMLDOMAttribute *pattr,
IHTMLDOMAttribute **ppretAttribute)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%p %p)\n", This, pattr, ppretAttribute);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLElement4_put_onbeforeactivate(IHTMLElement4 *iface, VARIANT v)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLElement4_get_onbeforeactivate(IHTMLElement4 *iface, VARIANT *p)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLElement4_put_onfocusin(IHTMLElement4 *iface, VARIANT v)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLElement4_get_onfocusin(IHTMLElement4 *iface, VARIANT *p)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLElement4_put_onfocusout(IHTMLElement4 *iface, VARIANT v)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
return E_NOTIMPL;
}
static HRESULT WINAPI HTMLElement4_get_onfocusout(IHTMLElement4 *iface, VARIANT *p)
{
HTMLElement *This = impl_from_IHTMLElement4(iface);
FIXME("(%p)->(%p)\n", This, p);
return E_NOTIMPL;
}
static const IHTMLElement4Vtbl HTMLElement4Vtbl = {
HTMLElement4_QueryInterface,
HTMLElement4_AddRef,
HTMLElement4_Release,
HTMLElement4_GetTypeInfoCount,
HTMLElement4_GetTypeInfo,
HTMLElement4_GetIDsOfNames,
HTMLElement4_Invoke,
HTMLElement4_put_onmousewheel,
HTMLElement4_get_onmousewheel,
HTMLElement4_normalize,
HTMLElement4_getAttributeNode,
HTMLElement4_setAttributeNode,
HTMLElement4_removeAttributeNode,
HTMLElement4_put_onbeforeactivate,
HTMLElement4_get_onbeforeactivate,
HTMLElement4_put_onfocusin,
HTMLElement4_get_onfocusin,
HTMLElement4_put_onfocusout,
HTMLElement4_get_onfocusout
};
void HTMLElement3_Init(HTMLElement *This)
{
This->IHTMLElement3_iface.lpVtbl = &HTMLElement3Vtbl;
This->IHTMLElement4_iface.lpVtbl = &HTMLElement4Vtbl;
}
......@@ -554,6 +554,7 @@ typedef struct {
IHTMLElement IHTMLElement_iface;
IHTMLElement2 IHTMLElement2_iface;
IHTMLElement3 IHTMLElement3_iface;
IHTMLElement4 IHTMLElement4_iface;
nsIDOMHTMLElement *nselem;
} HTMLElement;
......
......@@ -145,111 +145,75 @@ static const IID * const doc_obj_iids[] = {
NULL
};
#define ELEM_IFACES \
&IID_IHTMLDOMNode, \
&IID_IHTMLDOMNode2, \
&IID_IHTMLElement, \
&IID_IHTMLElement2, \
&IID_IHTMLElement3, \
&IID_IHTMLElement4, \
&IID_IDispatchEx
static const IID * const elem_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
&IID_IDispatchEx,
ELEM_IFACES,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const body_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLTextContainer,
&IID_IHTMLBodyElement,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const anchor_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLAnchorElement,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const input_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLInputElement,
&IID_IHTMLInputTextElement,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const select_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLSelectElement,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const textarea_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLTextAreaElement,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const option_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLOptionElement,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const table_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLTable,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const script_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLScriptElement,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
......@@ -277,135 +241,80 @@ static const IID * const window_iids[] = {
};
static const IID * const comment_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLCommentElement,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const img_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
&IID_IDispatchEx,
ELEM_IFACES,
&IID_IHTMLImgElement,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const tr_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
&IID_IDispatchEx,
ELEM_IFACES,
&IID_IHTMLTableRow,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const td_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
&IID_IDispatchEx,
ELEM_IFACES,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const frame_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLFrameBase,
&IID_IHTMLFrameBase2,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const object_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLObjectElement,
&IID_IDispatchEx,
/* FIXME: No IConnectionPointContainer */
NULL
};
static const IID * const embed_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLEmbedElement,
&IID_IDispatchEx,
/* FIXME: No IConnectionPointContainer */
NULL
};
static const IID * const iframe_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLFrameBase,
&IID_IHTMLFrameBase2,
&IID_IHTMLIFrameElement,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const form_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLFormElement,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const styleelem_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLStyleElement,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
static const IID * const generic_iids[] = {
&IID_IHTMLDOMNode,
&IID_IHTMLDOMNode2,
&IID_IHTMLElement,
&IID_IHTMLElement2,
&IID_IHTMLElement3,
ELEM_IFACES,
&IID_IHTMLGenericElement,
&IID_IDispatchEx,
&IID_IConnectionPointContainer,
NULL
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment