Commit e99081a9 authored by Hayato Ito's avatar Hayato Ito Committed by Commit Bot

Refactor SlotAssignment to clarify which parts are related to Incremental Shadow DOM

Also, rename the following functions as follows:

- SlotAssignment::RecalcAssignmentNg => SlotAssignment::RecalcAssignment
- SlotAssignment::RecalcAssignment => SlotAssignment::RecalcAssignmentForDistribution

No behavior change.

Bug: 776656
Change-Id: I9b13f2c840533299c670a08d1015524e0d71824d
Reviewed-on: https://chromium-review.googlesource.com/992078Reviewed-by: default avatarTakayoshi Kochi <kochi@chromium.org>
Commit-Queue: Hayato Ito <hayato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547975}
parent fdac10a1
...@@ -213,7 +213,7 @@ void SlotAssignment::SetNeedsAssignmentRecalc() { ...@@ -213,7 +213,7 @@ void SlotAssignment::SetNeedsAssignmentRecalc() {
} }
} }
void SlotAssignment::RecalcAssignmentNg() { void SlotAssignment::RecalcAssignment() {
DCHECK(RuntimeEnabledFeatures::IncrementalShadowDOMEnabled()); DCHECK(RuntimeEnabledFeatures::IncrementalShadowDOMEnabled());
if (!needs_assignment_recalc_) if (!needs_assignment_recalc_)
...@@ -265,7 +265,7 @@ void SlotAssignment::RecalcAssignmentNg() { ...@@ -265,7 +265,7 @@ void SlotAssignment::RecalcAssignmentNg() {
slot->RecalcFlatTreeChildren(); slot->RecalcFlatTreeChildren();
} }
void SlotAssignment::RecalcAssignment() { void SlotAssignment::RecalcAssignmentForDistribution() {
DCHECK(!RuntimeEnabledFeatures::IncrementalShadowDOMEnabled()); DCHECK(!RuntimeEnabledFeatures::IncrementalShadowDOMEnabled());
for (Member<HTMLSlotElement> slot : Slots()) for (Member<HTMLSlotElement> slot : Slots())
...@@ -309,7 +309,7 @@ void SlotAssignment::RecalcAssignment() { ...@@ -309,7 +309,7 @@ void SlotAssignment::RecalcAssignment() {
void SlotAssignment::RecalcDistribution() { void SlotAssignment::RecalcDistribution() {
DCHECK(!RuntimeEnabledFeatures::IncrementalShadowDOMEnabled()); DCHECK(!RuntimeEnabledFeatures::IncrementalShadowDOMEnabled());
RecalcAssignment(); RecalcAssignmentForDistribution();
const HeapVector<Member<HTMLSlotElement>>& slots = Slots(); const HeapVector<Member<HTMLSlotElement>>& slots = Slots();
for (auto slot : slots) for (auto slot : slots)
......
...@@ -37,7 +37,6 @@ class SlotAssignment final : public GarbageCollected<SlotAssignment> { ...@@ -37,7 +37,6 @@ class SlotAssignment final : public GarbageCollected<SlotAssignment> {
// Instead, provide alternative, HTMLSlotElement::hasAssignedNodesSlow() // Instead, provide alternative, HTMLSlotElement::hasAssignedNodesSlow()
// so that slotchange can be detected. // so that slotchange can be detected.
void RecalcDistribution();
const HeapVector<Member<HTMLSlotElement>>& Slots(); const HeapVector<Member<HTMLSlotElement>>& Slots();
void DidAddSlot(HTMLSlotElement&); void DidAddSlot(HTMLSlotElement&);
...@@ -48,14 +47,15 @@ class SlotAssignment final : public GarbageCollected<SlotAssignment> { ...@@ -48,14 +47,15 @@ class SlotAssignment final : public GarbageCollected<SlotAssignment> {
bool FindHostChildBySlotName(const AtomicString& slot_name) const; bool FindHostChildBySlotName(const AtomicString& slot_name) const;
void SetNeedsAssignmentRecalc();
// For Incremental Shadow DOM
void RecalcAssignmentNg();
void Trace(blink::Visitor*); void Trace(blink::Visitor*);
// For Incremental Shadow DOM
bool NeedsAssignmentRecalc() const { return needs_assignment_recalc_; } bool NeedsAssignmentRecalc() const { return needs_assignment_recalc_; }
void SetNeedsAssignmentRecalc();
void RecalcAssignment();
// For Non-Incremental Shadow DOM
void RecalcDistribution();
private: private:
explicit SlotAssignment(ShadowRoot& owner); explicit SlotAssignment(ShadowRoot& owner);
...@@ -71,13 +71,14 @@ class SlotAssignment final : public GarbageCollected<SlotAssignment> { ...@@ -71,13 +71,14 @@ class SlotAssignment final : public GarbageCollected<SlotAssignment> {
HTMLSlotElement* GetCachedFirstSlotWithoutAccessingNodeTree( HTMLSlotElement* GetCachedFirstSlotWithoutAccessingNodeTree(
const AtomicString& slot_name); const AtomicString& slot_name);
void RecalcAssignment();
void DidAddSlotInternal(HTMLSlotElement&); void DidAddSlotInternal(HTMLSlotElement&);
void DidRemoveSlotInternal(HTMLSlotElement&, void DidRemoveSlotInternal(HTMLSlotElement&,
const AtomicString& slot_name, const AtomicString& slot_name,
SlotMutationType); SlotMutationType);
// For Non-Incremental Shadow DOM
void RecalcAssignmentForDistribution();
HeapVector<Member<HTMLSlotElement>> slots_; HeapVector<Member<HTMLSlotElement>> slots_;
Member<TreeOrderedMap> slot_map_; Member<TreeOrderedMap> slot_map_;
WeakMember<ShadowRoot> owner_; WeakMember<ShadowRoot> owner_;
......
...@@ -44,9 +44,9 @@ void SlotAssignmentEngine::RecalcSlotAssignments() { ...@@ -44,9 +44,9 @@ void SlotAssignmentEngine::RecalcSlotAssignments() {
HeapHashSet<WeakMember<ShadowRoot>>(shadow_roots_needing_recalc_)) { HeapHashSet<WeakMember<ShadowRoot>>(shadow_roots_needing_recalc_)) {
DCHECK(shadow_root->isConnected()); DCHECK(shadow_root->isConnected());
DCHECK(shadow_root->NeedsSlotAssignmentRecalc()); DCHECK(shadow_root->NeedsSlotAssignmentRecalc());
// SlotAssignment::RecalcAssignmentNg() will remove its shadow root from // SlotAssignment::RecalcAssignment() will remove its shadow root from
// shadow_roots_needing_recalc_. // shadow_roots_needing_recalc_.
shadow_root->GetSlotAssignment().RecalcAssignmentNg(); shadow_root->GetSlotAssignment().RecalcAssignment();
} }
DCHECK(shadow_roots_needing_recalc_.IsEmpty()); DCHECK(shadow_roots_needing_recalc_.IsEmpty());
} }
......
...@@ -103,7 +103,7 @@ const HeapVector<Member<Node>>& HTMLSlotElement::AssignedNodes() const { ...@@ -103,7 +103,7 @@ const HeapVector<Member<Node>>& HTMLSlotElement::AssignedNodes() const {
return assigned_nodes_; return assigned_nodes_;
} }
if (RuntimeEnabledFeatures::IncrementalShadowDOMEnabled()) { if (RuntimeEnabledFeatures::IncrementalShadowDOMEnabled()) {
ContainingShadowRoot()->GetSlotAssignment().RecalcAssignmentNg(); ContainingShadowRoot()->GetSlotAssignment().RecalcAssignment();
return assigned_nodes_; return assigned_nodes_;
} }
...@@ -272,7 +272,7 @@ void HTMLSlotElement::DispatchSlotChangeEvent() { ...@@ -272,7 +272,7 @@ void HTMLSlotElement::DispatchSlotChangeEvent() {
Node* HTMLSlotElement::AssignedNodeNextTo(const Node& node) const { Node* HTMLSlotElement::AssignedNodeNextTo(const Node& node) const {
DCHECK(SupportsAssignment()); DCHECK(SupportsAssignment());
if (RuntimeEnabledFeatures::IncrementalShadowDOMEnabled()) if (RuntimeEnabledFeatures::IncrementalShadowDOMEnabled())
ContainingShadowRoot()->GetSlotAssignment().RecalcAssignmentNg(); ContainingShadowRoot()->GetSlotAssignment().RecalcAssignment();
else else
DCHECK(!NeedsDistributionRecalc()); DCHECK(!NeedsDistributionRecalc());
// TODO(crbug.com/776656): Use {node -> index} map to avoid O(N) lookup // TODO(crbug.com/776656): Use {node -> index} map to avoid O(N) lookup
...@@ -286,7 +286,7 @@ Node* HTMLSlotElement::AssignedNodeNextTo(const Node& node) const { ...@@ -286,7 +286,7 @@ Node* HTMLSlotElement::AssignedNodeNextTo(const Node& node) const {
Node* HTMLSlotElement::AssignedNodePreviousTo(const Node& node) const { Node* HTMLSlotElement::AssignedNodePreviousTo(const Node& node) const {
DCHECK(SupportsAssignment()); DCHECK(SupportsAssignment());
if (RuntimeEnabledFeatures::IncrementalShadowDOMEnabled()) if (RuntimeEnabledFeatures::IncrementalShadowDOMEnabled())
ContainingShadowRoot()->GetSlotAssignment().RecalcAssignmentNg(); ContainingShadowRoot()->GetSlotAssignment().RecalcAssignment();
else else
DCHECK(!NeedsDistributionRecalc()); DCHECK(!NeedsDistributionRecalc());
// TODO(crbug.com/776656): Use {node -> index} map to avoid O(N) lookup // TODO(crbug.com/776656): Use {node -> index} map to avoid O(N) lookup
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment