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

Side by Side Diff: third_party/WebKit/Source/core/editing/CaretDisplayItemClientTest.cpp

Issue 2872423002: Tweak PaintInvalidationReasons (Closed)
Patch Set: Rebaseline-cl Created 3 years, 7 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
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "core/editing/CaretDisplayItemClient.h" 5 #include "core/editing/CaretDisplayItemClient.h"
6 6
7 #include "core/HTMLNames.h" 7 #include "core/HTMLNames.h"
8 #include "core/editing/FrameSelection.h" 8 #include "core/editing/FrameSelection.h"
9 #include "core/frame/FrameView.h" 9 #include "core/frame/FrameView.h"
10 #include "core/layout/LayoutTestHelper.h" 10 #include "core/layout/LayoutTestHelper.h"
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 LayoutRect caret_visual_rect = GetCaretDisplayItemClient().VisualRect(); 93 LayoutRect caret_visual_rect = GetCaretDisplayItemClient().VisualRect();
94 EXPECT_EQ(1, caret_visual_rect.Width()); 94 EXPECT_EQ(1, caret_visual_rect.Width());
95 EXPECT_EQ(block->Location(), caret_visual_rect.Location()); 95 EXPECT_EQ(block->Location(), caret_visual_rect.Location());
96 96
97 const auto* raster_invalidations = 97 const auto* raster_invalidations =
98 &GetRasterInvalidationTracking()->invalidations; 98 &GetRasterInvalidationTracking()->invalidations;
99 ASSERT_EQ(1u, raster_invalidations->size()); 99 ASSERT_EQ(1u, raster_invalidations->size());
100 EXPECT_EQ(EnclosingIntRect(caret_visual_rect), 100 EXPECT_EQ(EnclosingIntRect(caret_visual_rect),
101 (*raster_invalidations)[0].rect); 101 (*raster_invalidations)[0].rect);
102 EXPECT_EQ(block, (*raster_invalidations)[0].client); 102 EXPECT_EQ(block, (*raster_invalidations)[0].client);
103 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[0].reason); 103 EXPECT_EQ(PaintInvalidationReason::kCaret, (*raster_invalidations)[0].reason);
104 104
105 std::unique_ptr<JSONArray> object_invalidations = 105 std::unique_ptr<JSONArray> object_invalidations =
106 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); 106 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
107 ASSERT_EQ(1u, object_invalidations->size()); 107 ASSERT_EQ(1u, object_invalidations->size());
108 String s; 108 String s;
109 JSONObject::Cast(object_invalidations->at(0))->Get("object")->AsString(&s); 109 JSONObject::Cast(object_invalidations->at(0))->Get("object")->AsString(&s);
110 EXPECT_EQ("Caret", s); 110 EXPECT_EQ("Caret", s);
111 GetDocument().View()->SetTracksPaintInvalidations(false); 111 GetDocument().View()->SetTracksPaintInvalidations(false);
112 112
113 // Move the caret to the end of the text. Should invalidate both the old and 113 // Move the caret to the end of the text. Should invalidate both the old and
114 // new carets. 114 // new carets.
115 GetDocument().View()->SetTracksPaintInvalidations(true); 115 GetDocument().View()->SetTracksPaintInvalidations(true);
116 Selection().SetSelection( 116 Selection().SetSelection(
117 SelectionInDOMTree::Builder().Collapse(Position(text, 5)).Build()); 117 SelectionInDOMTree::Builder().Collapse(Position(text, 5)).Build());
118 UpdateAllLifecyclePhases(); 118 UpdateAllLifecyclePhases();
119 EXPECT_TRUE(block->ShouldPaintCursorCaret()); 119 EXPECT_TRUE(block->ShouldPaintCursorCaret());
120 120
121 LayoutRect new_caret_visual_rect = GetCaretDisplayItemClient().VisualRect(); 121 LayoutRect new_caret_visual_rect = GetCaretDisplayItemClient().VisualRect();
122 EXPECT_EQ(caret_visual_rect.Size(), new_caret_visual_rect.Size()); 122 EXPECT_EQ(caret_visual_rect.Size(), new_caret_visual_rect.Size());
123 EXPECT_EQ(caret_visual_rect.Y(), new_caret_visual_rect.Y()); 123 EXPECT_EQ(caret_visual_rect.Y(), new_caret_visual_rect.Y());
124 EXPECT_LT(caret_visual_rect.X(), new_caret_visual_rect.X()); 124 EXPECT_LT(caret_visual_rect.X(), new_caret_visual_rect.X());
125 125
126 raster_invalidations = &GetRasterInvalidationTracking()->invalidations; 126 raster_invalidations = &GetRasterInvalidationTracking()->invalidations;
127 ASSERT_EQ(2u, raster_invalidations->size()); 127 ASSERT_EQ(2u, raster_invalidations->size());
128 EXPECT_EQ(EnclosingIntRect(caret_visual_rect), 128 EXPECT_EQ(EnclosingIntRect(caret_visual_rect),
129 (*raster_invalidations)[0].rect); 129 (*raster_invalidations)[0].rect);
130 EXPECT_EQ(block, (*raster_invalidations)[0].client); 130 EXPECT_EQ(block, (*raster_invalidations)[0].client);
131 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[0].reason); 131 EXPECT_EQ(PaintInvalidationReason::kCaret, (*raster_invalidations)[0].reason);
132 EXPECT_EQ(EnclosingIntRect(new_caret_visual_rect), 132 EXPECT_EQ(EnclosingIntRect(new_caret_visual_rect),
133 (*raster_invalidations)[1].rect); 133 (*raster_invalidations)[1].rect);
134 EXPECT_EQ(block, (*raster_invalidations)[1].client); 134 EXPECT_EQ(block, (*raster_invalidations)[1].client);
135 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[1].reason); 135 EXPECT_EQ(PaintInvalidationReason::kCaret, (*raster_invalidations)[1].reason);
136 136
137 object_invalidations = 137 object_invalidations =
138 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); 138 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
139 ASSERT_EQ(1u, object_invalidations->size()); 139 ASSERT_EQ(1u, object_invalidations->size());
140 JSONObject::Cast(object_invalidations->at(0))->Get("object")->AsString(&s); 140 JSONObject::Cast(object_invalidations->at(0))->Get("object")->AsString(&s);
141 EXPECT_EQ("Caret", s); 141 EXPECT_EQ("Caret", s);
142 GetDocument().View()->SetTracksPaintInvalidations(false); 142 GetDocument().View()->SetTracksPaintInvalidations(false);
143 143
144 // Remove selection. Should invalidate the old caret. 144 // Remove selection. Should invalidate the old caret.
145 LayoutRect old_caret_visual_rect = new_caret_visual_rect; 145 LayoutRect old_caret_visual_rect = new_caret_visual_rect;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 EXPECT_EQ(block2->VisualRect().Location(), caret_visual_rect2.Location()); 194 EXPECT_EQ(block2->VisualRect().Location(), caret_visual_rect2.Location());
195 EXPECT_FALSE(block1->ShouldPaintCursorCaret()); 195 EXPECT_FALSE(block1->ShouldPaintCursorCaret());
196 EXPECT_TRUE(block2->ShouldPaintCursorCaret()); 196 EXPECT_TRUE(block2->ShouldPaintCursorCaret());
197 197
198 const auto* raster_invalidations = 198 const auto* raster_invalidations =
199 &GetRasterInvalidationTracking()->invalidations; 199 &GetRasterInvalidationTracking()->invalidations;
200 ASSERT_EQ(2u, raster_invalidations->size()); 200 ASSERT_EQ(2u, raster_invalidations->size());
201 EXPECT_EQ(EnclosingIntRect(caret_visual_rect1), 201 EXPECT_EQ(EnclosingIntRect(caret_visual_rect1),
202 (*raster_invalidations)[0].rect); 202 (*raster_invalidations)[0].rect);
203 EXPECT_EQ(block1, (*raster_invalidations)[0].client); 203 EXPECT_EQ(block1, (*raster_invalidations)[0].client);
204 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[0].reason); 204 EXPECT_EQ(PaintInvalidationReason::kCaret, (*raster_invalidations)[0].reason);
205 EXPECT_EQ(EnclosingIntRect(caret_visual_rect2), 205 EXPECT_EQ(EnclosingIntRect(caret_visual_rect2),
206 (*raster_invalidations)[1].rect); 206 (*raster_invalidations)[1].rect);
207 EXPECT_EQ(block2, (*raster_invalidations)[1].client); 207 EXPECT_EQ(block2, (*raster_invalidations)[1].client);
208 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[1].reason); 208 EXPECT_EQ(PaintInvalidationReason::kCaret, (*raster_invalidations)[1].reason);
209 209
210 std::unique_ptr<JSONArray> object_invalidations = 210 std::unique_ptr<JSONArray> object_invalidations =
211 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); 211 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
212 ASSERT_EQ(2u, object_invalidations->size()); 212 ASSERT_EQ(2u, object_invalidations->size());
213 GetDocument().View()->SetTracksPaintInvalidations(false); 213 GetDocument().View()->SetTracksPaintInvalidations(false);
214 214
215 // Move the caret back into block1. 215 // Move the caret back into block1.
216 GetDocument().View()->SetTracksPaintInvalidations(true); 216 GetDocument().View()->SetTracksPaintInvalidations(true);
217 Selection().SetSelection(SelectionInDOMTree::Builder() 217 Selection().SetSelection(SelectionInDOMTree::Builder()
218 .Collapse(Position(block_element1, 0)) 218 .Collapse(Position(block_element1, 0))
219 .Build()); 219 .Build());
220 UpdateAllLifecyclePhases(); 220 UpdateAllLifecyclePhases();
221 221
222 EXPECT_EQ(caret_visual_rect1, GetCaretDisplayItemClient().VisualRect()); 222 EXPECT_EQ(caret_visual_rect1, GetCaretDisplayItemClient().VisualRect());
223 EXPECT_TRUE(block1->ShouldPaintCursorCaret()); 223 EXPECT_TRUE(block1->ShouldPaintCursorCaret());
224 EXPECT_FALSE(block2->ShouldPaintCursorCaret()); 224 EXPECT_FALSE(block2->ShouldPaintCursorCaret());
225 225
226 raster_invalidations = &GetRasterInvalidationTracking()->invalidations; 226 raster_invalidations = &GetRasterInvalidationTracking()->invalidations;
227 ASSERT_EQ(2u, raster_invalidations->size()); 227 ASSERT_EQ(2u, raster_invalidations->size());
228 EXPECT_EQ(EnclosingIntRect(caret_visual_rect1), 228 EXPECT_EQ(EnclosingIntRect(caret_visual_rect1),
229 (*raster_invalidations)[0].rect); 229 (*raster_invalidations)[0].rect);
230 EXPECT_EQ(block1, (*raster_invalidations)[0].client); 230 EXPECT_EQ(block1, (*raster_invalidations)[0].client);
231 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[0].reason); 231 EXPECT_EQ(PaintInvalidationReason::kCaret, (*raster_invalidations)[0].reason);
232 EXPECT_EQ(EnclosingIntRect(caret_visual_rect2), 232 EXPECT_EQ(EnclosingIntRect(caret_visual_rect2),
233 (*raster_invalidations)[1].rect); 233 (*raster_invalidations)[1].rect);
234 EXPECT_EQ(block2, (*raster_invalidations)[1].client); 234 EXPECT_EQ(block2, (*raster_invalidations)[1].client);
235 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[1].reason); 235 EXPECT_EQ(PaintInvalidationReason::kCaret, (*raster_invalidations)[1].reason);
236 236
237 object_invalidations = 237 object_invalidations =
238 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); 238 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
239 ASSERT_EQ(2u, object_invalidations->size()); 239 ASSERT_EQ(2u, object_invalidations->size());
240 GetDocument().View()->SetTracksPaintInvalidations(false); 240 GetDocument().View()->SetTracksPaintInvalidations(false);
241 } 241 }
242 242
243 TEST_F(CaretDisplayItemClientTest, UpdatePreviousLayoutBlock) { 243 TEST_F(CaretDisplayItemClientTest, UpdatePreviousLayoutBlock) {
244 GetDocument().body()->setContentEditable("true", ASSERT_NO_EXCEPTION); 244 GetDocument().body()->setContentEditable("true", ASSERT_NO_EXCEPTION);
245 GetDocument().GetPage()->GetFocusController().SetActive(true); 245 GetDocument().GetPage()->GetFocusController().SetActive(true);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 LayoutRect new_caret_visual_rect = GetCaretDisplayItemClient().VisualRect(); 325 LayoutRect new_caret_visual_rect = GetCaretDisplayItemClient().VisualRect();
326 EXPECT_EQ(caret_visual_rect.Size(), new_caret_visual_rect.Size()); 326 EXPECT_EQ(caret_visual_rect.Size(), new_caret_visual_rect.Size());
327 EXPECT_EQ(caret_visual_rect.Y(), new_caret_visual_rect.Y()); 327 EXPECT_EQ(caret_visual_rect.Y(), new_caret_visual_rect.Y());
328 EXPECT_LT(caret_visual_rect.X(), new_caret_visual_rect.X()); 328 EXPECT_LT(caret_visual_rect.X(), new_caret_visual_rect.X());
329 329
330 const auto& raster_invalidations = 330 const auto& raster_invalidations =
331 GetRasterInvalidationTracking()->invalidations; 331 GetRasterInvalidationTracking()->invalidations;
332 ASSERT_EQ(2u, raster_invalidations.size()); 332 ASSERT_EQ(2u, raster_invalidations.size());
333 EXPECT_EQ(EnclosingIntRect(caret_visual_rect), raster_invalidations[0].rect); 333 EXPECT_EQ(EnclosingIntRect(caret_visual_rect), raster_invalidations[0].rect);
334 EXPECT_EQ(block, raster_invalidations[0].client); 334 EXPECT_EQ(block, raster_invalidations[0].client);
335 EXPECT_EQ(kPaintInvalidationCaret, raster_invalidations[0].reason); 335 EXPECT_EQ(PaintInvalidationReason::kCaret, raster_invalidations[0].reason);
336 EXPECT_EQ(EnclosingIntRect(new_caret_visual_rect), 336 EXPECT_EQ(EnclosingIntRect(new_caret_visual_rect),
337 raster_invalidations[1].rect); 337 raster_invalidations[1].rect);
338 EXPECT_EQ(block, raster_invalidations[1].client); 338 EXPECT_EQ(block, raster_invalidations[1].client);
339 EXPECT_EQ(kPaintInvalidationCaret, raster_invalidations[1].reason); 339 EXPECT_EQ(PaintInvalidationReason::kCaret, raster_invalidations[1].reason);
340 340
341 auto object_invalidations = 341 auto object_invalidations =
342 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); 342 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
343 ASSERT_EQ(1u, object_invalidations->size()); 343 ASSERT_EQ(1u, object_invalidations->size());
344 String s; 344 String s;
345 JSONObject::Cast(object_invalidations->at(0))->Get("object")->AsString(&s); 345 JSONObject::Cast(object_invalidations->at(0))->Get("object")->AsString(&s);
346 EXPECT_EQ("Caret", s); 346 EXPECT_EQ("Caret", s);
347 GetDocument().View()->SetTracksPaintInvalidations(false); 347 GetDocument().View()->SetTracksPaintInvalidations(false);
348 } 348 }
349 349
(...skipping 28 matching lines...) Expand all
378 EXPECT_EQ(LayoutRect(50, 50, 1, 1), GetCaretDisplayItemClient().VisualRect()); 378 EXPECT_EQ(LayoutRect(50, 50, 1, 1), GetCaretDisplayItemClient().VisualRect());
379 379
380 // Uncomposite container. 380 // Uncomposite container.
381 container->setAttribute(HTMLNames::styleAttr, ""); 381 container->setAttribute(HTMLNames::styleAttr, "");
382 UpdateAllLifecyclePhases(); 382 UpdateAllLifecyclePhases();
383 EXPECT_EQ(LayoutRect(116, 105, 1, 1), 383 EXPECT_EQ(LayoutRect(116, 105, 1, 1),
384 GetCaretDisplayItemClient().VisualRect()); 384 GetCaretDisplayItemClient().VisualRect());
385 } 385 }
386 386
387 } // namespace blink 387 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698