diff options
author | Moonchild <moonchild@palemoon.org> | 2020-07-10 18:46:10 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2020-07-10 18:46:10 +0000 |
commit | f1b51be787c11090c8d9b2ec73255df7a67c7eb7 (patch) | |
tree | 9c6d35ce6f19e0fef3c47c7e2c152394854cf217 /dom/base/nsINode.cpp | |
parent | 2deaddfca28508ac1a634eb6088a1da8e571ec6e (diff) | |
parent | 82faff19e1761797b7a75f9221f0709c5a38bfe6 (diff) | |
download | UXP-f1b51be787c11090c8d9b2ec73255df7a67c7eb7.tar UXP-f1b51be787c11090c8d9b2ec73255df7a67c7eb7.tar.gz UXP-f1b51be787c11090c8d9b2ec73255df7a67c7eb7.tar.lz UXP-f1b51be787c11090c8d9b2ec73255df7a67c7eb7.tar.xz UXP-f1b51be787c11090c8d9b2ec73255df7a67c7eb7.zip |
Merge branch 'redwood' into releaseRELBASE_20200711
Diffstat (limited to 'dom/base/nsINode.cpp')
-rw-r--r-- | dom/base/nsINode.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/dom/base/nsINode.cpp b/dom/base/nsINode.cpp index 212110b72..355bf0ebf 100644 --- a/dom/base/nsINode.cpp +++ b/dom/base/nsINode.cpp @@ -107,6 +107,7 @@ #include "GeometryUtils.h" #include "nsIAnimationObserver.h" #include "nsChildContentList.h" +#include "mozilla/dom/NodeBinding.h" #ifdef ACCESSIBILITY #include "mozilla/dom/AccessibleNode.h" @@ -250,6 +251,30 @@ nsINode::GetTextEditorRootContent(nsIEditor** aEditor) return nullptr; } +nsINode* nsINode::GetRootNode(const GetRootNodeOptions& aOptions) +{ + if (aOptions.mComposed) { + if (IsInComposedDoc() && GetComposedDoc()) { + return OwnerDoc(); + } + + nsINode* node = this; + ShadowRoot* shadowRootParent = nullptr; + while(node) { + node = node->SubtreeRoot(); + shadowRootParent = ShadowRoot::FromNode(node); + if (!shadowRootParent) { + break; + } + node = shadowRootParent->GetHost(); + } + + return node; + } + + return SubtreeRoot(); +} + nsINode* nsINode::SubtreeRoot() const { |