OLD | NEW |
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 Loading... |
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 HitTestRequest; | 72 class HitTestRequest; |
72 class HitTestResult; | 73 class HitTestResult; |
73 class HitTestingTransformState; | 74 class HitTestingTransformState; |
74 class PaintLayerCompositor; | 75 class PaintLayerCompositor; |
75 class PaintTiming; | 76 class PaintTiming; |
76 class TransformationMatrix; | 77 class TransformationMatrix; |
77 | 78 |
78 enum IncludeSelfOrNot { IncludeSelf, ExcludeSelf }; | 79 enum IncludeSelfOrNot { IncludeSelf, ExcludeSelf }; |
79 | 80 |
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
587 | 588 |
588 // Calls the above, rounding outwards. | 589 // Calls the above, rounding outwards. |
589 LayoutRect mapLayoutRectForFilter(const LayoutRect&) const; | 590 LayoutRect mapLayoutRectForFilter(const LayoutRect&) const; |
590 | 591 |
591 bool hasFilterThatMovesPixels() const; | 592 bool hasFilterThatMovesPixels() const; |
592 | 593 |
593 PaintLayerFilterInfo* filterInfo() const { | 594 PaintLayerFilterInfo* filterInfo() const { |
594 return m_rareData ? m_rareData->filterInfo.get() : nullptr; | 595 return m_rareData ? m_rareData->filterInfo.get() : nullptr; |
595 } | 596 } |
596 PaintLayerFilterInfo& ensureFilterInfo(); | 597 PaintLayerFilterInfo& ensureFilterInfo(); |
| 598 void removeFilterInfo(); |
597 | 599 |
598 void updateFilters(const ComputedStyle* oldStyle, | 600 void updateFilters(const ComputedStyle* oldStyle, |
599 const ComputedStyle& newStyle); | 601 const ComputedStyle& newStyle); |
600 | 602 |
601 Node* enclosingNode() const; | 603 Node* enclosingNode() const; |
602 | 604 |
603 bool isInTopLayer() const; | 605 bool isInTopLayer() const; |
604 | 606 |
605 bool scrollsWithViewport() const; | 607 bool scrollsWithViewport() const; |
606 bool scrollsWithRespectTo(const PaintLayer*) const; | 608 bool scrollsWithRespectTo(const PaintLayer*) const; |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
819 void setHasCompositingDescendant(bool); | 821 void setHasCompositingDescendant(bool); |
820 | 822 |
821 bool shouldIsolateCompositedDescendants() const { | 823 bool shouldIsolateCompositedDescendants() const { |
822 DCHECK(isAllowedToQueryCompositingState()); | 824 DCHECK(isAllowedToQueryCompositingState()); |
823 return m_shouldIsolateCompositedDescendants; | 825 return m_shouldIsolateCompositedDescendants; |
824 } | 826 } |
825 void setShouldIsolateCompositedDescendants(bool); | 827 void setShouldIsolateCompositedDescendants(bool); |
826 | 828 |
827 void updateDescendantDependentFlags(); | 829 void updateDescendantDependentFlags(); |
828 | 830 |
829 void updateOrRemoveFilterEffect(); | |
830 | |
831 void updateSelfPaintingLayer(); | 831 void updateSelfPaintingLayer(); |
832 // This is O(depth) so avoid calling this in loops. Instead use optimizations | 832 // This is O(depth) so avoid calling this in loops. Instead use optimizations |
833 // like those in PaintInvalidationState. | 833 // like those in PaintInvalidationState. |
834 PaintLayer* enclosingSelfPaintingLayer(); | 834 PaintLayer* enclosingSelfPaintingLayer(); |
835 | 835 |
836 PaintLayer* enclosingTransformedAncestor() const; | 836 PaintLayer* enclosingTransformedAncestor() const; |
837 LayoutPoint computeOffsetFromTransformedAncestor() const; | 837 LayoutPoint computeOffsetFromTransformedAncestor() const; |
838 | 838 |
839 void didUpdateNeedsCompositedScrolling(); | 839 void didUpdateNeedsCompositedScrolling(); |
840 | 840 |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1073 | 1073 |
1074 bool childBackgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const; | 1074 bool childBackgroundIsKnownToBeOpaqueInRect(const LayoutRect&) const; |
1075 | 1075 |
1076 bool shouldBeSelfPaintingLayer() const; | 1076 bool shouldBeSelfPaintingLayer() const; |
1077 | 1077 |
1078 // FIXME: We should only create the stacking node if needed. | 1078 // FIXME: We should only create the stacking node if needed. |
1079 bool requiresStackingNode() const { return true; } | 1079 bool requiresStackingNode() const { return true; } |
1080 void updateStackingNode(); | 1080 void updateStackingNode(); |
1081 | 1081 |
1082 FilterOperations addReflectionToFilterOperations(const ComputedStyle&) const; | 1082 FilterOperations addReflectionToFilterOperations(const ComputedStyle&) const; |
1083 FilterEffect* updateFilterEffect() const; | |
1084 | 1083 |
1085 // FIXME: We could lazily allocate our ScrollableArea based on style | 1084 // FIXME: We could lazily allocate our ScrollableArea based on style |
1086 // properties ('overflow', ...) but for now, we are always allocating it for | 1085 // properties ('overflow', ...) but for now, we are always allocating it for |
1087 // LayoutBox as it's safer. crbug.com/467721. | 1086 // LayoutBox as it's safer. crbug.com/467721. |
1088 bool requiresScrollableArea() const { return layoutBox(); } | 1087 bool requiresScrollableArea() const { return layoutBox(); } |
1089 void updateScrollableArea(); | 1088 void updateScrollableArea(); |
1090 | 1089 |
1091 void dirtyAncestorChainVisibleDescendantStatus(); | 1090 void dirtyAncestorChainVisibleDescendantStatus(); |
1092 | 1091 |
1093 bool attemptDirectCompositingUpdate(StyleDifference, | 1092 bool attemptDirectCompositingUpdate(StyleDifference, |
1094 const ComputedStyle* oldStyle); | 1093 const ComputedStyle* oldStyle); |
1095 void updateTransform(const ComputedStyle* oldStyle, | 1094 void updateTransform(const ComputedStyle* oldStyle, |
1096 const ComputedStyle& newStyle); | 1095 const ComputedStyle& newStyle); |
1097 | 1096 |
1098 void removeAncestorOverflowLayer(const PaintLayer* removedLayer); | 1097 void removeAncestorOverflowLayer(const PaintLayer* removedLayer); |
1099 | 1098 |
1100 void updateOrRemoveFilterClients(); | |
1101 | |
1102 void updatePaginationRecursive(bool needsPaginationUpdate = false); | 1099 void updatePaginationRecursive(bool needsPaginationUpdate = false); |
1103 void clearPaginationRecursive(); | 1100 void clearPaginationRecursive(); |
1104 | 1101 |
1105 void setNeedsRepaintInternal(); | 1102 void setNeedsRepaintInternal(); |
1106 void markCompositingContainerChainForNeedsRepaint(); | 1103 void markCompositingContainerChainForNeedsRepaint(); |
1107 | 1104 |
1108 PaintLayerRareData& ensureRareData() { | 1105 PaintLayerRareData& ensureRareData() { |
1109 if (!m_rareData) | 1106 if (!m_rareData) |
1110 m_rareData = wrapUnique(new PaintLayerRareData); | 1107 m_rareData = wrapUnique(new PaintLayerRareData); |
1111 return *m_rareData; | 1108 return *m_rareData; |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1237 | 1234 |
1238 } // namespace blink | 1235 } // namespace blink |
1239 | 1236 |
1240 #ifndef NDEBUG | 1237 #ifndef NDEBUG |
1241 // Outside the WebCore namespace for ease of invocation from gdb. | 1238 // Outside the WebCore namespace for ease of invocation from gdb. |
1242 CORE_EXPORT void showLayerTree(const blink::PaintLayer*); | 1239 CORE_EXPORT void showLayerTree(const blink::PaintLayer*); |
1243 CORE_EXPORT void showLayerTree(const blink::LayoutObject*); | 1240 CORE_EXPORT void showLayerTree(const blink::LayoutObject*); |
1244 #endif | 1241 #endif |
1245 | 1242 |
1246 #endif // Layer_h | 1243 #endif // Layer_h |
OLD | NEW |