Commit c7f18c31 authored by Gabriel Ivăncescu's avatar Gabriel Ivăncescu Committed by Alexandre Julliard

mshtml: Return interface directly from node vtbl's QI instead of HRESULT, without AddRef.

This will simplify it when the QI moves to the dispex's vtbl. The node's QI does have a temporary workaround right now that will get removed. Signed-off-by: 's avatarGabriel Ivăncescu <gabrielopcode@gmail.com>
parent 32ce98e9
...@@ -797,29 +797,18 @@ static inline HTMLAnchorElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -797,29 +797,18 @@ static inline HTMLAnchorElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLAnchorElement, element.node); return CONTAINING_RECORD(iface, HTMLAnchorElement, element.node);
} }
static HRESULT HTMLAnchorElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLAnchorElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLAnchorElement *This = impl_from_HTMLDOMNode(iface); HTMLAnchorElement *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLAnchorElement_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IDispatch, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLAnchorElement_iface;
*ppv = &This->IHTMLAnchorElement_iface; if(IsEqualGUID(&IID_IHTMLAnchorElement, riid))
}else if(IsEqualGUID(&IID_IDispatch, riid)) { return &This->IHTMLAnchorElement_iface;
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLAnchorElement_iface;
}else if(IsEqualGUID(&IID_IHTMLAnchorElement, riid)) {
TRACE("(%p)->(IID_IHTMLAnchorElement %p)\n", This, ppv);
*ppv = &This->IHTMLAnchorElement_iface;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
return HTMLElement_QI(&This->element.node, riid, ppv); return HTMLElement_QI(&This->element.node, riid);
} }
static HRESULT HTMLAnchorElement_handle_event(HTMLDOMNode *iface, DWORD eid, nsIDOMEvent *event, BOOL *prevent_default) static HRESULT HTMLAnchorElement_handle_event(HTMLDOMNode *iface, DWORD eid, nsIDOMEvent *event, BOOL *prevent_default)
......
...@@ -413,21 +413,14 @@ static inline HTMLAreaElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -413,21 +413,14 @@ static inline HTMLAreaElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLAreaElement, element.node); return CONTAINING_RECORD(iface, HTMLAreaElement, element.node);
} }
static HRESULT HTMLAreaElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLAreaElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLAreaElement *This = impl_from_HTMLDOMNode(iface); HTMLAreaElement *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IHTMLAreaElement, riid))
return &This->IHTMLAreaElement_iface;
if(IsEqualGUID(&IID_IHTMLAreaElement, riid)) { return HTMLElement_QI(&This->element.node, riid);
TRACE("(%p)->(IID_IHTMLAreaElement %p)\n", This, ppv);
*ppv = &This->IHTMLAreaElement_iface;
}else {
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
} }
static HRESULT HTMLAreaElement_handle_event(HTMLDOMNode *iface, DWORD eid, nsIDOMEvent *event, BOOL *prevent_default) static HRESULT HTMLAreaElement_handle_event(HTMLDOMNode *iface, DWORD eid, nsIDOMEvent *event, BOOL *prevent_default)
......
...@@ -890,32 +890,20 @@ static inline HTMLBodyElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -890,32 +890,20 @@ static inline HTMLBodyElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLBodyElement, element.node); return CONTAINING_RECORD(iface, HTMLBodyElement, element.node);
} }
static HRESULT HTMLBodyElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLBodyElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLBodyElement *This = impl_from_HTMLDOMNode(iface); HTMLBodyElement *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLBodyElement_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IDispatch, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLBodyElement_iface;
*ppv = &This->IHTMLBodyElement_iface; if(IsEqualGUID(&IID_IHTMLBodyElement, riid))
}else if(IsEqualGUID(&IID_IDispatch, riid)) { return &This->IHTMLBodyElement_iface;
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); if(IsEqualGUID(&IID_IHTMLTextContainer, riid))
*ppv = &This->IHTMLBodyElement_iface; return &This->IHTMLTextContainer_iface;
}else if(IsEqualGUID(&IID_IHTMLBodyElement, riid)) {
TRACE("(%p)->(IID_IHTMLBodyElement %p)\n", This, ppv);
*ppv = &This->IHTMLBodyElement_iface;
}else if(IsEqualGUID(&IID_IHTMLTextContainer, riid)) {
TRACE("(%p)->(IID_IHTMLTextContainer %p)\n", This, ppv);
*ppv = &This->IHTMLTextContainer_iface;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
return HTMLElement_QI(&This->element.node, riid, ppv); return HTMLElement_QI(&This->element.node, riid);
} }
static void HTMLBodyElement_traverse(HTMLDOMNode *iface, nsCycleCollectionTraversalCallback *cb) static void HTMLBodyElement_traverse(HTMLDOMNode *iface, nsCycleCollectionTraversalCallback *cb)
......
...@@ -146,21 +146,14 @@ static inline HTMLCommentElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -146,21 +146,14 @@ static inline HTMLCommentElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLCommentElement, element.node); return CONTAINING_RECORD(iface, HTMLCommentElement, element.node);
} }
static HRESULT HTMLCommentElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLCommentElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLCommentElement *This = impl_from_HTMLDOMNode(iface); HTMLCommentElement *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IHTMLCommentElement, riid))
return &This->IHTMLCommentElement_iface;
if(IsEqualGUID(&IID_IHTMLCommentElement, riid)) { return HTMLElement_QI(&This->element.node, riid);
TRACE("(%p)->(IID_IHTMLCommentElement %p)\n", This, ppv);
*ppv = &This->IHTMLCommentElement_iface;
}else {
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
} }
static void HTMLCommentElement_destructor(HTMLDOMNode *iface) static void HTMLCommentElement_destructor(HTMLDOMNode *iface)
......
...@@ -6807,48 +6807,44 @@ static inline HTMLElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -6807,48 +6807,44 @@ static inline HTMLElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLElement, node); return CONTAINING_RECORD(iface, HTMLElement, node);
} }
HRESULT HTMLElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) void *HTMLElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLElement *This = impl_from_HTMLDOMNode(iface); HTMLElement *This = impl_from_HTMLDOMNode(iface);
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IUnknown, riid))
*ppv = &This->IHTMLElement_iface; return &This->IHTMLElement_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) { if(IsEqualGUID(&IID_IDispatch, riid))
*ppv = &This->IHTMLElement_iface; return &This->IHTMLElement_iface;
}else if(IsEqualGUID(&IID_IHTMLElement, riid)) { if(IsEqualGUID(&IID_IHTMLElement, riid))
*ppv = &This->IHTMLElement_iface; return &This->IHTMLElement_iface;
}else if(IsEqualGUID(&IID_IHTMLElement2, riid)) { if(IsEqualGUID(&IID_IHTMLElement2, riid))
*ppv = &This->IHTMLElement2_iface; return &This->IHTMLElement2_iface;
}else if(IsEqualGUID(&IID_IHTMLElement3, riid)) { if(IsEqualGUID(&IID_IHTMLElement3, riid))
*ppv = &This->IHTMLElement3_iface; return &This->IHTMLElement3_iface;
}else if(IsEqualGUID(&IID_IHTMLElement4, riid)) { if(IsEqualGUID(&IID_IHTMLElement4, riid))
*ppv = &This->IHTMLElement4_iface; return &This->IHTMLElement4_iface;
}else if(IsEqualGUID(&IID_IHTMLElement6, riid)) { if(IsEqualGUID(&IID_IHTMLElement6, riid))
*ppv = &This->IHTMLElement6_iface; return &This->IHTMLElement6_iface;
}else if(IsEqualGUID(&IID_IHTMLElement7, riid)) { if(IsEqualGUID(&IID_IHTMLElement7, riid))
*ppv = &This->IHTMLElement7_iface; return &This->IHTMLElement7_iface;
}else if(IsEqualGUID(&IID_IHTMLUniqueName, riid)) { if(IsEqualGUID(&IID_IHTMLUniqueName, riid))
*ppv = &This->IHTMLUniqueName_iface; return &This->IHTMLUniqueName_iface;
}else if(IsEqualGUID(&IID_IElementSelector, riid)) { if(IsEqualGUID(&IID_IElementSelector, riid))
*ppv = &This->IElementSelector_iface; return &This->IElementSelector_iface;
}else if(IsEqualGUID(&IID_IElementTraversal, riid)) { if(IsEqualGUID(&IID_IElementTraversal, riid))
*ppv = &This->IElementTraversal_iface; return &This->IElementTraversal_iface;
}else if(IsEqualGUID(&IID_IConnectionPointContainer, riid)) { if(IsEqualGUID(&IID_IConnectionPointContainer, riid))
*ppv = &This->cp_container.IConnectionPointContainer_iface; return &This->cp_container.IConnectionPointContainer_iface;
}else if(IsEqualGUID(&IID_IProvideClassInfo, riid)) { if(IsEqualGUID(&IID_IProvideClassInfo, riid))
*ppv = &This->IProvideMultipleClassInfo_iface; return &This->IProvideMultipleClassInfo_iface;
}else if(IsEqualGUID(&IID_IProvideClassInfo2, riid)) { if(IsEqualGUID(&IID_IProvideClassInfo2, riid))
*ppv = &This->IProvideMultipleClassInfo_iface; return &This->IProvideMultipleClassInfo_iface;
}else if(IsEqualGUID(&IID_IProvideMultipleClassInfo, riid)) { if(IsEqualGUID(&IID_IProvideMultipleClassInfo, riid))
*ppv = &This->IProvideMultipleClassInfo_iface; return &This->IProvideMultipleClassInfo_iface;
}else if(IsEqualGUID(&IID_IWineHTMLElementPrivate, riid)) { if(IsEqualGUID(&IID_IWineHTMLElementPrivate, riid))
*ppv = &This->IWineHTMLElementPrivate_iface; return &This->IWineHTMLElementPrivate_iface;
}else {
return HTMLDOMNode_QI(&This->node, riid, ppv); return HTMLDOMNode_QI(&This->node, riid);
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
} }
void HTMLElement_destructor(HTMLDOMNode *iface) void HTMLElement_destructor(HTMLDOMNode *iface)
......
...@@ -773,32 +773,20 @@ static inline HTMLFormElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -773,32 +773,20 @@ static inline HTMLFormElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLFormElement, element.node); return CONTAINING_RECORD(iface, HTMLFormElement, element.node);
} }
static HRESULT HTMLFormElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLFormElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLFormElement *This = impl_from_HTMLDOMNode(iface); HTMLFormElement *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLFormElement_iface;
if(IsEqualGUID(&IID_IDispatch, riid))
return &This->IHTMLFormElement_iface;
if(IsEqualGUID(&IID_IHTMLFormElement, riid))
return &This->IHTMLFormElement_iface;
if(IsEqualGUID(&DIID_DispHTMLFormElement, riid))
return &This->IHTMLFormElement_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { return HTMLElement_QI(&This->element.node, riid);
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLFormElement_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLFormElement_iface;
}else if(IsEqualGUID(&IID_IHTMLFormElement, riid)) {
TRACE("(%p)->(IID_IHTMLFormElement %p)\n", This, ppv);
*ppv = &This->IHTMLFormElement_iface;
}else if(IsEqualGUID(&DIID_DispHTMLFormElement, riid)) {
TRACE("(%p)->(DIID_DispHTMLFormElement %p)\n", This, ppv);
*ppv = &This->IHTMLFormElement_iface;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
return HTMLElement_QI(&This->element.node, riid, ppv);
} }
static HRESULT HTMLFormElement_get_dispid(HTMLDOMNode *iface, static HRESULT HTMLFormElement_get_dispid(HTMLDOMNode *iface,
......
...@@ -700,20 +700,14 @@ static const IHTMLFrameBase2Vtbl HTMLFrameBase2Vtbl = { ...@@ -700,20 +700,14 @@ static const IHTMLFrameBase2Vtbl HTMLFrameBase2Vtbl = {
HTMLFrameBase2_get_allowTransparency HTMLFrameBase2_get_allowTransparency
}; };
static HRESULT HTMLFrameBase_QI(HTMLFrameBase *This, REFIID riid, void **ppv) static void *HTMLFrameBase_QI(HTMLFrameBase *This, REFIID riid)
{ {
if(IsEqualGUID(&IID_IHTMLFrameBase, riid)) { if(IsEqualGUID(&IID_IHTMLFrameBase, riid))
TRACE("(%p)->(IID_IHTMLFrameBase %p)\n", This, ppv); return &This->IHTMLFrameBase_iface;
*ppv = &This->IHTMLFrameBase_iface; if(IsEqualGUID(&IID_IHTMLFrameBase2, riid))
}else if(IsEqualGUID(&IID_IHTMLFrameBase2, riid)) { return &This->IHTMLFrameBase2_iface;
TRACE("(%p)->(IID_IHTMLFrameBase2 %p)\n", This, ppv);
*ppv = &This->IHTMLFrameBase2_iface;
}else {
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv); return HTMLElement_QI(&This->element.node, riid);
return S_OK;
} }
static void HTMLFrameBase_destructor(HTMLFrameBase *This) static void HTMLFrameBase_destructor(HTMLFrameBase *This)
...@@ -893,19 +887,14 @@ static inline HTMLFrameElement *frame_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -893,19 +887,14 @@ static inline HTMLFrameElement *frame_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLFrameElement, framebase.element.node); return CONTAINING_RECORD(iface, HTMLFrameElement, framebase.element.node);
} }
static HRESULT HTMLFrameElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLFrameElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLFrameElement *This = frame_from_HTMLDOMNode(iface); HTMLFrameElement *This = frame_from_HTMLDOMNode(iface);
if(IsEqualGUID(&IID_IHTMLFrameElement3, riid)) { if(IsEqualGUID(&IID_IHTMLFrameElement3, riid))
TRACE("(%p)->(IID_IHTMLFrameElement3 %p)\n", This, ppv); return &This->IHTMLFrameElement3_iface;
*ppv = &This->IHTMLFrameElement3_iface;
}else {
return HTMLFrameBase_QI(&This->framebase, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv); return HTMLFrameBase_QI(&This->framebase, riid);
return S_OK;
} }
static void HTMLFrameElement_destructor(HTMLDOMNode *iface) static void HTMLFrameElement_destructor(HTMLDOMNode *iface)
...@@ -1471,25 +1460,18 @@ static inline HTMLIFrame *iframe_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -1471,25 +1460,18 @@ static inline HTMLIFrame *iframe_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLIFrame, framebase.element.node); return CONTAINING_RECORD(iface, HTMLIFrame, framebase.element.node);
} }
static HRESULT HTMLIFrame_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLIFrame_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLIFrame *This = iframe_from_HTMLDOMNode(iface); HTMLIFrame *This = iframe_from_HTMLDOMNode(iface);
if(IsEqualGUID(&IID_IHTMLIFrameElement, riid)) { if(IsEqualGUID(&IID_IHTMLIFrameElement, riid))
TRACE("(%p)->(IID_IHTMLIFrameElement %p)\n", This, ppv); return &This->IHTMLIFrameElement_iface;
*ppv = &This->IHTMLIFrameElement_iface; if(IsEqualGUID(&IID_IHTMLIFrameElement2, riid))
}else if(IsEqualGUID(&IID_IHTMLIFrameElement2, riid)) { return &This->IHTMLIFrameElement2_iface;
TRACE("(%p)->(IID_IHTMLIFrameElement2 %p)\n", This, ppv); if(IsEqualGUID(&IID_IHTMLIFrameElement3, riid))
*ppv = &This->IHTMLIFrameElement2_iface; return &This->IHTMLIFrameElement3_iface;
}else if(IsEqualGUID(&IID_IHTMLIFrameElement3, riid)) {
TRACE("(%p)->(IID_IHTMLIFrameElement3 %p)\n", This, ppv);
*ppv = &This->IHTMLIFrameElement3_iface;
}else {
return HTMLFrameBase_QI(&This->framebase, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv); return HTMLFrameBase_QI(&This->framebase, riid);
return S_OK;
} }
static void HTMLIFrame_destructor(HTMLDOMNode *iface) static void HTMLIFrame_destructor(HTMLDOMNode *iface)
......
...@@ -128,21 +128,14 @@ static inline HTMLGenericElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -128,21 +128,14 @@ static inline HTMLGenericElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLGenericElement, element.node); return CONTAINING_RECORD(iface, HTMLGenericElement, element.node);
} }
static HRESULT HTMLGenericElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLGenericElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLGenericElement *This = impl_from_HTMLDOMNode(iface); HTMLGenericElement *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IHTMLGenericElement, riid))
return &This->IHTMLGenericElement_iface;
if(IsEqualGUID(&IID_IHTMLGenericElement, riid)) { return HTMLElement_QI(&This->element.node, riid);
TRACE("(%p)->(IID_IHTMLGenericElement %p)\n", This, ppv);
*ppv = &This->IHTMLGenericElement_iface;
}else {
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
} }
static void HTMLGenericElement_destructor(HTMLDOMNode *iface) static void HTMLGenericElement_destructor(HTMLDOMNode *iface)
......
...@@ -146,19 +146,14 @@ static inline HTMLTitleElement *HTMLTitleElement_from_HTMLDOMNode(HTMLDOMNode *i ...@@ -146,19 +146,14 @@ static inline HTMLTitleElement *HTMLTitleElement_from_HTMLDOMNode(HTMLDOMNode *i
return CONTAINING_RECORD(iface, HTMLTitleElement, element.node); return CONTAINING_RECORD(iface, HTMLTitleElement, element.node);
} }
static HRESULT HTMLTitleElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLTitleElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLTitleElement *This = HTMLTitleElement_from_HTMLDOMNode(iface); HTMLTitleElement *This = HTMLTitleElement_from_HTMLDOMNode(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IHTMLTitleElement, riid)) if(IsEqualGUID(&IID_IHTMLTitleElement, riid))
*ppv = &This->IHTMLTitleElement_iface; return &This->IHTMLTitleElement_iface;
else
return HTMLElement_QI(&This->element.node, riid, ppv);
IUnknown_AddRef((IUnknown*)*ppv); return HTMLElement_QI(&This->element.node, riid);
return S_OK;
} }
static void HTMLTitleElement_destructor(HTMLDOMNode *iface) static void HTMLTitleElement_destructor(HTMLDOMNode *iface)
...@@ -308,19 +303,14 @@ static inline HTMLHtmlElement *HTMLHtmlElement_from_HTMLDOMNode(HTMLDOMNode *ifa ...@@ -308,19 +303,14 @@ static inline HTMLHtmlElement *HTMLHtmlElement_from_HTMLDOMNode(HTMLDOMNode *ifa
return CONTAINING_RECORD(iface, HTMLHtmlElement, element.node); return CONTAINING_RECORD(iface, HTMLHtmlElement, element.node);
} }
static HRESULT HTMLHtmlElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLHtmlElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLHtmlElement *This = HTMLHtmlElement_from_HTMLDOMNode(iface); HTMLHtmlElement *This = HTMLHtmlElement_from_HTMLDOMNode(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IHTMLHtmlElement, riid)) if(IsEqualGUID(&IID_IHTMLHtmlElement, riid))
*ppv = &This->IHTMLHtmlElement_iface; return &This->IHTMLHtmlElement_iface;
else
return HTMLElement_QI(&This->element.node, riid, ppv);
IUnknown_AddRef((IUnknown*)*ppv); return HTMLElement_QI(&This->element.node, riid);
return S_OK;
} }
static void HTMLHtmlElement_destructor(HTMLDOMNode *iface) static void HTMLHtmlElement_destructor(HTMLDOMNode *iface)
...@@ -549,25 +539,18 @@ static inline HTMLMetaElement *HTMLMetaElement_from_HTMLDOMNode(HTMLDOMNode *ifa ...@@ -549,25 +539,18 @@ static inline HTMLMetaElement *HTMLMetaElement_from_HTMLDOMNode(HTMLDOMNode *ifa
return CONTAINING_RECORD(iface, HTMLMetaElement, element.node); return CONTAINING_RECORD(iface, HTMLMetaElement, element.node);
} }
static HRESULT HTMLMetaElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLMetaElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLMetaElement *This = HTMLMetaElement_from_HTMLDOMNode(iface); HTMLMetaElement *This = HTMLMetaElement_from_HTMLDOMNode(iface);
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IUnknown, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLMetaElement_iface;
*ppv = &This->IHTMLMetaElement_iface; if(IsEqualGUID(&IID_IDispatch, riid))
}else if(IsEqualGUID(&IID_IDispatch, riid)) { return &This->IHTMLMetaElement_iface;
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); if(IsEqualGUID(&IID_IHTMLMetaElement, riid))
*ppv = &This->IHTMLMetaElement_iface; return &This->IHTMLMetaElement_iface;
}else if(IsEqualGUID(&IID_IHTMLMetaElement, riid)) {
TRACE("(%p)->(IID_IHTMLMetaElement %p)\n", This, ppv);
*ppv = &This->IHTMLMetaElement_iface;
}else {
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv); return HTMLElement_QI(&This->element.node, riid);
return S_OK;
} }
static void HTMLMetaElement_destructor(HTMLDOMNode *iface) static void HTMLMetaElement_destructor(HTMLDOMNode *iface)
...@@ -718,21 +701,16 @@ static inline HTMLHeadElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -718,21 +701,16 @@ static inline HTMLHeadElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLHeadElement, element.node); return CONTAINING_RECORD(iface, HTMLHeadElement, element.node);
} }
static HRESULT HTMLHeadElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLHeadElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLHeadElement *This = impl_from_HTMLDOMNode(iface); HTMLHeadElement *This = impl_from_HTMLDOMNode(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IHTMLHeadElement, riid)) if(IsEqualGUID(&IID_IHTMLHeadElement, riid))
*ppv = &This->IHTMLHeadElement_iface; return &This->IHTMLHeadElement_iface;
else if(IsEqualGUID(&DIID_DispHTMLHeadElement, riid)) if(IsEqualGUID(&DIID_DispHTMLHeadElement, riid))
*ppv = &This->IHTMLHeadElement_iface; return &This->IHTMLHeadElement_iface;
else
return HTMLElement_QI(&This->element.node, riid, ppv);
IUnknown_AddRef((IUnknown*)*ppv); return HTMLElement_QI(&This->element.node, riid);
return S_OK;
} }
static void HTMLHeadElement_destructor(HTMLDOMNode *iface) static void HTMLHeadElement_destructor(HTMLDOMNode *iface)
......
...@@ -658,21 +658,14 @@ static inline HTMLImg *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -658,21 +658,14 @@ static inline HTMLImg *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLImg, element.node); return CONTAINING_RECORD(iface, HTMLImg, element.node);
} }
static HRESULT HTMLImgElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLImgElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLImg *This = impl_from_HTMLDOMNode(iface); HTMLImg *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IHTMLImgElement, riid))
return &This->IHTMLImgElement_iface;
if(IsEqualGUID(&IID_IHTMLImgElement, riid)) { return HTMLElement_QI(&This->element.node, riid);
TRACE("(%p)->(IID_IHTMLImgElement %p)\n", This, ppv);
*ppv = &This->IHTMLImgElement_iface;
}else {
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
} }
static HRESULT HTMLImgElement_get_readystate(HTMLDOMNode *iface, BSTR *p) static HRESULT HTMLImgElement_get_readystate(HTMLDOMNode *iface, BSTR *p)
......
...@@ -1344,35 +1344,22 @@ static inline HTMLInputElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -1344,35 +1344,22 @@ static inline HTMLInputElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLInputElement, element.node); return CONTAINING_RECORD(iface, HTMLInputElement, element.node);
} }
static HRESULT HTMLInputElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLInputElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLInputElement *This = impl_from_HTMLDOMNode(iface); HTMLInputElement *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLInputElement_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IDispatch, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLInputElement_iface;
*ppv = &This->IHTMLInputElement_iface; if(IsEqualGUID(&IID_IHTMLInputElement, riid))
}else if(IsEqualGUID(&IID_IDispatch, riid)) { return &This->IHTMLInputElement_iface;
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); if(IsEqualGUID(&IID_IHTMLInputTextElement, riid))
*ppv = &This->IHTMLInputElement_iface; return &This->IHTMLInputTextElement_iface;
}else if(IsEqualGUID(&IID_IHTMLInputElement, riid)) { if(IsEqualGUID(&IID_IHTMLInputTextElement2, riid))
TRACE("(%p)->(IID_IHTMLInputElement %p)\n", This, ppv); return &This->IHTMLInputTextElement2_iface;
*ppv = &This->IHTMLInputElement_iface;
}else if(IsEqualGUID(&IID_IHTMLInputTextElement, riid)) {
TRACE("(%p)->(IID_IHTMLInputTextElement %p)\n", This, ppv);
*ppv = &This->IHTMLInputTextElement_iface;
}else if(IsEqualGUID(&IID_IHTMLInputTextElement2, riid)) {
TRACE("(%p)->(IID_IHTMLInputTextElement2 %p)\n", This, ppv);
*ppv = &This->IHTMLInputTextElement2_iface;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
return HTMLElement_QI(&This->element.node, riid, ppv); return HTMLElement_QI(&This->element.node, riid);
} }
static HRESULT HTMLInputElementImpl_put_disabled(HTMLDOMNode *iface, VARIANT_BOOL v) static HRESULT HTMLInputElementImpl_put_disabled(HTMLDOMNode *iface, VARIANT_BOOL v)
...@@ -1602,24 +1589,16 @@ static inline HTMLLabelElement *label_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -1602,24 +1589,16 @@ static inline HTMLLabelElement *label_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLLabelElement, element.node); return CONTAINING_RECORD(iface, HTMLLabelElement, element.node);
} }
static HRESULT HTMLLabelElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLLabelElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLLabelElement *This = label_from_HTMLDOMNode(iface); HTMLLabelElement *This = label_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLLabelElement_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IHTMLLabelElement, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLLabelElement_iface;
*ppv = &This->IHTMLLabelElement_iface;
}else if(IsEqualGUID(&IID_IHTMLLabelElement, riid)) {
TRACE("(%p)->(IID_IHTMLLabelElement %p)\n", This, ppv);
*ppv = &This->IHTMLLabelElement_iface;
}else {
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv); return HTMLElement_QI(&This->element.node, riid);
return S_OK;
} }
static const NodeImplVtbl HTMLLabelElementImplVtbl = { static const NodeImplVtbl HTMLLabelElementImplVtbl = {
...@@ -1901,24 +1880,16 @@ static inline HTMLButtonElement *button_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -1901,24 +1880,16 @@ static inline HTMLButtonElement *button_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLButtonElement, element.node); return CONTAINING_RECORD(iface, HTMLButtonElement, element.node);
} }
static HRESULT HTMLButtonElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLButtonElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLButtonElement *This = button_from_HTMLDOMNode(iface); HTMLButtonElement *This = button_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLButtonElement_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IHTMLButtonElement, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLButtonElement_iface;
*ppv = &This->IHTMLButtonElement_iface;
}else if(IsEqualGUID(&IID_IHTMLButtonElement, riid)) {
TRACE("(%p)->(IID_IHTMLButtonElement %p)\n", This, ppv);
*ppv = &This->IHTMLButtonElement_iface;
}else {
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv); return HTMLElement_QI(&This->element.node, riid);
return S_OK;
} }
static HRESULT HTMLButtonElementImpl_put_disabled(HTMLDOMNode *iface, VARIANT_BOOL v) static HRESULT HTMLButtonElementImpl_put_disabled(HTMLDOMNode *iface, VARIANT_BOOL v)
......
...@@ -374,19 +374,14 @@ static inline HTMLLinkElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -374,19 +374,14 @@ static inline HTMLLinkElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLLinkElement, element.node); return CONTAINING_RECORD(iface, HTMLLinkElement, element.node);
} }
static HRESULT HTMLLinkElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLLinkElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLLinkElement *This = impl_from_HTMLDOMNode(iface); HTMLLinkElement *This = impl_from_HTMLDOMNode(iface);
if(IsEqualGUID(&IID_IHTMLLinkElement, riid)) { if(IsEqualGUID(&IID_IHTMLLinkElement, riid))
TRACE("(%p)->(IID_IHTMLLinkElement %p)\n", This, ppv); return &This->IHTMLLinkElement_iface;
*ppv = &This->IHTMLLinkElement_iface;
}else {
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv); return HTMLElement_QI(&This->element.node, riid);
return S_OK;
} }
static HRESULT HTMLLinkElementImpl_put_disabled(HTMLDOMNode *iface, VARIANT_BOOL v) static HRESULT HTMLLinkElementImpl_put_disabled(HTMLDOMNode *iface, VARIANT_BOOL v)
......
...@@ -493,7 +493,18 @@ static HRESULT WINAPI HTMLDOMNode_QueryInterface(IHTMLDOMNode *iface, ...@@ -493,7 +493,18 @@ static HRESULT WINAPI HTMLDOMNode_QueryInterface(IHTMLDOMNode *iface,
{ {
HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface); HTMLDOMNode *This = impl_from_IHTMLDOMNode(iface);
return This->vtbl->qi(This, riid, ppv); /* FIXME: Get rid of this when dispex handles QI */
if(IsEqualGUID(&IID_nsXPCOMCycleCollectionParticipant, riid) || IsEqualGUID(&IID_nsCycleCollectionISupports, riid)) {
dispex_query_interface(&This->event_target.dispex, riid, ppv);
return S_OK;
}
if((*ppv = This->vtbl->qi(This, riid))) {
IHTMLDOMNode_AddRef(&This->IHTMLDOMNode_iface);
return S_OK;
}
return E_NOINTERFACE;
} }
static ULONG WINAPI HTMLDOMNode_AddRef(IHTMLDOMNode *iface) static ULONG WINAPI HTMLDOMNode_AddRef(IHTMLDOMNode *iface)
...@@ -1464,26 +1475,28 @@ void HTMLDOMNode_destructor(DispatchEx *dispex) ...@@ -1464,26 +1475,28 @@ void HTMLDOMNode_destructor(DispatchEx *dispex)
free(This); free(This);
} }
HRESULT HTMLDOMNode_QI(HTMLDOMNode *This, REFIID riid, void **ppv) void *HTMLDOMNode_QI(HTMLDOMNode *This, REFIID riid)
{ {
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); IUnknown *unk;
HRESULT hres;
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IUnknown, riid))
*ppv = &This->IHTMLDOMNode_iface; return &This->IHTMLDOMNode_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) { if(IsEqualGUID(&IID_IDispatch, riid))
*ppv = &This->IHTMLDOMNode_iface; return &This->IHTMLDOMNode_iface;
}else if(IsEqualGUID(&IID_IHTMLDOMNode, riid)) { if(IsEqualGUID(&IID_IHTMLDOMNode, riid))
*ppv = &This->IHTMLDOMNode_iface; return &This->IHTMLDOMNode_iface;
}else if(IsEqualGUID(&IID_IHTMLDOMNode2, riid)) { if(IsEqualGUID(&IID_IHTMLDOMNode2, riid))
*ppv = &This->IHTMLDOMNode2_iface; return &This->IHTMLDOMNode2_iface;
}else if(IsEqualGUID(&IID_IHTMLDOMNode3, riid)) { if(IsEqualGUID(&IID_IHTMLDOMNode3, riid))
*ppv = &This->IHTMLDOMNode3_iface; return &This->IHTMLDOMNode3_iface;
}else {
return EventTarget_QI(&This->event_target, riid, ppv); hres = EventTarget_QI(&This->event_target, riid, (void**)&unk);
} if(hres != S_OK)
return NULL;
IUnknown_AddRef((IUnknown*)*ppv); IUnknown_Release(unk);
return S_OK; return unk;
} }
static HRESULT HTMLDOMNode_clone(HTMLDOMNode *This, nsIDOMNode *nsnode, HTMLDOMNode **ret) static HRESULT HTMLDOMNode_clone(HTMLDOMNode *This, nsIDOMNode *nsnode, HTMLDOMNode **ret)
......
...@@ -637,50 +637,43 @@ static inline HTMLObjectElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -637,50 +637,43 @@ static inline HTMLObjectElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLObjectElement, plugin_container.element.node); return CONTAINING_RECORD(iface, HTMLObjectElement, plugin_container.element.node);
} }
static HRESULT HTMLObjectElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLObjectElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLObjectElement *This = impl_from_HTMLDOMNode(iface); HTMLObjectElement *This = impl_from_HTMLDOMNode(iface);
void *elem_iface;
if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLObjectElement_iface;
if(IsEqualGUID(&IID_IDispatch, riid))
return &This->IHTMLObjectElement_iface;
if(IsEqualGUID(&IID_IHTMLObjectElement, riid))
return &This->IHTMLObjectElement_iface;
if(IsEqualGUID(&IID_IHTMLObjectElement2, riid))
return &This->IHTMLObjectElement2_iface;
if(IsEqualGUID(&IID_HTMLPluginContainer, riid)) {
/* Special pseudo-interface returning HTMLPluginContainer struct. */
return &This->plugin_container;
}
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); elem_iface = HTMLElement_QI(&This->plugin_container.element.node, riid);
if(!elem_iface && This->plugin_container.plugin_host && This->plugin_container.plugin_host->plugin_unk) {
if(IsEqualGUID(&IID_IUnknown, riid)) { IUnknown *plugin_iface, *ret;
*ppv = &This->IHTMLObjectElement_iface; HRESULT hres = IUnknown_QueryInterface(This->plugin_container.plugin_host->plugin_unk, riid, (void**)&plugin_iface);
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
*ppv = &This->IHTMLObjectElement_iface; if(hres == S_OK) {
}else if(IsEqualGUID(&IID_IHTMLObjectElement, riid)) { hres = wrap_iface(plugin_iface, (IUnknown*)&This->IHTMLObjectElement_iface, &ret);
*ppv = &This->IHTMLObjectElement_iface; IUnknown_Release(plugin_iface);
}else if(IsEqualGUID(&IID_IHTMLObjectElement2, riid)) { if(FAILED(hres)) {
*ppv = &This->IHTMLObjectElement2_iface; ERR("wrap_iface failed: %08lx\n", hres);
}else if(IsEqualGUID(&IID_HTMLPluginContainer, riid)) { return NULL;
/* Special pseudo-interface returning HTMLPluginContainse struct. */
*ppv = &This->plugin_container;
node_addref(&This->plugin_container.element.node);
return S_OK;
}else {
HRESULT hres;
hres = HTMLElement_QI(&This->plugin_container.element.node, riid, ppv);
if(hres == E_NOINTERFACE && This->plugin_container.plugin_host && This->plugin_container.plugin_host->plugin_unk) {
IUnknown *plugin_iface, *ret;
hres = IUnknown_QueryInterface(This->plugin_container.plugin_host->plugin_unk, riid, (void**)&plugin_iface);
if(hres == S_OK) {
hres = wrap_iface(plugin_iface, (IUnknown*)&This->IHTMLObjectElement_iface, &ret);
IUnknown_Release(plugin_iface);
if(FAILED(hres))
return hres;
TRACE("returning plugin iface %p wrapped to %p\n", plugin_iface, ret);
*ppv = ret;
return S_OK;
} }
}
return hres; TRACE("returning plugin iface %p wrapped to %p\n", plugin_iface, ret);
return ret;
}
} }
IUnknown_AddRef((IUnknown*)*ppv); return elem_iface;
return S_OK;
} }
static void HTMLObjectElement_destructor(HTMLDOMNode *iface) static void HTMLObjectElement_destructor(HTMLDOMNode *iface)
...@@ -986,24 +979,18 @@ static inline HTMLEmbed *embed_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -986,24 +979,18 @@ static inline HTMLEmbed *embed_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLEmbed, element.node); return CONTAINING_RECORD(iface, HTMLEmbed, element.node);
} }
static HRESULT HTMLEmbedElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLEmbedElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLEmbed *This = embed_from_HTMLDOMNode(iface); HTMLEmbed *This = embed_from_HTMLDOMNode(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLEmbedElement_iface;
if(IsEqualGUID(&IID_IDispatch, riid))
return &This->IHTMLEmbedElement_iface;
if(IsEqualGUID(&IID_IHTMLEmbedElement, riid))
return &This->IHTMLEmbedElement_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { return HTMLElement_QI(&This->element.node, riid);
*ppv = &This->IHTMLEmbedElement_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
*ppv = &This->IHTMLEmbedElement_iface;
}else if(IsEqualGUID(&IID_IHTMLEmbedElement, riid)) {
*ppv = &This->IHTMLEmbedElement_iface;
}else {
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
} }
static void HTMLEmbedElement_destructor(HTMLDOMNode *iface) static void HTMLEmbedElement_destructor(HTMLDOMNode *iface)
......
...@@ -354,29 +354,18 @@ static inline HTMLScriptElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -354,29 +354,18 @@ static inline HTMLScriptElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLScriptElement, element.node); return CONTAINING_RECORD(iface, HTMLScriptElement, element.node);
} }
static HRESULT HTMLScriptElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLScriptElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLScriptElement *This = impl_from_HTMLDOMNode(iface); HTMLScriptElement *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLScriptElement_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IDispatch, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLScriptElement_iface;
*ppv = &This->IHTMLScriptElement_iface; if(IsEqualGUID(&IID_IHTMLScriptElement, riid))
}else if(IsEqualGUID(&IID_IDispatch, riid)) { return &This->IHTMLScriptElement_iface;
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLScriptElement_iface;
}else if(IsEqualGUID(&IID_IHTMLScriptElement, riid)) {
TRACE("(%p)->(IID_IHTMLScriptElement %p)\n", This, ppv);
*ppv = &This->IHTMLScriptElement_iface;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
return HTMLElement_QI(&This->element.node, riid, ppv); return HTMLElement_QI(&This->element.node, riid);
} }
static void HTMLScriptElement_destructor(HTMLDOMNode *iface) static void HTMLScriptElement_destructor(HTMLDOMNode *iface)
......
...@@ -346,29 +346,18 @@ static inline HTMLOptionElement *HTMLOptionElement_from_HTMLDOMNode(HTMLDOMNode ...@@ -346,29 +346,18 @@ static inline HTMLOptionElement *HTMLOptionElement_from_HTMLDOMNode(HTMLDOMNode
return CONTAINING_RECORD(iface, HTMLOptionElement, element.node); return CONTAINING_RECORD(iface, HTMLOptionElement, element.node);
} }
static HRESULT HTMLOptionElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLOptionElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLOptionElement *This = HTMLOptionElement_from_HTMLDOMNode(iface); HTMLOptionElement *This = HTMLOptionElement_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLOptionElement_iface;
if(IsEqualGUID(&IID_IDispatch, riid))
return &This->IHTMLOptionElement_iface;
if(IsEqualGUID(&IID_IHTMLOptionElement, riid))
return &This->IHTMLOptionElement_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { return HTMLElement_QI(&This->element.node, riid);
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv);
*ppv = &This->IHTMLOptionElement_iface;
}else if(IsEqualGUID(&IID_IDispatch, riid)) {
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLOptionElement_iface;
}else if(IsEqualGUID(&IID_IHTMLOptionElement, riid)) {
TRACE("(%p)->(IID_IHTMLOptionElement %p)\n", This, ppv);
*ppv = &This->IHTMLOptionElement_iface;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
return HTMLElement_QI(&This->element.node, riid, ppv);
} }
static void HTMLOptionElement_traverse(HTMLDOMNode *iface, nsCycleCollectionTraversalCallback *cb) static void HTMLOptionElement_traverse(HTMLDOMNode *iface, nsCycleCollectionTraversalCallback *cb)
...@@ -1326,29 +1315,18 @@ static inline HTMLSelectElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -1326,29 +1315,18 @@ static inline HTMLSelectElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLSelectElement, element.node); return CONTAINING_RECORD(iface, HTMLSelectElement, element.node);
} }
static HRESULT HTMLSelectElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLSelectElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLSelectElement *This = impl_from_HTMLDOMNode(iface); HTMLSelectElement *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLSelectElement_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IDispatch, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLSelectElement_iface;
*ppv = &This->IHTMLSelectElement_iface; if(IsEqualGUID(&IID_IHTMLSelectElement, riid))
}else if(IsEqualGUID(&IID_IDispatch, riid)) { return &This->IHTMLSelectElement_iface;
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLSelectElement_iface;
}else if(IsEqualGUID(&IID_IHTMLSelectElement, riid)) {
TRACE("(%p)->(IID_IHTMLSelectElement %p)\n", This, ppv);
*ppv = &This->IHTMLSelectElement_iface;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
return HTMLElement_QI(&This->element.node, riid, ppv); return HTMLElement_QI(&This->element.node, riid);
} }
static HRESULT HTMLSelectElementImpl_put_disabled(HTMLDOMNode *iface, VARIANT_BOOL v) static HRESULT HTMLSelectElementImpl_put_disabled(HTMLDOMNode *iface, VARIANT_BOOL v)
......
...@@ -365,28 +365,20 @@ static inline HTMLStyleElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -365,28 +365,20 @@ static inline HTMLStyleElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLStyleElement, element.node); return CONTAINING_RECORD(iface, HTMLStyleElement, element.node);
} }
static HRESULT HTMLStyleElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLStyleElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLStyleElement *This = impl_from_HTMLDOMNode(iface); HTMLStyleElement *This = impl_from_HTMLDOMNode(iface);
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IUnknown, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLStyleElement_iface;
*ppv = &This->IHTMLStyleElement_iface; if(IsEqualGUID(&IID_IDispatch, riid))
}else if(IsEqualGUID(&IID_IDispatch, riid)) { return &This->IHTMLStyleElement_iface;
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); if(IsEqualGUID(&IID_IHTMLStyleElement, riid))
*ppv = &This->IHTMLStyleElement_iface; return &This->IHTMLStyleElement_iface;
}else if(IsEqualGUID(&IID_IHTMLStyleElement, riid)) { if(IsEqualGUID(&IID_IHTMLStyleElement2, riid))
TRACE("(%p)->(IID_IHTMLStyleElement %p)\n", This, ppv); return &This->IHTMLStyleElement2_iface;
*ppv = &This->IHTMLStyleElement_iface;
}else if(IsEqualGUID(&IID_IHTMLStyleElement2, riid)) {
TRACE("(%p)->(IID_IHTMLStyleElement2 %p)\n", This, ppv);
*ppv = &This->IHTMLStyleElement2_iface;
}else {
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv); return HTMLElement_QI(&This->element.node, riid);
return S_OK;
} }
static void HTMLStyleElement_destructor(HTMLDOMNode *iface) static void HTMLStyleElement_destructor(HTMLDOMNode *iface)
......
...@@ -446,25 +446,18 @@ static inline HTMLTableCell *HTMLTableCell_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -446,25 +446,18 @@ static inline HTMLTableCell *HTMLTableCell_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLTableCell, element.node); return CONTAINING_RECORD(iface, HTMLTableCell, element.node);
} }
static HRESULT HTMLTableCell_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLTableCell_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLTableCell *This = HTMLTableCell_from_HTMLDOMNode(iface); HTMLTableCell *This = HTMLTableCell_from_HTMLDOMNode(iface);
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IUnknown, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLTableCell_iface;
*ppv = &This->IHTMLTableCell_iface; if(IsEqualGUID(&IID_IDispatch, riid))
}else if(IsEqualGUID(&IID_IDispatch, riid)) { return &This->IHTMLTableCell_iface;
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); if(IsEqualGUID(&IID_IHTMLTableCell, riid))
*ppv = &This->IHTMLTableCell_iface; return &This->IHTMLTableCell_iface;
}else if(IsEqualGUID(&IID_IHTMLTableCell, riid)) {
TRACE("(%p)->(IID_IHTMLTableCell %p)\n", This, ppv);
*ppv = &This->IHTMLTableCell_iface;
}else {
return HTMLElement_QI(&This->element.node, riid, ppv);
}
IUnknown_AddRef((IUnknown*)*ppv); return HTMLElement_QI(&This->element.node, riid);
return S_OK;
} }
static void HTMLTableCell_destructor(HTMLDOMNode *iface) static void HTMLTableCell_destructor(HTMLDOMNode *iface)
...@@ -880,29 +873,18 @@ static inline HTMLTableRow *HTMLTableRow_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -880,29 +873,18 @@ static inline HTMLTableRow *HTMLTableRow_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLTableRow, element.node); return CONTAINING_RECORD(iface, HTMLTableRow, element.node);
} }
static HRESULT HTMLTableRow_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLTableRow_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLTableRow *This = HTMLTableRow_from_HTMLDOMNode(iface); HTMLTableRow *This = HTMLTableRow_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLTableRow_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IDispatch, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLTableRow_iface;
*ppv = &This->IHTMLTableRow_iface; if(IsEqualGUID(&IID_IHTMLTableRow, riid))
}else if(IsEqualGUID(&IID_IDispatch, riid)) { return &This->IHTMLTableRow_iface;
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLTableRow_iface;
}else if(IsEqualGUID(&IID_IHTMLTableRow, riid)) {
TRACE("(%p)->(IID_IHTMLTableRow %p)\n", This, ppv);
*ppv = &This->IHTMLTableRow_iface;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
return HTMLElement_QI(&This->element.node, riid, ppv); return HTMLElement_QI(&This->element.node, riid);
} }
static void HTMLTableRow_traverse(HTMLDOMNode *iface, nsCycleCollectionTraversalCallback *cb) static void HTMLTableRow_traverse(HTMLDOMNode *iface, nsCycleCollectionTraversalCallback *cb)
...@@ -1885,35 +1867,22 @@ static inline HTMLTable *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -1885,35 +1867,22 @@ static inline HTMLTable *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLTable, element.node); return CONTAINING_RECORD(iface, HTMLTable, element.node);
} }
static HRESULT HTMLTable_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLTable_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLTable *This = impl_from_HTMLDOMNode(iface); HTMLTable *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLTable_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IDispatch, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLTable_iface;
*ppv = &This->IHTMLTable_iface; if(IsEqualGUID(&IID_IHTMLTable, riid))
}else if(IsEqualGUID(&IID_IDispatch, riid)) { return &This->IHTMLTable_iface;
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); if(IsEqualGUID(&IID_IHTMLTable2, riid))
*ppv = &This->IHTMLTable_iface; return &This->IHTMLTable2_iface;
}else if(IsEqualGUID(&IID_IHTMLTable, riid)) { if(IsEqualGUID(&IID_IHTMLTable3, riid))
TRACE("(%p)->(IID_IHTMLTable %p)\n", This, ppv); return &This->IHTMLTable3_iface;
*ppv = &This->IHTMLTable_iface;
}else if(IsEqualGUID(&IID_IHTMLTable2, riid)) { return HTMLElement_QI(&This->element.node, riid);
TRACE("(%p)->(IID_IHTMLTable2 %p)\n", This, ppv);
*ppv = &This->IHTMLTable2_iface;
}else if(IsEqualGUID(&IID_IHTMLTable3, riid)) {
TRACE("(%p)->(IID_IHTMLTable3 %p)\n", This, ppv);
*ppv = &This->IHTMLTable3_iface;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
return HTMLElement_QI(&This->element.node, riid, ppv);
} }
static void HTMLTable_traverse(HTMLDOMNode *iface, nsCycleCollectionTraversalCallback *cb) static void HTMLTable_traverse(HTMLDOMNode *iface, nsCycleCollectionTraversalCallback *cb)
......
...@@ -390,29 +390,18 @@ static inline HTMLTextAreaElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -390,29 +390,18 @@ static inline HTMLTextAreaElement *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLTextAreaElement, element.node); return CONTAINING_RECORD(iface, HTMLTextAreaElement, element.node);
} }
static HRESULT HTMLTextAreaElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLTextAreaElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLTextAreaElement *This = impl_from_HTMLDOMNode(iface); HTMLTextAreaElement *This = impl_from_HTMLDOMNode(iface);
*ppv = NULL; if(IsEqualGUID(&IID_IUnknown, riid))
return &This->IHTMLTextAreaElement_iface;
if(IsEqualGUID(&IID_IUnknown, riid)) { if(IsEqualGUID(&IID_IDispatch, riid))
TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); return &This->IHTMLTextAreaElement_iface;
*ppv = &This->IHTMLTextAreaElement_iface; if(IsEqualGUID(&IID_IHTMLTextAreaElement, riid))
}else if(IsEqualGUID(&IID_IDispatch, riid)) { return &This->IHTMLTextAreaElement_iface;
TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv);
*ppv = &This->IHTMLTextAreaElement_iface;
}else if(IsEqualGUID(&IID_IHTMLTextAreaElement, riid)) {
TRACE("(%p)->(IID_IHTMLTextAreaElement %p)\n", This, ppv);
*ppv = &This->IHTMLTextAreaElement_iface;
}
if(*ppv) {
IUnknown_AddRef((IUnknown*)*ppv);
return S_OK;
}
return HTMLElement_QI(&This->element.node, riid, ppv); return HTMLElement_QI(&This->element.node, riid);
} }
static HRESULT HTMLTextAreaElementImpl_put_disabled(HTMLDOMNode *iface, VARIANT_BOOL v) static HRESULT HTMLTextAreaElementImpl_put_disabled(HTMLDOMNode *iface, VARIANT_BOOL v)
......
...@@ -324,21 +324,16 @@ static inline HTMLDOMTextNode *impl_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -324,21 +324,16 @@ static inline HTMLDOMTextNode *impl_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, HTMLDOMTextNode, node); return CONTAINING_RECORD(iface, HTMLDOMTextNode, node);
} }
static HRESULT HTMLDOMTextNode_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *HTMLDOMTextNode_QI(HTMLDOMNode *iface, REFIID riid)
{ {
HTMLDOMTextNode *This = impl_from_HTMLDOMNode(iface); HTMLDOMTextNode *This = impl_from_HTMLDOMNode(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_IHTMLDOMTextNode, riid)) if(IsEqualGUID(&IID_IHTMLDOMTextNode, riid))
*ppv = &This->IHTMLDOMTextNode_iface; return &This->IHTMLDOMTextNode_iface;
else if(IsEqualGUID(&IID_IHTMLDOMTextNode2, riid)) if(IsEqualGUID(&IID_IHTMLDOMTextNode2, riid))
*ppv = &This->IHTMLDOMTextNode2_iface; return &This->IHTMLDOMTextNode2_iface;
else
return HTMLDOMNode_QI(&This->node, riid, ppv);
IUnknown_AddRef((IUnknown*)*ppv); return HTMLDOMNode_QI(&This->node, riid);
return S_OK;
} }
static HRESULT HTMLDOMTextNode_clone(HTMLDOMNode *iface, nsIDOMNode *nsnode, HTMLDOMNode **ret) static HRESULT HTMLDOMTextNode_clone(HTMLDOMNode *iface, nsIDOMNode *nsnode, HTMLDOMNode **ret)
......
...@@ -337,7 +337,7 @@ HRESULT wrap_iface(IUnknown *iface, IUnknown *ref_unk, IUnknown **ret) ...@@ -337,7 +337,7 @@ HRESULT wrap_iface(IUnknown *iface, IUnknown *ref_unk, IUnknown **ret)
IUnknown_AddRef(iface); IUnknown_AddRef(iface);
wrapper->iface = iface; wrapper->iface = iface;
IUnknown_AddRef(ref_unk); /* Caller AddRefs */
wrapper->ref_unk = ref_unk; wrapper->ref_unk = ref_unk;
*ret = &wrapper->IUnknown_iface; *ret = &wrapper->IUnknown_iface;
......
...@@ -818,7 +818,7 @@ struct GeckoBrowser { ...@@ -818,7 +818,7 @@ struct GeckoBrowser {
typedef struct { typedef struct {
const CLSID *clsid; const CLSID *clsid;
HRESULT (*qi)(HTMLDOMNode*,REFIID,void**); void *(*qi)(HTMLDOMNode*,REFIID);
void (*destructor)(HTMLDOMNode*); void (*destructor)(HTMLDOMNode*);
const cpc_entry_t *cpc_entries; const cpc_entry_t *cpc_entries;
HRESULT (*clone)(HTMLDOMNode*,nsIDOMNode*,HTMLDOMNode**); HRESULT (*clone)(HTMLDOMNode*,nsIDOMNode*,HTMLDOMNode**);
...@@ -1210,13 +1210,13 @@ void EventTarget_Init(EventTarget*,IUnknown*,dispex_static_data_t*,compat_mode_t ...@@ -1210,13 +1210,13 @@ void EventTarget_Init(EventTarget*,IUnknown*,dispex_static_data_t*,compat_mode_t
HRESULT EventTarget_QI(EventTarget*,REFIID,void**); HRESULT EventTarget_QI(EventTarget*,REFIID,void**);
void EventTarget_init_dispex_info(dispex_data_t*,compat_mode_t); void EventTarget_init_dispex_info(dispex_data_t*,compat_mode_t);
HRESULT HTMLDOMNode_QI(HTMLDOMNode*,REFIID,void**); void *HTMLDOMNode_QI(HTMLDOMNode*,REFIID);
void HTMLDOMNode_destructor(DispatchEx*); void HTMLDOMNode_destructor(DispatchEx*);
void HTMLDOMNode_traverse(DispatchEx*,nsCycleCollectionTraversalCallback*); void HTMLDOMNode_traverse(DispatchEx*,nsCycleCollectionTraversalCallback*);
void HTMLDOMNode_unlink(DispatchEx*); void HTMLDOMNode_unlink(DispatchEx*);
void HTMLDOMNode_init_dispex_info(dispex_data_t*,compat_mode_t); void HTMLDOMNode_init_dispex_info(dispex_data_t*,compat_mode_t);
HRESULT HTMLElement_QI(HTMLDOMNode*,REFIID,void**); void *HTMLElement_QI(HTMLDOMNode*,REFIID);
void HTMLElement_destructor(HTMLDOMNode*); void HTMLElement_destructor(HTMLDOMNode*);
HRESULT HTMLElement_clone(HTMLDOMNode*,nsIDOMNode*,HTMLDOMNode**); HRESULT HTMLElement_clone(HTMLDOMNode*,nsIDOMNode*,HTMLDOMNode**);
HRESULT HTMLElement_get_attr_col(HTMLDOMNode*,HTMLAttributeCollection**); HRESULT HTMLElement_get_attr_col(HTMLDOMNode*,HTMLAttributeCollection**);
......
...@@ -177,19 +177,14 @@ static inline SVGElement *SVGElement_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -177,19 +177,14 @@ static inline SVGElement *SVGElement_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, SVGElement, element.node); return CONTAINING_RECORD(iface, SVGElement, element.node);
} }
static HRESULT SVGElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *SVGElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
SVGElement *This = SVGElement_from_HTMLDOMNode(iface); SVGElement *This = SVGElement_from_HTMLDOMNode(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_ISVGElement, riid)) if(IsEqualGUID(&IID_ISVGElement, riid))
*ppv = &This->ISVGElement_iface; return &This->ISVGElement_iface;
else
return HTMLElement_QI(&This->element.node, riid, ppv);
IUnknown_AddRef((IUnknown*)*ppv); return HTMLElement_QI(&This->element.node, riid);
return S_OK;
} }
static const NodeImplVtbl SVGElementImplVtbl = { static const NodeImplVtbl SVGElementImplVtbl = {
...@@ -717,19 +712,14 @@ static inline SVGSVGElement *SVGSVGElement_from_HTMLDOMNode(HTMLDOMNode *iface) ...@@ -717,19 +712,14 @@ static inline SVGSVGElement *SVGSVGElement_from_HTMLDOMNode(HTMLDOMNode *iface)
return CONTAINING_RECORD(iface, SVGSVGElement, svg_element.element.node); return CONTAINING_RECORD(iface, SVGSVGElement, svg_element.element.node);
} }
static HRESULT SVGSVGElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *SVGSVGElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
SVGSVGElement *This = SVGSVGElement_from_HTMLDOMNode(iface); SVGSVGElement *This = SVGSVGElement_from_HTMLDOMNode(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_ISVGSVGElement, riid)) if(IsEqualGUID(&IID_ISVGSVGElement, riid))
*ppv = &This->ISVGSVGElement_iface; return &This->ISVGSVGElement_iface;
else
return SVGElement_QI(&This->svg_element.element.node, riid, ppv);
IUnknown_AddRef((IUnknown*)*ppv); return SVGElement_QI(&This->svg_element.element.node, riid);
return S_OK;
} }
static const NodeImplVtbl SVGSVGElementImplVtbl = { static const NodeImplVtbl SVGSVGElementImplVtbl = {
...@@ -885,19 +875,14 @@ static inline SVGCircleElement *SVGCircleElement_from_HTMLDOMNode(HTMLDOMNode *i ...@@ -885,19 +875,14 @@ static inline SVGCircleElement *SVGCircleElement_from_HTMLDOMNode(HTMLDOMNode *i
return CONTAINING_RECORD(iface, SVGCircleElement, svg_element.element.node); return CONTAINING_RECORD(iface, SVGCircleElement, svg_element.element.node);
} }
static HRESULT SVGCircleElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *SVGCircleElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
SVGCircleElement *This = SVGCircleElement_from_HTMLDOMNode(iface); SVGCircleElement *This = SVGCircleElement_from_HTMLDOMNode(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_ISVGCircleElement, riid)) if(IsEqualGUID(&IID_ISVGCircleElement, riid))
*ppv = &This->ISVGCircleElement_iface; return &This->ISVGCircleElement_iface;
else
return SVGElement_QI(&This->svg_element.element.node, riid, ppv);
IUnknown_AddRef((IUnknown*)*ppv); return SVGElement_QI(&This->svg_element.element.node, riid);
return S_OK;
} }
static const NodeImplVtbl SVGCircleElementImplVtbl = { static const NodeImplVtbl SVGCircleElementImplVtbl = {
...@@ -1126,21 +1111,16 @@ static inline SVGTSpanElement *SVGTSpanElement_from_HTMLDOMNode(HTMLDOMNode *ifa ...@@ -1126,21 +1111,16 @@ static inline SVGTSpanElement *SVGTSpanElement_from_HTMLDOMNode(HTMLDOMNode *ifa
return CONTAINING_RECORD(iface, SVGTSpanElement, svg_element.element.node); return CONTAINING_RECORD(iface, SVGTSpanElement, svg_element.element.node);
} }
static HRESULT SVGTSpanElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) static void *SVGTSpanElement_QI(HTMLDOMNode *iface, REFIID riid)
{ {
SVGTSpanElement *This = SVGTSpanElement_from_HTMLDOMNode(iface); SVGTSpanElement *This = SVGTSpanElement_from_HTMLDOMNode(iface);
TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
if(IsEqualGUID(&IID_ISVGTSpanElement, riid)) if(IsEqualGUID(&IID_ISVGTSpanElement, riid))
*ppv = &This->svg_element.ISVGElement_iface; /* no additional methods */ return &This->svg_element.ISVGElement_iface; /* no additional methods */
else if(IsEqualGUID(&IID_ISVGTextContentElement, riid)) if(IsEqualGUID(&IID_ISVGTextContentElement, riid))
*ppv = &This->text_content.ISVGTextContentElement_iface; return &This->text_content.ISVGTextContentElement_iface;
else
return SVGElement_QI(&This->svg_element.element.node, riid, ppv);
IUnknown_AddRef((IUnknown*)*ppv); return SVGElement_QI(&This->svg_element.element.node, riid);
return S_OK;
} }
static const NodeImplVtbl SVGTSpanElementImplVtbl = { static const NodeImplVtbl SVGTSpanElementImplVtbl = {
......
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