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

Side by Side Diff: Source/core/rendering/compositing/CompositingReasonFinder.cpp

Issue 270633003: Remove RenderLayerCompositor::m_viewportConstrainedLayers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/rendering/compositing/CompositingReasonFinder.h" 6 #include "core/rendering/compositing/CompositingReasonFinder.h"
7 7
8 #include "CSSPropertyNames.h" 8 #include "CSSPropertyNames.h"
9 #include "HTMLNames.h" 9 #include "HTMLNames.h"
10 #include "core/frame/FrameView.h" 10 #include "core/frame/FrameView.h"
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 if (!hasOverflowScrollTrigger()) 221 if (!hasOverflowScrollTrigger())
222 return false; 222 return false;
223 return layer->scrollParent(); 223 return layer->scrollParent();
224 } 224 }
225 225
226 bool CompositingReasonFinder::requiresCompositingForOverflowScrolling(const Rend erLayer* layer) const 226 bool CompositingReasonFinder::requiresCompositingForOverflowScrolling(const Rend erLayer* layer) const
227 { 227 {
228 return layer->needsCompositedScrolling(); 228 return layer->needsCompositedScrolling();
229 } 229 }
230 230
231 static bool isViewportConstrainedStickyLayer(const RenderLayer* layer)
232 {
233 ASSERT(layer->renderer()->isStickyPositioned());
234 return !layer->enclosingOverflowClipLayer(ExcludeSelf);
235 }
236
237 bool CompositingReasonFinder::isViewportConstrainedFixedOrStickyLayer(const Rend erLayer* layer)
238 {
239 if (layer->renderer()->isStickyPositioned())
240 return isViewportConstrainedStickyLayer(layer);
241
242 if (layer->renderer()->style()->position() != FixedPosition)
243 return false;
244
245 for (const RenderLayerStackingNode* stackingContainer = layer->stackingNode( ); stackingContainer;
246 stackingContainer = stackingContainer->ancestorStackingContainerNode()) {
247 if (stackingContainer->layer()->compositingState() != NotComposited
248 && stackingContainer->layer()->renderer()->style()->position() == Fi xedPosition)
249 return false;
250 }
251
252 return true;
253 }
254
255 bool CompositingReasonFinder::requiresCompositingForPosition(RenderObject* rende rer, const RenderLayer* layer, RenderLayer::ViewportConstrainedNotCompositedReas on* viewportConstrainedNotCompositedReason, bool* needToRecomputeCompositingRequ irements) const 231 bool CompositingReasonFinder::requiresCompositingForPosition(RenderObject* rende rer, const RenderLayer* layer, RenderLayer::ViewportConstrainedNotCompositedReas on* viewportConstrainedNotCompositedReason, bool* needToRecomputeCompositingRequ irements) const
256 { 232 {
257 return requiresCompositingForPositionSticky(renderer, layer) || requiresComp ositingForPositionFixed(renderer, layer, viewportConstrainedNotCompositedReason, needToRecomputeCompositingRequirements); 233 return requiresCompositingForPositionSticky(renderer, layer) || requiresComp ositingForPositionFixed(renderer, layer, viewportConstrainedNotCompositedReason, needToRecomputeCompositingRequirements);
258 } 234 }
259 235
260 bool CompositingReasonFinder::requiresCompositingForPositionSticky(RenderObject* renderer, const RenderLayer* layer) const 236 bool CompositingReasonFinder::requiresCompositingForPositionSticky(RenderObject* renderer, const RenderLayer* layer) const
261 { 237 {
262 if (!(m_compositingTriggers & ViewportConstrainedPositionedTrigger)) 238 if (!(m_compositingTriggers & ViewportConstrainedPositionedTrigger))
263 return false; 239 return false;
264 if (renderer->style()->position() != StickyPosition) 240 if (renderer->style()->position() != StickyPosition)
265 return false; 241 return false;
266 // FIXME: This probably isn't correct for accelerated overflow scrolling. cr bug.com/361723 242 // FIXME: This probably isn't correct for accelerated overflow scrolling. cr bug.com/361723
267 // Instead it should return false only if the layer is not inside a scrollab le region. 243 // Instead it should return false only if the layer is not inside a scrollab le region.
268 return isViewportConstrainedStickyLayer(layer); 244 return !layer->enclosingOverflowClipLayer(ExcludeSelf);
chrishtr 2014/05/07 20:12:00 I don't get why this is correct..
abarth-chromium 2014/05/07 20:18:54 I just inlined isViewportConstrainedStickyLayer be
chrishtr 2014/05/07 20:20:42 oops, misread the code. ok
269 } 245 }
270 246
271 bool CompositingReasonFinder::requiresCompositingForPositionFixed(RenderObject* renderer, const RenderLayer* layer, RenderLayer::ViewportConstrainedNotComposite dReason* viewportConstrainedNotCompositedReason, bool* needToRecomputeCompositin gRequirements) const 247 bool CompositingReasonFinder::requiresCompositingForPositionFixed(RenderObject* renderer, const RenderLayer* layer, RenderLayer::ViewportConstrainedNotComposite dReason* viewportConstrainedNotCompositedReason, bool* needToRecomputeCompositin gRequirements) const
272 { 248 {
273 if (!(m_compositingTriggers & ViewportConstrainedPositionedTrigger)) 249 if (!(m_compositingTriggers & ViewportConstrainedPositionedTrigger))
274 return false; 250 return false;
275 251
276 if (renderer->style()->position() != FixedPosition) 252 if (renderer->style()->position() != FixedPosition)
277 return false; 253 return false;
278 254
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 *needToRecomputeCompositingRequirements = true; 316 *needToRecomputeCompositingRequirements = true;
341 } 317 }
342 return false; 318 return false;
343 } 319 }
344 } 320 }
345 321
346 return true; 322 return true;
347 } 323 }
348 324
349 } 325 }
OLDNEW
« no previous file with comments | « Source/core/rendering/compositing/CompositingReasonFinder.h ('k') | Source/core/rendering/compositing/RenderLayerCompositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698