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

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

Issue 2868283003: [SPv2] Renaming and refactor about raster invalidation tracking (Closed)
Patch Set: - 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/paint/BoxPaintInvalidatorTest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 GetDocument().View()->SetTracksPaintInvalidations(true); 88 GetDocument().View()->SetTracksPaintInvalidations(true);
89 GetDocument().body()->focus(); 89 GetDocument().body()->focus();
90 UpdateAllLifecyclePhases(); 90 UpdateAllLifecyclePhases();
91 EXPECT_TRUE(block->ShouldPaintCursorCaret()); 91 EXPECT_TRUE(block->ShouldPaintCursorCaret());
92 92
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()->tracked_raster_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(kPaintInvalidationCaret, (*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 = 126 raster_invalidations = &GetRasterInvalidationTracking()->invalidations;
127 &GetRasterInvalidationTracking()->tracked_raster_invalidations;
128 ASSERT_EQ(2u, raster_invalidations->size()); 127 ASSERT_EQ(2u, raster_invalidations->size());
129 EXPECT_EQ(EnclosingIntRect(caret_visual_rect), 128 EXPECT_EQ(EnclosingIntRect(caret_visual_rect),
130 (*raster_invalidations)[0].rect); 129 (*raster_invalidations)[0].rect);
131 EXPECT_EQ(block, (*raster_invalidations)[0].client); 130 EXPECT_EQ(block, (*raster_invalidations)[0].client);
132 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[0].reason); 131 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[0].reason);
133 EXPECT_EQ(EnclosingIntRect(new_caret_visual_rect), 132 EXPECT_EQ(EnclosingIntRect(new_caret_visual_rect),
134 (*raster_invalidations)[1].rect); 133 (*raster_invalidations)[1].rect);
135 EXPECT_EQ(block, (*raster_invalidations)[1].client); 134 EXPECT_EQ(block, (*raster_invalidations)[1].client);
136 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[1].reason); 135 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[1].reason);
137 136
138 object_invalidations = 137 object_invalidations =
139 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); 138 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
140 ASSERT_EQ(1u, object_invalidations->size()); 139 ASSERT_EQ(1u, object_invalidations->size());
141 JSONObject::Cast(object_invalidations->at(0))->Get("object")->AsString(&s); 140 JSONObject::Cast(object_invalidations->at(0))->Get("object")->AsString(&s);
142 EXPECT_EQ("Caret", s); 141 EXPECT_EQ("Caret", s);
143 GetDocument().View()->SetTracksPaintInvalidations(false); 142 GetDocument().View()->SetTracksPaintInvalidations(false);
144 143
145 // Remove selection. Should invalidate the old caret. 144 // Remove selection. Should invalidate the old caret.
146 LayoutRect old_caret_visual_rect = new_caret_visual_rect; 145 LayoutRect old_caret_visual_rect = new_caret_visual_rect;
147 GetDocument().View()->SetTracksPaintInvalidations(true); 146 GetDocument().View()->SetTracksPaintInvalidations(true);
148 Selection().SetSelection(SelectionInDOMTree()); 147 Selection().SetSelection(SelectionInDOMTree());
149 UpdateAllLifecyclePhases(); 148 UpdateAllLifecyclePhases();
150 EXPECT_FALSE(block->ShouldPaintCursorCaret()); 149 EXPECT_FALSE(block->ShouldPaintCursorCaret());
151 EXPECT_EQ(LayoutRect(), GetCaretDisplayItemClient().VisualRect()); 150 EXPECT_EQ(LayoutRect(), GetCaretDisplayItemClient().VisualRect());
152 151
153 raster_invalidations = 152 raster_invalidations = &GetRasterInvalidationTracking()->invalidations;
154 &GetRasterInvalidationTracking()->tracked_raster_invalidations;
155 ASSERT_EQ(1u, raster_invalidations->size()); 153 ASSERT_EQ(1u, raster_invalidations->size());
156 EXPECT_EQ(EnclosingIntRect(old_caret_visual_rect), 154 EXPECT_EQ(EnclosingIntRect(old_caret_visual_rect),
157 (*raster_invalidations)[0].rect); 155 (*raster_invalidations)[0].rect);
158 EXPECT_EQ(block, (*raster_invalidations)[0].client); 156 EXPECT_EQ(block, (*raster_invalidations)[0].client);
159 157
160 object_invalidations = 158 object_invalidations =
161 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); 159 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
162 ASSERT_EQ(1u, object_invalidations->size()); 160 ASSERT_EQ(1u, object_invalidations->size());
163 JSONObject::Cast(object_invalidations->at(0))->Get("object")->AsString(&s); 161 JSONObject::Cast(object_invalidations->at(0))->Get("object")->AsString(&s);
164 EXPECT_EQ("Caret", s); 162 EXPECT_EQ("Caret", s);
(...skipping 26 matching lines...) Expand all
191 .Build()); 189 .Build());
192 UpdateAllLifecyclePhases(); 190 UpdateAllLifecyclePhases();
193 191
194 LayoutRect caret_visual_rect2 = GetCaretDisplayItemClient().VisualRect(); 192 LayoutRect caret_visual_rect2 = GetCaretDisplayItemClient().VisualRect();
195 EXPECT_EQ(1, caret_visual_rect2.Width()); 193 EXPECT_EQ(1, caret_visual_rect2.Width());
196 EXPECT_EQ(block2->VisualRect().Location(), caret_visual_rect2.Location()); 194 EXPECT_EQ(block2->VisualRect().Location(), caret_visual_rect2.Location());
197 EXPECT_FALSE(block1->ShouldPaintCursorCaret()); 195 EXPECT_FALSE(block1->ShouldPaintCursorCaret());
198 EXPECT_TRUE(block2->ShouldPaintCursorCaret()); 196 EXPECT_TRUE(block2->ShouldPaintCursorCaret());
199 197
200 const auto* raster_invalidations = 198 const auto* raster_invalidations =
201 &GetRasterInvalidationTracking()->tracked_raster_invalidations; 199 &GetRasterInvalidationTracking()->invalidations;
202 ASSERT_EQ(2u, raster_invalidations->size()); 200 ASSERT_EQ(2u, raster_invalidations->size());
203 EXPECT_EQ(EnclosingIntRect(caret_visual_rect1), 201 EXPECT_EQ(EnclosingIntRect(caret_visual_rect1),
204 (*raster_invalidations)[0].rect); 202 (*raster_invalidations)[0].rect);
205 EXPECT_EQ(block1, (*raster_invalidations)[0].client); 203 EXPECT_EQ(block1, (*raster_invalidations)[0].client);
206 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[0].reason); 204 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[0].reason);
207 EXPECT_EQ(EnclosingIntRect(caret_visual_rect2), 205 EXPECT_EQ(EnclosingIntRect(caret_visual_rect2),
208 (*raster_invalidations)[1].rect); 206 (*raster_invalidations)[1].rect);
209 EXPECT_EQ(block2, (*raster_invalidations)[1].client); 207 EXPECT_EQ(block2, (*raster_invalidations)[1].client);
210 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[1].reason); 208 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[1].reason);
211 209
212 std::unique_ptr<JSONArray> object_invalidations = 210 std::unique_ptr<JSONArray> object_invalidations =
213 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON(); 211 GetDocument().View()->TrackedObjectPaintInvalidationsAsJSON();
214 ASSERT_EQ(2u, object_invalidations->size()); 212 ASSERT_EQ(2u, object_invalidations->size());
215 GetDocument().View()->SetTracksPaintInvalidations(false); 213 GetDocument().View()->SetTracksPaintInvalidations(false);
216 214
217 // Move the caret back into block1. 215 // Move the caret back into block1.
218 GetDocument().View()->SetTracksPaintInvalidations(true); 216 GetDocument().View()->SetTracksPaintInvalidations(true);
219 Selection().SetSelection(SelectionInDOMTree::Builder() 217 Selection().SetSelection(SelectionInDOMTree::Builder()
220 .Collapse(Position(block_element1, 0)) 218 .Collapse(Position(block_element1, 0))
221 .Build()); 219 .Build());
222 UpdateAllLifecyclePhases(); 220 UpdateAllLifecyclePhases();
223 221
224 EXPECT_EQ(caret_visual_rect1, GetCaretDisplayItemClient().VisualRect()); 222 EXPECT_EQ(caret_visual_rect1, GetCaretDisplayItemClient().VisualRect());
225 EXPECT_TRUE(block1->ShouldPaintCursorCaret()); 223 EXPECT_TRUE(block1->ShouldPaintCursorCaret());
226 EXPECT_FALSE(block2->ShouldPaintCursorCaret()); 224 EXPECT_FALSE(block2->ShouldPaintCursorCaret());
227 225
228 raster_invalidations = 226 raster_invalidations = &GetRasterInvalidationTracking()->invalidations;
229 &GetRasterInvalidationTracking()->tracked_raster_invalidations;
230 ASSERT_EQ(2u, raster_invalidations->size()); 227 ASSERT_EQ(2u, raster_invalidations->size());
231 EXPECT_EQ(EnclosingIntRect(caret_visual_rect1), 228 EXPECT_EQ(EnclosingIntRect(caret_visual_rect1),
232 (*raster_invalidations)[0].rect); 229 (*raster_invalidations)[0].rect);
233 EXPECT_EQ(block1, (*raster_invalidations)[0].client); 230 EXPECT_EQ(block1, (*raster_invalidations)[0].client);
234 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[0].reason); 231 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[0].reason);
235 EXPECT_EQ(EnclosingIntRect(caret_visual_rect2), 232 EXPECT_EQ(EnclosingIntRect(caret_visual_rect2),
236 (*raster_invalidations)[1].rect); 233 (*raster_invalidations)[1].rect);
237 EXPECT_EQ(block2, (*raster_invalidations)[1].client); 234 EXPECT_EQ(block2, (*raster_invalidations)[1].client);
238 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[1].reason); 235 EXPECT_EQ(kPaintInvalidationCaret, (*raster_invalidations)[1].reason);
239 236
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 // Simulate that the cursor blinking is restarted. 321 // Simulate that the cursor blinking is restarted.
325 Selection().SetCaretVisible(true); 322 Selection().SetCaretVisible(true);
326 UpdateAllLifecyclePhases(); 323 UpdateAllLifecyclePhases();
327 324
328 LayoutRect new_caret_visual_rect = GetCaretDisplayItemClient().VisualRect(); 325 LayoutRect new_caret_visual_rect = GetCaretDisplayItemClient().VisualRect();
329 EXPECT_EQ(caret_visual_rect.Size(), new_caret_visual_rect.Size()); 326 EXPECT_EQ(caret_visual_rect.Size(), new_caret_visual_rect.Size());
330 EXPECT_EQ(caret_visual_rect.Y(), new_caret_visual_rect.Y()); 327 EXPECT_EQ(caret_visual_rect.Y(), new_caret_visual_rect.Y());
331 EXPECT_LT(caret_visual_rect.X(), new_caret_visual_rect.X()); 328 EXPECT_LT(caret_visual_rect.X(), new_caret_visual_rect.X());
332 329
333 const auto& raster_invalidations = 330 const auto& raster_invalidations =
334 GetRasterInvalidationTracking()->tracked_raster_invalidations; 331 GetRasterInvalidationTracking()->invalidations;
335 ASSERT_EQ(2u, raster_invalidations.size()); 332 ASSERT_EQ(2u, raster_invalidations.size());
336 EXPECT_EQ(EnclosingIntRect(caret_visual_rect), raster_invalidations[0].rect); 333 EXPECT_EQ(EnclosingIntRect(caret_visual_rect), raster_invalidations[0].rect);
337 EXPECT_EQ(block, raster_invalidations[0].client); 334 EXPECT_EQ(block, raster_invalidations[0].client);
338 EXPECT_EQ(kPaintInvalidationCaret, raster_invalidations[0].reason); 335 EXPECT_EQ(kPaintInvalidationCaret, raster_invalidations[0].reason);
339 EXPECT_EQ(EnclosingIntRect(new_caret_visual_rect), 336 EXPECT_EQ(EnclosingIntRect(new_caret_visual_rect),
340 raster_invalidations[1].rect); 337 raster_invalidations[1].rect);
341 EXPECT_EQ(block, raster_invalidations[1].client); 338 EXPECT_EQ(block, raster_invalidations[1].client);
342 EXPECT_EQ(kPaintInvalidationCaret, raster_invalidations[1].reason); 339 EXPECT_EQ(kPaintInvalidationCaret, raster_invalidations[1].reason);
343 340
344 auto object_invalidations = 341 auto object_invalidations =
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 EXPECT_EQ(LayoutRect(50, 50, 1, 1), GetCaretDisplayItemClient().VisualRect()); 378 EXPECT_EQ(LayoutRect(50, 50, 1, 1), GetCaretDisplayItemClient().VisualRect());
382 379
383 // Uncomposite container. 380 // Uncomposite container.
384 container->setAttribute(HTMLNames::styleAttr, ""); 381 container->setAttribute(HTMLNames::styleAttr, "");
385 UpdateAllLifecyclePhases(); 382 UpdateAllLifecyclePhases();
386 EXPECT_EQ(LayoutRect(116, 105, 1, 1), 383 EXPECT_EQ(LayoutRect(116, 105, 1, 1),
387 GetCaretDisplayItemClient().VisualRect()); 384 GetCaretDisplayItemClient().VisualRect());
388 } 385 }
389 386
390 } // namespace blink 387 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/paint/BoxPaintInvalidatorTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698