OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "core/paint/PaintPropertyTreeBuilder.h" | 5 #include "core/paint/PaintPropertyTreeBuilder.h" |
6 | 6 |
7 #include "core/dom/DOMNodeIds.h" | 7 #include "core/dom/DOMNodeIds.h" |
8 #include "core/frame/FrameView.h" | 8 #include "core/frame/FrameView.h" |
9 #include "core/frame/LocalFrame.h" | 9 #include "core/frame/LocalFrame.h" |
10 #include "core/frame/Settings.h" | 10 #include "core/frame/Settings.h" |
(...skipping 901 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
912 // Similar adjustment is done in LayoutTableCell::offsetFromContainer(). | 912 // Similar adjustment is done in LayoutTableCell::offsetFromContainer(). |
913 if (object.isTableCell()) { | 913 if (object.isTableCell()) { |
914 LayoutObject* parentRow = object.parent(); | 914 LayoutObject* parentRow = object.parent(); |
915 DCHECK(parentRow && parentRow->isTableRow()); | 915 DCHECK(parentRow && parentRow->isTableRow()); |
916 context.current.paintOffset.moveBy( | 916 context.current.paintOffset.moveBy( |
917 -toLayoutBox(parentRow)->physicalLocation()); | 917 -toLayoutBox(parentRow)->physicalLocation()); |
918 } | 918 } |
919 } | 919 } |
920 } | 920 } |
921 | 921 |
922 void PaintPropertyTreeBuilder::updateContextForBoxPosition( | 922 void PaintPropertyTreeBuilder::updateForObjectLocation( |
923 const LayoutObject& object, | 923 const LayoutObject& object, |
924 PaintPropertyTreeBuilderContext& context) { | 924 PaintPropertyTreeBuilderContext& context) { |
925 if (object.isBoxModelObject()) { | 925 if (object.isBoxModelObject()) { |
926 updatePaintOffset(toLayoutBoxModelObject(object), context); | 926 updatePaintOffset(toLayoutBoxModelObject(object), context); |
927 updatePaintOffsetTranslation(toLayoutBoxModelObject(object), context); | 927 updatePaintOffsetTranslation(toLayoutBoxModelObject(object), context); |
928 } | 928 } |
929 | 929 |
930 if (object.paintOffset() == context.current.paintOffset) | 930 if (object.paintOffset() == context.current.paintOffset) |
931 return; | 931 return; |
932 | 932 |
933 // Many paint properties depend on paint offset so we force an update of | 933 // Many paint properties depend on paint offset so we force an update of |
934 // the entire subtree on paint offset changes. | 934 // the entire subtree on paint offset changes. |
935 context.forceSubtreeUpdate = true; | 935 context.forceSubtreeUpdate = true; |
936 | 936 |
937 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { | 937 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { |
938 object.getMutableForPainting().setShouldDoFullPaintInvalidation( | 938 object.getMutableForPainting().setShouldDoFullPaintInvalidation( |
939 PaintInvalidationLocationChange); | 939 PaintInvalidationLocationChange); |
940 } | 940 } |
941 object.getMutableForPainting().setPaintOffset(context.current.paintOffset); | 941 object.getMutableForPainting().setPaintOffset(context.current.paintOffset); |
942 } | 942 } |
943 | 943 |
944 void PaintPropertyTreeBuilder::updatePropertiesForSelf( | 944 void PaintPropertyTreeBuilder::updatePropertiesForSelf( |
945 const LayoutObject& object, | 945 const LayoutObject& object, |
946 PaintPropertyTreeBuilderContext& context) { | 946 PaintPropertyTreeBuilderContext& context) { |
| 947 // This is not in FindObjectPropertiesNeedingUpdateScope because paint offset |
| 948 // can change without needsPaintPropertyUpdate. |
| 949 updateForObjectLocation(object, context); |
| 950 |
947 #if DCHECK_IS_ON() | 951 #if DCHECK_IS_ON() |
948 FindObjectPropertiesNeedingUpdateScope checkNeedsUpdateScope(object, context); | 952 FindObjectPropertiesNeedingUpdateScope checkNeedsUpdateScope(object, context); |
949 #endif | 953 #endif |
950 | 954 |
951 if (object.isBoxModelObject() || object.isSVG()) { | 955 if (object.isBoxModelObject() || object.isSVG()) { |
952 updateTransform(object, context); | 956 updateTransform(object, context); |
953 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) | 957 if (RuntimeEnabledFeatures::slimmingPaintV2Enabled()) |
954 updateEffect(object, context); | 958 updateEffect(object, context); |
955 updateCssClip(object, context); | 959 updateCssClip(object, context); |
956 updateLocalBorderBoxContext(object, context); | 960 updateLocalBorderBoxContext(object, context); |
(...skipping 15 matching lines...) Expand all Loading... |
972 updateOverflowClip(object, context); | 976 updateOverflowClip(object, context); |
973 updatePerspective(object, context); | 977 updatePerspective(object, context); |
974 updateSvgLocalToBorderBoxTransform(object, context); | 978 updateSvgLocalToBorderBoxTransform(object, context); |
975 updateScrollAndScrollTranslation(object, context); | 979 updateScrollAndScrollTranslation(object, context); |
976 updateOutOfFlowContext(object, context); | 980 updateOutOfFlowContext(object, context); |
977 | 981 |
978 context.forceSubtreeUpdate |= object.subtreeNeedsPaintPropertyUpdate(); | 982 context.forceSubtreeUpdate |= object.subtreeNeedsPaintPropertyUpdate(); |
979 } | 983 } |
980 | 984 |
981 } // namespace blink | 985 } // namespace blink |
OLD | NEW |