mshtml: Simplify get_node_obj.
This commit is contained in:
parent
60c9069f80
commit
a420b5dad8
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
|
WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
|
||||||
|
|
||||||
static HTMLDOMNode *get_node_obj(HTMLDocumentNode*,IUnknown*);
|
static HTMLDOMNode *get_node_obj(IHTMLDOMNode*);
|
||||||
static HRESULT create_node(HTMLDocumentNode*,nsIDOMNode*,HTMLDOMNode**);
|
static HRESULT create_node(HTMLDocumentNode*,nsIDOMNode*,HTMLDOMNode**);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -503,7 +503,7 @@ static HRESULT WINAPI HTMLDOMNode_insertBefore(IHTMLDOMNode *iface, IHTMLDOMNode
|
||||||
|
|
||||||
TRACE("(%p)->(%p %s %p)\n", This, newChild, debugstr_variant(&refChild), node);
|
TRACE("(%p)->(%p %s %p)\n", This, newChild, debugstr_variant(&refChild), node);
|
||||||
|
|
||||||
new_child = get_node_obj(This->doc, (IUnknown*)newChild);
|
new_child = get_node_obj(newChild);
|
||||||
if(!new_child) {
|
if(!new_child) {
|
||||||
ERR("invalid newChild\n");
|
ERR("invalid newChild\n");
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
@ -513,9 +513,17 @@ static HRESULT WINAPI HTMLDOMNode_insertBefore(IHTMLDOMNode *iface, IHTMLDOMNode
|
||||||
case VT_NULL:
|
case VT_NULL:
|
||||||
break;
|
break;
|
||||||
case VT_DISPATCH: {
|
case VT_DISPATCH: {
|
||||||
|
IHTMLDOMNode *ref_iface;
|
||||||
|
|
||||||
if(!V_DISPATCH(&refChild))
|
if(!V_DISPATCH(&refChild))
|
||||||
break;
|
break;
|
||||||
ref_node = get_node_obj(This->doc, (IUnknown*)V_DISPATCH(&refChild));
|
|
||||||
|
hres = IDispatch_QueryInterface(V_DISPATCH(&refChild), &IID_IHTMLDOMNode, (void**)&ref_iface);
|
||||||
|
if(FAILED(hres))
|
||||||
|
break;
|
||||||
|
|
||||||
|
ref_node = get_node_obj(ref_iface);
|
||||||
|
IHTMLDOMNode_Release(ref_iface);
|
||||||
if(!ref_node) {
|
if(!ref_node) {
|
||||||
ERR("unvalid node\n");
|
ERR("unvalid node\n");
|
||||||
hres = E_FAIL;
|
hres = E_FAIL;
|
||||||
|
@ -561,7 +569,7 @@ static HRESULT WINAPI HTMLDOMNode_removeChild(IHTMLDOMNode *iface, IHTMLDOMNode
|
||||||
|
|
||||||
TRACE("(%p)->(%p %p)\n", This, oldChild, node);
|
TRACE("(%p)->(%p %p)\n", This, oldChild, node);
|
||||||
|
|
||||||
node_obj = get_node_obj(This->doc, (IUnknown*)oldChild);
|
node_obj = get_node_obj(oldChild);
|
||||||
if(!node_obj)
|
if(!node_obj)
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
|
@ -593,11 +601,11 @@ static HRESULT WINAPI HTMLDOMNode_replaceChild(IHTMLDOMNode *iface, IHTMLDOMNode
|
||||||
|
|
||||||
TRACE("(%p)->(%p %p %p)\n", This, newChild, oldChild, node);
|
TRACE("(%p)->(%p %p %p)\n", This, newChild, oldChild, node);
|
||||||
|
|
||||||
node_new = get_node_obj(This->doc, (IUnknown*)newChild);
|
node_new = get_node_obj(newChild);
|
||||||
if(!node_new)
|
if(!node_new)
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
node_old = get_node_obj(This->doc, (IUnknown*)oldChild);
|
node_old = get_node_obj(oldChild);
|
||||||
if(!node_old) {
|
if(!node_old) {
|
||||||
node_release(node_new);
|
node_release(node_new);
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
@ -678,7 +686,7 @@ static HRESULT WINAPI HTMLDOMNode_appendChild(IHTMLDOMNode *iface, IHTMLDOMNode
|
||||||
|
|
||||||
TRACE("(%p)->(%p %p)\n", This, newChild, node);
|
TRACE("(%p)->(%p %p)\n", This, newChild, node);
|
||||||
|
|
||||||
node_obj = get_node_obj(This->doc, (IUnknown*)newChild);
|
node_obj = get_node_obj(newChild);
|
||||||
if(!node_obj)
|
if(!node_obj)
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
|
@ -886,13 +894,16 @@ static const IHTMLDOMNodeVtbl HTMLDOMNodeVtbl = {
|
||||||
HTMLDOMNode_get_nextSibling
|
HTMLDOMNode_get_nextSibling
|
||||||
};
|
};
|
||||||
|
|
||||||
static HTMLDOMNode *get_node_obj(HTMLDocumentNode *This, IUnknown *iface)
|
static HTMLDOMNode *get_node_obj(IHTMLDOMNode *iface)
|
||||||
{
|
{
|
||||||
IHTMLDOMNode *node;
|
HTMLDOMNode *ret;
|
||||||
HRESULT hres;
|
|
||||||
|
|
||||||
hres = IUnknown_QueryInterface(iface, &IID_IHTMLDOMNode, (void**)&node);
|
if(iface->lpVtbl != &HTMLDOMNodeVtbl)
|
||||||
return hres == S_OK && node->lpVtbl == &HTMLDOMNodeVtbl ? impl_from_IHTMLDOMNode(node) : NULL;
|
return NULL;
|
||||||
|
|
||||||
|
ret = impl_from_IHTMLDOMNode(iface);
|
||||||
|
node_addref(ret);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline HTMLDOMNode *impl_from_IHTMLDOMNode2(IHTMLDOMNode2 *iface)
|
static inline HTMLDOMNode *impl_from_IHTMLDOMNode2(IHTMLDOMNode2 *iface)
|
||||||
|
@ -1192,7 +1203,7 @@ HRESULT get_node(HTMLDocumentNode *This, nsIDOMNode *nsnode, BOOL create, HTMLDO
|
||||||
assert(nsres == NS_OK);
|
assert(nsres == NS_OK);
|
||||||
|
|
||||||
if(unk) {
|
if(unk) {
|
||||||
*ret = get_node_obj(This, (IUnknown*)unk);
|
*ret = get_node_obj((IHTMLDOMNode*)unk);
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue