| Index: third_party/WebKit/Source/core/html/HTMLSlotElement.h
|
| diff --git a/third_party/WebKit/Source/core/html/HTMLSlotElement.h b/third_party/WebKit/Source/core/html/HTMLSlotElement.h
|
| index 9c155249c7fef27ef57d3357aa3081669369527c..9721bdaa5043171ccd25bd9b3d2ce9560fd8eaea 100644
|
| --- a/third_party/WebKit/Source/core/html/HTMLSlotElement.h
|
| +++ b/third_party/WebKit/Source/core/html/HTMLSlotElement.h
|
| @@ -43,7 +43,7 @@ class CORE_EXPORT HTMLSlotElement final : public HTMLElement {
|
| public:
|
| DECLARE_NODE_FACTORY(HTMLSlotElement);
|
|
|
| - const HeapVector<Member<Node>>& assignedNodes() const { return m_assignedNodes; }
|
| + const HeapVector<Member<Node>>& assignedNodes();
|
| const HeapVector<Member<Node>>& getDistributedNodes();
|
| const HeapVector<Member<Node>> assignedNodesForBinding(const AssignedNodesOptions&);
|
|
|
| @@ -54,19 +54,12 @@ public:
|
| Node* distributedNodePreviousTo(const Node&) const;
|
|
|
| void appendAssignedNode(Node&);
|
| - void willUpdateAssignment();
|
| +
|
| + void resolveDistributedNodes();
|
| void appendDistributedNode(Node&);
|
| void appendDistributedNodesFrom(const HTMLSlotElement& other);
|
| - void willUpdateDistribution();
|
| - void appendFallbackNode(Node&);
|
| - void willUpdateFallback();
|
|
|
| - void didUpdateAssignment();
|
| - void updateFallbackNodes();
|
| void updateDistributedNodesWithFallback();
|
| - void didUpdateDistribution();
|
| -
|
| - void fireSlotChangeEvent();
|
|
|
| void attach(const AttachContext& = AttachContext()) final;
|
| void detach(const AttachContext& = AttachContext()) final;
|
| @@ -76,47 +69,33 @@ public:
|
| short tabIndex() const override;
|
| AtomicString name() const;
|
|
|
| + // This method can be slow because this has to traverse the children of a shadow host.
|
| + // This method should be used only when m_assignedNodes is dirty.
|
| + // e.g. To detect a slotchange event in DOM mutations.
|
| + bool hasAssignedNodesSlow() const;
|
| + bool findHostChildWithSameSlotName() const;
|
| +
|
| + void enqueueSlotChangeEvent();
|
| +
|
| + void clearDistribution();
|
| +
|
| + static AtomicString normalizeSlotName(const AtomicString&);
|
| +
|
| DECLARE_VIRTUAL_TRACE();
|
|
|
| private:
|
| HTMLSlotElement(Document&);
|
|
|
| - enum AssignmentState {
|
| - AssignmentOnGoing,
|
| - AssignmentDone,
|
| - AssignmentChanged,
|
| - AssignmentUnchanged
|
| - };
|
| -
|
| - enum DistributionState {
|
| - DistributionOnGoing,
|
| - DistributionDone,
|
| - DistributionChanged,
|
| - DistributionUnchanged
|
| - };
|
| -
|
| - void clearDistribution();
|
| - void childrenChanged(const ChildrenChange&) final;
|
| InsertionNotificationRequest insertedInto(ContainerNode*) final;
|
| void removedFrom(ContainerNode*) final;
|
| void willRecalcStyle(StyleRecalcChange) final;
|
|
|
| void dispatchSlotChangeEvent();
|
| - bool assignmentChanged();
|
| - bool distributionChanged();
|
| - bool fallbackChanged();
|
|
|
| HeapVector<Member<Node>> m_assignedNodes;
|
| HeapVector<Member<Node>> m_distributedNodes;
|
| - HeapVector<Member<Node>> m_fallbackNodes;
|
| HeapHashMap<Member<const Node>, size_t> m_distributedIndices;
|
| - HeapVector<Member<Node>> m_oldAssignedNodes;
|
| - // TODO(hayato): Remove m_oldDistibutedNodes and make SlotAssignment check the diffirence between old and new distributed nodes for each slot to save the memories.
|
| - HeapVector<Member<Node>> m_oldDistributedNodes;
|
| - HeapVector<Member<Node>> m_oldFallbackNodes;
|
| - DistributionState m_distributionState;
|
| - AssignmentState m_assignmentState;
|
| - bool m_slotchangeEventAdded;
|
| + bool m_slotchangeEventEnqueued = false;
|
| };
|
|
|
| } // namespace blink
|
|
|