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

Side by Side Diff: third_party/WebKit/Source/core/layout/compositing/CompositingLayerAssigner.cpp

Issue 2028893002: Disallow fragmentation of composited content. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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) 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved.
3 * Copyright (C) 2014 Google Inc. All rights reserved. 3 * Copyright (C) 2014 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 return SquashingDisallowedReasonFilterMismatch; 176 return SquashingDisallowedReasonFilterMismatch;
177 177
178 if (layer->nearestFixedPositionLayer() != squashingLayer.nearestFixedPositio nLayer()) 178 if (layer->nearestFixedPositionLayer() != squashingLayer.nearestFixedPositio nLayer())
179 return SquashingDisallowedReasonNearestFixedPositionMismatch; 179 return SquashingDisallowedReasonNearestFixedPositionMismatch;
180 ASSERT(layer->layoutObject()->style()->position() != FixedPosition); 180 ASSERT(layer->layoutObject()->style()->position() != FixedPosition);
181 181
182 if ((squashingLayer.layoutObject()->style()->subtreeWillChangeContents() && squashingLayer.layoutObject()->style()->isRunningAnimationOnCompositor()) 182 if ((squashingLayer.layoutObject()->style()->subtreeWillChangeContents() && squashingLayer.layoutObject()->style()->isRunningAnimationOnCompositor())
183 || squashingLayer.layoutObject()->style()->shouldCompositeForCurrentAnim ations()) 183 || squashingLayer.layoutObject()->style()->shouldCompositeForCurrentAnim ations())
184 return SquashingDisallowedReasonSquashingLayerIsAnimating; 184 return SquashingDisallowedReasonSquashingLayerIsAnimating;
185 185
186 if (layer->enclosingPaginationLayer())
187 return SquashingDisallowedReasonFragmentedContent;
188
186 return SquashingDisallowedReasonsNone; 189 return SquashingDisallowedReasonsNone;
187 } 190 }
188 191
189 void CompositingLayerAssigner::updateSquashingAssignment(PaintLayer* layer, Squa shingState& squashingState, const CompositingStateTransitionType compositedLayer Update, 192 void CompositingLayerAssigner::updateSquashingAssignment(PaintLayer* layer, Squa shingState& squashingState, const CompositingStateTransitionType compositedLayer Update,
190 Vector<PaintLayer*>& layersNeedingPaintInvalidation) 193 Vector<PaintLayer*>& layersNeedingPaintInvalidation)
191 { 194 {
192 // NOTE: In the future as we generalize this, the background of this layer m ay need to be assigned to a different backing than 195 // NOTE: In the future as we generalize this, the background of this layer m ay need to be assigned to a different backing than
193 // the squashed PaintLayer's own primary contents. This would happen when we have a composited negative z-index element that needs 196 // the squashed PaintLayer's own primary contents. This would happen when we have a composited negative z-index element that needs
194 // to paint on top of the background, but below the layer's main contents. F or now, because we always composite layers 197 // to paint on top of the background, but below the layer's main contents. F or now, because we always composite layers
195 // when they have a composited negative z-index child, such layers will neve r need squashing so it is not yet an issue. 198 // when they have a composited negative z-index child, such layers will neve r need squashing so it is not yet an issue.
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 312
310 PaintLayerStackingNodeIterator iterator(*layer->stackingNode(), NormalFlowCh ildren | PositiveZOrderChildren); 313 PaintLayerStackingNodeIterator iterator(*layer->stackingNode(), NormalFlowCh ildren | PositiveZOrderChildren);
311 while (PaintLayerStackingNode* curNode = iterator.next()) 314 while (PaintLayerStackingNode* curNode = iterator.next())
312 assignLayersToBackingsInternal(curNode->layer(), squashingState, layersN eedingPaintInvalidation); 315 assignLayersToBackingsInternal(curNode->layer(), squashingState, layersN eedingPaintInvalidation);
313 316
314 if (squashingState.hasMostRecentMapping && &squashingState.mostRecentMapping ->owningLayer() == layer) 317 if (squashingState.hasMostRecentMapping && &squashingState.mostRecentMapping ->owningLayer() == layer)
315 squashingState.haveAssignedBackingsToEntireSquashingLayerSubtree = true; 318 squashingState.haveAssignedBackingsToEntireSquashingLayerSubtree = true;
316 } 319 }
317 320
318 } // namespace blink 321 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698