Index: third_party/WebKit/Source/core/observer/ResizeObserverController.h |
diff --git a/third_party/WebKit/Source/core/observer/ResizeObserverController.h b/third_party/WebKit/Source/core/observer/ResizeObserverController.h |
index e84ef621ee747c31a93d6245c504355aaccd05e0..49265289100c0c142bd2fa88d7d7cf2deb1e378d 100644 |
--- a/third_party/WebKit/Source/core/observer/ResizeObserverController.h |
+++ b/third_party/WebKit/Source/core/observer/ResizeObserverController.h |
@@ -13,17 +13,36 @@ class ResizeObserver; |
// ResizeObserverController keeps track of all ResizeObservers |
// in a single Document. |
+// |
+// The observation API is used to integrate ResizeObserver |
+// and the event loop. It delivers notification in a loop. |
+// In each iteration, only notifications deeper than the |
+// shallowest notification from previous iteration are delivered. |
class ResizeObserverController final : public GarbageCollected<ResizeObserverController> { |
public: |
+ static const size_t kDepthBottom = 4096; |
+ |
ResizeObserverController(); |
void addObserver(ResizeObserver&); |
+ // observation API |
+ // Returns depth of shallowest observed node, kDepthLimit if none. |
+ size_t gatherObservations(size_t deeperThan); |
+ // Returns true if gatherObservations has skipped observations |
+ // because they were too shallow. |
+ bool skippedObservations(); |
+ void deliverObservations(); |
+ void clearObservations(); |
+ void observerChanged() { m_observersChanged = true; } |
+ |
DECLARE_TRACE(); |
private: |
// Active observers |
HeapHashSet<WeakMember<ResizeObserver>> m_observers; |
+ // True if any observers were changed since last notification. |
+ bool m_observersChanged; |
}; |
} // namespace blink |