Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 4117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4128 m_needsUpdateViewportIntersectionInSubtree = false; | 4128 m_needsUpdateViewportIntersectionInSubtree = false; |
| 4129 | 4129 |
| 4130 for (Frame* child = m_frame->tree().firstChild(); child; child = child->tree ().nextSibling()) { | 4130 for (Frame* child = m_frame->tree().firstChild(); child; child = child->tree ().nextSibling()) { |
| 4131 if (!child->isLocalFrame()) | 4131 if (!child->isLocalFrame()) |
| 4132 continue; | 4132 continue; |
| 4133 if (FrameView* view = toLocalFrame(child)->view()) | 4133 if (FrameView* view = toLocalFrame(child)->view()) |
| 4134 view->updateViewportIntersectionsForSubtree(phases); | 4134 view->updateViewportIntersectionsForSubtree(phases); |
| 4135 } | 4135 } |
| 4136 } | 4136 } |
| 4137 | 4137 |
| 4138 void FrameView::updateThrottlingStatus() | 4138 void FrameView::updateThrottlingStatus() |
|
alex clarke (OOO till 29th)
2016/06/28 17:11:28
Does this get called often?
Sami
2016/06/28 17:22:45
Only when a frame enters or leaves the viewport. M
| |
| 4139 { | 4139 { |
| 4140 // Only offscreen frames can be throttled. | 4140 // Only offscreen frames can be throttled. |
| 4141 m_hiddenForThrottling = m_viewportIntersectionValid && m_viewportIntersectio n.isEmpty(); | 4141 m_hiddenForThrottling = m_viewportIntersectionValid && m_viewportIntersectio n.isEmpty(); |
| 4142 m_frame->frameScheduler()->setFrameVisible(!m_hiddenForThrottling); | |
| 4142 | 4143 |
| 4143 // We only throttle the rendering pipeline in cross-origin frames. This is | 4144 // We only throttle the rendering pipeline in cross-origin frames. This is |
| 4144 // to avoid a situation where an ancestor frame directly depends on the | 4145 // to avoid a situation where an ancestor frame directly depends on the |
| 4145 // pipeline timing of a descendant and breaks as a result of throttling. | 4146 // pipeline timing of a descendant and breaks as a result of throttling. |
| 4146 // The rationale is that cross-origin frames must already communicate with | 4147 // The rationale is that cross-origin frames must already communicate with |
| 4147 // asynchronous messages, so they should be able to tolerate some delay in | 4148 // asynchronous messages, so they should be able to tolerate some delay in |
| 4148 // receiving replies from a throttled peer. | 4149 // receiving replies from a throttled peer. |
| 4149 // | 4150 // |
| 4150 // Check if we can access our parent's security origin. | 4151 // Check if we can access our parent's security origin. |
| 4151 m_crossOriginForThrottling = false; | 4152 m_crossOriginForThrottling = false; |
| 4152 // If any of our parents are throttled, we must be too. | 4153 // If any of our parents are throttled, we must be too. |
| 4153 m_subtreeThrottled = false; | 4154 m_subtreeThrottled = false; |
| 4154 const SecurityOrigin* origin = frame().securityContext()->getSecurityOrigin( ); | 4155 const SecurityOrigin* origin = frame().securityContext()->getSecurityOrigin( ); |
| 4155 for (Frame* parentFrame = m_frame->tree().parent(); parentFrame; parentFrame = parentFrame->tree().parent()) { | 4156 for (Frame* parentFrame = m_frame->tree().parent(); parentFrame; parentFrame = parentFrame->tree().parent()) { |
| 4156 const SecurityOrigin* parentOrigin = parentFrame->securityContext()->get SecurityOrigin(); | 4157 const SecurityOrigin* parentOrigin = parentFrame->securityContext()->get SecurityOrigin(); |
| 4157 if (!origin->canAccess(parentOrigin)) | 4158 if (!origin->canAccess(parentOrigin)) |
| 4158 m_crossOriginForThrottling = true; | 4159 m_crossOriginForThrottling = true; |
| 4159 if (parentFrame->isLocalFrame() && toLocalFrame(parentFrame)->view() && toLocalFrame(parentFrame)->view()->canThrottleRendering()) | 4160 if (parentFrame->isLocalFrame() && toLocalFrame(parentFrame)->view() && toLocalFrame(parentFrame)->view()->canThrottleRendering()) |
| 4160 m_subtreeThrottled = true; | 4161 m_subtreeThrottled = true; |
| 4161 } | 4162 } |
| 4163 m_frame->frameScheduler()->setCrossOrigin(m_crossOriginForThrottling); | |
| 4162 } | 4164 } |
| 4163 | 4165 |
| 4164 void FrameView::notifyRenderThrottlingObserversForTesting() | 4166 void FrameView::notifyRenderThrottlingObserversForTesting() |
| 4165 { | 4167 { |
| 4166 DCHECK(m_renderThrottlingObserverNotificationFactory->isPending()); | 4168 DCHECK(m_renderThrottlingObserverNotificationFactory->isPending()); |
| 4167 notifyRenderThrottlingObservers(); | 4169 notifyRenderThrottlingObservers(); |
| 4168 } | 4170 } |
| 4169 | 4171 |
| 4170 void FrameView::notifyRenderThrottlingObservers() | 4172 void FrameView::notifyRenderThrottlingObservers() |
| 4171 { | 4173 { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4230 return m_subtreeThrottled || (m_hiddenForThrottling && m_crossOriginForThrot tling); | 4232 return m_subtreeThrottled || (m_hiddenForThrottling && m_crossOriginForThrot tling); |
| 4231 } | 4233 } |
| 4232 | 4234 |
| 4233 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const | 4235 LayoutBox& FrameView::boxForScrollControlPaintInvalidation() const |
| 4234 { | 4236 { |
| 4235 ASSERT(!layoutViewItem().isNull()); | 4237 ASSERT(!layoutViewItem().isNull()); |
| 4236 return *layoutView(); | 4238 return *layoutView(); |
| 4237 } | 4239 } |
| 4238 | 4240 |
| 4239 } // namespace blink | 4241 } // namespace blink |
| OLD | NEW |