| Index: third_party/WebKit/Source/core/frame/FrameView.cpp
|
| diff --git a/third_party/WebKit/Source/core/frame/FrameView.cpp b/third_party/WebKit/Source/core/frame/FrameView.cpp
|
| index 5cfb85f3f5f5fddc20055ed245de877eeb10987f..06ec379532d5a3569efc6f97f480cca74eb67873 100644
|
| --- a/third_party/WebKit/Source/core/frame/FrameView.cpp
|
| +++ b/third_party/WebKit/Source/core/frame/FrameView.cpp
|
| @@ -4311,11 +4311,28 @@ void FrameView::updateViewportIntersectionIfNeeded() {
|
| m_viewportIntersectionValid = true;
|
| FrameView* parent = parentFrameView();
|
| if (!parent) {
|
| + HTMLFrameOwnerElement* element = frame().deprecatedLocalOwner();
|
| + if (!element)
|
| + frame().document()->maybeRecordLoadReason(WouldLoadOutOfProcess);
|
| + // Having no layout object means the frame is not drawn.
|
| + else if (!element->layoutObject())
|
| + frame().document()->maybeRecordLoadReason(WouldLoadDisplayNone);
|
| m_viewportIntersection = frameRect();
|
| return;
|
| }
|
| ASSERT(!parent->m_needsUpdateViewportIntersection);
|
|
|
| + bool parentLoaded = parent->frame().document()->wouldLoadReason() > Created;
|
| + // If the parent wasn't loaded, the children won't be either.
|
| + if (parentLoaded) {
|
| + if (frameRect().isEmpty())
|
| + frame().document()->maybeRecordLoadReason(WouldLoadZeroByZero);
|
| + else if (frameRect().maxY() < 0)
|
| + frame().document()->maybeRecordLoadReason(WouldLoadAbove);
|
| + else if (frameRect().maxX() < 0)
|
| + frame().document()->maybeRecordLoadReason(WouldLoadLeft);
|
| + }
|
| +
|
| // If our parent is hidden, then we are too.
|
| if (parent->m_viewportIntersection.isEmpty()) {
|
| m_viewportIntersection = parent->m_viewportIntersection;
|
| @@ -4335,6 +4352,9 @@ void FrameView::updateViewportIntersectionIfNeeded() {
|
| // content while scrolling.
|
| IntRect viewport = parent->m_viewportIntersection;
|
| m_viewportIntersection.intersect(viewport);
|
| +
|
| + if (parentLoaded && !m_viewportIntersection.isEmpty())
|
| + frame().document()->maybeRecordLoadReason(WouldLoadVisible);
|
| }
|
|
|
| void FrameView::updateViewportIntersectionsForSubtree(
|
| @@ -4420,8 +4440,6 @@ void FrameView::notifyRenderThrottlingObservers() {
|
|
|
| updateThrottlingStatus();
|
|
|
| - frame().document()->onVisibilityMaybeChanged(!m_hiddenForThrottling);
|
| -
|
| bool becameThrottled = !wasThrottled && canThrottleRendering();
|
| bool becameUnthrottled = wasThrottled && !canThrottleRendering();
|
| ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator();
|
|
|