From b93fb57514781ea406fb152cf46b502cffd272ff Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 17 Apr 2020 07:36:25 -0400 Subject: Bug 1426536 - Remove nsContentUtils::IsContentInsertionPoint Tag #1375 --- dom/base/ChildIterator.cpp | 83 +++++++++++++-------------------------------- dom/base/ShadowRoot.cpp | 27 --------------- dom/base/nsContentUtils.cpp | 13 ------- dom/base/nsContentUtils.h | 12 ------- 4 files changed, 23 insertions(+), 112 deletions(-) (limited to 'dom/base') diff --git a/dom/base/ChildIterator.cpp b/dom/base/ChildIterator.cpp index 7d3375fef..19156aff7 100644 --- a/dom/base/ChildIterator.cpp +++ b/dom/base/ChildIterator.cpp @@ -17,48 +17,6 @@ namespace mozilla { namespace dom { -class MatchedNodes { -public: - explicit MatchedNodes() - : mIsContentElement(false), mChildrenElement(nullptr) {} - explicit MatchedNodes(XBLChildrenElement* aInsertionPoint) - : mIsContentElement(false), mChildrenElement(aInsertionPoint) {} - - uint32_t Length() const - { - return mChildrenElement ? mChildrenElement->InsertedChildrenLength() : 0; - } - - nsIContent* operator[](int32_t aIndex) const - { - return mChildrenElement ? mChildrenElement->InsertedChild(aIndex) : nullptr; - } - - bool IsEmpty() const - { - return mChildrenElement && !mChildrenElement->HasInsertedChildren(); - } -protected: - // Leftover from Shadow DOM v0. - bool mIsContentElement; - union { - XBLChildrenElement* mChildrenElement; - }; -}; - -static inline MatchedNodes -GetMatchedNodesForPoint(nsIContent* aContent) -{ - if (aContent->NodeInfo()->Equals(nsGkAtoms::children, kNameSpaceID_XBL)) { - // XBL case - return MatchedNodes(static_cast(aContent)); - } - - return MatchedNodes(); - // Web components case - // XXX handle element? -} - ExplicitChildIterator::ExplicitChildIterator(const nsIContent* aParent, bool aStartAtBeginning) : mParent(aParent), @@ -88,16 +46,18 @@ ExplicitChildIterator::GetNextChild() return mChild; } - MatchedNodes assignedChildren = GetMatchedNodesForPoint(mChild); - if (mIndexInInserted < assignedChildren.Length()) { - return assignedChildren[mIndexInInserted++]; + MOZ_ASSERT(mChild->IsActiveChildrenElement()); + auto* childrenElement = + static_cast(mChild); + if (mIndexInInserted < childrenElement->InsertedChildrenLength()) { + return childrenElement->InsertedChild(mIndexInInserted++); } mIndexInInserted = 0; mChild = mChild->GetNextSibling(); } else if (mDefaultChild) { // If we're already in default content, check if there are more nodes there MOZ_ASSERT(mChild); - MOZ_ASSERT(nsContentUtils::IsContentInsertionPoint(mChild)); + MOZ_ASSERT(mChild->IsActiveChildrenElement()); mDefaultChild = mDefaultChild->GetNextSibling(); if (mDefaultChild) { @@ -128,15 +88,16 @@ ExplicitChildIterator::GetNextChild() // Iterate until we find a non-insertion point, or an insertion point with // content. while (mChild) { - if (nsContentUtils::IsContentInsertionPoint(mChild)) { + if (mChild->IsActiveChildrenElement()) { // If the current child being iterated is a content insertion point // then the iterator needs to return the nodes distributed into // the content insertion point. - MatchedNodes assignedChildren = GetMatchedNodesForPoint(mChild); - if (!assignedChildren.IsEmpty()) { + auto* childrenElement = + static_cast(mChild); + if (childrenElement->HasInsertedChildren()) { // Iterate through elements projected on insertion point. mIndexInInserted = 1; - return assignedChildren[0]; + return childrenElement->InsertedChild(0); } // Insertion points inside fallback/default content @@ -204,7 +165,7 @@ ExplicitChildIterator::Seek(const nsIContent* aChildToFind) mIndexInInserted = 0; mDefaultChild = nullptr; mIsFirst = false; - MOZ_ASSERT(!nsContentUtils::IsContentInsertionPoint(mChild)); + MOZ_ASSERT(!mChild->IsActiveChildrenElement()); return true; } @@ -227,8 +188,9 @@ ExplicitChildIterator::Get() const } if (mIndexInInserted) { - MatchedNodes assignedChildren = GetMatchedNodesForPoint(mChild); - return assignedChildren[mIndexInInserted - 1]; + MOZ_ASSERT(mChild->IsActiveChildrenElement()); + auto* childrenElement = static_cast(mChild); + return childrenElement->InsertedChild(mIndexInInserted - 1); } return mDefaultChild ? mDefaultChild : mChild; @@ -255,9 +217,10 @@ ExplicitChildIterator::GetPreviousChild() // NB: mIndexInInserted points one past the last returned child so we need // to look *two* indices back in order to return the previous child. - MatchedNodes assignedChildren = GetMatchedNodesForPoint(mChild); + MOZ_ASSERT(mChild->IsActiveChildrenElement()); + auto* childrenElement = static_cast(mChild); if (--mIndexInInserted) { - return assignedChildren[mIndexInInserted - 1]; + return childrenElement->InsertedChild(mIndexInInserted - 1); } mChild = mChild->GetPreviousSibling(); } else if (mDefaultChild) { @@ -291,14 +254,14 @@ ExplicitChildIterator::GetPreviousChild() // Iterate until we find a non-insertion point, or an insertion point with // content. while (mChild) { - if (nsContentUtils::IsContentInsertionPoint(mChild)) { + if (mChild->IsActiveChildrenElement()) { // If the current child being iterated is a content insertion point // then the iterator needs to return the nodes distributed into // the content insertion point. - MatchedNodes assignedChildren = GetMatchedNodesForPoint(mChild); - if (!assignedChildren.IsEmpty()) { - mIndexInInserted = assignedChildren.Length(); - return assignedChildren[mIndexInInserted - 1]; + auto* childrenElement = static_cast(mChild); + if (childrenElement->HasInsertedChildren()) { + mIndexInInserted = childrenElement->InsertedChildrenLength(); + return childrenElement->InsertedChild(mIndexInInserted - 1); } mDefaultChild = mChild->GetLastChild(); diff --git a/dom/base/ShadowRoot.cpp b/dom/base/ShadowRoot.cpp index 12f35c197..f241dfcd5 100644 --- a/dom/base/ShadowRoot.cpp +++ b/dom/base/ShadowRoot.cpp @@ -533,33 +533,6 @@ ShadowRoot::StyleSheets() return mStyleSheetList; } -/** - * Returns whether the web components pool population algorithm - * on the host would contain |aContent|. This function ignores - * insertion points in the pool, thus should only be used to - * test nodes that have not yet been distributed. - */ -bool -ShadowRoot::IsPooledNode(nsIContent* aContent) const -{ - if (nsContentUtils::IsContentInsertionPoint(aContent)) { - // Insertion points never end up in the pool. - return false; - } - - auto* host = GetHost(); - auto* container = aContent->GetParent(); - if (container == host && !aContent->IsRootOfAnonymousSubtree()) { - // Children of the host will end up in the pool. We check to ensure - // that the content is in the same anonymous tree as the container - // because anonymous content may report its container as the host - // but it may not be in the host's child list. - return true; - } - - return false; -} - void ShadowRoot::AttributeChanged(nsIDocument* aDocument, Element* aElement, diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp index fa34063df..d28b34f3d 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp @@ -7017,19 +7017,6 @@ nsContentUtils::GetHTMLEditor(nsPresContext* aPresContext) return editor; } -bool -nsContentUtils::IsContentInsertionPoint(nsIContent* aContent) -{ - // Check if the content is a XBL insertion point. - if (aContent->IsActiveChildrenElement()) { - return true; - } - - // Check if the content is a web components content insertion point. - // XXX handle ? - return false; -} - // static bool nsContentUtils::HasDistributedChildren(nsIContent* aContent) diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h index fe076f0dc..b58b0e0e3 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h @@ -2414,18 +2414,6 @@ public: */ static mozilla::LogModule* DOMDumpLog(); - /** - * Returns whether a content is an insertion point for XBL - * bindings or web components ShadowRoot. In web components, - * this corresponds to a element that participates - * in node distribution. In XBL this corresponds to an - * element in anonymous content. - * - * @param aContent The content to test for being an insertion point. - */ - static bool IsContentInsertionPoint(nsIContent* aContent); - - /** * Returns whether the children of the provided content are * nodes that are distributed to Shadow DOM insertion points. -- cgit v1.2.3