mshtml: Get owner document from Gecko node in get_node.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b5aff99233
commit
23b1d3a79d
|
@ -5205,6 +5205,25 @@ static HRESULT create_document_fragment(nsIDOMNode *nsnode, HTMLDocumentNode *do
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT get_document_node(nsIDOMDocument *dom_document, HTMLDocumentNode **ret)
|
||||
{
|
||||
HTMLDOMNode *node;
|
||||
HRESULT hres;
|
||||
|
||||
hres = get_node(NULL, (nsIDOMNode*)dom_document, FALSE, &node);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
if(!node) {
|
||||
ERR("document not initialized\n");
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
assert(node->vtbl == &HTMLDocumentNodeImplVtbl);
|
||||
*ret = impl_from_HTMLDOMNode(node);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static inline HTMLDocumentObj *impl_from_IUnknown(IUnknown *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, HTMLDocumentObj, IUnknown_outer);
|
||||
|
|
|
@ -1616,8 +1616,11 @@ void init_node_cc(void)
|
|||
|
||||
HRESULT get_node(HTMLDocumentNode *This, nsIDOMNode *nsnode, BOOL create, HTMLDOMNode **ret)
|
||||
{
|
||||
nsIDOMDocument *dom_document;
|
||||
HTMLDocumentNode *document;
|
||||
nsISupports *unk = NULL;
|
||||
nsresult nsres;
|
||||
HRESULT hres;
|
||||
|
||||
nsres = nsIDOMNode_GetMshtmlNode(nsnode, &unk);
|
||||
assert(nsres == NS_OK);
|
||||
|
@ -1633,5 +1636,18 @@ HRESULT get_node(HTMLDocumentNode *This, nsIDOMNode *nsnode, BOOL create, HTMLDO
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
return create_node(This, nsnode, ret);
|
||||
nsres = nsIDOMNode_GetOwnerDocument(nsnode, &dom_document);
|
||||
if(NS_FAILED(nsres) || !dom_document) {
|
||||
ERR("GetOwnerDocument failed: %08x\n", nsres);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
hres = get_document_node(dom_document, &document);
|
||||
nsIDOMDocument_Release(dom_document);
|
||||
if(!document)
|
||||
return E_FAIL;
|
||||
|
||||
hres = create_node(document, nsnode, ret);
|
||||
htmldoc_release(&document->basedoc);
|
||||
return hres;
|
||||
}
|
||||
|
|
|
@ -1074,6 +1074,7 @@ void HTMLFrameBase_destructor(HTMLFrameBase*) DECLSPEC_HIDDEN;
|
|||
|
||||
HRESULT get_node(HTMLDocumentNode*,nsIDOMNode*,BOOL,HTMLDOMNode**) DECLSPEC_HIDDEN;
|
||||
HRESULT get_elem(HTMLDocumentNode*,nsIDOMElement*,HTMLElement**) DECLSPEC_HIDDEN;
|
||||
HRESULT get_document_node(nsIDOMDocument*,HTMLDocumentNode**) DECLSPEC_HIDDEN;
|
||||
|
||||
HTMLElement *unsafe_impl_from_IHTMLElement(IHTMLElement*) DECLSPEC_HIDDEN;
|
||||
|
||||
|
|
Loading…
Reference in New Issue