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

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

Issue 1490063002: Implement Paint Containment (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rename layer method, add inline tests, address comments, bribe chrishtr, lather, rinse, repeat. Created 5 years 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) 2003, 2009, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved.
3 * Copyright (C) 2013 Intel Corporation. All rights reserved. 3 * Copyright (C) 2013 Intel Corporation. All rights reserved.
4 * 4 *
5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
6 * 6 *
7 * Other contributors: 7 * Other contributors:
8 * Robert O'Callahan <roc+@cs.cmu.edu> 8 * Robert O'Callahan <roc+@cs.cmu.edu>
9 * David Baron <dbaron@fas.harvard.edu> 9 * David Baron <dbaron@fas.harvard.edu>
10 * Christian Biesinger <cbiesinger@web.de> 10 * Christian Biesinger <cbiesinger@web.de>
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 bool hasBoxDecorationsOrBackground() const; 252 bool hasBoxDecorationsOrBackground() const;
253 bool hasVisibleBoxDecorations() const; 253 bool hasVisibleBoxDecorations() const;
254 // True if this layer container layoutObjects that paint. 254 // True if this layer container layoutObjects that paint.
255 bool hasNonEmptyChildLayoutObjects() const; 255 bool hasNonEmptyChildLayoutObjects() const;
256 256
257 // Will ensure that hasNonCompositiedChild are up to date. 257 // Will ensure that hasNonCompositiedChild are up to date.
258 void updateScrollingStateAfterCompositingChange(); 258 void updateScrollingStateAfterCompositingChange();
259 bool hasVisibleNonLayerContent() const { return m_hasVisibleNonLayerContent; } 259 bool hasVisibleNonLayerContent() const { return m_hasVisibleNonLayerContent; }
260 bool hasNonCompositedChild() const { ASSERT(isAllowedToQueryCompositingState ()); return m_hasNonCompositedChild; } 260 bool hasNonCompositedChild() const { ASSERT(isAllowedToQueryCompositingState ()); return m_hasNonCompositedChild; }
261 261
262 // Gets the ancestor layer that serves as the containing block of this layer . It is assumed 262 // Gets the ancestor layer that serves as the containing block of this layer . This is either
263 // that this layer is established by an out-of-flow positioned layout object (i.e. either 263 // another out of flow positioned layer, or one that contains paint.
264 // absolutely or fixed positioned).
265 // If |ancestor| is specified, |*skippedAncestor| will be set to true if |an cestor| is found in 264 // If |ancestor| is specified, |*skippedAncestor| will be set to true if |an cestor| is found in
266 // the ancestry chain between this layer and the containing block layer; if not found, it will 265 // the ancestry chain between this layer and the containing block layer; if not found, it will
267 // be set to false. Either both |ancestor| and |skippedAncestor| should be n ullptr, or none of 266 // be set to false. Either both |ancestor| and |skippedAncestor| should be n ullptr, or none of
268 // them should. 267 // them should.
269 PaintLayer* enclosingPositionedAncestor(const PaintLayer* ancestor = nullptr , bool* skippedAncestor = nullptr) const; 268 PaintLayer* containingLayerForOutOfFlowPositioned(const PaintLayer* ancestor = nullptr, bool* skippedAncestor = nullptr) const;
270 269
271 bool isPaintInvalidationContainer() const; 270 bool isPaintInvalidationContainer() const;
272 271
273 // Do *not* call this method unless you know what you are dooing. You probab ly want to call enclosingCompositingLayerForPaintInvalidation() instead. 272 // Do *not* call this method unless you know what you are dooing. You probab ly want to call enclosingCompositingLayerForPaintInvalidation() instead.
274 // If includeSelf is true, may return this. 273 // If includeSelf is true, may return this.
275 PaintLayer* enclosingLayerWithCompositedLayerMapping(IncludeSelfOrNot) const ; 274 PaintLayer* enclosingLayerWithCompositedLayerMapping(IncludeSelfOrNot) const ;
276 275
277 // Returns the enclosing layer root into which this layer paints, inclusive of this one. Note that the enclosing layer may or may not have its own 276 // Returns the enclosing layer root into which this layer paints, inclusive of this one. Note that the enclosing layer may or may not have its own
278 // GraphicsLayer backing, but is nevertheless the root for a call to the Lay er::paint*() methods. 277 // GraphicsLayer backing, but is nevertheless the root for a call to the Lay er::paint*() methods.
279 PaintLayer* enclosingLayerForPaintInvalidation() const; 278 PaintLayer* enclosingLayerForPaintInvalidation() const;
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 void addLayerHitTestRects(LayerHitTestRects&) const; 449 void addLayerHitTestRects(LayerHitTestRects&) const;
451 450
452 // Compute rects only for this layer 451 // Compute rects only for this layer
453 void computeSelfHitTestRects(LayerHitTestRects&) const; 452 void computeSelfHitTestRects(LayerHitTestRects&) const;
454 453
455 // FIXME: This should probably return a ScrollableArea but a lot of internal methods are mistakenly exposed. 454 // FIXME: This should probably return a ScrollableArea but a lot of internal methods are mistakenly exposed.
456 PaintLayerScrollableArea* scrollableArea() const { return m_scrollableArea.g et(); } 455 PaintLayerScrollableArea* scrollableArea() const { return m_scrollableArea.g et(); }
457 PaintLayerClipper& clipper() { return m_clipper; } 456 PaintLayerClipper& clipper() { return m_clipper; }
458 const PaintLayerClipper& clipper() const { return m_clipper; } 457 const PaintLayerClipper& clipper() const { return m_clipper; }
459 458
460 inline bool isPositionedContainer() const
461 {
462 // FIXME: This is not in sync with containingBlock.
463 // LayoutObject::canContainFixedPositionObjects() should probably be use d
464 // instead.
465 LayoutBoxModelObject* layerlayoutObject = layoutObject();
466 return isRootLayer() || layerlayoutObject->isPositioned() || hasTransfor mRelatedProperty();
467 }
468
469 bool scrollsOverflow() const; 459 bool scrollsOverflow() const;
470 460
471 CompositingReasons potentialCompositingReasonsFromStyle() const { return m_p otentialCompositingReasonsFromStyle; } 461 CompositingReasons potentialCompositingReasonsFromStyle() const { return m_p otentialCompositingReasonsFromStyle; }
472 void setPotentialCompositingReasonsFromStyle(CompositingReasons reasons) { A SSERT(reasons == (reasons & CompositingReasonComboAllStyleDeterminedReasons)); m _potentialCompositingReasonsFromStyle = reasons; } 462 void setPotentialCompositingReasonsFromStyle(CompositingReasons reasons) { A SSERT(reasons == (reasons & CompositingReasonComboAllStyleDeterminedReasons)); m _potentialCompositingReasonsFromStyle = reasons; }
473 463
474 bool hasStyleDeterminedDirectCompositingReasons() const { return m_potential CompositingReasonsFromStyle & CompositingReasonComboAllDirectStyleDeterminedReas ons; } 464 bool hasStyleDeterminedDirectCompositingReasons() const { return m_potential CompositingReasonsFromStyle & CompositingReasonComboAllDirectStyleDeterminedReas ons; }
475 465
476 class AncestorDependentCompositingInputs { 466 class AncestorDependentCompositingInputs {
477 DISALLOW_NEW(); 467 DISALLOW_NEW();
478 public: 468 public:
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
816 806
817 } // namespace blink 807 } // namespace blink
818 808
819 #ifndef NDEBUG 809 #ifndef NDEBUG
820 // Outside the WebCore namespace for ease of invocation from gdb. 810 // Outside the WebCore namespace for ease of invocation from gdb.
821 void showLayerTree(const blink::PaintLayer*); 811 void showLayerTree(const blink::PaintLayer*);
822 void showLayerTree(const blink::LayoutObject*); 812 void showLayerTree(const blink::LayoutObject*);
823 #endif 813 #endif
824 814
825 #endif // Layer_h 815 #endif // Layer_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698