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

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

Issue 2107903002: Repaint non-stacking-context composited children when they scroll. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add test. Created 4 years, 5 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) 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 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 bool hasVisibleDescendant() const { ASSERT(!m_visibleDescendantStatusDirty); return m_hasVisibleDescendant; } 299 bool hasVisibleDescendant() const { ASSERT(!m_visibleDescendantStatusDirty); return m_hasVisibleDescendant; }
300 300
301 void dirtyVisibleContentStatus(); 301 void dirtyVisibleContentStatus();
302 void potentiallyDirtyVisibleContentStatus(EVisibility); 302 void potentiallyDirtyVisibleContentStatus(EVisibility);
303 303
304 bool hasBoxDecorationsOrBackground() const; 304 bool hasBoxDecorationsOrBackground() const;
305 bool hasVisibleBoxDecorations() const; 305 bool hasVisibleBoxDecorations() const;
306 // True if this layer container layoutObjects that paint. 306 // True if this layer container layoutObjects that paint.
307 bool hasNonEmptyChildLayoutObjects() const; 307 bool hasNonEmptyChildLayoutObjects() const;
308 308
309 // Will ensure that hasNonCompositiedChild are up to date. 309 // Will ensure that isAllScrollingContentComposited() is up to date.
310 void updateScrollingStateAfterCompositingChange(); 310 void updateScrollingStateAfterCompositingChange();
311 bool hasVisibleNonLayerContent() const { return m_hasVisibleNonLayerContent; } 311 bool isAllScrollingContentComposited() const { return m_isAllScrollingConten tComposited; }
312 bool hasNonCompositedChild() const { ASSERT(isAllowedToQueryCompositingState ()); return m_hasNonCompositedChild; }
313 312
314 // Gets the ancestor layer that serves as the containing block of this layer . This is either 313 // Gets the ancestor layer that serves as the containing block of this layer . This is either
315 // another out of flow positioned layer, or one that contains paint. 314 // another out of flow positioned layer, or one that contains paint.
316 // If |ancestor| is specified, |*skippedAncestor| will be set to true if |an cestor| is found in 315 // If |ancestor| is specified, |*skippedAncestor| will be set to true if |an cestor| is found in
317 // the ancestry chain between this layer and the containing block layer; if not found, it will 316 // the ancestry chain between this layer and the containing block layer; if not found, it will
318 // be set to false. Either both |ancestor| and |skippedAncestor| should be n ullptr, or none of 317 // be set to false. Either both |ancestor| and |skippedAncestor| should be n ullptr, or none of
319 // them should. 318 // them should.
320 PaintLayer* containingLayerForOutOfFlowPositioned(const PaintLayer* ancestor = nullptr, bool* skippedAncestor = nullptr) const; 319 PaintLayer* containingLayerForOutOfFlowPositioned(const PaintLayer* ancestor = nullptr, bool* skippedAncestor = nullptr) const;
321 320
322 bool isPaintInvalidationContainer() const; 321 bool isPaintInvalidationContainer() const;
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 mutable unsigned m_hasSelfPaintingLayerDescendant : 1; 807 mutable unsigned m_hasSelfPaintingLayerDescendant : 1;
809 mutable unsigned m_hasSelfPaintingLayerDescendantDirty : 1; 808 mutable unsigned m_hasSelfPaintingLayerDescendantDirty : 1;
810 809
811 const unsigned m_isRootLayer : 1; 810 const unsigned m_isRootLayer : 1;
812 811
813 unsigned m_visibleContentStatusDirty : 1; 812 unsigned m_visibleContentStatusDirty : 1;
814 unsigned m_hasVisibleContent : 1; 813 unsigned m_hasVisibleContent : 1;
815 unsigned m_visibleDescendantStatusDirty : 1; 814 unsigned m_visibleDescendantStatusDirty : 1;
816 unsigned m_hasVisibleDescendant : 1; 815 unsigned m_hasVisibleDescendant : 1;
817 816
818 unsigned m_hasVisibleNonLayerContent : 1;
819
820 #if ENABLE(ASSERT) 817 #if ENABLE(ASSERT)
821 unsigned m_needsPositionUpdate : 1; 818 unsigned m_needsPositionUpdate : 1;
822 #endif 819 #endif
823 820
824 unsigned m_3DTransformedDescendantStatusDirty : 1; 821 unsigned m_3DTransformedDescendantStatusDirty : 1;
825 // Set on a stacking context layer that has 3D descendants anywhere 822 // Set on a stacking context layer that has 3D descendants anywhere
826 // in a preserves3D hierarchy. Hint to do 3D-aware hit testing. 823 // in a preserves3D hierarchy. Hint to do 3D-aware hit testing.
827 unsigned m_has3DTransformedDescendant : 1; 824 unsigned m_has3DTransformedDescendant : 1;
828 825
829 unsigned m_containsDirtyOverlayScrollbars : 1; 826 unsigned m_containsDirtyOverlayScrollbars : 1;
830 827
831 unsigned m_needsAncestorDependentCompositingInputsUpdate : 1; 828 unsigned m_needsAncestorDependentCompositingInputsUpdate : 1;
832 unsigned m_needsDescendantDependentCompositingInputsUpdate : 1; 829 unsigned m_needsDescendantDependentCompositingInputsUpdate : 1;
833 unsigned m_childNeedsCompositingInputsUpdate : 1; 830 unsigned m_childNeedsCompositingInputsUpdate : 1;
834 831
835 // Used only while determining what layers should be composited. Applies to the tree of z-order lists. 832 // Used only while determining what layers should be composited. Applies to the tree of z-order lists.
836 unsigned m_hasCompositingDescendant : 1; 833 unsigned m_hasCompositingDescendant : 1;
837 834
838 // Applies to the real layout layer tree (i.e., the tree determined by the l ayer's parent and children and 835 // True iff we have scrollable overflow and all children of m_layoutObject a re known to paint
839 // as opposed to the tree formed by the z-order and normal flow lists). 836 // exclusively into their own composited layers. Set by updateScrollingStat eAfterCompositingChange().
840 unsigned m_hasNonCompositedChild : 1; 837 unsigned m_isAllScrollingContentComposited : 1;
841 838
842 // Should be for stacking contexts having unisolated blending descendants. 839 // Should be for stacking contexts having unisolated blending descendants.
843 unsigned m_shouldIsolateCompositedDescendants : 1; 840 unsigned m_shouldIsolateCompositedDescendants : 1;
844 841
845 // True if this layout layer just lost its grouped mapping due to the Compos itedLayerMapping being destroyed, 842 // True if this layout layer just lost its grouped mapping due to the Compos itedLayerMapping being destroyed,
846 // and we don't yet know to what graphics layer this Layer will be assigned. 843 // and we don't yet know to what graphics layer this Layer will be assigned.
847 unsigned m_lostGroupedMapping : 1; 844 unsigned m_lostGroupedMapping : 1;
848 845
849 unsigned m_needsRepaint : 1; 846 unsigned m_needsRepaint : 1;
850 unsigned m_previousPaintResult : 1; // PaintLayerPainter::PaintResult 847 unsigned m_previousPaintResult : 1; // PaintLayerPainter::PaintResult
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
900 897
901 } // namespace blink 898 } // namespace blink
902 899
903 #ifndef NDEBUG 900 #ifndef NDEBUG
904 // Outside the WebCore namespace for ease of invocation from gdb. 901 // Outside the WebCore namespace for ease of invocation from gdb.
905 void showLayerTree(const blink::PaintLayer*); 902 void showLayerTree(const blink::PaintLayer*);
906 void showLayerTree(const blink::LayoutObject*); 903 void showLayerTree(const blink::LayoutObject*);
907 #endif 904 #endif
908 905
909 #endif // Layer_h 906 #endif // Layer_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698