Commit 23b1d3a7 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

mshtml: Get owner document from Gecko node in get_node.

parent b5aff992
......@@ -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;
......
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