diff options
author | FranklinDM <mrmineshafter17@gmail.com> | 2023-03-04 17:15:04 +0800 |
---|---|---|
committer | FranklinDM <mrmineshafter17@gmail.com> | 2023-03-04 21:32:16 +0800 |
commit | f9ee95f2078d961365b9d4c13abe3889aa7f2079 (patch) | |
tree | 58b3747a3f4d5b9a8e20f48248c8844e987e2633 /dom/base | |
parent | 88b54a8b67d3287f2aeafac43a146ddae62598c4 (diff) | |
download | uxp-f9ee95f2078d961365b9d4c13abe3889aa7f2079.tar.gz |
Issue #2135 - Bug 1393806/Part 2: Modify AdoptNodeIntoOwnerDoc to use the non-XPCOM version of document.AdoptNode
* Unlike the original patch, this does not remove the XPCOM version of Document.adoptNode/importNode to avoid breaking other applications that might be using those functions.
Diffstat (limited to 'dom/base')
-rw-r--r-- | dom/base/nsINode.cpp | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/dom/base/nsINode.cpp b/dom/base/nsINode.cpp index 46b019b943..c7297698c2 100644 --- a/dom/base/nsINode.cpp +++ b/dom/base/nsINode.cpp @@ -1563,20 +1563,16 @@ AdoptNodeIntoOwnerDoc(nsINode *aParent, nsINode *aNode) nsIDocument *doc = aParent->OwnerDoc(); - nsresult rv; - nsCOMPtr<nsIDOMDocument> domDoc = do_QueryInterface(doc, &rv); - NS_ENSURE_SUCCESS(rv, rv); - - nsCOMPtr<nsIDOMNode> node = do_QueryInterface(aNode, &rv); - NS_ENSURE_SUCCESS(rv, rv); - - nsCOMPtr<nsIDOMNode> adoptedNode; - rv = domDoc->AdoptNode(node, getter_AddRefs(adoptedNode)); - NS_ENSURE_SUCCESS(rv, rv); + ErrorResult rv; + nsINode* adoptedNode = doc->AdoptNode(*aNode, rv); + rv.WouldReportJSException(); + if (NS_WARN_IF(rv.Failed())) { + return rv.StealNSResult(); + } NS_ASSERTION(aParent->OwnerDoc() == doc, "ownerDoc chainged while adopting"); - NS_ASSERTION(adoptedNode == node, "Uh, adopt node changed nodes?"); + NS_ASSERTION(adoptedNode == aNode, "Uh, adopt node changed nodes?"); NS_ASSERTION(aParent->OwnerDoc() == aNode->OwnerDoc(), "ownerDocument changed again after adopting!"); |