| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "platform/graphics/paint/PaintController.h" | 5 #include "platform/graphics/paint/PaintController.h" |
| 6 | 6 |
| 7 #include "platform/RuntimeEnabledFeatures.h" | 7 #include "platform/RuntimeEnabledFeatures.h" |
| 8 #include "platform/graphics/GraphicsContext.h" | 8 #include "platform/graphics/GraphicsContext.h" |
| 9 #include "platform/graphics/paint/CachedDisplayItem.h" | 9 #include "platform/graphics/paint/CachedDisplayItem.h" |
| 10 #include "platform/graphics/paint/ClipPathRecorder.h" | 10 #include "platform/graphics/paint/ClipPathRecorder.h" |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 300, 300
)); | 120 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 300, 300
)); |
| 121 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 200, 20
0)); | 121 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 200, 20
0)); |
| 122 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 300, 300
)); | 122 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 300, 300
)); |
| 123 paintController().commitNewDisplayItems(); | 123 paintController().commitNewDisplayItems(); |
| 124 | 124 |
| 125 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 3, | 125 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 3, |
| 126 TestDisplayItem(first, backgroundDrawingType), | 126 TestDisplayItem(first, backgroundDrawingType), |
| 127 TestDisplayItem(second, backgroundDrawingType), | 127 TestDisplayItem(second, backgroundDrawingType), |
| 128 TestDisplayItem(first, foregroundDrawingType)); | 128 TestDisplayItem(first, foregroundDrawingType)); |
| 129 | 129 |
| 130 paintController().invalidate(second, PaintInvalidationFull, nullptr); | 130 paintController().invalidate(second); |
| 131 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 300, 300
)); | 131 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 300, 300
)); |
| 132 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 300, 300
)); | 132 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 300, 300
)); |
| 133 paintController().commitNewDisplayItems(); | 133 paintController().commitNewDisplayItems(); |
| 134 | 134 |
| 135 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, | 135 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, |
| 136 TestDisplayItem(first, backgroundDrawingType), | 136 TestDisplayItem(first, backgroundDrawingType), |
| 137 TestDisplayItem(first, foregroundDrawingType)); | 137 TestDisplayItem(first, foregroundDrawingType)); |
| 138 } | 138 } |
| 139 | 139 |
| 140 TEST_F(PaintControllerTest, UpdateSwapOrder) | 140 TEST_F(PaintControllerTest, UpdateSwapOrder) |
| 141 { | 141 { |
| 142 TestDisplayItemClient first("first"); | 142 TestDisplayItemClient first("first"); |
| 143 TestDisplayItemClient second("second"); | 143 TestDisplayItemClient second("second"); |
| 144 TestDisplayItemClient unaffected("unaffected"); | 144 TestDisplayItemClient unaffected("unaffected"); |
| 145 GraphicsContext context(paintController()); | 145 GraphicsContext context(paintController()); |
| 146 | 146 |
| 147 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 100, 100
)); | 147 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 100, 100
)); |
| 148 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 50, 200
)); | 148 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 50, 200
)); |
| 149 drawRect(context, unaffected, backgroundDrawingType, FloatRect(300, 300, 10,
10)); | 149 drawRect(context, unaffected, backgroundDrawingType, FloatRect(300, 300, 10,
10)); |
| 150 paintController().commitNewDisplayItems(); | 150 paintController().commitNewDisplayItems(); |
| 151 | 151 |
| 152 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 3, | 152 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 3, |
| 153 TestDisplayItem(first, backgroundDrawingType), | 153 TestDisplayItem(first, backgroundDrawingType), |
| 154 TestDisplayItem(second, backgroundDrawingType), | 154 TestDisplayItem(second, backgroundDrawingType), |
| 155 TestDisplayItem(unaffected, backgroundDrawingType)); | 155 TestDisplayItem(unaffected, backgroundDrawingType)); |
| 156 | 156 |
| 157 paintController().invalidate(second, PaintInvalidationFull, nullptr); | 157 paintController().invalidate(second); |
| 158 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 50, 200
)); | 158 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 50, 200
)); |
| 159 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 100, 100
)); | 159 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 100, 100
)); |
| 160 drawRect(context, unaffected, backgroundDrawingType, FloatRect(300, 300, 10,
10)); | 160 drawRect(context, unaffected, backgroundDrawingType, FloatRect(300, 300, 10,
10)); |
| 161 paintController().commitNewDisplayItems(); | 161 paintController().commitNewDisplayItems(); |
| 162 | 162 |
| 163 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 3, | 163 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 3, |
| 164 TestDisplayItem(second, backgroundDrawingType), | 164 TestDisplayItem(second, backgroundDrawingType), |
| 165 TestDisplayItem(first, backgroundDrawingType), | 165 TestDisplayItem(first, backgroundDrawingType), |
| 166 TestDisplayItem(unaffected, backgroundDrawingType)); | 166 TestDisplayItem(unaffected, backgroundDrawingType)); |
| 167 } | 167 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 paintController().commitNewDisplayItems(); | 208 paintController().commitNewDisplayItems(); |
| 209 | 209 |
| 210 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 6, | 210 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 6, |
| 211 TestDisplayItem(first, backgroundDrawingType), | 211 TestDisplayItem(first, backgroundDrawingType), |
| 212 TestDisplayItem(second, backgroundDrawingType), | 212 TestDisplayItem(second, backgroundDrawingType), |
| 213 TestDisplayItem(third, backgroundDrawingType), | 213 TestDisplayItem(third, backgroundDrawingType), |
| 214 TestDisplayItem(first, foregroundDrawingType), | 214 TestDisplayItem(first, foregroundDrawingType), |
| 215 TestDisplayItem(second, foregroundDrawingType), | 215 TestDisplayItem(second, foregroundDrawingType), |
| 216 TestDisplayItem(third, foregroundDrawingType)); | 216 TestDisplayItem(third, foregroundDrawingType)); |
| 217 | 217 |
| 218 paintController().invalidate(second, PaintInvalidationFull, nullptr); | 218 paintController().invalidate(second); |
| 219 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 100, 100
)); | 219 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 100, 100
)); |
| 220 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 50, 200
)); | 220 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 50, 200
)); |
| 221 drawRect(context, third, backgroundDrawingType, FloatRect(300, 100, 50, 50))
; | 221 drawRect(context, third, backgroundDrawingType, FloatRect(300, 100, 50, 50))
; |
| 222 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 100, 100
)); | 222 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 100, 100
)); |
| 223 drawRect(context, second, foregroundDrawingType, FloatRect(100, 100, 50, 200
)); | 223 drawRect(context, second, foregroundDrawingType, FloatRect(100, 100, 50, 200
)); |
| 224 drawRect(context, third, foregroundDrawingType, FloatRect(300, 100, 50, 50))
; | 224 drawRect(context, third, foregroundDrawingType, FloatRect(300, 100, 50, 50))
; |
| 225 paintController().commitNewDisplayItems(); | 225 paintController().commitNewDisplayItems(); |
| 226 | 226 |
| 227 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 6, | 227 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 6, |
| 228 TestDisplayItem(first, backgroundDrawingType), | 228 TestDisplayItem(first, backgroundDrawingType), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 240 GraphicsContext context(paintController()); | 240 GraphicsContext context(paintController()); |
| 241 | 241 |
| 242 drawRect(context, second, backgroundDrawingType, FloatRect(200, 200, 50, 50)
); | 242 drawRect(context, second, backgroundDrawingType, FloatRect(200, 200, 50, 50)
); |
| 243 drawRect(context, second, foregroundDrawingType, FloatRect(200, 200, 50, 50)
); | 243 drawRect(context, second, foregroundDrawingType, FloatRect(200, 200, 50, 50)
); |
| 244 paintController().commitNewDisplayItems(); | 244 paintController().commitNewDisplayItems(); |
| 245 | 245 |
| 246 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, | 246 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, |
| 247 TestDisplayItem(second, backgroundDrawingType), | 247 TestDisplayItem(second, backgroundDrawingType), |
| 248 TestDisplayItem(second, foregroundDrawingType)); | 248 TestDisplayItem(second, foregroundDrawingType)); |
| 249 | 249 |
| 250 paintController().invalidate(first, PaintInvalidationFull, nullptr); | 250 paintController().invalidate(first); |
| 251 paintController().invalidate(second, PaintInvalidationFull, nullptr); | 251 paintController().invalidate(second); |
| 252 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); | 252 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); |
| 253 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 150, 150
)); | 253 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 150, 150
)); |
| 254 drawRect(context, second, backgroundDrawingType, FloatRect(200, 200, 50, 50)
); | 254 drawRect(context, second, backgroundDrawingType, FloatRect(200, 200, 50, 50)
); |
| 255 drawRect(context, second, foregroundDrawingType, FloatRect(200, 200, 50, 50)
); | 255 drawRect(context, second, foregroundDrawingType, FloatRect(200, 200, 50, 50)
); |
| 256 paintController().commitNewDisplayItems(); | 256 paintController().commitNewDisplayItems(); |
| 257 | 257 |
| 258 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 4, | 258 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 4, |
| 259 TestDisplayItem(first, backgroundDrawingType), | 259 TestDisplayItem(first, backgroundDrawingType), |
| 260 TestDisplayItem(first, foregroundDrawingType), | 260 TestDisplayItem(first, foregroundDrawingType), |
| 261 TestDisplayItem(second, backgroundDrawingType), | 261 TestDisplayItem(second, backgroundDrawingType), |
| 262 TestDisplayItem(second, foregroundDrawingType)); | 262 TestDisplayItem(second, foregroundDrawingType)); |
| 263 | 263 |
| 264 paintController().invalidate(first, PaintInvalidationFull, nullptr); | 264 paintController().invalidate(first); |
| 265 drawRect(context, second, backgroundDrawingType, FloatRect(200, 200, 50, 50)
); | 265 drawRect(context, second, backgroundDrawingType, FloatRect(200, 200, 50, 50)
); |
| 266 drawRect(context, second, foregroundDrawingType, FloatRect(200, 200, 50, 50)
); | 266 drawRect(context, second, foregroundDrawingType, FloatRect(200, 200, 50, 50)
); |
| 267 paintController().commitNewDisplayItems(); | 267 paintController().commitNewDisplayItems(); |
| 268 | 268 |
| 269 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, | 269 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, |
| 270 TestDisplayItem(second, backgroundDrawingType), | 270 TestDisplayItem(second, backgroundDrawingType), |
| 271 TestDisplayItem(second, foregroundDrawingType)); | 271 TestDisplayItem(second, foregroundDrawingType)); |
| 272 } | 272 } |
| 273 | 273 |
| 274 TEST_F(PaintControllerTest, UpdateAddLastOverlap) | 274 TEST_F(PaintControllerTest, UpdateAddLastOverlap) |
| 275 { | 275 { |
| 276 TestDisplayItemClient first("first"); | 276 TestDisplayItemClient first("first"); |
| 277 TestDisplayItemClient second("second"); | 277 TestDisplayItemClient second("second"); |
| 278 GraphicsContext context(paintController()); | 278 GraphicsContext context(paintController()); |
| 279 | 279 |
| 280 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); | 280 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); |
| 281 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 150, 150
)); | 281 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 150, 150
)); |
| 282 paintController().commitNewDisplayItems(); | 282 paintController().commitNewDisplayItems(); |
| 283 | 283 |
| 284 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, | 284 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, |
| 285 TestDisplayItem(first, backgroundDrawingType), | 285 TestDisplayItem(first, backgroundDrawingType), |
| 286 TestDisplayItem(first, foregroundDrawingType)); | 286 TestDisplayItem(first, foregroundDrawingType)); |
| 287 | 287 |
| 288 paintController().invalidate(first, PaintInvalidationFull, nullptr); | 288 paintController().invalidate(first); |
| 289 paintController().invalidate(second, PaintInvalidationFull, nullptr); | 289 paintController().invalidate(second); |
| 290 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); | 290 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); |
| 291 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 150, 150
)); | 291 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 150, 150
)); |
| 292 drawRect(context, second, backgroundDrawingType, FloatRect(200, 200, 50, 50)
); | 292 drawRect(context, second, backgroundDrawingType, FloatRect(200, 200, 50, 50)
); |
| 293 drawRect(context, second, foregroundDrawingType, FloatRect(200, 200, 50, 50)
); | 293 drawRect(context, second, foregroundDrawingType, FloatRect(200, 200, 50, 50)
); |
| 294 paintController().commitNewDisplayItems(); | 294 paintController().commitNewDisplayItems(); |
| 295 | 295 |
| 296 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 4, | 296 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 4, |
| 297 TestDisplayItem(first, backgroundDrawingType), | 297 TestDisplayItem(first, backgroundDrawingType), |
| 298 TestDisplayItem(first, foregroundDrawingType), | 298 TestDisplayItem(first, foregroundDrawingType), |
| 299 TestDisplayItem(second, backgroundDrawingType), | 299 TestDisplayItem(second, backgroundDrawingType), |
| 300 TestDisplayItem(second, foregroundDrawingType)); | 300 TestDisplayItem(second, foregroundDrawingType)); |
| 301 | 301 |
| 302 paintController().invalidate(first, PaintInvalidationFull, nullptr); | 302 paintController().invalidate(first); |
| 303 paintController().invalidate(second, PaintInvalidationFull, nullptr); | 303 paintController().invalidate(second); |
| 304 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); | 304 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); |
| 305 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 150, 150
)); | 305 drawRect(context, first, foregroundDrawingType, FloatRect(100, 100, 150, 150
)); |
| 306 paintController().commitNewDisplayItems(); | 306 paintController().commitNewDisplayItems(); |
| 307 | 307 |
| 308 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, | 308 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, |
| 309 TestDisplayItem(first, backgroundDrawingType), | 309 TestDisplayItem(first, backgroundDrawingType), |
| 310 TestDisplayItem(first, foregroundDrawingType)); | 310 TestDisplayItem(first, foregroundDrawingType)); |
| 311 } | 311 } |
| 312 | 312 |
| 313 TEST_F(PaintControllerTest, UpdateClip) | 313 TEST_F(PaintControllerTest, UpdateClip) |
| 314 { | 314 { |
| 315 TestDisplayItemClient first("first"); | 315 TestDisplayItemClient first("first"); |
| 316 TestDisplayItemClient second("second"); | 316 TestDisplayItemClient second("second"); |
| 317 GraphicsContext context(paintController()); | 317 GraphicsContext context(paintController()); |
| 318 | 318 |
| 319 { | 319 { |
| 320 ClipRecorder clipRecorder(context, first, clipType, LayoutRect(1, 1, 2,
2)); | 320 ClipRecorder clipRecorder(context, first, clipType, LayoutRect(1, 1, 2,
2)); |
| 321 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150,
150)); | 321 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150,
150)); |
| 322 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 150
, 150)); | 322 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 150
, 150)); |
| 323 } | 323 } |
| 324 paintController().commitNewDisplayItems(); | 324 paintController().commitNewDisplayItems(); |
| 325 | 325 |
| 326 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 4, | 326 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 4, |
| 327 TestDisplayItem(first, clipType), | 327 TestDisplayItem(first, clipType), |
| 328 TestDisplayItem(first, backgroundDrawingType), | 328 TestDisplayItem(first, backgroundDrawingType), |
| 329 TestDisplayItem(second, backgroundDrawingType), | 329 TestDisplayItem(second, backgroundDrawingType), |
| 330 TestDisplayItem(first, DisplayItem::clipTypeToEndClipType(clipType))); | 330 TestDisplayItem(first, DisplayItem::clipTypeToEndClipType(clipType))); |
| 331 | 331 |
| 332 paintController().invalidate(first, PaintInvalidationFull, nullptr); | 332 paintController().invalidate(first); |
| 333 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); | 333 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); |
| 334 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 150, 15
0)); | 334 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 150, 15
0)); |
| 335 paintController().commitNewDisplayItems(); | 335 paintController().commitNewDisplayItems(); |
| 336 | 336 |
| 337 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, | 337 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, |
| 338 TestDisplayItem(first, backgroundDrawingType), | 338 TestDisplayItem(first, backgroundDrawingType), |
| 339 TestDisplayItem(second, backgroundDrawingType)); | 339 TestDisplayItem(second, backgroundDrawingType)); |
| 340 | 340 |
| 341 paintController().invalidate(second, PaintInvalidationFull, nullptr); | 341 paintController().invalidate(second); |
| 342 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); | 342 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); |
| 343 { | 343 { |
| 344 ClipRecorder clipRecorder(context, second, clipType, LayoutRect(1, 1, 2,
2)); | 344 ClipRecorder clipRecorder(context, second, clipType, LayoutRect(1, 1, 2,
2)); |
| 345 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 150
, 150)); | 345 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 150
, 150)); |
| 346 } | 346 } |
| 347 paintController().commitNewDisplayItems(); | 347 paintController().commitNewDisplayItems(); |
| 348 | 348 |
| 349 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 4, | 349 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 4, |
| 350 TestDisplayItem(first, backgroundDrawingType), | 350 TestDisplayItem(first, backgroundDrawingType), |
| 351 TestDisplayItem(second, clipType), | 351 TestDisplayItem(second, clipType), |
| (...skipping 12 matching lines...) Expand all Loading... |
| 364 paintController().commitNewDisplayItems(); | 364 paintController().commitNewDisplayItems(); |
| 365 | 365 |
| 366 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, | 366 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, |
| 367 TestDisplayItem(first, backgroundDrawingType), | 367 TestDisplayItem(first, backgroundDrawingType), |
| 368 TestDisplayItem(second, backgroundDrawingType)); | 368 TestDisplayItem(second, backgroundDrawingType)); |
| 369 EXPECT_TRUE(paintController().clientCacheIsValid(first)); | 369 EXPECT_TRUE(paintController().clientCacheIsValid(first)); |
| 370 EXPECT_TRUE(paintController().clientCacheIsValid(second)); | 370 EXPECT_TRUE(paintController().clientCacheIsValid(second)); |
| 371 const SkPicture* firstPicture = static_cast<const DrawingDisplayItem&>(paint
Controller().displayItemList()[0]).picture(); | 371 const SkPicture* firstPicture = static_cast<const DrawingDisplayItem&>(paint
Controller().displayItemList()[0]).picture(); |
| 372 const SkPicture* secondPicture = static_cast<const DrawingDisplayItem&>(pain
tController().displayItemList()[1]).picture(); | 372 const SkPicture* secondPicture = static_cast<const DrawingDisplayItem&>(pain
tController().displayItemList()[1]).picture(); |
| 373 | 373 |
| 374 paintController().invalidate(first, PaintInvalidationFull, nullptr); | 374 paintController().invalidate(first); |
| 375 EXPECT_FALSE(paintController().clientCacheIsValid(first)); | 375 EXPECT_FALSE(paintController().clientCacheIsValid(first)); |
| 376 EXPECT_TRUE(paintController().clientCacheIsValid(second)); | 376 EXPECT_TRUE(paintController().clientCacheIsValid(second)); |
| 377 | 377 |
| 378 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); | 378 drawRect(context, first, backgroundDrawingType, FloatRect(100, 100, 150, 150
)); |
| 379 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 150, 15
0)); | 379 drawRect(context, second, backgroundDrawingType, FloatRect(100, 100, 150, 15
0)); |
| 380 paintController().commitNewDisplayItems(); | 380 paintController().commitNewDisplayItems(); |
| 381 | 381 |
| 382 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, | 382 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, |
| 383 TestDisplayItem(first, backgroundDrawingType), | 383 TestDisplayItem(first, backgroundDrawingType), |
| 384 TestDisplayItem(second, backgroundDrawingType)); | 384 TestDisplayItem(second, backgroundDrawingType)); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 416 TestDisplayItem(container1, backgroundDrawingType), | 416 TestDisplayItem(container1, backgroundDrawingType), |
| 417 TestDisplayItem(content1, backgroundDrawingType), | 417 TestDisplayItem(content1, backgroundDrawingType), |
| 418 TestDisplayItem(content1, foregroundDrawingType), | 418 TestDisplayItem(content1, foregroundDrawingType), |
| 419 TestDisplayItem(container1, foregroundDrawingType), | 419 TestDisplayItem(container1, foregroundDrawingType), |
| 420 TestDisplayItem(container2, backgroundDrawingType), | 420 TestDisplayItem(container2, backgroundDrawingType), |
| 421 TestDisplayItem(content2, backgroundDrawingType), | 421 TestDisplayItem(content2, backgroundDrawingType), |
| 422 TestDisplayItem(content2, foregroundDrawingType), | 422 TestDisplayItem(content2, foregroundDrawingType), |
| 423 TestDisplayItem(container2, foregroundDrawingType)); | 423 TestDisplayItem(container2, foregroundDrawingType)); |
| 424 | 424 |
| 425 // Simulate the situation when container1 e.g. gets a z-index that is now gr
eater than container2. | 425 // Simulate the situation when container1 e.g. gets a z-index that is now gr
eater than container2. |
| 426 paintController().invalidate(container1, PaintInvalidationFull, nullptr); | 426 paintController().invalidate(container1); |
| 427 drawRect(context, container2, backgroundDrawingType, FloatRect(100, 200, 100
, 100)); | 427 drawRect(context, container2, backgroundDrawingType, FloatRect(100, 200, 100
, 100)); |
| 428 drawRect(context, content2, backgroundDrawingType, FloatRect(100, 200, 50, 2
00)); | 428 drawRect(context, content2, backgroundDrawingType, FloatRect(100, 200, 50, 2
00)); |
| 429 drawRect(context, content2, foregroundDrawingType, FloatRect(100, 200, 50, 2
00)); | 429 drawRect(context, content2, foregroundDrawingType, FloatRect(100, 200, 50, 2
00)); |
| 430 drawRect(context, container2, foregroundDrawingType, FloatRect(100, 200, 100
, 100)); | 430 drawRect(context, container2, foregroundDrawingType, FloatRect(100, 200, 100
, 100)); |
| 431 drawRect(context, container1, backgroundDrawingType, FloatRect(100, 100, 100
, 100)); | 431 drawRect(context, container1, backgroundDrawingType, FloatRect(100, 100, 100
, 100)); |
| 432 drawRect(context, content1, backgroundDrawingType, FloatRect(100, 100, 50, 2
00)); | 432 drawRect(context, content1, backgroundDrawingType, FloatRect(100, 100, 50, 2
00)); |
| 433 drawRect(context, content1, foregroundDrawingType, FloatRect(100, 100, 50, 2
00)); | 433 drawRect(context, content1, foregroundDrawingType, FloatRect(100, 100, 50, 2
00)); |
| 434 drawRect(context, container1, foregroundDrawingType, FloatRect(100, 100, 100
, 100)); | 434 drawRect(context, container1, foregroundDrawingType, FloatRect(100, 100, 100
, 100)); |
| 435 paintController().commitNewDisplayItems(); | 435 paintController().commitNewDisplayItems(); |
| 436 | 436 |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 574 TestDisplayItem(container1, DisplayItem::EndSubsequence), | 574 TestDisplayItem(container1, DisplayItem::EndSubsequence), |
| 575 | 575 |
| 576 TestDisplayItem(container2, DisplayItem::Subsequence), | 576 TestDisplayItem(container2, DisplayItem::Subsequence), |
| 577 TestDisplayItem(container2, backgroundDrawingType), | 577 TestDisplayItem(container2, backgroundDrawingType), |
| 578 TestDisplayItem(content2, DisplayItem::Subsequence), | 578 TestDisplayItem(content2, DisplayItem::Subsequence), |
| 579 TestDisplayItem(content2, backgroundDrawingType), | 579 TestDisplayItem(content2, backgroundDrawingType), |
| 580 TestDisplayItem(content2, DisplayItem::EndSubsequence), | 580 TestDisplayItem(content2, DisplayItem::EndSubsequence), |
| 581 TestDisplayItem(container2, DisplayItem::EndSubsequence)); | 581 TestDisplayItem(container2, DisplayItem::EndSubsequence)); |
| 582 | 582 |
| 583 // Invalidate container1 but not content1. | 583 // Invalidate container1 but not content1. |
| 584 paintController().invalidate(container1, PaintInvalidationFull, nullptr); | 584 paintController().invalidate(container1); |
| 585 | 585 |
| 586 // Container2 itself now becomes empty (but still has the 'content2' child), | 586 // Container2 itself now becomes empty (but still has the 'content2' child), |
| 587 // and chooses not to output subsequence info. | 587 // and chooses not to output subsequence info. |
| 588 | 588 |
| 589 paintController().invalidate(container2, PaintInvalidationFull, nullptr); | 589 paintController().invalidate(container2); |
| 590 paintController().invalidate(content2, PaintInvalidationFull, nullptr); | 590 paintController().invalidate(content2); |
| 591 EXPECT_FALSE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, co
ntainer2)); | 591 EXPECT_FALSE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, co
ntainer2)); |
| 592 EXPECT_FALSE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, co
ntent2)); | 592 EXPECT_FALSE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, co
ntent2)); |
| 593 // Content2 now outputs foreground only. | 593 // Content2 now outputs foreground only. |
| 594 { | 594 { |
| 595 SubsequenceRecorder r(context, content2); | 595 SubsequenceRecorder r(context, content2); |
| 596 drawRect(context, content2, foregroundDrawingType, FloatRect(100, 200, 5
0, 200)); | 596 drawRect(context, content2, foregroundDrawingType, FloatRect(100, 200, 5
0, 200)); |
| 597 } | 597 } |
| 598 // Repaint container1 with foreground only. | 598 // Repaint container1 with foreground only. |
| 599 { | 599 { |
| 600 EXPECT_FALSE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context
, container1)); | 600 EXPECT_FALSE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context
, container1)); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 paintController().commitNewDisplayItems(); | 676 paintController().commitNewDisplayItems(); |
| 677 | 677 |
| 678 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 3, | 678 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 3, |
| 679 TestDisplayItem(multicol, backgroundDrawingType), | 679 TestDisplayItem(multicol, backgroundDrawingType), |
| 680 TestDisplayItem(content, foregroundDrawingType), | 680 TestDisplayItem(content, foregroundDrawingType), |
| 681 TestDisplayItem(content, foregroundDrawingType)); | 681 TestDisplayItem(content, foregroundDrawingType)); |
| 682 EXPECT_NE(picture1, static_cast<const DrawingDisplayItem&>(paintController()
.displayItemList()[1]).picture()); | 682 EXPECT_NE(picture1, static_cast<const DrawingDisplayItem&>(paintController()
.displayItemList()[1]).picture()); |
| 683 EXPECT_NE(picture2, static_cast<const DrawingDisplayItem&>(paintController()
.displayItemList()[2]).picture()); | 683 EXPECT_NE(picture2, static_cast<const DrawingDisplayItem&>(paintController()
.displayItemList()[2]).picture()); |
| 684 | 684 |
| 685 // Now the multicol becomes 3 columns and repaints. | 685 // Now the multicol becomes 3 columns and repaints. |
| 686 paintController().invalidate(multicol, PaintInvalidationFull, nullptr); | 686 paintController().invalidate(multicol); |
| 687 drawRect(context, multicol, backgroundDrawingType, FloatRect(100, 100, 100,
100)); | 687 drawRect(context, multicol, backgroundDrawingType, FloatRect(100, 100, 100,
100)); |
| 688 | 688 |
| 689 paintController().beginScope(); | 689 paintController().beginScope(); |
| 690 drawRect(context, content, foregroundDrawingType, rect1); | 690 drawRect(context, content, foregroundDrawingType, rect1); |
| 691 paintController().endScope(); | 691 paintController().endScope(); |
| 692 | 692 |
| 693 paintController().beginScope(); | 693 paintController().beginScope(); |
| 694 drawRect(context, content, foregroundDrawingType, rect2); | 694 drawRect(context, content, foregroundDrawingType, rect2); |
| 695 paintController().endScope(); | 695 paintController().endScope(); |
| 696 | 696 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 725 drawRect(context, third, backgroundDrawingType, FloatRect(0, 0, 100, 100)); | 725 drawRect(context, third, backgroundDrawingType, FloatRect(0, 0, 100, 100)); |
| 726 | 726 |
| 727 paintController().commitNewDisplayItems(); | 727 paintController().commitNewDisplayItems(); |
| 728 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 5, | 728 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 5, |
| 729 TestDisplayItem(first, backgroundDrawingType), | 729 TestDisplayItem(first, backgroundDrawingType), |
| 730 TestDisplayItem(second, DisplayItem::BeginClipPath), | 730 TestDisplayItem(second, DisplayItem::BeginClipPath), |
| 731 TestDisplayItem(second, backgroundDrawingType), | 731 TestDisplayItem(second, backgroundDrawingType), |
| 732 TestDisplayItem(second, DisplayItem::EndClipPath), | 732 TestDisplayItem(second, DisplayItem::EndClipPath), |
| 733 TestDisplayItem(third, backgroundDrawingType)); | 733 TestDisplayItem(third, backgroundDrawingType)); |
| 734 | 734 |
| 735 paintController().invalidate(second, PaintInvalidationFull, nullptr); | 735 paintController().invalidate(second); |
| 736 drawRect(context, first, backgroundDrawingType, FloatRect(0, 0, 100, 100)); | 736 drawRect(context, first, backgroundDrawingType, FloatRect(0, 0, 100, 100)); |
| 737 { | 737 { |
| 738 ClipRecorder clipRecorder(context, second, clipType, LayoutRect(1, 1, 2,
2)); | 738 ClipRecorder clipRecorder(context, second, clipType, LayoutRect(1, 1, 2,
2)); |
| 739 // Do not draw anything for second. | 739 // Do not draw anything for second. |
| 740 } | 740 } |
| 741 drawRect(context, third, backgroundDrawingType, FloatRect(0, 0, 100, 100)); | 741 drawRect(context, third, backgroundDrawingType, FloatRect(0, 0, 100, 100)); |
| 742 paintController().commitNewDisplayItems(); | 742 paintController().commitNewDisplayItems(); |
| 743 | 743 |
| 744 // Empty clips should have been optimized out. | 744 // Empty clips should have been optimized out. |
| 745 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, | 745 EXPECT_DISPLAY_LIST(paintController().displayItemList(), 2, |
| 746 TestDisplayItem(first, backgroundDrawingType), | 746 TestDisplayItem(first, backgroundDrawingType), |
| 747 TestDisplayItem(third, backgroundDrawingType)); | 747 TestDisplayItem(third, backgroundDrawingType)); |
| 748 | 748 |
| 749 paintController().invalidate(second, PaintInvalidationFull, nullptr); | 749 paintController().invalidate(second); |
| 750 drawRect(context, first, backgroundDrawingType, FloatRect(0, 0, 100, 100)); | 750 drawRect(context, first, backgroundDrawingType, FloatRect(0, 0, 100, 100)); |
| 751 { | 751 { |
| 752 ClipRecorder clipRecorder(context, second, clipType, LayoutRect(1, 1, 2,
2)); | 752 ClipRecorder clipRecorder(context, second, clipType, LayoutRect(1, 1, 2,
2)); |
| 753 { | 753 { |
| 754 ClipPathRecorder clipPathRecorder(context, second, Path()); | 754 ClipPathRecorder clipPathRecorder(context, second, Path()); |
| 755 // Do not draw anything for second. | 755 // Do not draw anything for second. |
| 756 } | 756 } |
| 757 } | 757 } |
| 758 drawRect(context, third, backgroundDrawingType, FloatRect(0, 0, 100, 100)); | 758 drawRect(context, third, backgroundDrawingType, FloatRect(0, 0, 100, 100)); |
| 759 paintController().commitNewDisplayItems(); | 759 paintController().commitNewDisplayItems(); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 773 drawRect(context, client, backgroundDrawingType, FloatRect(0, 0, 100, 100)); | 773 drawRect(context, client, backgroundDrawingType, FloatRect(0, 0, 100, 100)); |
| 774 | 774 |
| 775 paintController().commitNewDisplayItems(); | 775 paintController().commitNewDisplayItems(); |
| 776 const auto& paintChunks = paintController().paintChunks(); | 776 const auto& paintChunks = paintController().paintChunks(); |
| 777 ASSERT_EQ(1u, paintChunks.size()); | 777 ASSERT_EQ(1u, paintChunks.size()); |
| 778 EXPECT_EQ(0u, paintChunks[0].beginIndex); | 778 EXPECT_EQ(0u, paintChunks[0].beginIndex); |
| 779 EXPECT_EQ(1u, paintChunks[0].endIndex); | 779 EXPECT_EQ(1u, paintChunks[0].endIndex); |
| 780 } | 780 } |
| 781 | 781 |
| 782 } // namespace blink | 782 } // namespace blink |
| OLD | NEW |