OLD | NEW |
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 18 matching lines...) Expand all Loading... |
29 return layoutView() | 29 return layoutView() |
30 .layer() | 30 .layer() |
31 ->graphicsLayerBacking() | 31 ->graphicsLayerBacking() |
32 ->getRasterInvalidationTracking(); | 32 ->getRasterInvalidationTracking(); |
33 } | 33 } |
34 | 34 |
35 FrameSelection& selection() const { | 35 FrameSelection& selection() const { |
36 return document().view()->frame().selection(); | 36 return document().view()->frame().selection(); |
37 } | 37 } |
38 | 38 |
39 const DisplayItemClient& caretDisplayItemClient() const { | 39 const DisplayItemClient& getCaretDisplayItemClient() const { |
40 return selection().caretDisplayItemClientForTesting(); | 40 return selection().caretDisplayItemClientForTesting(); |
41 } | 41 } |
42 | 42 |
43 const LayoutBlock* caretLayoutBlock() const { | 43 const LayoutBlock* caretLayoutBlock() const { |
44 return static_cast<const CaretDisplayItemClient&>(caretDisplayItemClient()) | 44 return static_cast<const CaretDisplayItemClient&>( |
| 45 getCaretDisplayItemClient()) |
45 .m_layoutBlock; | 46 .m_layoutBlock; |
46 } | 47 } |
47 | 48 |
48 const LayoutBlock* previousCaretLayoutBlock() const { | 49 const LayoutBlock* previousCaretLayoutBlock() const { |
49 return static_cast<const CaretDisplayItemClient&>(caretDisplayItemClient()) | 50 return static_cast<const CaretDisplayItemClient&>( |
| 51 getCaretDisplayItemClient()) |
50 .m_previousLayoutBlock; | 52 .m_previousLayoutBlock; |
51 } | 53 } |
52 | 54 |
53 Text* appendTextNode(const String& data) { | 55 Text* appendTextNode(const String& data) { |
54 Text* text = document().createTextNode(data); | 56 Text* text = document().createTextNode(data); |
55 document().body()->appendChild(text); | 57 document().body()->appendChild(text); |
56 return text; | 58 return text; |
57 } | 59 } |
58 | 60 |
59 Element* appendBlock(const String& data) { | 61 Element* appendBlock(const String& data) { |
(...skipping 21 matching lines...) Expand all Loading... |
81 Text* text = appendTextNode("Hello, World!"); | 83 Text* text = appendTextNode("Hello, World!"); |
82 updateAllLifecyclePhases(); | 84 updateAllLifecyclePhases(); |
83 const auto* block = toLayoutBlock(document().body()->layoutObject()); | 85 const auto* block = toLayoutBlock(document().body()->layoutObject()); |
84 | 86 |
85 // Focus the body. Should invalidate the new caret. | 87 // Focus the body. Should invalidate the new caret. |
86 document().view()->setTracksPaintInvalidations(true); | 88 document().view()->setTracksPaintInvalidations(true); |
87 document().body()->focus(); | 89 document().body()->focus(); |
88 updateAllLifecyclePhases(); | 90 updateAllLifecyclePhases(); |
89 EXPECT_TRUE(block->shouldPaintCursorCaret()); | 91 EXPECT_TRUE(block->shouldPaintCursorCaret()); |
90 | 92 |
91 LayoutRect caretVisualRect = caretDisplayItemClient().visualRect(); | 93 LayoutRect caretVisualRect = getCaretDisplayItemClient().visualRect(); |
92 EXPECT_EQ(1, caretVisualRect.width()); | 94 EXPECT_EQ(1, caretVisualRect.width()); |
93 EXPECT_EQ(block->location(), caretVisualRect.location()); | 95 EXPECT_EQ(block->location(), caretVisualRect.location()); |
94 | 96 |
95 const auto* rasterInvalidations = | 97 const auto* rasterInvalidations = |
96 &getRasterInvalidationTracking()->trackedRasterInvalidations; | 98 &getRasterInvalidationTracking()->trackedRasterInvalidations; |
97 ASSERT_EQ(1u, rasterInvalidations->size()); | 99 ASSERT_EQ(1u, rasterInvalidations->size()); |
98 EXPECT_EQ(enclosingIntRect(caretVisualRect), (*rasterInvalidations)[0].rect); | 100 EXPECT_EQ(enclosingIntRect(caretVisualRect), (*rasterInvalidations)[0].rect); |
99 EXPECT_EQ(block, (*rasterInvalidations)[0].client); | 101 EXPECT_EQ(block, (*rasterInvalidations)[0].client); |
100 EXPECT_EQ(PaintInvalidationCaret, (*rasterInvalidations)[0].reason); | 102 EXPECT_EQ(PaintInvalidationCaret, (*rasterInvalidations)[0].reason); |
101 | 103 |
102 std::unique_ptr<JSONArray> objectInvalidations = | 104 std::unique_ptr<JSONArray> objectInvalidations = |
103 document().view()->trackedObjectPaintInvalidationsAsJSON(); | 105 document().view()->trackedObjectPaintInvalidationsAsJSON(); |
104 ASSERT_EQ(1u, objectInvalidations->size()); | 106 ASSERT_EQ(1u, objectInvalidations->size()); |
105 String s; | 107 String s; |
106 JSONObject::cast(objectInvalidations->at(0))->get("object")->asString(&s); | 108 JSONObject::cast(objectInvalidations->at(0))->get("object")->asString(&s); |
107 EXPECT_EQ("Caret", s); | 109 EXPECT_EQ("Caret", s); |
108 document().view()->setTracksPaintInvalidations(false); | 110 document().view()->setTracksPaintInvalidations(false); |
109 | 111 |
110 // Move the caret to the end of the text. Should invalidate both the old and | 112 // Move the caret to the end of the text. Should invalidate both the old and |
111 // new carets. | 113 // new carets. |
112 document().view()->setTracksPaintInvalidations(true); | 114 document().view()->setTracksPaintInvalidations(true); |
113 selection().setSelection( | 115 selection().setSelection( |
114 SelectionInDOMTree::Builder().collapse(Position(text, 5)).build()); | 116 SelectionInDOMTree::Builder().collapse(Position(text, 5)).build()); |
115 updateAllLifecyclePhases(); | 117 updateAllLifecyclePhases(); |
116 EXPECT_TRUE(block->shouldPaintCursorCaret()); | 118 EXPECT_TRUE(block->shouldPaintCursorCaret()); |
117 | 119 |
118 LayoutRect newCaretVisualRect = caretDisplayItemClient().visualRect(); | 120 LayoutRect newCaretVisualRect = getCaretDisplayItemClient().visualRect(); |
119 EXPECT_EQ(caretVisualRect.size(), newCaretVisualRect.size()); | 121 EXPECT_EQ(caretVisualRect.size(), newCaretVisualRect.size()); |
120 EXPECT_EQ(caretVisualRect.y(), newCaretVisualRect.y()); | 122 EXPECT_EQ(caretVisualRect.y(), newCaretVisualRect.y()); |
121 EXPECT_LT(caretVisualRect.x(), newCaretVisualRect.x()); | 123 EXPECT_LT(caretVisualRect.x(), newCaretVisualRect.x()); |
122 | 124 |
123 rasterInvalidations = | 125 rasterInvalidations = |
124 &getRasterInvalidationTracking()->trackedRasterInvalidations; | 126 &getRasterInvalidationTracking()->trackedRasterInvalidations; |
125 ASSERT_EQ(2u, rasterInvalidations->size()); | 127 ASSERT_EQ(2u, rasterInvalidations->size()); |
126 EXPECT_EQ(enclosingIntRect(caretVisualRect), (*rasterInvalidations)[0].rect); | 128 EXPECT_EQ(enclosingIntRect(caretVisualRect), (*rasterInvalidations)[0].rect); |
127 EXPECT_EQ(block, (*rasterInvalidations)[0].client); | 129 EXPECT_EQ(block, (*rasterInvalidations)[0].client); |
128 EXPECT_EQ(PaintInvalidationCaret, (*rasterInvalidations)[0].reason); | 130 EXPECT_EQ(PaintInvalidationCaret, (*rasterInvalidations)[0].reason); |
129 EXPECT_EQ(enclosingIntRect(newCaretVisualRect), | 131 EXPECT_EQ(enclosingIntRect(newCaretVisualRect), |
130 (*rasterInvalidations)[1].rect); | 132 (*rasterInvalidations)[1].rect); |
131 EXPECT_EQ(block, (*rasterInvalidations)[1].client); | 133 EXPECT_EQ(block, (*rasterInvalidations)[1].client); |
132 EXPECT_EQ(PaintInvalidationCaret, (*rasterInvalidations)[1].reason); | 134 EXPECT_EQ(PaintInvalidationCaret, (*rasterInvalidations)[1].reason); |
133 | 135 |
134 objectInvalidations = | 136 objectInvalidations = |
135 document().view()->trackedObjectPaintInvalidationsAsJSON(); | 137 document().view()->trackedObjectPaintInvalidationsAsJSON(); |
136 ASSERT_EQ(1u, objectInvalidations->size()); | 138 ASSERT_EQ(1u, objectInvalidations->size()); |
137 JSONObject::cast(objectInvalidations->at(0))->get("object")->asString(&s); | 139 JSONObject::cast(objectInvalidations->at(0))->get("object")->asString(&s); |
138 EXPECT_EQ("Caret", s); | 140 EXPECT_EQ("Caret", s); |
139 document().view()->setTracksPaintInvalidations(false); | 141 document().view()->setTracksPaintInvalidations(false); |
140 | 142 |
141 // Remove selection. Should invalidate the old caret. | 143 // Remove selection. Should invalidate the old caret. |
142 LayoutRect oldCaretVisualRect = newCaretVisualRect; | 144 LayoutRect oldCaretVisualRect = newCaretVisualRect; |
143 document().view()->setTracksPaintInvalidations(true); | 145 document().view()->setTracksPaintInvalidations(true); |
144 selection().setSelection(SelectionInDOMTree()); | 146 selection().setSelection(SelectionInDOMTree()); |
145 updateAllLifecyclePhases(); | 147 updateAllLifecyclePhases(); |
146 EXPECT_FALSE(block->shouldPaintCursorCaret()); | 148 EXPECT_FALSE(block->shouldPaintCursorCaret()); |
147 EXPECT_EQ(LayoutRect(), caretDisplayItemClient().visualRect()); | 149 EXPECT_EQ(LayoutRect(), getCaretDisplayItemClient().visualRect()); |
148 | 150 |
149 rasterInvalidations = | 151 rasterInvalidations = |
150 &getRasterInvalidationTracking()->trackedRasterInvalidations; | 152 &getRasterInvalidationTracking()->trackedRasterInvalidations; |
151 ASSERT_EQ(1u, rasterInvalidations->size()); | 153 ASSERT_EQ(1u, rasterInvalidations->size()); |
152 EXPECT_EQ(enclosingIntRect(oldCaretVisualRect), | 154 EXPECT_EQ(enclosingIntRect(oldCaretVisualRect), |
153 (*rasterInvalidations)[0].rect); | 155 (*rasterInvalidations)[0].rect); |
154 EXPECT_EQ(block, (*rasterInvalidations)[0].client); | 156 EXPECT_EQ(block, (*rasterInvalidations)[0].client); |
155 | 157 |
156 objectInvalidations = | 158 objectInvalidations = |
157 document().view()->trackedObjectPaintInvalidationsAsJSON(); | 159 document().view()->trackedObjectPaintInvalidationsAsJSON(); |
158 ASSERT_EQ(1u, objectInvalidations->size()); | 160 ASSERT_EQ(1u, objectInvalidations->size()); |
159 JSONObject::cast(objectInvalidations->at(0))->get("object")->asString(&s); | 161 JSONObject::cast(objectInvalidations->at(0))->get("object")->asString(&s); |
160 EXPECT_EQ("Caret", s); | 162 EXPECT_EQ("Caret", s); |
161 document().view()->setTracksPaintInvalidations(false); | 163 document().view()->setTracksPaintInvalidations(false); |
162 } | 164 } |
163 | 165 |
164 TEST_F(CaretDisplayItemClientTest, CaretMovesBetweenBlocks) { | 166 TEST_F(CaretDisplayItemClientTest, CaretMovesBetweenBlocks) { |
165 document().body()->setContentEditable("true", ASSERT_NO_EXCEPTION); | 167 document().body()->setContentEditable("true", ASSERT_NO_EXCEPTION); |
166 document().page()->focusController().setActive(true); | 168 document().page()->focusController().setActive(true); |
167 document().page()->focusController().setFocused(true); | 169 document().page()->focusController().setFocused(true); |
168 auto* blockElement1 = appendBlock("Block1"); | 170 auto* blockElement1 = appendBlock("Block1"); |
169 auto* blockElement2 = appendBlock("Block2"); | 171 auto* blockElement2 = appendBlock("Block2"); |
170 updateAllLifecyclePhases(); | 172 updateAllLifecyclePhases(); |
171 auto* block1 = toLayoutBlock(blockElement1->layoutObject()); | 173 auto* block1 = toLayoutBlock(blockElement1->layoutObject()); |
172 auto* block2 = toLayoutBlock(blockElement2->layoutObject()); | 174 auto* block2 = toLayoutBlock(blockElement2->layoutObject()); |
173 | 175 |
174 // Focus the body. | 176 // Focus the body. |
175 document().body()->focus(); | 177 document().body()->focus(); |
176 updateAllLifecyclePhases(); | 178 updateAllLifecyclePhases(); |
177 LayoutRect caretVisualRect1 = caretDisplayItemClient().visualRect(); | 179 LayoutRect caretVisualRect1 = getCaretDisplayItemClient().visualRect(); |
178 EXPECT_EQ(1, caretVisualRect1.width()); | 180 EXPECT_EQ(1, caretVisualRect1.width()); |
179 EXPECT_EQ(block1->visualRect().location(), caretVisualRect1.location()); | 181 EXPECT_EQ(block1->visualRect().location(), caretVisualRect1.location()); |
180 EXPECT_TRUE(block1->shouldPaintCursorCaret()); | 182 EXPECT_TRUE(block1->shouldPaintCursorCaret()); |
181 EXPECT_FALSE(block2->shouldPaintCursorCaret()); | 183 EXPECT_FALSE(block2->shouldPaintCursorCaret()); |
182 | 184 |
183 // Move the caret into block2. Should invalidate both the old and new carets. | 185 // Move the caret into block2. Should invalidate both the old and new carets. |
184 document().view()->setTracksPaintInvalidations(true); | 186 document().view()->setTracksPaintInvalidations(true); |
185 selection().setSelection(SelectionInDOMTree::Builder() | 187 selection().setSelection(SelectionInDOMTree::Builder() |
186 .collapse(Position(blockElement2, 0)) | 188 .collapse(Position(blockElement2, 0)) |
187 .build()); | 189 .build()); |
188 updateAllLifecyclePhases(); | 190 updateAllLifecyclePhases(); |
189 | 191 |
190 LayoutRect caretVisualRect2 = caretDisplayItemClient().visualRect(); | 192 LayoutRect caretVisualRect2 = getCaretDisplayItemClient().visualRect(); |
191 EXPECT_EQ(1, caretVisualRect2.width()); | 193 EXPECT_EQ(1, caretVisualRect2.width()); |
192 EXPECT_EQ(block2->visualRect().location(), caretVisualRect2.location()); | 194 EXPECT_EQ(block2->visualRect().location(), caretVisualRect2.location()); |
193 EXPECT_FALSE(block1->shouldPaintCursorCaret()); | 195 EXPECT_FALSE(block1->shouldPaintCursorCaret()); |
194 EXPECT_TRUE(block2->shouldPaintCursorCaret()); | 196 EXPECT_TRUE(block2->shouldPaintCursorCaret()); |
195 | 197 |
196 const auto* rasterInvalidations = | 198 const auto* rasterInvalidations = |
197 &getRasterInvalidationTracking()->trackedRasterInvalidations; | 199 &getRasterInvalidationTracking()->trackedRasterInvalidations; |
198 ASSERT_EQ(2u, rasterInvalidations->size()); | 200 ASSERT_EQ(2u, rasterInvalidations->size()); |
199 EXPECT_EQ(enclosingIntRect(caretVisualRect1), (*rasterInvalidations)[0].rect); | 201 EXPECT_EQ(enclosingIntRect(caretVisualRect1), (*rasterInvalidations)[0].rect); |
200 EXPECT_EQ(block1, (*rasterInvalidations)[0].client); | 202 EXPECT_EQ(block1, (*rasterInvalidations)[0].client); |
201 EXPECT_EQ(PaintInvalidationCaret, (*rasterInvalidations)[0].reason); | 203 EXPECT_EQ(PaintInvalidationCaret, (*rasterInvalidations)[0].reason); |
202 EXPECT_EQ(enclosingIntRect(caretVisualRect2), (*rasterInvalidations)[1].rect); | 204 EXPECT_EQ(enclosingIntRect(caretVisualRect2), (*rasterInvalidations)[1].rect); |
203 EXPECT_EQ(block2, (*rasterInvalidations)[1].client); | 205 EXPECT_EQ(block2, (*rasterInvalidations)[1].client); |
204 EXPECT_EQ(PaintInvalidationCaret, (*rasterInvalidations)[1].reason); | 206 EXPECT_EQ(PaintInvalidationCaret, (*rasterInvalidations)[1].reason); |
205 | 207 |
206 std::unique_ptr<JSONArray> objectInvalidations = | 208 std::unique_ptr<JSONArray> objectInvalidations = |
207 document().view()->trackedObjectPaintInvalidationsAsJSON(); | 209 document().view()->trackedObjectPaintInvalidationsAsJSON(); |
208 ASSERT_EQ(2u, objectInvalidations->size()); | 210 ASSERT_EQ(2u, objectInvalidations->size()); |
209 document().view()->setTracksPaintInvalidations(false); | 211 document().view()->setTracksPaintInvalidations(false); |
210 | 212 |
211 // Move the caret back into block1. | 213 // Move the caret back into block1. |
212 document().view()->setTracksPaintInvalidations(true); | 214 document().view()->setTracksPaintInvalidations(true); |
213 selection().setSelection(SelectionInDOMTree::Builder() | 215 selection().setSelection(SelectionInDOMTree::Builder() |
214 .collapse(Position(blockElement1, 0)) | 216 .collapse(Position(blockElement1, 0)) |
215 .build()); | 217 .build()); |
216 updateAllLifecyclePhases(); | 218 updateAllLifecyclePhases(); |
217 | 219 |
218 EXPECT_EQ(caretVisualRect1, caretDisplayItemClient().visualRect()); | 220 EXPECT_EQ(caretVisualRect1, getCaretDisplayItemClient().visualRect()); |
219 EXPECT_TRUE(block1->shouldPaintCursorCaret()); | 221 EXPECT_TRUE(block1->shouldPaintCursorCaret()); |
220 EXPECT_FALSE(block2->shouldPaintCursorCaret()); | 222 EXPECT_FALSE(block2->shouldPaintCursorCaret()); |
221 | 223 |
222 rasterInvalidations = | 224 rasterInvalidations = |
223 &getRasterInvalidationTracking()->trackedRasterInvalidations; | 225 &getRasterInvalidationTracking()->trackedRasterInvalidations; |
224 ASSERT_EQ(2u, rasterInvalidations->size()); | 226 ASSERT_EQ(2u, rasterInvalidations->size()); |
225 EXPECT_EQ(enclosingIntRect(caretVisualRect1), (*rasterInvalidations)[0].rect); | 227 EXPECT_EQ(enclosingIntRect(caretVisualRect1), (*rasterInvalidations)[0].rect); |
226 EXPECT_EQ(block1, (*rasterInvalidations)[0].client); | 228 EXPECT_EQ(block1, (*rasterInvalidations)[0].client); |
227 EXPECT_EQ(PaintInvalidationCaret, (*rasterInvalidations)[0].reason); | 229 EXPECT_EQ(PaintInvalidationCaret, (*rasterInvalidations)[0].reason); |
228 EXPECT_EQ(enclosingIntRect(caretVisualRect2), (*rasterInvalidations)[1].rect); | 230 EXPECT_EQ(enclosingIntRect(caretVisualRect2), (*rasterInvalidations)[1].rect); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 TEST_F(CaretDisplayItemClientTest, CaretHideMoveAndShow) { | 298 TEST_F(CaretDisplayItemClientTest, CaretHideMoveAndShow) { |
297 document().body()->setContentEditable("true", ASSERT_NO_EXCEPTION); | 299 document().body()->setContentEditable("true", ASSERT_NO_EXCEPTION); |
298 document().page()->focusController().setActive(true); | 300 document().page()->focusController().setActive(true); |
299 document().page()->focusController().setFocused(true); | 301 document().page()->focusController().setFocused(true); |
300 | 302 |
301 Text* text = appendTextNode("Hello, World!"); | 303 Text* text = appendTextNode("Hello, World!"); |
302 document().body()->focus(); | 304 document().body()->focus(); |
303 updateAllLifecyclePhases(); | 305 updateAllLifecyclePhases(); |
304 const auto* block = toLayoutBlock(document().body()->layoutObject()); | 306 const auto* block = toLayoutBlock(document().body()->layoutObject()); |
305 | 307 |
306 LayoutRect caretVisualRect = caretDisplayItemClient().visualRect(); | 308 LayoutRect caretVisualRect = getCaretDisplayItemClient().visualRect(); |
307 EXPECT_EQ(1, caretVisualRect.width()); | 309 EXPECT_EQ(1, caretVisualRect.width()); |
308 EXPECT_EQ(block->location(), caretVisualRect.location()); | 310 EXPECT_EQ(block->location(), caretVisualRect.location()); |
309 | 311 |
310 // Simulate that the blinking cursor becomes invisible. | 312 // Simulate that the blinking cursor becomes invisible. |
311 selection().setCaretVisible(false); | 313 selection().setCaretVisible(false); |
312 // Move the caret to the end of the text. | 314 // Move the caret to the end of the text. |
313 document().view()->setTracksPaintInvalidations(true); | 315 document().view()->setTracksPaintInvalidations(true); |
314 selection().setSelection( | 316 selection().setSelection( |
315 SelectionInDOMTree::Builder().collapse(Position(text, 5)).build()); | 317 SelectionInDOMTree::Builder().collapse(Position(text, 5)).build()); |
316 // Simulate that the cursor blinking is restarted. | 318 // Simulate that the cursor blinking is restarted. |
317 selection().setCaretVisible(true); | 319 selection().setCaretVisible(true); |
318 updateAllLifecyclePhases(); | 320 updateAllLifecyclePhases(); |
319 | 321 |
320 LayoutRect newCaretVisualRect = caretDisplayItemClient().visualRect(); | 322 LayoutRect newCaretVisualRect = getCaretDisplayItemClient().visualRect(); |
321 EXPECT_EQ(caretVisualRect.size(), newCaretVisualRect.size()); | 323 EXPECT_EQ(caretVisualRect.size(), newCaretVisualRect.size()); |
322 EXPECT_EQ(caretVisualRect.y(), newCaretVisualRect.y()); | 324 EXPECT_EQ(caretVisualRect.y(), newCaretVisualRect.y()); |
323 EXPECT_LT(caretVisualRect.x(), newCaretVisualRect.x()); | 325 EXPECT_LT(caretVisualRect.x(), newCaretVisualRect.x()); |
324 | 326 |
325 const auto& rasterInvalidations = | 327 const auto& rasterInvalidations = |
326 getRasterInvalidationTracking()->trackedRasterInvalidations; | 328 getRasterInvalidationTracking()->trackedRasterInvalidations; |
327 ASSERT_EQ(2u, rasterInvalidations.size()); | 329 ASSERT_EQ(2u, rasterInvalidations.size()); |
328 EXPECT_EQ(enclosingIntRect(caretVisualRect), rasterInvalidations[0].rect); | 330 EXPECT_EQ(enclosingIntRect(caretVisualRect), rasterInvalidations[0].rect); |
329 EXPECT_EQ(block, rasterInvalidations[0].client); | 331 EXPECT_EQ(block, rasterInvalidations[0].client); |
330 EXPECT_EQ(PaintInvalidationCaret, rasterInvalidations[0].reason); | 332 EXPECT_EQ(PaintInvalidationCaret, rasterInvalidations[0].reason); |
(...skipping 25 matching lines...) Expand all Loading... |
356 document().page()->focusController().setFocused(true); | 358 document().page()->focusController().setFocused(true); |
357 auto* container = document().getElementById("container"); | 359 auto* container = document().getElementById("container"); |
358 auto* editor = document().getElementById("editor"); | 360 auto* editor = document().getElementById("editor"); |
359 auto* editorBlock = toLayoutBlock(editor->layoutObject()); | 361 auto* editorBlock = toLayoutBlock(editor->layoutObject()); |
360 selection().setSelection( | 362 selection().setSelection( |
361 SelectionInDOMTree::Builder().collapse(Position(editor, 0)).build()); | 363 SelectionInDOMTree::Builder().collapse(Position(editor, 0)).build()); |
362 updateAllLifecyclePhases(); | 364 updateAllLifecyclePhases(); |
363 | 365 |
364 EXPECT_TRUE(editorBlock->shouldPaintCursorCaret()); | 366 EXPECT_TRUE(editorBlock->shouldPaintCursorCaret()); |
365 EXPECT_EQ(editorBlock, caretLayoutBlock()); | 367 EXPECT_EQ(editorBlock, caretLayoutBlock()); |
366 EXPECT_EQ(LayoutRect(116, 105, 1, 1), caretDisplayItemClient().visualRect()); | 368 EXPECT_EQ(LayoutRect(116, 105, 1, 1), |
| 369 getCaretDisplayItemClient().visualRect()); |
367 | 370 |
368 // Composite container. | 371 // Composite container. |
369 container->setAttribute(HTMLNames::styleAttr, "will-change: transform"); | 372 container->setAttribute(HTMLNames::styleAttr, "will-change: transform"); |
370 updateAllLifecyclePhases(); | 373 updateAllLifecyclePhases(); |
371 EXPECT_EQ(LayoutRect(50, 50, 1, 1), caretDisplayItemClient().visualRect()); | 374 EXPECT_EQ(LayoutRect(50, 50, 1, 1), getCaretDisplayItemClient().visualRect()); |
372 | 375 |
373 // Uncomposite container. | 376 // Uncomposite container. |
374 container->setAttribute(HTMLNames::styleAttr, ""); | 377 container->setAttribute(HTMLNames::styleAttr, ""); |
375 updateAllLifecyclePhases(); | 378 updateAllLifecyclePhases(); |
376 EXPECT_EQ(LayoutRect(116, 105, 1, 1), caretDisplayItemClient().visualRect()); | 379 EXPECT_EQ(LayoutRect(116, 105, 1, 1), |
| 380 getCaretDisplayItemClient().visualRect()); |
377 } | 381 } |
378 | 382 |
379 } // namespace blink | 383 } // namespace blink |
OLD | NEW |