summaryrefslogtreecommitdiff
path: root/dom/base
diff options
context:
space:
mode:
authorFranklinDM <mrmineshafter17@gmail.com>2023-03-04 17:15:04 +0800
committerFranklinDM <mrmineshafter17@gmail.com>2023-03-04 21:32:16 +0800
commitf9ee95f2078d961365b9d4c13abe3889aa7f2079 (patch)
tree58b3747a3f4d5b9a8e20f48248c8844e987e2633 /dom/base
parent88b54a8b67d3287f2aeafac43a146ddae62598c4 (diff)
downloaduxp-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.cpp18
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!");