summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/editing/caret_display_item_client_test.cc
diff options
context:
space:
mode:
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.cc213
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, "");