Chromium Code Reviews| 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 "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 21 matching lines...) Expand all Loading... | |
| 32 RuntimeEnabledFeatures::setSlimmingPaintSubsequenceCachingEnabled(m_orig inalSlimmingPaintSubsequenceCachingEnabled); | 32 RuntimeEnabledFeatures::setSlimmingPaintSubsequenceCachingEnabled(m_orig inalSlimmingPaintSubsequenceCachingEnabled); |
| 33 } | 33 } |
| 34 | 34 |
| 35 OwnPtr<DisplayItemList> m_displayItemList; | 35 OwnPtr<DisplayItemList> m_displayItemList; |
| 36 bool m_originalSlimmingPaintSubsequenceCachingEnabled; | 36 bool m_originalSlimmingPaintSubsequenceCachingEnabled; |
| 37 }; | 37 }; |
| 38 | 38 |
| 39 const DisplayItem::Type foregroundDrawingType = static_cast<DisplayItem::Type>(D isplayItem::DrawingPaintPhaseFirst + 4); | 39 const DisplayItem::Type foregroundDrawingType = static_cast<DisplayItem::Type>(D isplayItem::DrawingPaintPhaseFirst + 4); |
| 40 const DisplayItem::Type backgroundDrawingType = DisplayItem::DrawingPaintPhaseFi rst; | 40 const DisplayItem::Type backgroundDrawingType = DisplayItem::DrawingPaintPhaseFi rst; |
| 41 const DisplayItem::Type clipType = DisplayItem::ClipFirst; | 41 const DisplayItem::Type clipType = DisplayItem::ClipFirst; |
| 42 const DisplayItem::Type subsequenceType = DisplayItem::SubsequenceNormalFlowAndP ositiveZOrder; | |
|
pdr.
2015/09/30 23:36:54
Aren't these already defined in the header?
Xianzhu
2015/09/30 23:48:48
These are defined in Source/core/paint/DisplayItem
| |
| 43 const DisplayItem::Type endSubsequenceType = DisplayItem::subsequenceTypeToEndSu bsequenceType(subsequenceType); | |
| 44 const DisplayItem::Type cachedSubsequenceType = DisplayItem::subsequenceTypeToCa chedSubsequenceType(subsequenceType); | |
| 42 | 45 |
| 43 class TestDisplayItemClient { | 46 class TestDisplayItemClient { |
| 44 public: | 47 public: |
| 45 TestDisplayItemClient(const String& name) | 48 TestDisplayItemClient(const String& name) |
| 46 : m_name(name) | 49 : m_name(name) |
| 47 { } | 50 { } |
| 48 | 51 |
| 49 DisplayItemClient displayItemClient() const { return toDisplayItemClient(thi s); } | 52 DisplayItemClient displayItemClient() const { return toDisplayItemClient(thi s); } |
| 50 String debugName() const { return m_name; } | 53 String debugName() const { return m_name; } |
| 51 | 54 |
| (...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 450 { | 453 { |
| 451 RuntimeEnabledFeatures::setSlimmingPaintSubsequenceCachingEnabled(true); | 454 RuntimeEnabledFeatures::setSlimmingPaintSubsequenceCachingEnabled(true); |
| 452 | 455 |
| 453 TestDisplayItemClient container1("container1"); | 456 TestDisplayItemClient container1("container1"); |
| 454 TestDisplayItemClient content1("content1"); | 457 TestDisplayItemClient content1("content1"); |
| 455 TestDisplayItemClient container2("container2"); | 458 TestDisplayItemClient container2("container2"); |
| 456 TestDisplayItemClient content2("content2"); | 459 TestDisplayItemClient content2("content2"); |
| 457 GraphicsContext context(&displayItemList()); | 460 GraphicsContext context(&displayItemList()); |
| 458 | 461 |
| 459 { | 462 { |
| 460 SubsequenceRecorder r(context, container1); | 463 SubsequenceRecorder r(context, container1, subsequenceType); |
| 461 drawRect(context, container1, backgroundDrawingType, FloatRect(100, 100, 100, 100)); | 464 drawRect(context, container1, backgroundDrawingType, FloatRect(100, 100, 100, 100)); |
| 462 drawRect(context, content1, backgroundDrawingType, FloatRect(100, 100, 5 0, 200)); | 465 drawRect(context, content1, backgroundDrawingType, FloatRect(100, 100, 5 0, 200)); |
| 463 drawRect(context, content1, foregroundDrawingType, FloatRect(100, 100, 5 0, 200)); | 466 drawRect(context, content1, foregroundDrawingType, FloatRect(100, 100, 5 0, 200)); |
| 464 drawRect(context, container1, foregroundDrawingType, FloatRect(100, 100, 100, 100)); | 467 drawRect(context, container1, foregroundDrawingType, FloatRect(100, 100, 100, 100)); |
| 465 } | 468 } |
| 466 { | 469 { |
| 467 SubsequenceRecorder r(context, container2); | 470 SubsequenceRecorder r(context, container2, subsequenceType); |
| 468 drawRect(context, container2, backgroundDrawingType, FloatRect(100, 200, 100, 100)); | 471 drawRect(context, container2, backgroundDrawingType, FloatRect(100, 200, 100, 100)); |
| 469 drawRect(context, content2, backgroundDrawingType, FloatRect(100, 200, 5 0, 200)); | 472 drawRect(context, content2, backgroundDrawingType, FloatRect(100, 200, 5 0, 200)); |
| 470 drawRect(context, content2, foregroundDrawingType, FloatRect(100, 200, 5 0, 200)); | 473 drawRect(context, content2, foregroundDrawingType, FloatRect(100, 200, 5 0, 200)); |
| 471 drawRect(context, container2, foregroundDrawingType, FloatRect(100, 200, 100, 100)); | 474 drawRect(context, container2, foregroundDrawingType, FloatRect(100, 200, 100, 100)); |
| 472 } | 475 } |
| 473 displayItemList().commitNewDisplayItems(); | 476 displayItemList().commitNewDisplayItems(); |
| 474 | 477 |
| 475 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 12, | 478 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 12, |
| 476 TestDisplayItem(container1, DisplayItem::BeginSubsequence), | 479 TestDisplayItem(container1, subsequenceType), |
| 477 TestDisplayItem(container1, backgroundDrawingType), | 480 TestDisplayItem(container1, backgroundDrawingType), |
| 478 TestDisplayItem(content1, backgroundDrawingType), | 481 TestDisplayItem(content1, backgroundDrawingType), |
| 479 TestDisplayItem(content1, foregroundDrawingType), | 482 TestDisplayItem(content1, foregroundDrawingType), |
| 480 TestDisplayItem(container1, foregroundDrawingType), | 483 TestDisplayItem(container1, foregroundDrawingType), |
| 481 TestDisplayItem(container1, DisplayItem::EndSubsequence), | 484 TestDisplayItem(container1, endSubsequenceType), |
| 482 | 485 |
| 483 TestDisplayItem(container2, DisplayItem::BeginSubsequence), | 486 TestDisplayItem(container2, subsequenceType), |
| 484 TestDisplayItem(container2, backgroundDrawingType), | 487 TestDisplayItem(container2, backgroundDrawingType), |
| 485 TestDisplayItem(content2, backgroundDrawingType), | 488 TestDisplayItem(content2, backgroundDrawingType), |
| 486 TestDisplayItem(content2, foregroundDrawingType), | 489 TestDisplayItem(content2, foregroundDrawingType), |
| 487 TestDisplayItem(container2, foregroundDrawingType), | 490 TestDisplayItem(container2, foregroundDrawingType), |
| 488 TestDisplayItem(container2, DisplayItem::EndSubsequence)); | 491 TestDisplayItem(container2, endSubsequenceType)); |
| 489 | 492 |
| 490 // Simulate the situation when container1 e.g. gets a z-index that is now gr eater than container2. | 493 // Simulate the situation when container1 e.g. gets a z-index that is now gr eater than container2. |
| 491 EXPECT_TRUE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, con tainer2)); | 494 EXPECT_TRUE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, con tainer2, subsequenceType)); |
| 492 EXPECT_TRUE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, con tainer1)); | 495 EXPECT_TRUE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, con tainer1, subsequenceType)); |
| 493 | 496 |
| 494 EXPECT_DISPLAY_LIST(displayItemList().newDisplayItems(), 2, | 497 EXPECT_DISPLAY_LIST(displayItemList().newDisplayItems(), 2, |
| 495 TestDisplayItem(container2, DisplayItem::CachedSubsequence), | 498 TestDisplayItem(container2, cachedSubsequenceType), |
| 496 TestDisplayItem(container1, DisplayItem::CachedSubsequence)); | 499 TestDisplayItem(container1, cachedSubsequenceType)); |
| 497 | 500 |
| 498 displayItemList().commitNewDisplayItems(); | 501 displayItemList().commitNewDisplayItems(); |
| 499 | 502 |
| 500 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 12, | 503 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 12, |
| 501 TestDisplayItem(container2, DisplayItem::BeginSubsequence), | 504 TestDisplayItem(container2, subsequenceType), |
| 502 TestDisplayItem(container2, backgroundDrawingType), | 505 TestDisplayItem(container2, backgroundDrawingType), |
| 503 TestDisplayItem(content2, backgroundDrawingType), | 506 TestDisplayItem(content2, backgroundDrawingType), |
| 504 TestDisplayItem(content2, foregroundDrawingType), | 507 TestDisplayItem(content2, foregroundDrawingType), |
| 505 TestDisplayItem(container2, foregroundDrawingType), | 508 TestDisplayItem(container2, foregroundDrawingType), |
| 506 TestDisplayItem(container2, DisplayItem::EndSubsequence), | 509 TestDisplayItem(container2, endSubsequenceType), |
| 507 | 510 |
| 508 TestDisplayItem(container1, DisplayItem::BeginSubsequence), | 511 TestDisplayItem(container1, subsequenceType), |
| 509 TestDisplayItem(container1, backgroundDrawingType), | 512 TestDisplayItem(container1, backgroundDrawingType), |
| 510 TestDisplayItem(content1, backgroundDrawingType), | 513 TestDisplayItem(content1, backgroundDrawingType), |
| 511 TestDisplayItem(content1, foregroundDrawingType), | 514 TestDisplayItem(content1, foregroundDrawingType), |
| 512 TestDisplayItem(container1, foregroundDrawingType), | 515 TestDisplayItem(container1, foregroundDrawingType), |
| 513 TestDisplayItem(container1, DisplayItem::EndSubsequence)); | 516 TestDisplayItem(container1, endSubsequenceType)); |
| 514 } | 517 } |
| 515 | 518 |
| 516 TEST_F(DisplayItemListTest, OutOfOrderNoCrash) | 519 TEST_F(DisplayItemListTest, OutOfOrderNoCrash) |
| 517 { | 520 { |
| 518 TestDisplayItemClient client("client"); | 521 TestDisplayItemClient client("client"); |
| 519 GraphicsContext context(&displayItemList()); | 522 GraphicsContext context(&displayItemList()); |
| 520 | 523 |
| 521 const DisplayItem::Type type1 = DisplayItem::DrawingFirst; | 524 const DisplayItem::Type type1 = DisplayItem::DrawingFirst; |
| 522 const DisplayItem::Type type2 = static_cast<DisplayItem::Type>(DisplayItem:: DrawingFirst + 1); | 525 const DisplayItem::Type type2 = static_cast<DisplayItem::Type>(DisplayItem:: DrawingFirst + 1); |
| 523 const DisplayItem::Type type3 = static_cast<DisplayItem::Type>(DisplayItem:: DrawingFirst + 2); | 526 const DisplayItem::Type type3 = static_cast<DisplayItem::Type>(DisplayItem:: DrawingFirst + 2); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 542 { | 545 { |
| 543 RuntimeEnabledFeatures::setSlimmingPaintSubsequenceCachingEnabled(true); | 546 RuntimeEnabledFeatures::setSlimmingPaintSubsequenceCachingEnabled(true); |
| 544 | 547 |
| 545 TestDisplayItemClient container1("container1"); | 548 TestDisplayItemClient container1("container1"); |
| 546 TestDisplayItemClient content1("content1"); | 549 TestDisplayItemClient content1("content1"); |
| 547 TestDisplayItemClient container2("container2"); | 550 TestDisplayItemClient container2("container2"); |
| 548 TestDisplayItemClient content2("content2"); | 551 TestDisplayItemClient content2("content2"); |
| 549 GraphicsContext context(&displayItemList()); | 552 GraphicsContext context(&displayItemList()); |
| 550 | 553 |
| 551 { | 554 { |
| 552 SubsequenceRecorder r(context, container1); | 555 SubsequenceRecorder r(context, container1, subsequenceType); |
| 553 drawRect(context, container1, backgroundDrawingType, FloatRect(100, 100, 100, 100)); | 556 drawRect(context, container1, backgroundDrawingType, FloatRect(100, 100, 100, 100)); |
| 554 { | 557 { |
| 555 SubsequenceRecorder r(context, content1); | 558 SubsequenceRecorder r(context, content1, subsequenceType); |
| 556 drawRect(context, content1, backgroundDrawingType, FloatRect(100, 10 0, 50, 200)); | 559 drawRect(context, content1, backgroundDrawingType, FloatRect(100, 10 0, 50, 200)); |
| 557 drawRect(context, content1, foregroundDrawingType, FloatRect(100, 10 0, 50, 200)); | 560 drawRect(context, content1, foregroundDrawingType, FloatRect(100, 10 0, 50, 200)); |
| 558 } | 561 } |
| 559 drawRect(context, container1, foregroundDrawingType, FloatRect(100, 100, 100, 100)); | 562 drawRect(context, container1, foregroundDrawingType, FloatRect(100, 100, 100, 100)); |
| 560 } | 563 } |
| 561 { | 564 { |
| 562 SubsequenceRecorder r(context, container2); | 565 SubsequenceRecorder r(context, container2, subsequenceType); |
| 563 drawRect(context, container2, backgroundDrawingType, FloatRect(100, 200, 100, 100)); | 566 drawRect(context, container2, backgroundDrawingType, FloatRect(100, 200, 100, 100)); |
| 564 { | 567 { |
| 565 SubsequenceRecorder r(context, content2); | 568 SubsequenceRecorder r(context, content2, subsequenceType); |
| 566 drawRect(context, content2, backgroundDrawingType, FloatRect(100, 20 0, 50, 200)); | 569 drawRect(context, content2, backgroundDrawingType, FloatRect(100, 20 0, 50, 200)); |
| 567 } | 570 } |
| 568 } | 571 } |
| 569 displayItemList().commitNewDisplayItems(); | 572 displayItemList().commitNewDisplayItems(); |
| 570 | 573 |
| 571 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 14, | 574 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 14, |
| 572 TestDisplayItem(container1, DisplayItem::BeginSubsequence), | 575 TestDisplayItem(container1, subsequenceType), |
| 573 TestDisplayItem(container1, backgroundDrawingType), | 576 TestDisplayItem(container1, backgroundDrawingType), |
| 574 TestDisplayItem(content1, DisplayItem::BeginSubsequence), | 577 TestDisplayItem(content1, subsequenceType), |
| 575 TestDisplayItem(content1, backgroundDrawingType), | 578 TestDisplayItem(content1, backgroundDrawingType), |
| 576 TestDisplayItem(content1, foregroundDrawingType), | 579 TestDisplayItem(content1, foregroundDrawingType), |
| 577 TestDisplayItem(content1, DisplayItem::EndSubsequence), | 580 TestDisplayItem(content1, endSubsequenceType), |
| 578 TestDisplayItem(container1, foregroundDrawingType), | 581 TestDisplayItem(container1, foregroundDrawingType), |
| 579 TestDisplayItem(container1, DisplayItem::EndSubsequence), | 582 TestDisplayItem(container1, endSubsequenceType), |
| 580 | 583 |
| 581 TestDisplayItem(container2, DisplayItem::BeginSubsequence), | 584 TestDisplayItem(container2, subsequenceType), |
| 582 TestDisplayItem(container2, backgroundDrawingType), | 585 TestDisplayItem(container2, backgroundDrawingType), |
| 583 TestDisplayItem(content2, DisplayItem::BeginSubsequence), | 586 TestDisplayItem(content2, subsequenceType), |
| 584 TestDisplayItem(content2, backgroundDrawingType), | 587 TestDisplayItem(content2, backgroundDrawingType), |
| 585 TestDisplayItem(content2, DisplayItem::EndSubsequence), | 588 TestDisplayItem(content2, endSubsequenceType), |
| 586 TestDisplayItem(container2, DisplayItem::EndSubsequence)); | 589 TestDisplayItem(container2, endSubsequenceType)); |
| 587 | 590 |
| 588 // Invalidate container1 but not content1. | 591 // Invalidate container1 but not content1. |
| 589 displayItemList().invalidate(container1); | 592 displayItemList().invalidate(container1); |
| 590 | 593 |
| 591 // Container2 itself now becomes empty (but still has the 'content2' child), | 594 // Container2 itself now becomes empty (but still has the 'content2' child), |
| 592 // and chooses not to output subsequence info. | 595 // and chooses not to output subsequence info. |
| 593 displayItemList().invalidate(container2); | 596 displayItemList().invalidate(container2); |
| 594 displayItemList().invalidate(content2); | 597 displayItemList().invalidate(content2); |
| 595 EXPECT_FALSE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, co ntainer2)); | 598 EXPECT_FALSE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, co ntainer2, subsequenceType)); |
| 596 EXPECT_FALSE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, co ntent2)); | 599 EXPECT_FALSE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, co ntent2, subsequenceType)); |
| 597 // Content2 now outputs foreground only. | 600 // Content2 now outputs foreground only. |
| 598 { | 601 { |
| 599 SubsequenceRecorder r(context, content2); | 602 SubsequenceRecorder r(context, content2, subsequenceType); |
| 600 drawRect(context, content2, foregroundDrawingType, FloatRect(100, 200, 5 0, 200)); | 603 drawRect(context, content2, foregroundDrawingType, FloatRect(100, 200, 5 0, 200)); |
| 601 } | 604 } |
| 602 // Repaint container1 with foreground only. | 605 // Repaint container1 with foreground only. |
| 603 { | 606 { |
| 604 EXPECT_FALSE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context , container1)); | 607 EXPECT_FALSE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context , container1, subsequenceType)); |
| 605 SubsequenceRecorder r(context, container1); | 608 SubsequenceRecorder r(context, container1, subsequenceType); |
| 606 // Use cached subsequence of content1. | 609 // Use cached subsequence of content1. |
| 607 EXPECT_TRUE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, content1)); | 610 EXPECT_TRUE(SubsequenceRecorder::useCachedSubsequenceIfPossible(context, content1, subsequenceType)); |
| 608 drawRect(context, container1, foregroundDrawingType, FloatRect(100, 100, 100, 100)); | 611 drawRect(context, container1, foregroundDrawingType, FloatRect(100, 100, 100, 100)); |
| 609 } | 612 } |
| 610 EXPECT_DISPLAY_LIST(displayItemList().newDisplayItems(), 7, | 613 EXPECT_DISPLAY_LIST(displayItemList().newDisplayItems(), 7, |
| 611 TestDisplayItem(content2, DisplayItem::BeginSubsequence), | 614 TestDisplayItem(content2, subsequenceType), |
| 612 TestDisplayItem(content2, foregroundDrawingType), | 615 TestDisplayItem(content2, foregroundDrawingType), |
| 613 TestDisplayItem(content2, DisplayItem::EndSubsequence), | 616 TestDisplayItem(content2, endSubsequenceType), |
| 614 TestDisplayItem(container1, DisplayItem::BeginSubsequence), | 617 TestDisplayItem(container1, subsequenceType), |
| 615 TestDisplayItem(content1, DisplayItem::CachedSubsequence), | 618 TestDisplayItem(content1, cachedSubsequenceType), |
| 616 TestDisplayItem(container1, foregroundDrawingType), | 619 TestDisplayItem(container1, foregroundDrawingType), |
| 617 TestDisplayItem(container1, DisplayItem::EndSubsequence)); | 620 TestDisplayItem(container1, endSubsequenceType)); |
| 618 | 621 |
| 619 displayItemList().commitNewDisplayItems(); | 622 displayItemList().commitNewDisplayItems(); |
| 620 | 623 |
| 621 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 10, | 624 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 10, |
| 622 TestDisplayItem(content2, DisplayItem::BeginSubsequence), | 625 TestDisplayItem(content2, subsequenceType), |
| 623 TestDisplayItem(content2, foregroundDrawingType), | 626 TestDisplayItem(content2, foregroundDrawingType), |
| 624 TestDisplayItem(content2, DisplayItem::EndSubsequence), | 627 TestDisplayItem(content2, endSubsequenceType), |
| 625 | 628 |
| 626 TestDisplayItem(container1, DisplayItem::BeginSubsequence), | 629 TestDisplayItem(container1, subsequenceType), |
| 627 TestDisplayItem(content1, DisplayItem::BeginSubsequence), | 630 TestDisplayItem(content1, subsequenceType), |
| 628 TestDisplayItem(content1, backgroundDrawingType), | 631 TestDisplayItem(content1, backgroundDrawingType), |
| 629 TestDisplayItem(content1, foregroundDrawingType), | 632 TestDisplayItem(content1, foregroundDrawingType), |
| 630 TestDisplayItem(content1, DisplayItem::EndSubsequence), | 633 TestDisplayItem(content1, endSubsequenceType), |
| 631 TestDisplayItem(container1, foregroundDrawingType), | 634 TestDisplayItem(container1, foregroundDrawingType), |
| 632 TestDisplayItem(container1, DisplayItem::EndSubsequence)); | 635 TestDisplayItem(container1, endSubsequenceType)); |
| 633 } | 636 } |
| 634 | 637 |
| 635 TEST_F(DisplayItemListTest, Scope) | 638 TEST_F(DisplayItemListTest, Scope) |
| 636 { | 639 { |
| 637 TestDisplayItemClient multicol("multicol"); | 640 TestDisplayItemClient multicol("multicol"); |
| 638 TestDisplayItemClient content("content"); | 641 TestDisplayItemClient content("content"); |
| 639 GraphicsContext context(&displayItemList()); | 642 GraphicsContext context(&displayItemList()); |
| 640 | 643 |
| 641 FloatRect rect1(100, 100, 50, 50); | 644 FloatRect rect1(100, 100, 50, 50); |
| 642 FloatRect rect2(150, 100, 50, 50); | 645 FloatRect rect2(150, 100, 50, 50); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 762 drawRect(context, third, backgroundDrawingType, FloatRect(0, 0, 100, 100)); | 765 drawRect(context, third, backgroundDrawingType, FloatRect(0, 0, 100, 100)); |
| 763 displayItemList().commitNewDisplayItems(); | 766 displayItemList().commitNewDisplayItems(); |
| 764 | 767 |
| 765 // Empty clips should have been optimized out. | 768 // Empty clips should have been optimized out. |
| 766 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 2, | 769 EXPECT_DISPLAY_LIST(displayItemList().displayItems(), 2, |
| 767 TestDisplayItem(first, backgroundDrawingType), | 770 TestDisplayItem(first, backgroundDrawingType), |
| 768 TestDisplayItem(third, backgroundDrawingType)); | 771 TestDisplayItem(third, backgroundDrawingType)); |
| 769 } | 772 } |
| 770 | 773 |
| 771 } // namespace blink | 774 } // namespace blink |
| OLD | NEW |