summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/dom/slot_assignment.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-13 15:05:36 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-02-14 10:33:47 +0000
commite684a3455bcc29a6e3e66a004e352dea4e1141e7 (patch)
treed55b4003bde34d7d05f558f02cfd82b2a66a7aac /chromium/third_party/blink/renderer/core/dom/slot_assignment.cc
parent2b94bfe47ccb6c08047959d1c26e392919550e86 (diff)
downloadqtwebengine-chromium-e684a3455bcc29a6e3e66a004e352dea4e1141e7.tar.gz
BASELINE: Update Chromium to 72.0.3626.110 and Ninja to 1.9.0
Change-Id: Ic57220b00ecc929a893c91f5cc552f5d3e99e922 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/core/dom/slot_assignment.cc')
-rw-r--r--chromium/third_party/blink/renderer/core/dom/slot_assignment.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/chromium/third_party/blink/renderer/core/dom/slot_assignment.cc b/chromium/third_party/blink/renderer/core/dom/slot_assignment.cc
index fd2164fd0e8..bd70c6e1626 100644
--- a/chromium/third_party/blink/renderer/core/dom/slot_assignment.cc
+++ b/chromium/third_party/blink/renderer/core/dom/slot_assignment.cc
@@ -9,6 +9,7 @@
#include "third_party/blink/renderer/core/dom/node_traversal.h"
#include "third_party/blink/renderer/core/dom/shadow_root.h"
#include "third_party/blink/renderer/core/dom/slot_assignment_engine.h"
+#include "third_party/blink/renderer/core/dom/slot_assignment_recalc_forbidden_scope.h"
#include "third_party/blink/renderer/core/html/forms/html_opt_group_element.h"
#include "third_party/blink/renderer/core/html/forms/html_select_element.h"
#include "third_party/blink/renderer/core/html/html_details_element.h"
@@ -226,10 +227,13 @@ void SlotAssignment::RecalcAssignment() {
#if DCHECK_IS_ON()
DCHECK(!owner_->GetDocument().IsSlotAssignmentRecalcForbidden());
#endif
+ // To detect recursive RecalcAssignment, which shouldn't happen.
+ SlotAssignmentRecalcForbiddenScope forbid_slot_recalc(owner_->GetDocument());
+
needs_assignment_recalc_ = false;
for (Member<HTMLSlotElement> slot : Slots())
- slot->ClearAssignedNodes();
+ slot->WillRecalcAssignedNodes();
const bool is_user_agent = owner_->IsUserAgent();
@@ -266,10 +270,12 @@ void SlotAssignment::RecalcAssignment() {
}
}
- if (slot)
+ if (slot) {
slot->AppendAssignedNode(child);
- else
+ } else {
+ child.ClearFlatTreeNodeData();
child.LazyReattachIfAttached();
+ }
}
if (owner_->isConnected()) {
@@ -279,7 +285,7 @@ void SlotAssignment::RecalcAssignment() {
}
for (auto& slot : Slots())
- slot->RecalcFlatTreeChildren();
+ slot->DidRecalcAssignedNodes();
}
const HeapVector<Member<HTMLSlotElement>>& SlotAssignment::Slots() {