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

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

Issue 2401343002: Tracking filter mutation via SVGElementProxy (Closed)
Patch Set: Tweak lifecycle checks Created 4 years, 1 month 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 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 #include "wtf/Allocator.h" 60 #include "wtf/Allocator.h"
61 #include "wtf/AutoReset.h" 61 #include "wtf/AutoReset.h"
62 #include "wtf/PtrUtil.h" 62 #include "wtf/PtrUtil.h"
63 #include <memory> 63 #include <memory>
64 64
65 namespace blink { 65 namespace blink {
66 66
67 class CompositedLayerMapping; 67 class CompositedLayerMapping;
68 class CompositorFilterOperations; 68 class CompositorFilterOperations;
69 class ComputedStyle; 69 class ComputedStyle;
70 class FilterEffect;
70 class FilterOperations; 71 class FilterOperations;
71 class HitTestResult; 72 class HitTestResult;
72 class HitTestingTransformState; 73 class HitTestingTransformState;
73 class PaintLayerCompositor; 74 class PaintLayerCompositor;
74 class PaintTiming; 75 class PaintTiming;
75 class TransformationMatrix; 76 class TransformationMatrix;
76 77
77 enum IncludeSelfOrNot { IncludeSelf, ExcludeSelf }; 78 enum IncludeSelfOrNot { IncludeSelf, ExcludeSelf };
78 79
79 enum CompositingQueryMode { 80 enum CompositingQueryMode {
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 !m_rareData->transform->isAffine(); 475 !m_rareData->transform->isAffine();
475 } 476 }
476 477
477 // FIXME: reflections should force transform-style to be flat in the style: 478 // FIXME: reflections should force transform-style to be flat in the style:
478 // https://bugs.webkit.org/show_bug.cgi?id=106959 479 // https://bugs.webkit.org/show_bug.cgi?id=106959
479 bool shouldPreserve3D() const { 480 bool shouldPreserve3D() const {
480 return !layoutObject()->hasReflection() && 481 return !layoutObject()->hasReflection() &&
481 layoutObject()->style()->preserves3D(); 482 layoutObject()->style()->preserves3D();
482 } 483 }
483 484
484 void filterNeedsPaintInvalidation();
485
486 // Returns |true| if any property that renders using filter operations is 485 // Returns |true| if any property that renders using filter operations is
487 // used (including, but not limited to, 'filter' and 'box-reflect'). 486 // used (including, but not limited to, 'filter' and 'box-reflect').
488 bool hasFilterInducingProperty() const { 487 bool hasFilterInducingProperty() const {
489 return layoutObject()->hasFilterInducingProperty(); 488 return layoutObject()->hasFilterInducingProperty();
490 } 489 }
491 490
492 void* operator new(size_t); 491 void* operator new(size_t);
493 // Only safe to call from LayoutBoxModelObject::destroyLayer() 492 // Only safe to call from LayoutBoxModelObject::destroyLayer()
494 void operator delete(void*); 493 void operator delete(void*);
495 494
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 591
593 // Calls the above, rounding outwards. 592 // Calls the above, rounding outwards.
594 LayoutRect mapLayoutRectForFilter(const LayoutRect&) const; 593 LayoutRect mapLayoutRectForFilter(const LayoutRect&) const;
595 594
596 bool hasFilterThatMovesPixels() const; 595 bool hasFilterThatMovesPixels() const;
597 596
598 PaintLayerFilterInfo* filterInfo() const { 597 PaintLayerFilterInfo* filterInfo() const {
599 return m_rareData ? m_rareData->filterInfo.get() : nullptr; 598 return m_rareData ? m_rareData->filterInfo.get() : nullptr;
600 } 599 }
601 PaintLayerFilterInfo& ensureFilterInfo(); 600 PaintLayerFilterInfo& ensureFilterInfo();
601 void removeFilterInfo();
602 602
603 void updateFilters(const ComputedStyle* oldStyle, 603 void updateFilters(const ComputedStyle* oldStyle,
604 const ComputedStyle& newStyle); 604 const ComputedStyle& newStyle);
605 605
606 Node* enclosingNode() const; 606 Node* enclosingNode() const;
607 607
608 bool isInTopLayer() const; 608 bool isInTopLayer() const;
609 609
610 bool scrollsWithViewport() const; 610 bool scrollsWithViewport() const;
611 bool scrollsWithRespectTo(const PaintLayer*) const; 611 bool scrollsWithRespectTo(const PaintLayer*) const;
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 void setHasCompositingDescendant(bool); 824 void setHasCompositingDescendant(bool);
825 825
826 bool shouldIsolateCompositedDescendants() const { 826 bool shouldIsolateCompositedDescendants() const {
827 DCHECK(isAllowedToQueryCompositingState()); 827 DCHECK(isAllowedToQueryCompositingState());
828 return m_shouldIsolateCompositedDescendants; 828 return m_shouldIsolateCompositedDescendants;
829 } 829 }
830 void setShouldIsolateCompositedDescendants(bool); 830 void setShouldIsolateCompositedDescendants(bool);
831 831
832 void updateDescendantDependentFlags(); 832 void updateDescendantDependentFlags();
833 833
834 void updateOrRemoveFilterEffect();
835
836 void updateSelfPaintingLayer(); 834 void updateSelfPaintingLayer();
837 // This is O(depth) so avoid calling this in loops. Instead use optimizations 835 // This is O(depth) so avoid calling this in loops. Instead use optimizations
838 // like those in PaintInvalidationState. 836 // like those in PaintInvalidationState.
839 PaintLayer* enclosingSelfPaintingLayer(); 837 PaintLayer* enclosingSelfPaintingLayer();
840 838
841 PaintLayer* enclosingTransformedAncestor() const; 839 PaintLayer* enclosingTransformedAncestor() const;
842 LayoutPoint computeOffsetFromTransformedAncestor() const; 840 LayoutPoint computeOffsetFromTransformedAncestor() const;
843 841
844 void didUpdateNeedsCompositedScrolling(); 842 void didUpdateNeedsCompositedScrolling();
845 843
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
1078 1076
1079 bool childBackgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const; 1077 bool childBackgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const;
1080 1078
1081 bool shouldBeSelfPaintingLayer() const; 1079 bool shouldBeSelfPaintingLayer() const;
1082 1080
1083 // FIXME: We should only create the stacking node if needed. 1081 // FIXME: We should only create the stacking node if needed.
1084 bool requiresStackingNode() const { return true; } 1082 bool requiresStackingNode() const { return true; }
1085 void updateStackingNode(); 1083 void updateStackingNode();
1086 1084
1087 FilterOperations addReflectionToFilterOperations(const ComputedStyle&) const; 1085 FilterOperations addReflectionToFilterOperations(const ComputedStyle&) const;
1088 FilterEffect* updateFilterEffect() const;
1089 1086
1090 // FIXME: We could lazily allocate our ScrollableArea based on style 1087 // FIXME: We could lazily allocate our ScrollableArea based on style
1091 // properties ('overflow', ...) but for now, we are always allocating it for 1088 // properties ('overflow', ...) but for now, we are always allocating it for
1092 // LayoutBox as it's safer. crbug.com/467721. 1089 // LayoutBox as it's safer. crbug.com/467721.
1093 bool requiresScrollableArea() const { return layoutBox(); } 1090 bool requiresScrollableArea() const { return layoutBox(); }
1094 void updateScrollableArea(); 1091 void updateScrollableArea();
1095 1092
1096 void dirtyAncestorChainVisibleDescendantStatus(); 1093 void dirtyAncestorChainVisibleDescendantStatus();
1097 1094
1098 bool attemptDirectCompositingUpdate(StyleDifference, 1095 bool attemptDirectCompositingUpdate(StyleDifference,
1099 const ComputedStyle* oldStyle); 1096 const ComputedStyle* oldStyle);
1100 void updateTransform(const ComputedStyle* oldStyle, 1097 void updateTransform(const ComputedStyle* oldStyle,
1101 const ComputedStyle& newStyle); 1098 const ComputedStyle& newStyle);
1102 1099
1103 void removeAncestorOverflowLayer(const PaintLayer* removedLayer); 1100 void removeAncestorOverflowLayer(const PaintLayer* removedLayer);
1104 1101
1105 void updateOrRemoveFilterClients();
1106
1107 void updatePaginationRecursive(bool needsPaginationUpdate = false); 1102 void updatePaginationRecursive(bool needsPaginationUpdate = false);
1108 void clearPaginationRecursive(); 1103 void clearPaginationRecursive();
1109 1104
1110 void setNeedsRepaintInternal(); 1105 void setNeedsRepaintInternal();
1111 void markCompositingContainerChainForNeedsRepaint(); 1106 void markCompositingContainerChainForNeedsRepaint();
1112 1107
1113 PaintLayerRareData& ensureRareData() { 1108 PaintLayerRareData& ensureRareData() {
1114 if (!m_rareData) 1109 if (!m_rareData)
1115 m_rareData = wrapUnique(new PaintLayerRareData); 1110 m_rareData = wrapUnique(new PaintLayerRareData);
1116 return *m_rareData; 1111 return *m_rareData;
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1242 1237
1243 } // namespace blink 1238 } // namespace blink
1244 1239
1245 #ifndef NDEBUG 1240 #ifndef NDEBUG
1246 // Outside the WebCore namespace for ease of invocation from gdb. 1241 // Outside the WebCore namespace for ease of invocation from gdb.
1247 CORE_EXPORT void showLayerTree(const blink::PaintLayer*); 1242 CORE_EXPORT void showLayerTree(const blink::PaintLayer*);
1248 CORE_EXPORT void showLayerTree(const blink::LayoutObject*); 1243 CORE_EXPORT void showLayerTree(const blink::LayoutObject*);
1249 #endif 1244 #endif
1250 1245
1251 #endif // Layer_h 1246 #endif // Layer_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698