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

Side by Side Diff: Source/core/layout/compositing/DeprecatedPaintLayerCompositor.cpp

Issue 1246173002: Throttle rendering pipeline for invisible iframes (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add layout tests. Created 5 years, 3 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 void updateDescendantDependentFlagsForEntireSubtree(DeprecatedPaintLayer& layer) 187 void updateDescendantDependentFlagsForEntireSubtree(DeprecatedPaintLayer& layer)
188 { 188 {
189 layer.updateDescendantDependentFlags(); 189 layer.updateDescendantDependentFlags();
190 190
191 for (DeprecatedPaintLayer* child = layer.firstChild(); child; child = child- >nextSibling()) 191 for (DeprecatedPaintLayer* child = layer.firstChild(); child; child = child- >nextSibling())
192 updateDescendantDependentFlagsForEntireSubtree(*child); 192 updateDescendantDependentFlagsForEntireSubtree(*child);
193 } 193 }
194 194
195 void DeprecatedPaintLayerCompositor::updateIfNeededRecursive() 195 void DeprecatedPaintLayerCompositor::updateIfNeededRecursive()
196 { 196 {
197 FrameView* view = m_layoutView.frameView();
198 if (view->shouldThrottleStyleLayoutAndCompositingUpdates())
199 return;
200
197 for (Frame* child = m_layoutView.frameView()->frame().tree().firstChild(); c hild; child = child->tree().nextSibling()) { 201 for (Frame* child = m_layoutView.frameView()->frame().tree().firstChild(); c hild; child = child->tree().nextSibling()) {
198 if (!child->isLocalFrame()) 202 if (!child->isLocalFrame())
199 continue; 203 continue;
200 LocalFrame* localFrame = toLocalFrame(child); 204 LocalFrame* localFrame = toLocalFrame(child);
201 // It's possible for trusted Pepper plugins to force hit testing in situ ations where 205 // It's possible for trusted Pepper plugins to force hit testing in situ ations where
202 // the frame tree is in an inconsistent state, such as in the middle of frame detach. 206 // the frame tree is in an inconsistent state, such as in the middle of frame detach.
203 // TODO(bbudge) Remove this check when trusted Pepper plugins are gone. 207 // TODO(bbudge) Remove this check when trusted Pepper plugins are gone.
204 if (localFrame->document()->isActive()) 208 if (localFrame->document()->isActive())
205 localFrame->contentLayoutObject()->compositor()->updateIfNeededRecur sive(); 209 localFrame->contentLayoutObject()->compositor()->updateIfNeededRecur sive();
206 } 210 }
(...skipping 24 matching lines...) Expand all
231 m_layoutView.frameView()->scrollableArea()->updateCompositorScrollAnimations (); 235 m_layoutView.frameView()->scrollableArea()->updateCompositorScrollAnimations ();
232 if (const FrameView::ScrollableAreaSet* animatingScrollableAreas = m_layoutV iew.frameView()->animatingScrollableAreas()) { 236 if (const FrameView::ScrollableAreaSet* animatingScrollableAreas = m_layoutV iew.frameView()->animatingScrollableAreas()) {
233 for (ScrollableArea* scrollableArea : *animatingScrollableAreas) 237 for (ScrollableArea* scrollableArea : *animatingScrollableAreas)
234 scrollableArea->updateCompositorScrollAnimations(); 238 scrollableArea->updateCompositorScrollAnimations();
235 } 239 }
236 240
237 #if ENABLE(ASSERT) 241 #if ENABLE(ASSERT)
238 ASSERT(lifecycle().state() == DocumentLifecycle::CompositingClean); 242 ASSERT(lifecycle().state() == DocumentLifecycle::CompositingClean);
239 assertNoUnresolvedDirtyBits(); 243 assertNoUnresolvedDirtyBits();
240 for (Frame* child = m_layoutView.frameView()->frame().tree().firstChild(); c hild; child = child->tree().nextSibling()) { 244 for (Frame* child = m_layoutView.frameView()->frame().tree().firstChild(); c hild; child = child->tree().nextSibling()) {
241 if (child->isLocalFrame()) 245 if (!child->isLocalFrame())
242 toLocalFrame(child)->contentLayoutObject()->compositor()->assertNoUn resolvedDirtyBits(); 246 continue;
247 LocalFrame* localFrame = toLocalFrame(child);
248 if (localFrame->shouldThrottleStyleLayoutAndCompositingUpdates())
249 continue;
250 localFrame->contentLayoutObject()->compositor()->assertNoUnresolvedDirty Bits();
243 } 251 }
244 #endif 252 #endif
245 } 253 }
246 254
247 void DeprecatedPaintLayerCompositor::setNeedsCompositingUpdate(CompositingUpdate Type updateType) 255 void DeprecatedPaintLayerCompositor::setNeedsCompositingUpdate(CompositingUpdate Type updateType)
248 { 256 {
249 ASSERT(updateType != CompositingUpdateNone); 257 ASSERT(updateType != CompositingUpdateNone);
250 m_pendingUpdateType = std::max(m_pendingUpdateType, updateType); 258 m_pendingUpdateType = std::max(m_pendingUpdateType, updateType);
251 page()->animator().scheduleVisualUpdate(m_layoutView.frame()); 259 page()->animator().scheduleVisualUpdate(m_layoutView.frame());
252 lifecycle().ensureStateAtMost(DocumentLifecycle::LayoutClean); 260 lifecycle().ensureStateAtMost(DocumentLifecycle::LayoutClean);
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 609
602 bool DeprecatedPaintLayerCompositor::scrollingLayerDidChange(DeprecatedPaintLaye r* layer) 610 bool DeprecatedPaintLayerCompositor::scrollingLayerDidChange(DeprecatedPaintLaye r* layer)
603 { 611 {
604 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator( )) 612 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoordinator( ))
605 return scrollingCoordinator->scrollableAreaScrollLayerDidChange(layer->s crollableArea()); 613 return scrollingCoordinator->scrollableAreaScrollLayerDidChange(layer->s crollableArea());
606 return false; 614 return false;
607 } 615 }
608 616
609 String DeprecatedPaintLayerCompositor::layerTreeAsText(LayerTreeFlags flags) 617 String DeprecatedPaintLayerCompositor::layerTreeAsText(LayerTreeFlags flags)
610 { 618 {
611 ASSERT(lifecycle().state() >= DocumentLifecycle::PaintInvalidationClean); 619 ASSERT(lifecycle().state() >= DocumentLifecycle::PaintInvalidationClean || ( m_layoutView.frameView() && m_layoutView.frameView()->shouldThrottleRenderingPip eline()));
612 620
613 if (!m_rootContentLayer) 621 if (!m_rootContentLayer)
614 return String(); 622 return String();
615 623
616 // We skip dumping the scroll and clip layers to keep layerTreeAsText output 624 // We skip dumping the scroll and clip layers to keep layerTreeAsText output
617 // similar between platforms (unless we explicitly request dumping from the 625 // similar between platforms (unless we explicitly request dumping from the
618 // root. 626 // root.
619 GraphicsLayer* rootLayer = m_rootContentLayer.get(); 627 GraphicsLayer* rootLayer = m_rootContentLayer.get();
620 if (flags & LayerTreeIncludesRootLayer) 628 if (flags & LayerTreeIncludesRootLayer)
621 rootLayer = rootGraphicsLayer(); 629 rootLayer = rootGraphicsLayer();
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
865 873
866 void DeprecatedPaintLayerCompositor::resetTrackedPaintInvalidationRects() 874 void DeprecatedPaintLayerCompositor::resetTrackedPaintInvalidationRects()
867 { 875 {
868 if (GraphicsLayer* rootLayer = rootGraphicsLayer()) 876 if (GraphicsLayer* rootLayer = rootGraphicsLayer())
869 resetTrackedPaintInvalidationRectsRecursive(rootLayer); 877 resetTrackedPaintInvalidationRectsRecursive(rootLayer);
870 } 878 }
871 879
872 void DeprecatedPaintLayerCompositor::setTracksPaintInvalidations(bool tracksPain tInvalidations) 880 void DeprecatedPaintLayerCompositor::setTracksPaintInvalidations(bool tracksPain tInvalidations)
873 { 881 {
874 #if ENABLE(ASSERT) 882 #if ENABLE(ASSERT)
883 FrameView* view = m_layoutView.frameView();
875 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { 884 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
876 ASSERT(lifecycle().state() == DocumentLifecycle::CompositingForSlimmingP aintV2Clean 885 ASSERT(lifecycle().state() == DocumentLifecycle::CompositingForSlimmingP aintV2Clean
877 // TODO(wangxianzhu): Remove this when we remove the old path for sp v2. 886 // TODO(wangxianzhu): Remove this when we remove the old path for sp v2.
878 || lifecycle().state() == DocumentLifecycle::PaintInvalidationClean) ; 887 || lifecycle().state() == DocumentLifecycle::PaintInvalidationClean
888 || (view && view->shouldThrottleRenderingPipeline()));
879 } else { 889 } else {
880 ASSERT(lifecycle().state() == DocumentLifecycle::PaintInvalidationClean) ; 890 ASSERT(lifecycle().state() == DocumentLifecycle::PaintInvalidationClean
891 || (view && view->shouldThrottleRenderingPipeline()));
881 } 892 }
882 #endif 893 #endif
883 894
884 m_isTrackingPaintInvalidations = tracksPaintInvalidations; 895 m_isTrackingPaintInvalidations = tracksPaintInvalidations;
885 } 896 }
886 897
887 bool DeprecatedPaintLayerCompositor::isTrackingPaintInvalidations() const 898 bool DeprecatedPaintLayerCompositor::isTrackingPaintInvalidations() const
888 { 899 {
889 return m_isTrackingPaintInvalidations; 900 return m_isTrackingPaintInvalidations;
890 } 901 }
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
1201 } else if (graphicsLayer == m_scrollLayer.get()) { 1212 } else if (graphicsLayer == m_scrollLayer.get()) {
1202 name = "LocalFrame Scrolling Layer"; 1213 name = "LocalFrame Scrolling Layer";
1203 } else { 1214 } else {
1204 ASSERT_NOT_REACHED(); 1215 ASSERT_NOT_REACHED();
1205 } 1216 }
1206 1217
1207 return name; 1218 return name;
1208 } 1219 }
1209 1220
1210 } // namespace blink 1221 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698