From b72ddcf657cfc601ea9fb9ed8d46b8dc7a2fa2fa Mon Sep 17 00:00:00 2001 From: FranklinDM Date: Sat, 4 Mar 2023 16:14:24 +0800 Subject: [PATCH] Issue #2135 - Bug 1414692: Adopt shadow roots when adopting a shadow host across documents --- dom/base/nsNodeUtils.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dom/base/nsNodeUtils.cpp b/dom/base/nsNodeUtils.cpp index 7d31358487..63da8b04df 100644 --- a/dom/base/nsNodeUtils.cpp +++ b/dom/base/nsNodeUtils.cpp @@ -650,6 +650,17 @@ nsNodeUtils::CloneAndAdopt(nsINode *aNode, bool aClone, bool aDeep, } } + // TODO: update this if we choose to land bug 1393806. + if (aDeep && !aClone && aNode->IsElement()) { + if (ShadowRoot* shadowRoot = aNode->AsElement()->GetShadowRoot()) { + nsCOMPtr child; + rv = CloneAndAdopt(shadowRoot, aClone, aDeep, nodeInfoManager, + aReparentScope, aNodesWithProperties, clone, + getter_AddRefs(child)); + NS_ENSURE_SUCCESS(rv, rv); + } + } + // Cloning template element. if (aDeep && aClone && IsTemplateElement(aNode)) { DocumentFragment* origContent =