| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/HTMLNames.h" | 5 #include "core/HTMLNames.h" |
| 6 #include "core/frame/FrameView.h" | 6 #include "core/frame/FrameView.h" |
| 7 #include "core/layout/LayoutTestHelper.h" | 7 #include "core/layout/LayoutTestHelper.h" |
| 8 #include "core/layout/LayoutView.h" | 8 #include "core/layout/LayoutView.h" |
| 9 #include "core/paint/PaintLayer.h" | 9 #include "core/paint/PaintLayer.h" |
| 10 #include "platform/graphics/GraphicsLayer.h" | 10 #include "platform/graphics/GraphicsLayer.h" |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 }; | 68 }; |
| 69 | 69 |
| 70 INSTANTIATE_TEST_CASE_P(All, BoxPaintInvalidatorTest, ::testing::Bool()); | 70 INSTANTIATE_TEST_CASE_P(All, BoxPaintInvalidatorTest, ::testing::Bool()); |
| 71 | 71 |
| 72 TEST_P(BoxPaintInvalidatorTest, IncrementalInvalidationExpand) { | 72 TEST_P(BoxPaintInvalidatorTest, IncrementalInvalidationExpand) { |
| 73 GetDocument().View()->SetTracksPaintInvalidations(true); | 73 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 74 Element* target = GetDocument().getElementById("target"); | 74 Element* target = GetDocument().getElementById("target"); |
| 75 target->setAttribute(HTMLNames::styleAttr, "width: 100px; height: 200px"); | 75 target->setAttribute(HTMLNames::styleAttr, "width: 100px; height: 200px"); |
| 76 GetDocument().View()->UpdateAllLifecyclePhases(); | 76 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 77 const auto& raster_invalidations = | 77 const auto& raster_invalidations = |
| 78 GetRasterInvalidationTracking()->tracked_raster_invalidations; | 78 GetRasterInvalidationTracking()->invalidations; |
| 79 ASSERT_EQ(2u, raster_invalidations.size()); | 79 ASSERT_EQ(2u, raster_invalidations.size()); |
| 80 EXPECT_EQ(IntRect(60, 0, 60, 240), raster_invalidations[0].rect); | 80 EXPECT_EQ(IntRect(60, 0, 60, 240), raster_invalidations[0].rect); |
| 81 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[0].reason); | 81 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[0].reason); |
| 82 EXPECT_EQ(IntRect(0, 120, 120, 120), raster_invalidations[1].rect); | 82 EXPECT_EQ(IntRect(0, 120, 120, 120), raster_invalidations[1].rect); |
| 83 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[1].reason); | 83 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[1].reason); |
| 84 GetDocument().View()->SetTracksPaintInvalidations(false); | 84 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 85 } | 85 } |
| 86 | 86 |
| 87 TEST_P(BoxPaintInvalidatorTest, IncrementalInvalidationShrink) { | 87 TEST_P(BoxPaintInvalidatorTest, IncrementalInvalidationShrink) { |
| 88 GetDocument().View()->SetTracksPaintInvalidations(true); | 88 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 89 Element* target = GetDocument().getElementById("target"); | 89 Element* target = GetDocument().getElementById("target"); |
| 90 target->setAttribute(HTMLNames::styleAttr, "width: 20px; height: 80px"); | 90 target->setAttribute(HTMLNames::styleAttr, "width: 20px; height: 80px"); |
| 91 GetDocument().View()->UpdateAllLifecyclePhases(); | 91 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 92 const auto& raster_invalidations = | 92 const auto& raster_invalidations = |
| 93 GetRasterInvalidationTracking()->tracked_raster_invalidations; | 93 GetRasterInvalidationTracking()->invalidations; |
| 94 ASSERT_EQ(2u, raster_invalidations.size()); | 94 ASSERT_EQ(2u, raster_invalidations.size()); |
| 95 EXPECT_EQ(IntRect(30, 0, 40, 140), raster_invalidations[0].rect); | 95 EXPECT_EQ(IntRect(30, 0, 40, 140), raster_invalidations[0].rect); |
| 96 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[0].reason); | 96 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[0].reason); |
| 97 EXPECT_EQ(IntRect(0, 100, 70, 40), raster_invalidations[1].rect); | 97 EXPECT_EQ(IntRect(0, 100, 70, 40), raster_invalidations[1].rect); |
| 98 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[1].reason); | 98 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[1].reason); |
| 99 GetDocument().View()->SetTracksPaintInvalidations(false); | 99 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 100 } | 100 } |
| 101 | 101 |
| 102 TEST_P(BoxPaintInvalidatorTest, IncrementalInvalidationMixed) { | 102 TEST_P(BoxPaintInvalidatorTest, IncrementalInvalidationMixed) { |
| 103 GetDocument().View()->SetTracksPaintInvalidations(true); | 103 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 104 Element* target = GetDocument().getElementById("target"); | 104 Element* target = GetDocument().getElementById("target"); |
| 105 target->setAttribute(HTMLNames::styleAttr, "width: 100px; height: 80px"); | 105 target->setAttribute(HTMLNames::styleAttr, "width: 100px; height: 80px"); |
| 106 GetDocument().View()->UpdateAllLifecyclePhases(); | 106 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 107 const auto& raster_invalidations = | 107 const auto& raster_invalidations = |
| 108 GetRasterInvalidationTracking()->tracked_raster_invalidations; | 108 GetRasterInvalidationTracking()->invalidations; |
| 109 ASSERT_EQ(2u, raster_invalidations.size()); | 109 ASSERT_EQ(2u, raster_invalidations.size()); |
| 110 EXPECT_EQ(IntRect(60, 0, 60, 120), raster_invalidations[0].rect); | 110 EXPECT_EQ(IntRect(60, 0, 60, 120), raster_invalidations[0].rect); |
| 111 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[0].reason); | 111 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[0].reason); |
| 112 EXPECT_EQ(IntRect(0, 100, 70, 40), raster_invalidations[1].rect); | 112 EXPECT_EQ(IntRect(0, 100, 70, 40), raster_invalidations[1].rect); |
| 113 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[1].reason); | 113 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[1].reason); |
| 114 GetDocument().View()->SetTracksPaintInvalidations(false); | 114 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 115 } | 115 } |
| 116 | 116 |
| 117 TEST_P(BoxPaintInvalidatorTest, SubpixelVisualRectChagne) { | 117 TEST_P(BoxPaintInvalidatorTest, SubpixelVisualRectChagne) { |
| 118 ScopedSlimmingPaintInvalidationForTest scoped_slimming_paint_invalidation( | 118 ScopedSlimmingPaintInvalidationForTest scoped_slimming_paint_invalidation( |
| 119 true); | 119 true); |
| 120 | 120 |
| 121 Element* target = GetDocument().getElementById("target"); | 121 Element* target = GetDocument().getElementById("target"); |
| 122 | 122 |
| 123 GetDocument().View()->SetTracksPaintInvalidations(true); | 123 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 124 target->setAttribute(HTMLNames::styleAttr, "width: 100.6px; height: 70.3px"); | 124 target->setAttribute(HTMLNames::styleAttr, "width: 100.6px; height: 70.3px"); |
| 125 GetDocument().View()->UpdateAllLifecyclePhases(); | 125 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 126 const auto* raster_invalidations = | 126 const auto* raster_invalidations = |
| 127 &GetRasterInvalidationTracking()->tracked_raster_invalidations; | 127 &GetRasterInvalidationTracking()->invalidations; |
| 128 ASSERT_EQ(2u, raster_invalidations->size()); | 128 ASSERT_EQ(2u, raster_invalidations->size()); |
| 129 EXPECT_EQ(IntRect(60, 0, 61, 111), (*raster_invalidations)[0].rect); | 129 EXPECT_EQ(IntRect(60, 0, 61, 111), (*raster_invalidations)[0].rect); |
| 130 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[0].reason); | 130 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[0].reason); |
| 131 EXPECT_EQ(IntRect(0, 90, 70, 50), (*raster_invalidations)[1].rect); | 131 EXPECT_EQ(IntRect(0, 90, 70, 50), (*raster_invalidations)[1].rect); |
| 132 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[1].reason); | 132 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[1].reason); |
| 133 GetDocument().View()->SetTracksPaintInvalidations(false); | 133 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 134 | 134 |
| 135 GetDocument().View()->SetTracksPaintInvalidations(true); | 135 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 136 target->setAttribute(HTMLNames::styleAttr, "width: 50px; height: 100px"); | 136 target->setAttribute(HTMLNames::styleAttr, "width: 50px; height: 100px"); |
| 137 GetDocument().View()->UpdateAllLifecyclePhases(); | 137 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 138 raster_invalidations = | 138 raster_invalidations = &GetRasterInvalidationTracking()->invalidations; |
| 139 &GetRasterInvalidationTracking()->tracked_raster_invalidations; | |
| 140 ASSERT_EQ(2u, raster_invalidations->size()); | 139 ASSERT_EQ(2u, raster_invalidations->size()); |
| 141 EXPECT_EQ(IntRect(60, 0, 61, 111), (*raster_invalidations)[0].rect); | 140 EXPECT_EQ(IntRect(60, 0, 61, 111), (*raster_invalidations)[0].rect); |
| 142 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[0].reason); | 141 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[0].reason); |
| 143 EXPECT_EQ(IntRect(0, 90, 70, 50), (*raster_invalidations)[1].rect); | 142 EXPECT_EQ(IntRect(0, 90, 70, 50), (*raster_invalidations)[1].rect); |
| 144 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[1].reason); | 143 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[1].reason); |
| 145 GetDocument().View()->SetTracksPaintInvalidations(false); | 144 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 146 } | 145 } |
| 147 | 146 |
| 148 TEST_P(BoxPaintInvalidatorTest, SubpixelVisualRectChangeWithTransform) { | 147 TEST_P(BoxPaintInvalidatorTest, SubpixelVisualRectChangeWithTransform) { |
| 149 ScopedSlimmingPaintInvalidationForTest scoped_slimming_paint_invalidation( | 148 ScopedSlimmingPaintInvalidationForTest scoped_slimming_paint_invalidation( |
| 150 true); | 149 true); |
| 151 | 150 |
| 152 Element* target = GetDocument().getElementById("target"); | 151 Element* target = GetDocument().getElementById("target"); |
| 153 target->setAttribute(HTMLNames::classAttr, "border transform"); | 152 target->setAttribute(HTMLNames::classAttr, "border transform"); |
| 154 GetDocument().View()->UpdateAllLifecyclePhases(); | 153 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 155 | 154 |
| 156 GetDocument().View()->SetTracksPaintInvalidations(true); | 155 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 157 target->setAttribute(HTMLNames::styleAttr, "width: 100.6px; height: 70.3px"); | 156 target->setAttribute(HTMLNames::styleAttr, "width: 100.6px; height: 70.3px"); |
| 158 GetDocument().View()->UpdateAllLifecyclePhases(); | 157 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 159 const auto* raster_invalidations = | 158 const auto* raster_invalidations = |
| 160 &GetRasterInvalidationTracking()->tracked_raster_invalidations; | 159 &GetRasterInvalidationTracking()->invalidations; |
| 161 ASSERT_EQ(2u, raster_invalidations->size()); | 160 ASSERT_EQ(2u, raster_invalidations->size()); |
| 162 EXPECT_EQ(IntRect(0, 0, 140, 280), (*raster_invalidations)[0].rect); | 161 EXPECT_EQ(IntRect(0, 0, 140, 280), (*raster_invalidations)[0].rect); |
| 163 EXPECT_EQ(kPaintInvalidationBorderBoxChange, | 162 EXPECT_EQ(kPaintInvalidationBorderBoxChange, |
| 164 (*raster_invalidations)[0].reason); | 163 (*raster_invalidations)[0].reason); |
| 165 EXPECT_EQ(IntRect(0, 0, 242, 222), (*raster_invalidations)[1].rect); | 164 EXPECT_EQ(IntRect(0, 0, 242, 222), (*raster_invalidations)[1].rect); |
| 166 EXPECT_EQ(kPaintInvalidationBorderBoxChange, | 165 EXPECT_EQ(kPaintInvalidationBorderBoxChange, |
| 167 (*raster_invalidations)[1].reason); | 166 (*raster_invalidations)[1].reason); |
| 168 GetDocument().View()->SetTracksPaintInvalidations(false); | 167 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 169 | 168 |
| 170 GetDocument().View()->SetTracksPaintInvalidations(true); | 169 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 171 target->setAttribute(HTMLNames::styleAttr, "width: 50px; height: 100px"); | 170 target->setAttribute(HTMLNames::styleAttr, "width: 50px; height: 100px"); |
| 172 GetDocument().View()->UpdateAllLifecyclePhases(); | 171 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 173 raster_invalidations = | 172 raster_invalidations = &GetRasterInvalidationTracking()->invalidations; |
| 174 &GetRasterInvalidationTracking()->tracked_raster_invalidations; | |
| 175 ASSERT_EQ(2u, raster_invalidations->size()); | 173 ASSERT_EQ(2u, raster_invalidations->size()); |
| 176 EXPECT_EQ(IntRect(0, 0, 242, 222), (*raster_invalidations)[0].rect); | 174 EXPECT_EQ(IntRect(0, 0, 242, 222), (*raster_invalidations)[0].rect); |
| 177 EXPECT_EQ(kPaintInvalidationBorderBoxChange, | 175 EXPECT_EQ(kPaintInvalidationBorderBoxChange, |
| 178 (*raster_invalidations)[0].reason); | 176 (*raster_invalidations)[0].reason); |
| 179 EXPECT_EQ(IntRect(0, 0, 140, 280), (*raster_invalidations)[1].rect); | 177 EXPECT_EQ(IntRect(0, 0, 140, 280), (*raster_invalidations)[1].rect); |
| 180 EXPECT_EQ(kPaintInvalidationBorderBoxChange, | 178 EXPECT_EQ(kPaintInvalidationBorderBoxChange, |
| 181 (*raster_invalidations)[1].reason); | 179 (*raster_invalidations)[1].reason); |
| 182 GetDocument().View()->SetTracksPaintInvalidations(false); | 180 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 183 } | 181 } |
| 184 | 182 |
| 185 TEST_P(BoxPaintInvalidatorTest, SubpixelWithinPixelsChange) { | 183 TEST_P(BoxPaintInvalidatorTest, SubpixelWithinPixelsChange) { |
| 186 ScopedSlimmingPaintInvalidationForTest scoped_slimming_paint_invalidation( | 184 ScopedSlimmingPaintInvalidationForTest scoped_slimming_paint_invalidation( |
| 187 true); | 185 true); |
| 188 | 186 |
| 189 Element* target = GetDocument().getElementById("target"); | 187 Element* target = GetDocument().getElementById("target"); |
| 190 LayoutObject* target_object = target->GetLayoutObject(); | 188 LayoutObject* target_object = target->GetLayoutObject(); |
| 191 EXPECT_EQ(LayoutRect(0, 0, 70, 140), target_object->VisualRect()); | 189 EXPECT_EQ(LayoutRect(0, 0, 70, 140), target_object->VisualRect()); |
| 192 | 190 |
| 193 GetDocument().View()->SetTracksPaintInvalidations(true); | 191 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 194 target->setAttribute(HTMLNames::styleAttr, | 192 target->setAttribute(HTMLNames::styleAttr, |
| 195 "margin-top: 0.6px; width: 50px; height: 99.3px"); | 193 "margin-top: 0.6px; width: 50px; height: 99.3px"); |
| 196 GetDocument().View()->UpdateAllLifecyclePhases(); | 194 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 197 EXPECT_EQ(LayoutRect(LayoutUnit(), LayoutUnit(0.6), LayoutUnit(70), | 195 EXPECT_EQ(LayoutRect(LayoutUnit(), LayoutUnit(0.6), LayoutUnit(70), |
| 198 LayoutUnit(139.3)), | 196 LayoutUnit(139.3)), |
| 199 target_object->VisualRect()); | 197 target_object->VisualRect()); |
| 200 const auto* raster_invalidations = | 198 const auto* raster_invalidations = |
| 201 &GetRasterInvalidationTracking()->tracked_raster_invalidations; | 199 &GetRasterInvalidationTracking()->invalidations; |
| 202 ASSERT_EQ(1u, raster_invalidations->size()); | 200 ASSERT_EQ(1u, raster_invalidations->size()); |
| 203 EXPECT_EQ(IntRect(0, 0, 70, 140), (*raster_invalidations)[0].rect); | 201 EXPECT_EQ(IntRect(0, 0, 70, 140), (*raster_invalidations)[0].rect); |
| 204 EXPECT_EQ(kPaintInvalidationBoundsChange, (*raster_invalidations)[0].reason); | 202 EXPECT_EQ(kPaintInvalidationBoundsChange, (*raster_invalidations)[0].reason); |
| 205 GetDocument().View()->SetTracksPaintInvalidations(false); | 203 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 206 | 204 |
| 207 GetDocument().View()->SetTracksPaintInvalidations(true); | 205 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 208 target->setAttribute(HTMLNames::styleAttr, | 206 target->setAttribute(HTMLNames::styleAttr, |
| 209 "margin-top: 0.6px; width: 49.3px; height: 98.5px"); | 207 "margin-top: 0.6px; width: 49.3px; height: 98.5px"); |
| 210 GetDocument().View()->UpdateAllLifecyclePhases(); | 208 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 211 EXPECT_EQ(LayoutRect(LayoutUnit(), LayoutUnit(0.6), LayoutUnit(69.3), | 209 EXPECT_EQ(LayoutRect(LayoutUnit(), LayoutUnit(0.6), LayoutUnit(69.3), |
| 212 LayoutUnit(138.5)), | 210 LayoutUnit(138.5)), |
| 213 target_object->VisualRect()); | 211 target_object->VisualRect()); |
| 214 raster_invalidations = | 212 raster_invalidations = &GetRasterInvalidationTracking()->invalidations; |
| 215 &GetRasterInvalidationTracking()->tracked_raster_invalidations; | |
| 216 ASSERT_EQ(2u, raster_invalidations->size()); | 213 ASSERT_EQ(2u, raster_invalidations->size()); |
| 217 EXPECT_EQ(IntRect(59, 0, 11, 140), (*raster_invalidations)[0].rect); | 214 EXPECT_EQ(IntRect(59, 0, 11, 140), (*raster_invalidations)[0].rect); |
| 218 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[0].reason); | 215 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[0].reason); |
| 219 EXPECT_EQ(IntRect(0, 119, 70, 21), (*raster_invalidations)[1].rect); | 216 EXPECT_EQ(IntRect(0, 119, 70, 21), (*raster_invalidations)[1].rect); |
| 220 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[1].reason); | 217 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[1].reason); |
| 221 GetDocument().View()->SetTracksPaintInvalidations(false); | 218 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 222 } | 219 } |
| 223 | 220 |
| 224 TEST_P(BoxPaintInvalidatorTest, ResizeRotated) { | 221 TEST_P(BoxPaintInvalidatorTest, ResizeRotated) { |
| 225 ScopedSlimmingPaintInvalidationForTest scoped_slimming_paint_invalidation( | 222 ScopedSlimmingPaintInvalidationForTest scoped_slimming_paint_invalidation( |
| 226 true); | 223 true); |
| 227 | 224 |
| 228 Element* target = GetDocument().getElementById("target"); | 225 Element* target = GetDocument().getElementById("target"); |
| 229 target->setAttribute(HTMLNames::styleAttr, "transform: rotate(45deg)"); | 226 target->setAttribute(HTMLNames::styleAttr, "transform: rotate(45deg)"); |
| 230 GetDocument().View()->UpdateAllLifecyclePhases(); | 227 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 231 | 228 |
| 232 // Should do full invalidation a rotated object is resized. | 229 // Should do full invalidation a rotated object is resized. |
| 233 GetDocument().View()->SetTracksPaintInvalidations(true); | 230 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 234 target->setAttribute(HTMLNames::styleAttr, | 231 target->setAttribute(HTMLNames::styleAttr, |
| 235 "transform: rotate(45deg); width: 200px"); | 232 "transform: rotate(45deg); width: 200px"); |
| 236 GetDocument().View()->UpdateAllLifecyclePhases(); | 233 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 237 const auto* raster_invalidations = | 234 const auto* raster_invalidations = |
| 238 &GetRasterInvalidationTracking()->tracked_raster_invalidations; | 235 &GetRasterInvalidationTracking()->invalidations; |
| 239 ASSERT_EQ(1u, raster_invalidations->size()); | 236 ASSERT_EQ(1u, raster_invalidations->size()); |
| 240 EXPECT_EQ(IntRect(-99, 0, 255, 255), (*raster_invalidations)[0].rect); | 237 EXPECT_EQ(IntRect(-99, 0, 255, 255), (*raster_invalidations)[0].rect); |
| 241 EXPECT_EQ(kPaintInvalidationBorderBoxChange, | 238 EXPECT_EQ(kPaintInvalidationBorderBoxChange, |
| 242 (*raster_invalidations)[0].reason); | 239 (*raster_invalidations)[0].reason); |
| 243 GetDocument().View()->SetTracksPaintInvalidations(false); | 240 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 244 } | 241 } |
| 245 | 242 |
| 246 TEST_P(BoxPaintInvalidatorTest, ResizeRotatedChild) { | 243 TEST_P(BoxPaintInvalidatorTest, ResizeRotatedChild) { |
| 247 ScopedSlimmingPaintInvalidationForTest scoped_slimming_paint_invalidation( | 244 ScopedSlimmingPaintInvalidationForTest scoped_slimming_paint_invalidation( |
| 248 true); | 245 true); |
| 249 | 246 |
| 250 Element* target = GetDocument().getElementById("target"); | 247 Element* target = GetDocument().getElementById("target"); |
| 251 target->setAttribute(HTMLNames::styleAttr, | 248 target->setAttribute(HTMLNames::styleAttr, |
| 252 "transform: rotate(45deg); width: 200px"); | 249 "transform: rotate(45deg); width: 200px"); |
| 253 target->setInnerHTML( | 250 target->setInnerHTML( |
| 254 "<div id=child style='width: 50px; height: 50px; background: " | 251 "<div id=child style='width: 50px; height: 50px; background: " |
| 255 "red'></div>"); | 252 "red'></div>"); |
| 256 GetDocument().View()->UpdateAllLifecyclePhases(); | 253 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 257 Element* child = GetDocument().getElementById("child"); | 254 Element* child = GetDocument().getElementById("child"); |
| 258 | 255 |
| 259 // Should do full invalidation a rotated object is resized. | 256 // Should do full invalidation a rotated object is resized. |
| 260 GetDocument().View()->SetTracksPaintInvalidations(true); | 257 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 261 child->setAttribute(HTMLNames::styleAttr, | 258 child->setAttribute(HTMLNames::styleAttr, |
| 262 "width: 100px; height: 50px; background: red"); | 259 "width: 100px; height: 50px; background: red"); |
| 263 GetDocument().View()->UpdateAllLifecyclePhases(); | 260 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 264 const auto* raster_invalidations = | 261 const auto* raster_invalidations = |
| 265 &GetRasterInvalidationTracking()->tracked_raster_invalidations; | 262 &GetRasterInvalidationTracking()->invalidations; |
| 266 ASSERT_EQ(1u, raster_invalidations->size()); | 263 ASSERT_EQ(1u, raster_invalidations->size()); |
| 267 EXPECT_EQ(IntRect(-43, 21, 107, 107), (*raster_invalidations)[0].rect); | 264 EXPECT_EQ(IntRect(-43, 21, 107, 107), (*raster_invalidations)[0].rect); |
| 268 EXPECT_EQ(kPaintInvalidationBorderBoxChange, | 265 EXPECT_EQ(kPaintInvalidationBorderBoxChange, |
| 269 (*raster_invalidations)[0].reason); | 266 (*raster_invalidations)[0].reason); |
| 270 GetDocument().View()->SetTracksPaintInvalidations(false); | 267 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 271 } | 268 } |
| 272 | 269 |
| 273 TEST_P(BoxPaintInvalidatorTest, CompositedLayoutViewResize) { | 270 TEST_P(BoxPaintInvalidatorTest, CompositedLayoutViewResize) { |
| 274 EnableCompositing(); | 271 EnableCompositing(); |
| 275 Element* target = GetDocument().getElementById("target"); | 272 Element* target = GetDocument().getElementById("target"); |
| 276 target->setAttribute(HTMLNames::classAttr, ""); | 273 target->setAttribute(HTMLNames::classAttr, ""); |
| 277 target->setAttribute(HTMLNames::styleAttr, "height: 2000px"); | 274 target->setAttribute(HTMLNames::styleAttr, "height: 2000px"); |
| 278 GetDocument().View()->UpdateAllLifecyclePhases(); | 275 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 279 | 276 |
| 280 // Resize the content. | 277 // Resize the content. |
| 281 GetDocument().View()->SetTracksPaintInvalidations(true); | 278 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 282 target->setAttribute(HTMLNames::styleAttr, "height: 3000px"); | 279 target->setAttribute(HTMLNames::styleAttr, "height: 3000px"); |
| 283 GetDocument().View()->UpdateAllLifecyclePhases(); | 280 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 284 const auto& raster_invalidations = | 281 const auto& raster_invalidations = |
| 285 GetRasterInvalidationTracking()->tracked_raster_invalidations; | 282 GetRasterInvalidationTracking()->invalidations; |
| 286 ASSERT_EQ(1u, raster_invalidations.size()); | 283 ASSERT_EQ(1u, raster_invalidations.size()); |
| 287 EXPECT_EQ(IntRect(0, 2000, 800, 1000), raster_invalidations[0].rect); | 284 EXPECT_EQ(IntRect(0, 2000, 800, 1000), raster_invalidations[0].rect); |
| 288 EXPECT_EQ(static_cast<const DisplayItemClient*>(&GetLayoutView()), | 285 EXPECT_EQ(static_cast<const DisplayItemClient*>(&GetLayoutView()), |
| 289 raster_invalidations[0].client); | 286 raster_invalidations[0].client); |
| 290 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { | 287 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { |
| 291 EXPECT_EQ(kPaintInvalidationBackgroundOnScrollingContentsLayer, | 288 EXPECT_EQ(kPaintInvalidationBackgroundOnScrollingContentsLayer, |
| 292 raster_invalidations[0].reason); | 289 raster_invalidations[0].reason); |
| 293 } else { | 290 } else { |
| 294 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[0].reason); | 291 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[0].reason); |
| 295 } | 292 } |
| (...skipping 15 matching lines...) Expand all Loading... |
| 311 target->setAttribute(HTMLNames::classAttr, ""); | 308 target->setAttribute(HTMLNames::classAttr, ""); |
| 312 target->setAttribute(HTMLNames::styleAttr, "height: 2000px"); | 309 target->setAttribute(HTMLNames::styleAttr, "height: 2000px"); |
| 313 GetDocument().View()->UpdateAllLifecyclePhases(); | 310 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 314 | 311 |
| 315 // Resize the content. | 312 // Resize the content. |
| 316 GetDocument().View()->SetTracksPaintInvalidations(true); | 313 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 317 target->setAttribute(HTMLNames::styleAttr, "height: 3000px"); | 314 target->setAttribute(HTMLNames::styleAttr, "height: 3000px"); |
| 318 GetDocument().View()->UpdateAllLifecyclePhases(); | 315 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 319 | 316 |
| 320 const auto& raster_invalidations = | 317 const auto& raster_invalidations = |
| 321 GetRasterInvalidationTracking()->tracked_raster_invalidations; | 318 GetRasterInvalidationTracking()->invalidations; |
| 322 ASSERT_EQ(1u, raster_invalidations.size()); | 319 ASSERT_EQ(1u, raster_invalidations.size()); |
| 323 EXPECT_EQ(IntRect(0, 0, 800, 3000), raster_invalidations[0].rect); | 320 EXPECT_EQ(IntRect(0, 0, 800, 3000), raster_invalidations[0].rect); |
| 324 EXPECT_EQ(static_cast<const DisplayItemClient*>(&GetLayoutView()), | 321 EXPECT_EQ(static_cast<const DisplayItemClient*>(&GetLayoutView()), |
| 325 raster_invalidations[0].client); | 322 raster_invalidations[0].client); |
| 326 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { | 323 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { |
| 327 EXPECT_EQ(kPaintInvalidationBackgroundOnScrollingContentsLayer, | 324 EXPECT_EQ(kPaintInvalidationBackgroundOnScrollingContentsLayer, |
| 328 raster_invalidations[0].reason); | 325 raster_invalidations[0].reason); |
| 329 } else { | 326 } else { |
| 330 EXPECT_EQ(kPaintInvalidationLayoutOverflowBoxChange, | 327 EXPECT_EQ(kPaintInvalidationLayoutOverflowBoxChange, |
| 331 raster_invalidations[0].reason); | 328 raster_invalidations[0].reason); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 366 GetDocument().View()->UpdateAllLifecyclePhases(); | 363 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 367 // No invalidation because the changed part of layout overflow is clipped. | 364 // No invalidation because the changed part of layout overflow is clipped. |
| 368 EXPECT_FALSE(GetRasterInvalidationTracking()); | 365 EXPECT_FALSE(GetRasterInvalidationTracking()); |
| 369 GetDocument().View()->SetTracksPaintInvalidations(false); | 366 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 370 | 367 |
| 371 // Resize the iframe. | 368 // Resize the iframe. |
| 372 GetDocument().View()->SetTracksPaintInvalidations(true); | 369 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 373 iframe->setAttribute(HTMLNames::styleAttr, "height: 200px"); | 370 iframe->setAttribute(HTMLNames::styleAttr, "height: 200px"); |
| 374 GetDocument().View()->UpdateAllLifecyclePhases(); | 371 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 375 const auto& raster_invalidations = | 372 const auto& raster_invalidations = |
| 376 GetRasterInvalidationTracking()->tracked_raster_invalidations; | 373 GetRasterInvalidationTracking()->invalidations; |
| 377 ASSERT_EQ(2u, raster_invalidations.size()); | 374 ASSERT_EQ(2u, raster_invalidations.size()); |
| 378 EXPECT_EQ(IntRect(0, 100, 100, 100), raster_invalidations[0].rect); | 375 EXPECT_EQ(IntRect(0, 100, 100, 100), raster_invalidations[0].rect); |
| 379 EXPECT_EQ(static_cast<const DisplayItemClient*>(iframe->GetLayoutObject()), | 376 EXPECT_EQ(static_cast<const DisplayItemClient*>(iframe->GetLayoutObject()), |
| 380 raster_invalidations[0].client); | 377 raster_invalidations[0].client); |
| 381 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[0].reason); | 378 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[0].reason); |
| 382 EXPECT_EQ( | 379 EXPECT_EQ( |
| 383 static_cast<const DisplayItemClient*>(content->GetLayoutObject()->View()), | 380 static_cast<const DisplayItemClient*>(content->GetLayoutObject()->View()), |
| 384 raster_invalidations[1].client); | 381 raster_invalidations[1].client); |
| 385 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { | 382 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { |
| 386 // TODO(skobes): Treat LayoutView in the same way as normal objects having | 383 // TODO(skobes): Treat LayoutView in the same way as normal objects having |
| (...skipping 29 matching lines...) Expand all Loading... |
| 416 Element* content = ChildDocument().getElementById("content"); | 413 Element* content = ChildDocument().getElementById("content"); |
| 417 LayoutView* frame_layout_view = content->GetLayoutObject()->View(); | 414 LayoutView* frame_layout_view = content->GetLayoutObject()->View(); |
| 418 EXPECT_EQ(GetLayoutView(), | 415 EXPECT_EQ(GetLayoutView(), |
| 419 content->GetLayoutObject()->ContainerForPaintInvalidation()); | 416 content->GetLayoutObject()->ContainerForPaintInvalidation()); |
| 420 | 417 |
| 421 // Resize the content. | 418 // Resize the content. |
| 422 GetDocument().View()->SetTracksPaintInvalidations(true); | 419 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 423 content->setAttribute(HTMLNames::styleAttr, "height: 500px"); | 420 content->setAttribute(HTMLNames::styleAttr, "height: 500px"); |
| 424 GetDocument().View()->UpdateAllLifecyclePhases(); | 421 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 425 const auto* raster_invalidations = | 422 const auto* raster_invalidations = |
| 426 &GetRasterInvalidationTracking()->tracked_raster_invalidations; | 423 &GetRasterInvalidationTracking()->invalidations; |
| 427 ASSERT_EQ(1u, raster_invalidations->size()); | 424 ASSERT_EQ(1u, raster_invalidations->size()); |
| 428 EXPECT_EQ(IntRect(0, 0, 100, 100), (*raster_invalidations)[0].rect); | 425 EXPECT_EQ(IntRect(0, 0, 100, 100), (*raster_invalidations)[0].rect); |
| 429 EXPECT_EQ(static_cast<const DisplayItemClient*>(frame_layout_view), | 426 EXPECT_EQ(static_cast<const DisplayItemClient*>(frame_layout_view), |
| 430 (*raster_invalidations)[0].client); | 427 (*raster_invalidations)[0].client); |
| 431 EXPECT_EQ(kPaintInvalidationLayoutOverflowBoxChange, | 428 EXPECT_EQ(kPaintInvalidationLayoutOverflowBoxChange, |
| 432 (*raster_invalidations)[0].reason); | 429 (*raster_invalidations)[0].reason); |
| 433 GetDocument().View()->SetTracksPaintInvalidations(false); | 430 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 434 | 431 |
| 435 // Resize the iframe. | 432 // Resize the iframe. |
| 436 GetDocument().View()->SetTracksPaintInvalidations(true); | 433 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 437 iframe->setAttribute(HTMLNames::styleAttr, "height: 200px"); | 434 iframe->setAttribute(HTMLNames::styleAttr, "height: 200px"); |
| 438 GetDocument().View()->UpdateAllLifecyclePhases(); | 435 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 439 raster_invalidations = | 436 raster_invalidations = &GetRasterInvalidationTracking()->invalidations; |
| 440 &GetRasterInvalidationTracking()->tracked_raster_invalidations; | |
| 441 ASSERT_EQ(2u, raster_invalidations->size()); | 437 ASSERT_EQ(2u, raster_invalidations->size()); |
| 442 EXPECT_EQ(IntRect(0, 100, 100, 100), (*raster_invalidations)[0].rect); | 438 EXPECT_EQ(IntRect(0, 100, 100, 100), (*raster_invalidations)[0].rect); |
| 443 EXPECT_EQ(static_cast<const DisplayItemClient*>(iframe->GetLayoutObject()), | 439 EXPECT_EQ(static_cast<const DisplayItemClient*>(iframe->GetLayoutObject()), |
| 444 (*raster_invalidations)[0].client); | 440 (*raster_invalidations)[0].client); |
| 445 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[0].reason); | 441 EXPECT_EQ(kPaintInvalidationIncremental, (*raster_invalidations)[0].reason); |
| 446 EXPECT_EQ(static_cast<const DisplayItemClient*>(frame_layout_view), | 442 EXPECT_EQ(static_cast<const DisplayItemClient*>(frame_layout_view), |
| 447 (*raster_invalidations)[1].client); | 443 (*raster_invalidations)[1].client); |
| 448 EXPECT_EQ(IntRect(0, 0, 100, 200), (*raster_invalidations)[1].rect); | 444 EXPECT_EQ(IntRect(0, 0, 100, 200), (*raster_invalidations)[1].rect); |
| 449 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { | 445 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { |
| 450 // TODO(skobes): Treat LayoutView in the same way as normal objects having | 446 // TODO(skobes): Treat LayoutView in the same way as normal objects having |
| (...skipping 24 matching lines...) Expand all Loading... |
| 475 GetDocument().View()->UpdateAllLifecyclePhases(); | 471 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 476 LayoutBoxModelObject* target_obj = | 472 LayoutBoxModelObject* target_obj = |
| 477 ToLayoutBoxModelObject(target->GetLayoutObject()); | 473 ToLayoutBoxModelObject(target->GetLayoutObject()); |
| 478 GraphicsLayer* container_layer = | 474 GraphicsLayer* container_layer = |
| 479 target_obj->Layer()->GraphicsLayerBacking(target_obj); | 475 target_obj->Layer()->GraphicsLayerBacking(target_obj); |
| 480 GraphicsLayer* contents_layer = target_obj->Layer()->GraphicsLayerBacking(); | 476 GraphicsLayer* contents_layer = target_obj->Layer()->GraphicsLayerBacking(); |
| 481 // No invalidation on the container layer. | 477 // No invalidation on the container layer. |
| 482 EXPECT_FALSE(container_layer->GetRasterInvalidationTracking()); | 478 EXPECT_FALSE(container_layer->GetRasterInvalidationTracking()); |
| 483 // Incremental invalidation of background on contents layer. | 479 // Incremental invalidation of background on contents layer. |
| 484 const auto& contents_raster_invalidations = | 480 const auto& contents_raster_invalidations = |
| 485 contents_layer->GetRasterInvalidationTracking() | 481 contents_layer->GetRasterInvalidationTracking()->invalidations; |
| 486 ->tracked_raster_invalidations; | |
| 487 ASSERT_EQ(1u, contents_raster_invalidations.size()); | 482 ASSERT_EQ(1u, contents_raster_invalidations.size()); |
| 488 EXPECT_EQ(IntRect(0, 500, 500, 500), contents_raster_invalidations[0].rect); | 483 EXPECT_EQ(IntRect(0, 500, 500, 500), contents_raster_invalidations[0].rect); |
| 489 EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()), | 484 EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()), |
| 490 contents_raster_invalidations[0].client); | 485 contents_raster_invalidations[0].client); |
| 491 EXPECT_EQ(kPaintInvalidationBackgroundOnScrollingContentsLayer, | 486 EXPECT_EQ(kPaintInvalidationBackgroundOnScrollingContentsLayer, |
| 492 contents_raster_invalidations[0].reason); | 487 contents_raster_invalidations[0].reason); |
| 493 GetDocument().View()->SetTracksPaintInvalidations(false); | 488 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 494 | 489 |
| 495 // Resize the container. | 490 // Resize the container. |
| 496 GetDocument().View()->SetTracksPaintInvalidations(true); | 491 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 497 target->setAttribute(HTMLNames::styleAttr, | 492 target->setAttribute(HTMLNames::styleAttr, |
| 498 "will-change: transform; height: 200px"); | 493 "will-change: transform; height: 200px"); |
| 499 GetDocument().View()->UpdateAllLifecyclePhases(); | 494 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 500 // No invalidation on the contents layer. | 495 // No invalidation on the contents layer. |
| 501 EXPECT_FALSE(contents_layer->GetRasterInvalidationTracking()); | 496 EXPECT_FALSE(contents_layer->GetRasterInvalidationTracking()); |
| 502 // Incremental invalidation on the container layer. | 497 // Incremental invalidation on the container layer. |
| 503 const auto& container_raster_invalidations = | 498 const auto& container_raster_invalidations = |
| 504 container_layer->GetRasterInvalidationTracking() | 499 container_layer->GetRasterInvalidationTracking()->invalidations; |
| 505 ->tracked_raster_invalidations; | |
| 506 ASSERT_EQ(1u, container_raster_invalidations.size()); | 500 ASSERT_EQ(1u, container_raster_invalidations.size()); |
| 507 EXPECT_EQ(IntRect(0, 120, 70, 120), container_raster_invalidations[0].rect); | 501 EXPECT_EQ(IntRect(0, 120, 70, 120), container_raster_invalidations[0].rect); |
| 508 EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()), | 502 EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()), |
| 509 container_raster_invalidations[0].client); | 503 container_raster_invalidations[0].client); |
| 510 EXPECT_EQ(kPaintInvalidationIncremental, | 504 EXPECT_EQ(kPaintInvalidationIncremental, |
| 511 container_raster_invalidations[0].reason); | 505 container_raster_invalidations[0].reason); |
| 512 GetDocument().View()->SetTracksPaintInvalidations(false); | 506 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 513 } | 507 } |
| 514 | 508 |
| 515 TEST_P(BoxPaintInvalidatorTest, | 509 TEST_P(BoxPaintInvalidatorTest, |
| (...skipping 17 matching lines...) Expand all Loading... |
| 533 LayoutBoxModelObject* target_obj = | 527 LayoutBoxModelObject* target_obj = |
| 534 ToLayoutBoxModelObject(target->GetLayoutObject()); | 528 ToLayoutBoxModelObject(target->GetLayoutObject()); |
| 535 GraphicsLayer* container_layer = | 529 GraphicsLayer* container_layer = |
| 536 target_obj->Layer()->GraphicsLayerBacking(target_obj); | 530 target_obj->Layer()->GraphicsLayerBacking(target_obj); |
| 537 GraphicsLayer* contents_layer = target_obj->Layer()->GraphicsLayerBacking(); | 531 GraphicsLayer* contents_layer = target_obj->Layer()->GraphicsLayerBacking(); |
| 538 // No invalidation on the container layer. | 532 // No invalidation on the container layer. |
| 539 EXPECT_FALSE(container_layer->GetRasterInvalidationTracking()); | 533 EXPECT_FALSE(container_layer->GetRasterInvalidationTracking()); |
| 540 // Full invalidation of background on contents layer because the gradient | 534 // Full invalidation of background on contents layer because the gradient |
| 541 // background is resized. | 535 // background is resized. |
| 542 const auto& contents_raster_invalidations = | 536 const auto& contents_raster_invalidations = |
| 543 contents_layer->GetRasterInvalidationTracking() | 537 contents_layer->GetRasterInvalidationTracking()->invalidations; |
| 544 ->tracked_raster_invalidations; | |
| 545 ASSERT_EQ(1u, contents_raster_invalidations.size()); | 538 ASSERT_EQ(1u, contents_raster_invalidations.size()); |
| 546 EXPECT_EQ(IntRect(0, 0, 500, 1000), contents_raster_invalidations[0].rect); | 539 EXPECT_EQ(IntRect(0, 0, 500, 1000), contents_raster_invalidations[0].rect); |
| 547 EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()), | 540 EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()), |
| 548 contents_raster_invalidations[0].client); | 541 contents_raster_invalidations[0].client); |
| 549 EXPECT_EQ(kPaintInvalidationBackgroundOnScrollingContentsLayer, | 542 EXPECT_EQ(kPaintInvalidationBackgroundOnScrollingContentsLayer, |
| 550 contents_raster_invalidations[0].reason); | 543 contents_raster_invalidations[0].reason); |
| 551 GetDocument().View()->SetTracksPaintInvalidations(false); | 544 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 552 | 545 |
| 553 // Resize the container. | 546 // Resize the container. |
| 554 GetDocument().View()->SetTracksPaintInvalidations(true); | 547 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 555 target->setAttribute(HTMLNames::styleAttr, | 548 target->setAttribute(HTMLNames::styleAttr, |
| 556 "will-change: transform; height: 200px"); | 549 "will-change: transform; height: 200px"); |
| 557 GetDocument().View()->UpdateAllLifecyclePhases(); | 550 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 558 EXPECT_FALSE(contents_layer->GetRasterInvalidationTracking()); | 551 EXPECT_FALSE(contents_layer->GetRasterInvalidationTracking()); |
| 559 // Full invalidation on the container layer. | 552 // Full invalidation on the container layer. |
| 560 const auto& container_raster_invalidations = | 553 const auto& container_raster_invalidations = |
| 561 container_layer->GetRasterInvalidationTracking() | 554 container_layer->GetRasterInvalidationTracking()->invalidations; |
| 562 ->tracked_raster_invalidations; | |
| 563 ASSERT_EQ(1u, container_raster_invalidations.size()); | 555 ASSERT_EQ(1u, container_raster_invalidations.size()); |
| 564 EXPECT_EQ(IntRect(0, 0, 70, 240), container_raster_invalidations[0].rect); | 556 EXPECT_EQ(IntRect(0, 0, 70, 240), container_raster_invalidations[0].rect); |
| 565 EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()), | 557 EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()), |
| 566 container_raster_invalidations[0].client); | 558 container_raster_invalidations[0].client); |
| 567 EXPECT_EQ(kPaintInvalidationBorderBoxChange, | 559 EXPECT_EQ(kPaintInvalidationBorderBoxChange, |
| 568 container_raster_invalidations[0].reason); | 560 container_raster_invalidations[0].reason); |
| 569 GetDocument().View()->SetTracksPaintInvalidations(false); | 561 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 570 } | 562 } |
| 571 | 563 |
| 572 TEST_P(BoxPaintInvalidatorTest, NonCompositedBackgroundAttachmentLocalResize) { | 564 TEST_P(BoxPaintInvalidatorTest, NonCompositedBackgroundAttachmentLocalResize) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 585 child->setAttribute(HTMLNames::styleAttr, "width: 500px; height: 1000px"); | 577 child->setAttribute(HTMLNames::styleAttr, "width: 500px; height: 1000px"); |
| 586 GetDocument().View()->UpdateAllLifecyclePhases(); | 578 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 587 // No invalidation because the changed part is invisible. | 579 // No invalidation because the changed part is invisible. |
| 588 EXPECT_FALSE(GetRasterInvalidationTracking()); | 580 EXPECT_FALSE(GetRasterInvalidationTracking()); |
| 589 | 581 |
| 590 // Resize the container. | 582 // Resize the container. |
| 591 GetDocument().View()->SetTracksPaintInvalidations(true); | 583 GetDocument().View()->SetTracksPaintInvalidations(true); |
| 592 target->setAttribute(HTMLNames::styleAttr, "height: 200px"); | 584 target->setAttribute(HTMLNames::styleAttr, "height: 200px"); |
| 593 GetDocument().View()->UpdateAllLifecyclePhases(); | 585 GetDocument().View()->UpdateAllLifecyclePhases(); |
| 594 const auto& raster_invalidations = | 586 const auto& raster_invalidations = |
| 595 GetRasterInvalidationTracking()->tracked_raster_invalidations; | 587 GetRasterInvalidationTracking()->invalidations; |
| 596 ASSERT_EQ(1u, raster_invalidations.size()); | 588 ASSERT_EQ(1u, raster_invalidations.size()); |
| 597 EXPECT_EQ(IntRect(0, 120, 70, 120), raster_invalidations[0].rect); | 589 EXPECT_EQ(IntRect(0, 120, 70, 120), raster_invalidations[0].rect); |
| 598 EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()), | 590 EXPECT_EQ(static_cast<const DisplayItemClient*>(target->GetLayoutObject()), |
| 599 raster_invalidations[0].client); | 591 raster_invalidations[0].client); |
| 600 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[0].reason); | 592 EXPECT_EQ(kPaintInvalidationIncremental, raster_invalidations[0].reason); |
| 601 GetDocument().View()->SetTracksPaintInvalidations(false); | 593 GetDocument().View()->SetTracksPaintInvalidations(false); |
| 602 } | 594 } |
| 603 | 595 |
| 604 } // namespace blink | 596 } // namespace blink |
| OLD | NEW |