Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Side by Side Diff: third_party/WebKit/Source/core/html/HTMLSlotElement.h

Issue 2420043002: Stop re-signaling a slotchange event (Closed)
Patch Set: New slotchange behavior Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2015 Google Inc. All rights reserved. 2 * Copyright (C) 2015 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 81
82 short tabIndex() const override; 82 short tabIndex() const override;
83 AtomicString name() const; 83 AtomicString name() const;
84 84
85 // This method can be slow because this has to traverse the children of a 85 // This method can be slow because this has to traverse the children of a
86 // shadow host. This method should be used only when m_assignedNodes is 86 // shadow host. This method should be used only when m_assignedNodes is
87 // dirty. e.g. To detect a slotchange event in DOM mutations. 87 // dirty. e.g. To detect a slotchange event in DOM mutations.
88 bool hasAssignedNodesSlow() const; 88 bool hasAssignedNodesSlow() const;
89 bool findHostChildWithSameSlotName() const; 89 bool findHostChildWithSameSlotName() const;
90 90
91 void enqueueSlotChangeEvent();
92
93 void clearDistribution(); 91 void clearDistribution();
94 void saveAndClearDistribution(); 92 void saveAndClearDistribution();
95 93
96 bool supportsDistribution() const { return isInShadowTree(); } 94 bool supportsDistribution() const { return isInShadowTree(); }
97 void updateDistributedNodesManually(); 95 void updateDistributedNodesManually();
96 void didSlotChange(SlotChangeType);
98 97
99 static AtomicString normalizeSlotName(const AtomicString&); 98 static AtomicString normalizeSlotName(const AtomicString&);
100 99
101 DECLARE_VIRTUAL_TRACE(); 100 DECLARE_VIRTUAL_TRACE();
102 101
103 private: 102 private:
104 HTMLSlotElement(Document&); 103 HTMLSlotElement(Document&);
105 104
106 InsertionNotificationRequest insertedInto(ContainerNode*) final; 105 InsertionNotificationRequest insertedInto(ContainerNode*) final;
107 void removedFrom(ContainerNode*) final; 106 void removedFrom(ContainerNode*) final;
108 void willRecalcStyle(StyleRecalcChange) final; 107 void willRecalcStyle(StyleRecalcChange) final;
109 108
109 void enqueueSlotChangeEvent();
110 void dispatchSlotChangeEvent(); 110 void dispatchSlotChangeEvent();
111 111
112 HeapVector<Member<Node>> m_assignedNodes; 112 HeapVector<Member<Node>> m_assignedNodes;
113 HeapVector<Member<Node>> m_distributedNodes; 113 HeapVector<Member<Node>> m_distributedNodes;
114 HeapVector<Member<Node>> m_oldDistributedNodes; 114 HeapVector<Member<Node>> m_oldDistributedNodes;
115 HeapHashMap<Member<const Node>, size_t> m_distributedIndices; 115 HeapHashMap<Member<const Node>, size_t> m_distributedIndices;
116 bool m_slotchangeEventEnqueued = false; 116 bool m_slotchangeEventEnqueued = false;
117 }; 117 };
118 118
119 } // namespace blink 119 } // namespace blink
120 120
121 #endif // HTMLSlotElement_h 121 #endif // HTMLSlotElement_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698