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

Unified Diff: third_party/WebKit/Source/core/dom/IntersectionObserver.cpp

Issue 2272773002: Use intersection observer to control frame throttling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update LeakExpectations Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/dom/IntersectionObserver.cpp
diff --git a/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp b/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp
index 7509dcf7051d0c111c615918360c489eed7e098e..32ef04c78978b5f0856a4812c1ff8499585d1e5d 100644
--- a/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp
+++ b/third_party/WebKit/Source/core/dom/IntersectionObserver.cpp
@@ -203,7 +203,8 @@ IntersectionObserver::IntersectionObserver(
m_topMargin(Fixed),
m_rightMargin(Fixed),
m_bottomMargin(Fixed),
- m_leftMargin(Fixed) {
+ m_leftMargin(Fixed),
+ m_initialState(InitialState::kHidden) {
switch (rootMargin.size()) {
case 0:
break;
@@ -291,6 +292,11 @@ void IntersectionObserver::observe(Element* target,
return;
}
+ if (m_initialState == InitialState::kAuto) {
+ for (auto& observation : m_observations)
+ observation->setLastThresholdIndex(std::numeric_limits<unsigned>::max());
+ }
+
if (!rootFrame)
return;
if (FrameView* rootFrameView = rootFrame->view())
@@ -345,6 +351,11 @@ void IntersectionObserver::removeObservation(
m_observations.remove(&observation);
}
+void IntersectionObserver::setInitialState(InitialState initialState) {
+ DCHECK(m_observations.isEmpty());
+ m_initialState = initialState;
+}
+
HeapVector<Member<IntersectionObserverEntry>> IntersectionObserver::takeRecords(
ExceptionState& exceptionState) {
HeapVector<Member<IntersectionObserverEntry>> entries;

Powered by Google App Engine
This is Rietveld 408576698