| 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;
|
|
|