Commit 17736769 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

mshtml: Added IDispatchEx support to HTMLDOMAttribute object.

parent 0e3bf9b2
...@@ -48,6 +48,8 @@ static HRESULT WINAPI HTMLDOMAttribute_QueryInterface(IHTMLDOMAttribute *iface, ...@@ -48,6 +48,8 @@ static HRESULT WINAPI HTMLDOMAttribute_QueryInterface(IHTMLDOMAttribute *iface,
}else if(IsEqualGUID(&IID_IHTMLDOMAttribute, riid)) { }else if(IsEqualGUID(&IID_IHTMLDOMAttribute, riid)) {
TRACE("(%p)->(IID_IHTMLDOMAttribute %p)\n", This, ppv); TRACE("(%p)->(IID_IHTMLDOMAttribute %p)\n", This, ppv);
*ppv = &This->IHTMLDOMAttribute_iface; *ppv = &This->IHTMLDOMAttribute_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
return *ppv ? S_OK : E_NOINTERFACE;
}else { }else {
WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
*ppv = NULL; *ppv = NULL;
...@@ -77,6 +79,7 @@ static ULONG WINAPI HTMLDOMAttribute_Release(IHTMLDOMAttribute *iface) ...@@ -77,6 +79,7 @@ static ULONG WINAPI HTMLDOMAttribute_Release(IHTMLDOMAttribute *iface)
if(!ref) { if(!ref) {
nsIDOMAttr_Release(This->nsattr); nsIDOMAttr_Release(This->nsattr);
release_dispex(&This->dispex);
heap_free(This); heap_free(This);
} }
...@@ -86,16 +89,14 @@ static ULONG WINAPI HTMLDOMAttribute_Release(IHTMLDOMAttribute *iface) ...@@ -86,16 +89,14 @@ static ULONG WINAPI HTMLDOMAttribute_Release(IHTMLDOMAttribute *iface)
static HRESULT WINAPI HTMLDOMAttribute_GetTypeInfoCount(IHTMLDOMAttribute *iface, UINT *pctinfo) static HRESULT WINAPI HTMLDOMAttribute_GetTypeInfoCount(IHTMLDOMAttribute *iface, UINT *pctinfo)
{ {
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface); HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface);
FIXME("%p\n", This); return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
return E_NOTIMPL;
} }
static HRESULT WINAPI HTMLDOMAttribute_GetTypeInfo(IHTMLDOMAttribute *iface, UINT iTInfo, static HRESULT WINAPI HTMLDOMAttribute_GetTypeInfo(IHTMLDOMAttribute *iface, UINT iTInfo,
LCID lcid, ITypeInfo **ppTInfo) LCID lcid, ITypeInfo **ppTInfo)
{ {
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface); HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface);
FIXME("%p\n", This); return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
return E_NOTIMPL;
} }
static HRESULT WINAPI HTMLDOMAttribute_GetIDsOfNames(IHTMLDOMAttribute *iface, REFIID riid, static HRESULT WINAPI HTMLDOMAttribute_GetIDsOfNames(IHTMLDOMAttribute *iface, REFIID riid,
...@@ -103,8 +104,8 @@ static HRESULT WINAPI HTMLDOMAttribute_GetIDsOfNames(IHTMLDOMAttribute *iface, R ...@@ -103,8 +104,8 @@ static HRESULT WINAPI HTMLDOMAttribute_GetIDsOfNames(IHTMLDOMAttribute *iface, R
LCID lcid, DISPID *rgDispId) LCID lcid, DISPID *rgDispId)
{ {
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface); HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface);
FIXME("%p\n", This); return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
return E_NOTIMPL; lcid, rgDispId);
} }
static HRESULT WINAPI HTMLDOMAttribute_Invoke(IHTMLDOMAttribute *iface, DISPID dispIdMember, static HRESULT WINAPI HTMLDOMAttribute_Invoke(IHTMLDOMAttribute *iface, DISPID dispIdMember,
...@@ -112,8 +113,8 @@ static HRESULT WINAPI HTMLDOMAttribute_Invoke(IHTMLDOMAttribute *iface, DISPID d ...@@ -112,8 +113,8 @@ static HRESULT WINAPI HTMLDOMAttribute_Invoke(IHTMLDOMAttribute *iface, DISPID d
VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr) VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
{ {
HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface); HTMLDOMAttribute *This = impl_from_IHTMLDOMAttribute(iface);
FIXME("%p\n", This); return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
return E_NOTIMPL; wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
} }
static HRESULT WINAPI HTMLDOMAttribute_get_nodeName(IHTMLDOMAttribute *iface, BSTR *p) static HRESULT WINAPI HTMLDOMAttribute_get_nodeName(IHTMLDOMAttribute *iface, BSTR *p)
...@@ -158,6 +159,17 @@ static const IHTMLDOMAttributeVtbl HTMLDOMAttributeVtbl = { ...@@ -158,6 +159,17 @@ static const IHTMLDOMAttributeVtbl HTMLDOMAttributeVtbl = {
HTMLDOMAttribute_get_specified HTMLDOMAttribute_get_specified
}; };
static const tid_t HTMLDOMAttribute_iface_tids[] = {
IHTMLDOMAttribute_tid,
0
};
static dispex_static_data_t HTMLDOMAttribute_dispex = {
NULL,
DispHTMLDOMAttribute_tid,
0,
HTMLDOMAttribute_iface_tids
};
HRESULT HTMLDOMAttribute_Create(HTMLDocumentNode *doc, nsIDOMAttr *nsattr, HTMLDOMAttribute **attr) HRESULT HTMLDOMAttribute_Create(HTMLDocumentNode *doc, nsIDOMAttr *nsattr, HTMLDOMAttribute **attr)
{ {
HTMLDOMAttribute *ret; HTMLDOMAttribute *ret;
...@@ -172,6 +184,9 @@ HRESULT HTMLDOMAttribute_Create(HTMLDocumentNode *doc, nsIDOMAttr *nsattr, HTMLD ...@@ -172,6 +184,9 @@ HRESULT HTMLDOMAttribute_Create(HTMLDocumentNode *doc, nsIDOMAttr *nsattr, HTMLD
nsIDOMAttr_AddRef(nsattr); nsIDOMAttr_AddRef(nsattr);
ret->nsattr = nsattr; ret->nsattr = nsattr;
init_dispex(&ret->dispex, (IUnknown*)&ret->IHTMLDOMAttribute_iface,
&HTMLDOMAttribute_dispex);
*attr = ret; *attr = ret;
return S_OK; return S_OK;
} }
...@@ -74,6 +74,7 @@ typedef struct event_target_t event_target_t; ...@@ -74,6 +74,7 @@ typedef struct event_target_t event_target_t;
XDIID(DispHTMLCommentElement) \ XDIID(DispHTMLCommentElement) \
XDIID(DispHTMLCurrentStyle) \ XDIID(DispHTMLCurrentStyle) \
XDIID(DispHTMLDocument) \ XDIID(DispHTMLDocument) \
XDIID(DispHTMLDOMAttribute) \
XDIID(DispHTMLDOMTextNode) \ XDIID(DispHTMLDOMTextNode) \
XDIID(DispHTMLElementCollection) \ XDIID(DispHTMLElementCollection) \
XDIID(DispHTMLEmbed) \ XDIID(DispHTMLEmbed) \
...@@ -111,6 +112,7 @@ typedef struct event_target_t event_target_t; ...@@ -111,6 +112,7 @@ typedef struct event_target_t event_target_t;
XIID(IHTMLDocument3) \ XIID(IHTMLDocument3) \
XIID(IHTMLDocument4) \ XIID(IHTMLDocument4) \
XIID(IHTMLDocument5) \ XIID(IHTMLDocument5) \
XIID(IHTMLDOMAttribute) \
XIID(IHTMLDOMChildrenCollection) \ XIID(IHTMLDOMChildrenCollection) \
XIID(IHTMLDOMNode) \ XIID(IHTMLDOMNode) \
XIID(IHTMLDOMNode2) \ XIID(IHTMLDOMNode2) \
...@@ -740,6 +742,7 @@ HRESULT create_nselem(HTMLDocumentNode*,const WCHAR*,nsIDOMHTMLElement**); ...@@ -740,6 +742,7 @@ HRESULT create_nselem(HTMLDocumentNode*,const WCHAR*,nsIDOMHTMLElement**);
HRESULT HTMLDOMTextNode_Create(HTMLDocumentNode*,nsIDOMNode*,HTMLDOMNode**); HRESULT HTMLDOMTextNode_Create(HTMLDocumentNode*,nsIDOMNode*,HTMLDOMNode**);
typedef struct { typedef struct {
DispatchEx dispex;
IHTMLDOMAttribute IHTMLDOMAttribute_iface; IHTMLDOMAttribute IHTMLDOMAttribute_iface;
LONG ref; LONG ref;
......
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