Bug 1469112: Use HTMLSlotElement::FromNode more consistently. r?smaug draft
authorEmilio Cobos Álvarez <emilio@crisal.io>
Fri, 15 Jun 2018 20:14:02 -0700
changeset 807919 653e1b842f17d916835f05ca64b3321f1ca19af6
parent 807789 38821ce570ac0687ec9aa56a343a0d25ec1641b2
child 807924 321c4fd27f5590a942ac8dc91d462ca4ef51e886
push id113243
push userbmo:emilio@crisal.io
push dateSat, 16 Jun 2018 03:19:25 +0000
reviewerssmaug
bugs1469112
milestone62.0a1
Bug 1469112: Use HTMLSlotElement::FromNode more consistently. r?smaug MozReview-Commit-ID: 1k8lVazP0lR
dom/html/HTMLSlotElement.cpp
--- a/dom/html/HTMLSlotElement.cpp
+++ b/dom/html/HTMLSlotElement.cpp
@@ -125,37 +125,35 @@ FlattenAssignedNodes(HTMLSlotElement* aS
   if (!aSlot->GetContainingShadow()) {
     return;
   }
 
   const nsTArray<RefPtr<nsINode>>& assignedNodes = aSlot->AssignedNodes();
 
   // If assignedNodes is empty, use children of slot as fallback content.
   if (assignedNodes.IsEmpty()) {
-    for (nsIContent* child = aSlot->AsContent()->GetFirstChild();
+    for (nsIContent* child = aSlot->GetFirstChild();
          child;
          child = child->GetNextSibling()) {
       if (!child->IsSlotable()) {
         continue;
       }
 
-      if (child->IsHTMLElement(nsGkAtoms::slot)) {
-        FlattenAssignedNodes(HTMLSlotElement::FromNode(child), aNodes);
+      if (auto* slot = HTMLSlotElement::FromNode(child)) {
+        FlattenAssignedNodes(slot, aNodes);
       } else {
         aNodes.AppendElement(child);
       }
     }
     return;
   }
 
-  for (uint32_t i = 0; i < assignedNodes.Length(); i++) {
-    nsINode* assignedNode = assignedNodes[i];
-    if (assignedNode->IsHTMLElement(nsGkAtoms::slot)) {
-      FlattenAssignedNodes(
-        HTMLSlotElement::FromNode(assignedNode->AsContent()), aNodes);
+  for (const RefPtr<nsINode>& assignedNode : assignedNodes) {
+    if (auto* slot = HTMLSlotElement::FromNode(assignedNode)) {
+      FlattenAssignedNodes(slot, aNodes);
     } else {
       aNodes.AppendElement(assignedNode);
     }
   }
 }
 
 void
 HTMLSlotElement::AssignedNodes(const AssignedNodesOptions& aOptions,