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

Side by Side Diff: third_party/WebKit/Source/core/frame/FrameView.cpp

Issue 1552213002: Implement suspend/resume for IntersectionObserver notifications. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@intersection-observer
Patch Set: Create IntersectionObserverController on demand Created 4 years, 11 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
« no previous file with comments | « third_party/WebKit/Source/core/dom/IntersectionObserverController.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999 Lars Knoll <knoll@kde.org> 3 * 1999 Lars Knoll <knoll@kde.org>
4 * 1999 Antti Koivisto <koivisto@kde.org> 4 * 1999 Antti Koivisto <koivisto@kde.org>
5 * 2000 Dirk Mueller <mueller@kde.org> 5 * 2000 Dirk Mueller <mueller@kde.org>
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com)
8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
9 * Copyright (C) 2009 Google Inc. All rights reserved. 9 * Copyright (C) 2009 Google Inc. All rights reserved.
10 * 10 *
(...skipping 3941 matching lines...) Expand 10 before | Expand all | Expand 10 after
3952 m_viewportIntersection.intersect(viewport); 3952 m_viewportIntersection.intersect(viewport);
3953 } 3953 }
3954 3954
3955 void FrameView::updateViewportIntersectionsForSubtree(LifeCycleUpdateOption phas es) 3955 void FrameView::updateViewportIntersectionsForSubtree(LifeCycleUpdateOption phas es)
3956 { 3956 {
3957 bool hadValidIntersection = m_viewportIntersectionValid; 3957 bool hadValidIntersection = m_viewportIntersectionValid;
3958 bool hadEmptyIntersection = m_viewportIntersection.isEmpty(); 3958 bool hadEmptyIntersection = m_viewportIntersection.isEmpty();
3959 updateViewportIntersectionIfNeeded(); 3959 updateViewportIntersectionIfNeeded();
3960 3960
3961 // Notify javascript IntersectionObservers 3961 // Notify javascript IntersectionObservers
3962 if (phases == AllPhases) 3962 if (phases == AllPhases && frame().document()->intersectionObserverControlle r())
3963 frame().document()->ensureIntersectionObserverController().computeTracke dIntersectionObservations(); 3963 frame().document()->intersectionObserverController()->computeTrackedInte rsectionObservations();
3964 3964
3965 // Adjust render throttling for iframes based on visibility 3965 // Adjust render throttling for iframes based on visibility
3966 bool shouldNotify = !hadValidIntersection || hadEmptyIntersection != m_viewp ortIntersection.isEmpty(); 3966 bool shouldNotify = !hadValidIntersection || hadEmptyIntersection != m_viewp ortIntersection.isEmpty();
3967 if (shouldNotify && !m_renderThrottlingObserverNotificationFactory->isPendin g()) 3967 if (shouldNotify && !m_renderThrottlingObserverNotificationFactory->isPendin g())
3968 m_frame->frameScheduler()->timerTaskRunner()->postTask(BLINK_FROM_HERE, m_renderThrottlingObserverNotificationFactory->cancelAndCreate()); 3968 m_frame->frameScheduler()->timerTaskRunner()->postTask(BLINK_FROM_HERE, m_renderThrottlingObserverNotificationFactory->cancelAndCreate());
3969 3969
3970 if (!m_needsUpdateViewportIntersectionInSubtree) 3970 if (!m_needsUpdateViewportIntersectionInSubtree)
3971 return; 3971 return;
3972 m_needsUpdateViewportIntersectionInSubtree = false; 3972 m_needsUpdateViewportIntersectionInSubtree = false;
3973 3973
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
4024 return m_hiddenForThrottling && m_crossOriginForThrottling; 4024 return m_hiddenForThrottling && m_crossOriginForThrottling;
4025 } 4025 }
4026 4026
4027 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const 4027 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const
4028 { 4028 {
4029 ASSERT(layoutView()); 4029 ASSERT(layoutView());
4030 return *layoutView(); 4030 return *layoutView();
4031 } 4031 }
4032 4032
4033 } // namespace blink 4033 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/IntersectionObserverController.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698