summaryrefslogtreecommitdiffstats
path: root/dom/base/FragmentOrElement.cpp
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2020-04-17 06:38:37 -0400
committerMatt A. Tobin <email@mattatobin.com>2020-04-17 06:38:37 -0400
commit3758434680616e91edf696e546fe3cc3b1d4da9c (patch)
tree845788e5a7a90326c7026a7bd139bc222352a54f /dom/base/FragmentOrElement.cpp
parent55d83ea6f9aa9d99963a4d1fb1f96a3b633ede49 (diff)
downloadUXP-3758434680616e91edf696e546fe3cc3b1d4da9c.tar
UXP-3758434680616e91edf696e546fe3cc3b1d4da9c.tar.gz
UXP-3758434680616e91edf696e546fe3cc3b1d4da9c.tar.lz
UXP-3758434680616e91edf696e546fe3cc3b1d4da9c.tar.xz
UXP-3758434680616e91edf696e546fe3cc3b1d4da9c.zip
Bug 1408341 - Implement assignedSlot on Element and Text
Tag #1375
Diffstat (limited to 'dom/base/FragmentOrElement.cpp')
-rw-r--r--dom/base/FragmentOrElement.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/dom/base/FragmentOrElement.cpp b/dom/base/FragmentOrElement.cpp
index 592f5447d..486bbc88c 100644
--- a/dom/base/FragmentOrElement.cpp
+++ b/dom/base/FragmentOrElement.cpp
@@ -123,6 +123,7 @@
#include "mozilla/CORSMode.h"
#include "mozilla/dom/ShadowRoot.h"
+#include "mozilla/dom/HTMLSlotElement.h"
#include "mozilla/dom/HTMLTemplateElement.h"
#include "nsStyledElement.h"
@@ -614,6 +615,9 @@ FragmentOrElement::nsDOMSlots::Traverse(nsCycleCollectionTraversalCallback &cb)
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mContainingShadow");
cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mExtendedSlots->mContainingShadow));
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mAssignedSlot");
+ cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mExtendedSlots->mAssignedSlot.get()));
+
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mXBLBinding");
cb.NoteNativeChild(mExtendedSlots->mXBLBinding,
NS_CYCLE_COLLECTION_PARTICIPANT(nsXBLBinding));
@@ -657,6 +661,7 @@ FragmentOrElement::nsDOMSlots::Unlink()
mExtendedSlots->mLabelsList = nullptr;
mExtendedSlots->mShadowRoot = nullptr;
mExtendedSlots->mContainingShadow = nullptr;
+ mExtendedSlots->mAssignedSlot = nullptr;
MOZ_ASSERT(!(mExtendedSlots->mXBLBinding));
mExtendedSlots->mXBLInsertionParent = nullptr;
if (mExtendedSlots->mCustomElementData) {
@@ -1126,6 +1131,20 @@ FragmentOrElement::GetExistingDestInsertionPoints() const
return nullptr;
}
+HTMLSlotElement*
+FragmentOrElement::GetAssignedSlot() const
+{
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
+ return slots ? slots->mAssignedSlot.get() : nullptr;
+}
+
+void
+FragmentOrElement::SetAssignedSlot(HTMLSlotElement* aSlot)
+{
+ nsExtendedDOMSlots* slots = ExtendedDOMSlots();
+ slots->mAssignedSlot = aSlot;
+}
+
void
FragmentOrElement::SetXBLInsertionParent(nsIContent* aContent)
{