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

Side by Side Diff: third_party/WebKit/Source/core/paint/PaintLayer.cpp

Issue 2259493004: Fix Compositing of Opaque Scrolling Layers and Add Tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments addressed and test baselines. Created 4 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
5 * 5 *
6 * Other contributors: 6 * Other contributors:
7 * Robert O'Callahan <roc+@cs.cmu.edu> 7 * Robert O'Callahan <roc+@cs.cmu.edu>
8 * David Baron <dbaron@fas.harvard.edu> 8 * David Baron <dbaron@fas.harvard.edu>
9 * Christian Biesinger <cbiesinger@web.de> 9 * Christian Biesinger <cbiesinger@web.de>
10 * Randall Jesup <rjesup@wgate.com> 10 * Randall Jesup <rjesup@wgate.com>
(...skipping 2326 matching lines...) Expand 10 before | Expand all | Expand 10 after
2337 switch (compositingState()) { 2337 switch (compositingState()) {
2338 case NotComposited: 2338 case NotComposited:
2339 return 0; 2339 return 0;
2340 case PaintsIntoGroupedBacking: 2340 case PaintsIntoGroupedBacking:
2341 return groupedMapping()->squashingLayer(); 2341 return groupedMapping()->squashingLayer();
2342 default: 2342 default:
2343 return compositedLayerMapping()->scrollingContentsLayer() ? compositedLa yerMapping()->scrollingContentsLayer() : compositedLayerMapping()->mainGraphicsL ayer(); 2343 return compositedLayerMapping()->scrollingContentsLayer() ? compositedLa yerMapping()->scrollingContentsLayer() : compositedLayerMapping()->mainGraphicsL ayer();
2344 } 2344 }
2345 } 2345 }
2346 2346
2347 bool PaintLayer::shouldPaintBackgroundOntoScrollingContentsLayer() const
2348 {
2349 return !isRootLayer()
2350 && scrollsOverflow()
2351 && layoutObject()->style()->hasEntirelyLocalBackground()
2352 && !stackingNode()->hasNegativeZOrderList();
2353 }
2354
2347 void PaintLayer::ensureCompositedLayerMapping() 2355 void PaintLayer::ensureCompositedLayerMapping()
2348 { 2356 {
2349 if (m_rareData && m_rareData->compositedLayerMapping) 2357 if (m_rareData && m_rareData->compositedLayerMapping)
2350 return; 2358 return;
2351 2359
2352 ensureRareData().compositedLayerMapping = wrapUnique(new CompositedLayerMapp ing(*this)); 2360 ensureRareData().compositedLayerMapping = wrapUnique(new CompositedLayerMapp ing(*this));
2353 m_rareData->compositedLayerMapping->setNeedsGraphicsLayerUpdate(GraphicsLaye rUpdateSubtree); 2361 m_rareData->compositedLayerMapping->setNeedsGraphicsLayerUpdate(GraphicsLaye rUpdateSubtree);
2354 2362
2355 updateOrRemoveFilterEffectBuilder(); 2363 updateOrRemoveFilterEffectBuilder();
2356 } 2364 }
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
2444 // cover the given rect, but a unioning method would require children to com pute and report 2452 // cover the given rect, but a unioning method would require children to com pute and report
2445 // their rects. 2453 // their rects.
2446 return childBackgroundIsKnownToBeOpaqueInRect(localRect); 2454 return childBackgroundIsKnownToBeOpaqueInRect(localRect);
2447 } 2455 }
2448 2456
2449 bool PaintLayer::childBackgroundIsKnownToBeOpaqueInRect(const LayoutRect& localR ect) const 2457 bool PaintLayer::childBackgroundIsKnownToBeOpaqueInRect(const LayoutRect& localR ect) const
2450 { 2458 {
2451 PaintLayerStackingNodeReverseIterator reverseIterator(*m_stackingNode, Posit iveZOrderChildren | NormalFlowChildren | NegativeZOrderChildren); 2459 PaintLayerStackingNodeReverseIterator reverseIterator(*m_stackingNode, Posit iveZOrderChildren | NormalFlowChildren | NegativeZOrderChildren);
2452 while (PaintLayerStackingNode* child = reverseIterator.next()) { 2460 while (PaintLayerStackingNode* child = reverseIterator.next()) {
2453 const PaintLayer* childLayer = child->layer(); 2461 const PaintLayer* childLayer = child->layer();
2454 // Stop at composited paint boundaries. 2462 // Stop at composited paint boundaries and non-self-painting layers.
2455 if (childLayer->isPaintInvalidationContainer()) 2463 if (childLayer->isPaintInvalidationContainer())
2456 continue; 2464 continue;
2457 2465
2458 if (!childLayer->canUseConvertToLayerCoords()) 2466 if (!childLayer->canUseConvertToLayerCoords())
2459 continue; 2467 continue;
2460 2468
2461 LayoutPoint childOffset; 2469 LayoutPoint childOffset;
2462 LayoutRect childLocalRect(localRect); 2470 LayoutRect childLocalRect(localRect);
2463 childLayer->convertToLayerCoords(this, childOffset); 2471 childLayer->convertToLayerCoords(this, childOffset);
2464 childLocalRect.moveBy(-childOffset); 2472 childLocalRect.moveBy(-childOffset);
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after
2960 2968
2961 void showLayerTree(const blink::LayoutObject* layoutObject) 2969 void showLayerTree(const blink::LayoutObject* layoutObject)
2962 { 2970 {
2963 if (!layoutObject) { 2971 if (!layoutObject) {
2964 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n"); 2972 fprintf(stderr, "Cannot showLayerTree. Root is (nil)\n");
2965 return; 2973 return;
2966 } 2974 }
2967 showLayerTree(layoutObject->enclosingLayer()); 2975 showLayerTree(layoutObject->enclosingLayer());
2968 } 2976 }
2969 #endif 2977 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698