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

Side by Side Diff: Source/platform/graphics/paint/DisplayItemListTest.cpp

Issue 1294233004: Subtree caching implementation in blink-core (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: s/setSelfNeedsRepaint/setNeedsRepaint/ Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "config.h" 5 #include "config.h"
6 #include "platform/graphics/paint/DisplayItemList.h" 6 #include "platform/graphics/paint/DisplayItemList.h"
7 7
8 #include "platform/RuntimeEnabledFeatures.h" 8 #include "platform/RuntimeEnabledFeatures.h"
9 #include "platform/graphics/GraphicsContext.h" 9 #include "platform/graphics/GraphicsContext.h"
10 #include "platform/graphics/paint/CachedDisplayItem.h" 10 #include "platform/graphics/paint/CachedDisplayItem.h"
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 TestDisplayItemClient container1("container1"); 456 TestDisplayItemClient container1("container1");
457 TestDisplayItemClient content1("content1"); 457 TestDisplayItemClient content1("content1");
458 TestDisplayItemClient container2("container2"); 458 TestDisplayItemClient container2("container2");
459 TestDisplayItemClient content2("content2"); 459 TestDisplayItemClient content2("content2");
460 GraphicsContext context(&displayItemList()); 460 GraphicsContext context(&displayItemList());
461 const int backgroundPaintPhase = backgroundDrawingType - DisplayItem::Drawin gPaintPhaseFirst; 461 const int backgroundPaintPhase = backgroundDrawingType - DisplayItem::Drawin gPaintPhaseFirst;
462 const int foregroundPaintPhase = foregroundDrawingType - DisplayItem::Drawin gPaintPhaseFirst; 462 const int foregroundPaintPhase = foregroundDrawingType - DisplayItem::Drawin gPaintPhaseFirst;
463 463
464 { 464 {
465 SubtreeRecorder r(context, container1, backgroundPaintPhase); 465 SubtreeRecorder r(context, container1, backgroundPaintPhase);
466 EXPECT_FALSE(r.canUseCache());
467 drawRect(context, container1, backgroundDrawingType, FloatRect(100, 100, 100, 100)); 466 drawRect(context, container1, backgroundDrawingType, FloatRect(100, 100, 100, 100));
468 drawRect(context, content1, backgroundDrawingType, FloatRect(100, 100, 5 0, 200)); 467 drawRect(context, content1, backgroundDrawingType, FloatRect(100, 100, 5 0, 200));
469 } 468 }
470 { 469 {
471 SubtreeRecorder r(context, container1, foregroundPaintPhase); 470 SubtreeRecorder r(context, container1, foregroundPaintPhase);
472 EXPECT_FALSE(r.canUseCache());
473 drawRect(context, content1, foregroundDrawingType, FloatRect(100, 100, 5 0, 200)); 471 drawRect(context, content1, foregroundDrawingType, FloatRect(100, 100, 5 0, 200));
474 drawRect(context, container1, foregroundDrawingType, FloatRect(100, 100, 100, 100)); 472 drawRect(context, container1, foregroundDrawingType, FloatRect(100, 100, 100, 100));
475 } 473 }
476 { 474 {
477 SubtreeRecorder r(context, container2, backgroundPaintPhase); 475 SubtreeRecorder r(context, container2, backgroundPaintPhase);
478 EXPECT_FALSE(r.canUseCache());
479 drawRect(context, container2, backgroundDrawingType, FloatRect(100, 200, 100, 100)); 476 drawRect(context, container2, backgroundDrawingType, FloatRect(100, 200, 100, 100));
480 drawRect(context, content2, backgroundDrawingType, FloatRect(100, 200, 5 0, 200)); 477 drawRect(context, content2, backgroundDrawingType, FloatRect(100, 200, 5 0, 200));
481 } 478 }
482 { 479 {
483 SubtreeRecorder r(context, container2, foregroundPaintPhase); 480 SubtreeRecorder r(context, container2, foregroundPaintPhase);
484 EXPECT_FALSE(r.canUseCache());
485 drawRect(context, content2, foregroundDrawingType, FloatRect(100, 200, 5 0, 200)); 481 drawRect(context, content2, foregroundDrawingType, FloatRect(100, 200, 5 0, 200));
486 drawRect(context, container2, foregroundDrawingType, FloatRect(100, 200, 100, 100)); 482 drawRect(context, container2, foregroundDrawingType, FloatRect(100, 200, 100, 100));
487 } 483 }
488 displayItemList().commitNewDisplayItems(); 484 displayItemList().commitNewDisplayItems();
489 485
490 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 16, 486 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 16,
491 TestDisplayItem(container1, DisplayItem::paintPhaseToBeginSubtreeType(ba ckgroundPaintPhase)), 487 TestDisplayItem(container1, DisplayItem::paintPhaseToBeginSubtreeType(ba ckgroundPaintPhase)),
492 TestDisplayItem(container1, backgroundDrawingType), 488 TestDisplayItem(container1, backgroundDrawingType),
493 TestDisplayItem(content1, backgroundDrawingType), 489 TestDisplayItem(content1, backgroundDrawingType),
494 TestDisplayItem(container1, DisplayItem::paintPhaseToEndSubtreeType(back groundPaintPhase)), 490 TestDisplayItem(container1, DisplayItem::paintPhaseToEndSubtreeType(back groundPaintPhase)),
495 491
496 TestDisplayItem(container1, DisplayItem::paintPhaseToBeginSubtreeType(fo regroundPaintPhase)), 492 TestDisplayItem(container1, DisplayItem::paintPhaseToBeginSubtreeType(fo regroundPaintPhase)),
497 TestDisplayItem(content1, foregroundDrawingType), 493 TestDisplayItem(content1, foregroundDrawingType),
498 TestDisplayItem(container1, foregroundDrawingType), 494 TestDisplayItem(container1, foregroundDrawingType),
499 TestDisplayItem(container1, DisplayItem::paintPhaseToEndSubtreeType(fore groundPaintPhase)), 495 TestDisplayItem(container1, DisplayItem::paintPhaseToEndSubtreeType(fore groundPaintPhase)),
500 496
501 TestDisplayItem(container2, DisplayItem::paintPhaseToBeginSubtreeType(ba ckgroundPaintPhase)), 497 TestDisplayItem(container2, DisplayItem::paintPhaseToBeginSubtreeType(ba ckgroundPaintPhase)),
502 TestDisplayItem(container2, backgroundDrawingType), 498 TestDisplayItem(container2, backgroundDrawingType),
503 TestDisplayItem(content2, backgroundDrawingType), 499 TestDisplayItem(content2, backgroundDrawingType),
504 TestDisplayItem(container2, DisplayItem::paintPhaseToEndSubtreeType(back groundPaintPhase)), 500 TestDisplayItem(container2, DisplayItem::paintPhaseToEndSubtreeType(back groundPaintPhase)),
505 501
506 TestDisplayItem(container2, DisplayItem::paintPhaseToBeginSubtreeType(fo regroundPaintPhase)), 502 TestDisplayItem(container2, DisplayItem::paintPhaseToBeginSubtreeType(fo regroundPaintPhase)),
507 TestDisplayItem(content2, foregroundDrawingType), 503 TestDisplayItem(content2, foregroundDrawingType),
508 TestDisplayItem(container2, foregroundDrawingType), 504 TestDisplayItem(container2, foregroundDrawingType),
509 TestDisplayItem(container2, DisplayItem::paintPhaseToEndSubtreeType(fore groundPaintPhase))); 505 TestDisplayItem(container2, DisplayItem::paintPhaseToEndSubtreeType(fore groundPaintPhase)));
510 506
511 // Simulate the situation when container1 e.g. gets a z-index that is now gr eater than container2. 507 // Simulate the situation when container1 e.g. gets a z-index that is now gr eater than container2.
512 displayItemList().createAndAppend<CachedDisplayItem>(container2, DisplayItem ::paintPhaseToCachedSubtreeType(backgroundPaintPhase)); 508 EXPECT_TRUE(SubtreeRecorder::useCachedSubtreeIfPossible(context, container2, backgroundPaintPhase));
513 EXPECT_EQ((size_t)1, newPaintListBeforeUpdate().size()); 509 EXPECT_EQ((size_t)1, newPaintListBeforeUpdate().size());
514 EXPECT_TRUE(newPaintListBeforeUpdate().last().isCachedSubtree()); 510 EXPECT_TRUE(newPaintListBeforeUpdate().last().isCachedSubtree());
515 displayItemList().createAndAppend<CachedDisplayItem>(container2, DisplayItem ::paintPhaseToCachedSubtreeType(foregroundPaintPhase)); 511 EXPECT_TRUE(SubtreeRecorder::useCachedSubtreeIfPossible(context, container2, foregroundPaintPhase));
516 EXPECT_EQ((size_t)2, newPaintListBeforeUpdate().size()); 512 EXPECT_EQ((size_t)2, newPaintListBeforeUpdate().size());
517 EXPECT_TRUE(newPaintListBeforeUpdate().last().isCachedSubtree()); 513 EXPECT_TRUE(newPaintListBeforeUpdate().last().isCachedSubtree());
518 514
519 displayItemList().createAndAppend<CachedDisplayItem>(container1, DisplayItem ::paintPhaseToCachedSubtreeType(backgroundPaintPhase)); 515 EXPECT_TRUE(SubtreeRecorder::useCachedSubtreeIfPossible(context, container1, backgroundPaintPhase));
520 EXPECT_EQ((size_t)3, newPaintListBeforeUpdate().size()); 516 EXPECT_EQ((size_t)3, newPaintListBeforeUpdate().size());
521 EXPECT_TRUE(newPaintListBeforeUpdate().last().isCachedSubtree()); 517 EXPECT_TRUE(newPaintListBeforeUpdate().last().isCachedSubtree());
522 displayItemList().createAndAppend<CachedDisplayItem>(container1, DisplayItem ::paintPhaseToCachedSubtreeType(foregroundPaintPhase)); 518 EXPECT_TRUE(SubtreeRecorder::useCachedSubtreeIfPossible(context, container1, foregroundPaintPhase));
523 EXPECT_EQ((size_t)4, newPaintListBeforeUpdate().size()); 519 EXPECT_EQ((size_t)4, newPaintListBeforeUpdate().size());
524 EXPECT_TRUE(newPaintListBeforeUpdate().last().isCachedSubtree()); 520 EXPECT_TRUE(newPaintListBeforeUpdate().last().isCachedSubtree());
525 displayItemList().commitNewDisplayItems(); 521 displayItemList().commitNewDisplayItems();
526 522
527 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 16, 523 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 16,
528 TestDisplayItem(container2, DisplayItem::paintPhaseToBeginSubtreeType(ba ckgroundDrawingType)), 524 TestDisplayItem(container2, DisplayItem::paintPhaseToBeginSubtreeType(ba ckgroundDrawingType)),
529 TestDisplayItem(container2, backgroundDrawingType), 525 TestDisplayItem(container2, backgroundDrawingType),
530 TestDisplayItem(content2, backgroundDrawingType), 526 TestDisplayItem(content2, backgroundDrawingType),
531 TestDisplayItem(container2, DisplayItem::paintPhaseToEndSubtreeType(back groundDrawingType)), 527 TestDisplayItem(container2, DisplayItem::paintPhaseToEndSubtreeType(back groundDrawingType)),
532 528
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 drawRect(context, third, backgroundDrawingType, FloatRect(0, 0, 100, 100)); 674 drawRect(context, third, backgroundDrawingType, FloatRect(0, 0, 100, 100));
679 displayItemList().commitNewDisplayItems(); 675 displayItemList().commitNewDisplayItems();
680 676
681 // Empty clips should have been optimized out. 677 // Empty clips should have been optimized out.
682 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 2, 678 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 2,
683 TestDisplayItem(first, backgroundDrawingType), 679 TestDisplayItem(first, backgroundDrawingType),
684 TestDisplayItem(third, backgroundDrawingType)); 680 TestDisplayItem(third, backgroundDrawingType));
685 } 681 }
686 682
687 } // namespace blink 683 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698