diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/editing/caret_display_item_client_test.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/core/editing/caret_display_item_client_test.cc | 213 |
1 files changed, 58 insertions, 155 deletions
diff --git a/chromium/third_party/blink/renderer/core/editing/caret_display_item_client_test.cc b/chromium/third_party/blink/renderer/core/editing/caret_display_item_client_test.cc index af6cd31f176..19cc6e4369b 100644 --- a/chromium/third_party/blink/renderer/core/editing/caret_display_item_client_test.cc +++ b/chromium/third_party/blink/renderer/core/editing/caret_display_item_client_test.cc @@ -4,38 +4,27 @@ #include "third_party/blink/renderer/core/editing/caret_display_item_client.h" +#include "testing/gmock/include/gmock/gmock.h" #include "third_party/blink/renderer/core/editing/frame_selection.h" #include "third_party/blink/renderer/core/editing/selection_template.h" #include "third_party/blink/renderer/core/frame/local_frame_view.h" #include "third_party/blink/renderer/core/html_names.h" #include "third_party/blink/renderer/core/layout/layout_view.h" #include "third_party/blink/renderer/core/page/focus_controller.h" +#include "third_party/blink/renderer/core/paint/paint_and_raster_invalidation_test.h" #include "third_party/blink/renderer/core/paint/paint_layer.h" -#include "third_party/blink/renderer/core/testing/core_unit_test_helper.h" -#include "third_party/blink/renderer/platform/graphics/graphics_layer.h" -#include "third_party/blink/renderer/platform/graphics/paint/raster_invalidation_tracking.h" -#include "third_party/blink/renderer/platform/testing/paint_test_configurations.h" namespace blink { -class CaretDisplayItemClientTest : public PaintTestConfigurations, - public RenderingTest { +using ::testing::UnorderedElementsAre; + +class CaretDisplayItemClientTest : public PaintAndRasterInvalidationTest { protected: void SetUp() override { - RenderingTest::SetUp(); - EnableCompositing(); + PaintAndRasterInvalidationTest::SetUp(); Selection().SetCaretBlinkingSuspended(true); } - const RasterInvalidationTracking* GetRasterInvalidationTracking() const { - // TODO(wangxianzhu): Test SPv2. - DCHECK(!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()); - return GetLayoutView() - .Layer() - ->GraphicsLayerBacking() - ->GetRasterInvalidationTracking(); - } - FrameSelection& Selection() const { return GetDocument().View()->GetFrame().Selection(); } @@ -100,23 +89,11 @@ TEST_P(CaretDisplayItemClientTest, CaretPaintInvalidation) { EXPECT_EQ(1, caret_visual_rect.Width()); EXPECT_EQ(block->Location(), caret_visual_rect.Location()); - const Vector<RasterInvalidationInfo>* raster_invalidations; - if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) { - raster_invalidations = &GetRasterInvalidationTracking()->Invalidations(); - ASSERT_EQ(1u, raster_invalidations->size()); - EXPECT_EQ(EnclosingIntRect(caret_visual_rect), - (*raster_invalidations)[0].rect); - if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) { - EXPECT_EQ(&GetCaretDisplayItemClient(), - (*raster_invalidations)[0].client); - EXPECT_EQ(PaintInvalidationReason::kAppeared, - (*raster_invalidations)[0].reason); - } else { - EXPECT_EQ(block, (*raster_invalidations)[0].client); - EXPECT_EQ(PaintInvalidationReason::kCaret, - (*raster_invalidations)[0].reason); - } - } + EXPECT_THAT(GetRasterInvalidationTracking()->Invalidations(), + UnorderedElementsAre( + RasterInvalidationInfo{&GetCaretDisplayItemClient(), "Caret", + EnclosingIntRect(caret_visual_rect), + PaintInvalidationReason::kAppeared})); std::unique_ptr<JSONArray> object_invalidations = GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); @@ -139,30 +116,15 @@ TEST_P(CaretDisplayItemClientTest, CaretPaintInvalidation) { EXPECT_EQ(caret_visual_rect.Y(), new_caret_visual_rect.Y()); EXPECT_LT(caret_visual_rect.X(), new_caret_visual_rect.X()); - if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) { - raster_invalidations = &GetRasterInvalidationTracking()->Invalidations(); - ASSERT_EQ(2u, raster_invalidations->size()); - EXPECT_EQ(EnclosingIntRect(caret_visual_rect), - (*raster_invalidations)[0].rect); - if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) { - EXPECT_EQ(&GetCaretDisplayItemClient(), - (*raster_invalidations)[0].client); - } else { - EXPECT_EQ(block, (*raster_invalidations)[0].client); - } - EXPECT_EQ(PaintInvalidationReason::kCaret, - (*raster_invalidations)[0].reason); - EXPECT_EQ(EnclosingIntRect(new_caret_visual_rect), - (*raster_invalidations)[1].rect); - if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) { - EXPECT_EQ(&GetCaretDisplayItemClient(), - (*raster_invalidations)[1].client); - } else { - EXPECT_EQ(block, (*raster_invalidations)[1].client); - } - EXPECT_EQ(PaintInvalidationReason::kCaret, - (*raster_invalidations)[1].reason); - } + EXPECT_THAT( + GetRasterInvalidationTracking()->Invalidations(), + UnorderedElementsAre( + RasterInvalidationInfo{&GetCaretDisplayItemClient(), "Caret", + EnclosingIntRect(caret_visual_rect), + PaintInvalidationReason::kCaret}, + RasterInvalidationInfo{&GetCaretDisplayItemClient(), "Caret", + EnclosingIntRect(new_caret_visual_rect), + PaintInvalidationReason::kCaret})); object_invalidations = GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); @@ -179,18 +141,11 @@ TEST_P(CaretDisplayItemClientTest, CaretPaintInvalidation) { EXPECT_FALSE(block->ShouldPaintCursorCaret()); EXPECT_EQ(LayoutRect(), GetCaretDisplayItemClient().VisualRect()); - if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) { - raster_invalidations = &GetRasterInvalidationTracking()->Invalidations(); - ASSERT_EQ(1u, raster_invalidations->size()); - EXPECT_EQ(EnclosingIntRect(old_caret_visual_rect), - (*raster_invalidations)[0].rect); - if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) { - EXPECT_EQ(&GetCaretDisplayItemClient(), - (*raster_invalidations)[0].client); - } else { - EXPECT_EQ(block, (*raster_invalidations)[0].client); - } - } + EXPECT_THAT(GetRasterInvalidationTracking()->Invalidations(), + UnorderedElementsAre(RasterInvalidationInfo{ + &GetCaretDisplayItemClient(), "Caret", + EnclosingIntRect(old_caret_visual_rect), + PaintInvalidationReason::kDisappeared})); object_invalidations = GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); @@ -207,8 +162,8 @@ TEST_P(CaretDisplayItemClientTest, CaretMovesBetweenBlocks) { auto* block_element1 = AppendBlock("Block1"); auto* block_element2 = AppendBlock("Block2"); UpdateAllLifecyclePhases(); - auto* block1 = ToLayoutBlock(block_element1->GetLayoutObject()); - auto* block2 = ToLayoutBlock(block_element2->GetLayoutObject()); + auto* block1 = ToLayoutBlockFlow(block_element1->GetLayoutObject()); + auto* block2 = ToLayoutBlockFlow(block_element2->GetLayoutObject()); // Focus the body. GetDocument().body()->focus(); @@ -235,36 +190,14 @@ TEST_P(CaretDisplayItemClientTest, CaretMovesBetweenBlocks) { EXPECT_FALSE(block1->ShouldPaintCursorCaret()); EXPECT_TRUE(block2->ShouldPaintCursorCaret()); - const Vector<RasterInvalidationInfo>* raster_invalidations; - if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) { - raster_invalidations = &GetRasterInvalidationTracking()->Invalidations(); - ASSERT_EQ(2u, raster_invalidations->size()); - if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) { - EXPECT_EQ(EnclosingIntRect(caret_visual_rect1), - (*raster_invalidations)[0].rect); - EXPECT_EQ(&GetCaretDisplayItemClient(), - (*raster_invalidations)[0].client); - EXPECT_EQ(PaintInvalidationReason::kCaret, - (*raster_invalidations)[0].reason); - EXPECT_EQ(EnclosingIntRect(caret_visual_rect2), - (*raster_invalidations)[1].rect); - EXPECT_EQ(&GetCaretDisplayItemClient(), - (*raster_invalidations)[1].client); - EXPECT_EQ(PaintInvalidationReason::kCaret, - (*raster_invalidations)[1].reason); - } else { - EXPECT_EQ(EnclosingIntRect(caret_visual_rect1), - (*raster_invalidations)[0].rect); - EXPECT_EQ(block1, (*raster_invalidations)[0].client); - EXPECT_EQ(PaintInvalidationReason::kCaret, - (*raster_invalidations)[0].reason); - EXPECT_EQ(EnclosingIntRect(caret_visual_rect2), - (*raster_invalidations)[1].rect); - EXPECT_EQ(block2, (*raster_invalidations)[1].client); - EXPECT_EQ(PaintInvalidationReason::kCaret, - (*raster_invalidations)[1].reason); - } - } + EXPECT_THAT(GetRasterInvalidationTracking()->Invalidations(), + UnorderedElementsAre( + RasterInvalidationInfo{&GetCaretDisplayItemClient(), "Caret", + EnclosingIntRect(caret_visual_rect1), + PaintInvalidationReason::kCaret}, + RasterInvalidationInfo{&GetCaretDisplayItemClient(), "Caret", + EnclosingIntRect(caret_visual_rect2), + PaintInvalidationReason::kCaret})); std::unique_ptr<JSONArray> object_invalidations = GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); @@ -283,35 +216,14 @@ TEST_P(CaretDisplayItemClientTest, CaretMovesBetweenBlocks) { EXPECT_TRUE(block1->ShouldPaintCursorCaret()); EXPECT_FALSE(block2->ShouldPaintCursorCaret()); - if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) { - raster_invalidations = &GetRasterInvalidationTracking()->Invalidations(); - ASSERT_EQ(2u, raster_invalidations->size()); - if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) { - EXPECT_EQ(EnclosingIntRect(caret_visual_rect2), - (*raster_invalidations)[0].rect); - EXPECT_EQ(&GetCaretDisplayItemClient(), - (*raster_invalidations)[0].client); - EXPECT_EQ(PaintInvalidationReason::kCaret, - (*raster_invalidations)[0].reason); - EXPECT_EQ(EnclosingIntRect(caret_visual_rect1), - (*raster_invalidations)[1].rect); - EXPECT_EQ(&GetCaretDisplayItemClient(), - (*raster_invalidations)[1].client); - EXPECT_EQ(PaintInvalidationReason::kCaret, - (*raster_invalidations)[1].reason); - } else { - EXPECT_EQ(EnclosingIntRect(caret_visual_rect1), - (*raster_invalidations)[0].rect); - EXPECT_EQ(block1, (*raster_invalidations)[0].client); - EXPECT_EQ(PaintInvalidationReason::kCaret, - (*raster_invalidations)[0].reason); - EXPECT_EQ(EnclosingIntRect(caret_visual_rect2), - (*raster_invalidations)[1].rect); - EXPECT_EQ(block2, (*raster_invalidations)[1].client); - EXPECT_EQ(PaintInvalidationReason::kCaret, - (*raster_invalidations)[1].reason); - } - } + EXPECT_THAT(GetRasterInvalidationTracking()->Invalidations(), + UnorderedElementsAre( + RasterInvalidationInfo{&GetCaretDisplayItemClient(), "Caret", + EnclosingIntRect(caret_visual_rect1), + PaintInvalidationReason::kCaret}, + RasterInvalidationInfo{&GetCaretDisplayItemClient(), "Caret", + EnclosingIntRect(caret_visual_rect2), + PaintInvalidationReason::kCaret})); object_invalidations = GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); @@ -410,25 +322,15 @@ TEST_P(CaretDisplayItemClientTest, CaretHideMoveAndShow) { EXPECT_EQ(caret_visual_rect.Y(), new_caret_visual_rect.Y()); EXPECT_LT(caret_visual_rect.X(), new_caret_visual_rect.X()); - if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) { - const auto& raster_invalidations = - GetRasterInvalidationTracking()->Invalidations(); - ASSERT_EQ(2u, raster_invalidations.size()); - EXPECT_EQ(EnclosingIntRect(caret_visual_rect), - raster_invalidations[0].rect); - if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) - EXPECT_EQ(&GetCaretDisplayItemClient(), raster_invalidations[0].client); - else - EXPECT_EQ(block, raster_invalidations[0].client); - EXPECT_EQ(PaintInvalidationReason::kCaret, raster_invalidations[0].reason); - EXPECT_EQ(EnclosingIntRect(new_caret_visual_rect), - raster_invalidations[1].rect); - if (RuntimeEnabledFeatures::SlimmingPaintV175Enabled()) - EXPECT_EQ(&GetCaretDisplayItemClient(), raster_invalidations[1].client); - else - EXPECT_EQ(block, raster_invalidations[1].client); - EXPECT_EQ(PaintInvalidationReason::kCaret, raster_invalidations[1].reason); - } + EXPECT_THAT( + GetRasterInvalidationTracking()->Invalidations(), + UnorderedElementsAre( + RasterInvalidationInfo{&GetCaretDisplayItemClient(), "Caret", + EnclosingIntRect(caret_visual_rect), + PaintInvalidationReason::kCaret}, + RasterInvalidationInfo{&GetCaretDisplayItemClient(), "Caret", + EnclosingIntRect(new_caret_visual_rect), + PaintInvalidationReason::kCaret})); auto object_invalidations = GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); @@ -440,10 +342,6 @@ TEST_P(CaretDisplayItemClientTest, CaretHideMoveAndShow) { } TEST_P(CaretDisplayItemClientTest, CompositingChange) { - if (RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) - return; - - EnableCompositing(); SetBodyInnerHTML( "<style>" " body { margin: 0 }" @@ -470,7 +368,12 @@ TEST_P(CaretDisplayItemClientTest, CompositingChange) { // Composite container. container->setAttribute(HTMLNames::styleAttr, "will-change: transform"); UpdateAllLifecyclePhases(); - EXPECT_EQ(LayoutRect(50, 50, 1, 1), GetCaretDisplayItemClient().VisualRect()); + // TODO(wangxianzhu): Why will-change:transform doens't trigger compositing + // in SPv2? + if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled()) { + EXPECT_EQ(LayoutRect(50, 50, 1, 1), + GetCaretDisplayItemClient().VisualRect()); + } // Uncomposite container. container->setAttribute(HTMLNames::styleAttr, ""); |