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

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

Issue 1756763002: 2016-03-02T18:53:01 LayoutPosition Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 2016-04-25T19:02:18 Created 4 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/VisibleUnits.h" 5 #include "core/editing/VisibleUnits.h"
6 6
7 #include "core/dom/Text.h" 7 #include "core/dom/Text.h"
8 #include "core/editing/EditingTestBase.h" 8 #include "core/editing/EditingTestBase.h"
9 #include "core/editing/VisiblePosition.h" 9 #include "core/editing/VisiblePosition.h"
10 #include "core/html/HTMLTextFormControlElement.h" 10 #include "core/html/HTMLTextFormControlElement.h"
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
152 Element* one = document().getElementById("one"); 152 Element* one = document().getElementById("one");
153 Element* two = document().getElementById("two"); 153 Element* two = document().getElementById("two");
154 154
155 EXPECT_EQ('2', characterAfter(createVisiblePositionInDOMTree(*one->firstChil d(), 1))); 155 EXPECT_EQ('2', characterAfter(createVisiblePositionInDOMTree(*one->firstChil d(), 1)));
156 EXPECT_EQ('5', characterAfter(createVisiblePositionInFlatTree(*one->firstChi ld(), 1))); 156 EXPECT_EQ('5', characterAfter(createVisiblePositionInFlatTree(*one->firstChi ld(), 1)));
157 157
158 EXPECT_EQ(0, characterAfter(createVisiblePositionInDOMTree(*two->firstChild( ), 2))); 158 EXPECT_EQ(0, characterAfter(createVisiblePositionInDOMTree(*two->firstChild( ), 2)));
159 EXPECT_EQ('1', characterAfter(createVisiblePositionInFlatTree(*two->firstChi ld(), 2))); 159 EXPECT_EQ('1', characterAfter(createVisiblePositionInFlatTree(*two->firstChi ld(), 2)));
160 } 160 }
161 161
162 // Replacement of caret-in-empty-inline-1.html and caret-in-empty-inline-2.html
163 TEST_F(VisibleUnitsTest, canonicalPositionWithEmptyInline)
164 {
165 setBodyContent("<span id=sample contenteditable></span>");
166 updateAllLifecyclePhases();
167 Element* sample = document().getElementById("sample");
168
169 EXPECT_EQ(Position::firstPositionInNode(sample), canonicalPositionOf(Positio n(sample, 0)));
170 EXPECT_EQ(Position(sample, 0), mostBackwardCaretPosition(Position(sample, 0) ));
171 }
172
173 TEST_F(VisibleUnitsTest, canonicalPositionWithEmptyInlineWithText)
174 {
175 setBodyContent("foo<span id=sample contenteditable></span>bar");
176 updateAllLifecyclePhases();
177 Element* sample = document().getElementById("sample");
178
179 EXPECT_EQ(Position::firstPositionInNode(sample), canonicalPositionOf(Positio n(sample, 0)));
180 EXPECT_EQ(Position(sample, 0), mostBackwardCaretPosition(Position(sample, 0) ));
181 }
182
183 TEST_F(VisibleUnitsTest, canonicalPositionWithEmptyLikeInline)
184 {
185 setBodyContent("<span id=sample contenteditable><b></b></span>");
186 updateAllLifecyclePhases();
187 Element* sample = document().getElementById("sample");
188
189 EXPECT_EQ(Position::beforeNode(sample->firstChild()), canonicalPositionOf(Po sition(sample, 0)));
190 EXPECT_EQ(Position::beforeNode(sample->firstChild()), canonicalPositionOf(Po sition(sample, 1)));
191 EXPECT_EQ(Position(sample, 0), canonicalPositionOf(Position(sample->firstChi ld(), 0)));
192 EXPECT_EQ(Position(sample, 0), mostBackwardCaretPosition(Position(sample, 0) ));
193 EXPECT_EQ(Position(sample, 0), mostBackwardCaretPosition(Position(sample, 1) ));
194 EXPECT_EQ(Position(sample, 0), mostBackwardCaretPosition(Position(sample->fi rstChild(), 0)));
195 }
196
162 TEST_F(VisibleUnitsTest, canonicalPositionOfWithHTMLHtmlElement) 197 TEST_F(VisibleUnitsTest, canonicalPositionOfWithHTMLHtmlElement)
163 { 198 {
164 const char* bodyContent = "<html><div id=one contenteditable>1</div><span id =two contenteditable=false>22</span><span id=three contenteditable=false>333</sp an><span id=four contenteditable=false>333</span></html>"; 199 const char* bodyContent = "<html><div id=one contenteditable>1</div><span id =two contenteditable=false>22</span><span id=three contenteditable=false>333</sp an><span id=four contenteditable=false>333</span></html>";
165 setBodyContent(bodyContent); 200 setBodyContent(bodyContent);
166 201
167 Node* one = document().querySelector("#one", ASSERT_NO_EXCEPTION); 202 Node* one = document().querySelector("#one", ASSERT_NO_EXCEPTION);
168 Node* two = document().querySelector("#two", ASSERT_NO_EXCEPTION); 203 Node* two = document().querySelector("#two", ASSERT_NO_EXCEPTION);
169 Node* three = document().querySelector("#three", ASSERT_NO_EXCEPTION); 204 Node* three = document().querySelector("#three", ASSERT_NO_EXCEPTION);
170 Node* four = document().querySelector("#four", ASSERT_NO_EXCEPTION); 205 Node* four = document().querySelector("#four", ASSERT_NO_EXCEPTION);
171 Element* html = document().createElement("html", ASSERT_NO_EXCEPTION); 206 Element* html = document().createElement("html", ASSERT_NO_EXCEPTION);
172 // Move two, three and four into second html element. 207 // Move two, three and four into second html element.
208 // We have: <div id=one>1<html><span id=two>22</span><id=three>333</span><sp an id=four>333</span></div>
173 html->appendChild(two); 209 html->appendChild(two);
174 html->appendChild(three); 210 html->appendChild(three);
175 html->appendChild(four); 211 html->appendChild(four);
176 one->appendChild(html); 212 one->appendChild(html);
177 updateAllLifecyclePhases(); 213 updateAllLifecyclePhases();
178 214
179 EXPECT_EQ(Position(), canonicalPositionOf(Position(document().documentElemen t(), 0))); 215 EXPECT_EQ(Position::beforeNode(document().body()), canonicalPositionOf(Posit ion(document().documentElement(), 0)))
216 << "Since we don't have HEAD, HTML@0 is equivalent to before(BODY)";
180 217
181 EXPECT_EQ(Position(one->firstChild(), 0), canonicalPositionOf(Position(one, 0))); 218 EXPECT_EQ(Position(one->firstChild(), 0), canonicalPositionOf(Position(one, 0)));
219 // TODO(yosin): mbcp([one, 1)) should equal to mbcp(before(html))
220 EXPECT_EQ(Position(one->firstChild(), 1), mostBackwardCaretPosition(Position (one, 1)));
221 EXPECT_EQ(Position(html, 0), mostBackwardCaretPosition(Position::beforeNode( html)));
182 EXPECT_EQ(Position(one->firstChild(), 1), canonicalPositionOf(Position(one, 1))); 222 EXPECT_EQ(Position(one->firstChild(), 1), canonicalPositionOf(Position(one, 1)));
223 EXPECT_EQ(Position(one->firstChild(), 1), canonicalPositionOf(Position::befo reNode(html)));
183 224
184 EXPECT_EQ(Position(one->firstChild(), 0), canonicalPositionOf(Position(one-> firstChild(), 0))); 225 EXPECT_EQ(Position(one->firstChild(), 0), canonicalPositionOf(Position(one-> firstChild(), 0)));
185 EXPECT_EQ(Position(one->firstChild(), 1), canonicalPositionOf(Position(one-> firstChild(), 1))); 226 EXPECT_EQ(Position(one->firstChild(), 1), canonicalPositionOf(Position(one-> firstChild(), 1)));
186 227
187 EXPECT_EQ(Position(html, 0), canonicalPositionOf(Position(html, 0))); 228 EXPECT_EQ(Position(html, 0), mostBackwardCaretPosition(Position(html, 0)));
188 EXPECT_EQ(Position(html, 1), canonicalPositionOf(Position(html, 1))); 229 EXPECT_EQ(Position(two, 0), mostBackwardCaretPosition(Position::beforeNode(t wo)));
189 EXPECT_EQ(Position(html, 2), canonicalPositionOf(Position(html, 2))); 230 EXPECT_EQ(Position(one->firstChild(), 1), canonicalPositionOf(Position(html, 0)));
231
232 EXPECT_EQ(Position(html, 1), mostBackwardCaretPosition(Position(html, 1)));
233 EXPECT_EQ(Position(three, 0), mostBackwardCaretPosition(Position::beforeNode (three)));
234 EXPECT_EQ(Position::beforeNode(three), canonicalPositionOf(Position(html, 1) ));
235
236 EXPECT_EQ(Position(html, 2), mostBackwardCaretPosition(Position(html, 2)));
237 EXPECT_EQ(Position::beforeNode(four), canonicalPositionOf(Position(html, 2)) );
190 238
191 EXPECT_EQ(Position(two->firstChild(), 0), canonicalPositionOf(Position(two, 0))); 239 EXPECT_EQ(Position(two->firstChild(), 0), canonicalPositionOf(Position(two, 0)));
192 EXPECT_EQ(Position(two->firstChild(), 2), canonicalPositionOf(Position(two, 1))); 240 EXPECT_EQ(Position(two->firstChild(), 2), canonicalPositionOf(Position(two, 1)));
193 } 241 }
194 242
243 TEST_F(VisibleUnitsTest, canonicalPositionOfWithSelect)
244 {
245 // From "collapse_before_select.html"
246 const char* bodyContent = "<div id=one contenteditable><select><option>one</ select></select>blah</div>";
247 setBodyContent(bodyContent);
248 updateAllLifecyclePhases();
249
250 Element* select = document().querySelector("select", ASSERT_NO_EXCEPTION);
251
252 EXPECT_EQ(Position::beforeNode(select), createVisiblePositionInDOMTree(*sele ct, 0).deepEquivalent());
253 }
254
195 TEST_F(VisibleUnitsTest, characterBefore) 255 TEST_F(VisibleUnitsTest, characterBefore)
196 { 256 {
197 const char* bodyContent = "<p id=host><b id=one>1</b><b id=two>22</b></p><b id=three>333</b>"; 257 const char* bodyContent = "<p id=host><b id=one>1</b><b id=two>22</b></p><b id=three>333</b>";
198 const char* shadowContent = "<b id=four>4444</b><content select=#two></conte nt><content select=#one></content><b id=five>5555</b>"; 258 const char* shadowContent = "<b id=four>4444</b><content select=#two></conte nt><content select=#one></content><b id=five>5555</b>";
199 setBodyContent(bodyContent); 259 setBodyContent(bodyContent);
200 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host"); 260 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host");
201 261
202 Node* one = document().getElementById("one")->firstChild(); 262 Node* one = document().getElementById("one")->firstChild();
203 Node* two = document().getElementById("two")->firstChild(); 263 Node* two = document().getElementById("two")->firstChild();
204 Node* five = shadowRoot->getElementById("five")->firstChild(); 264 Node* five = shadowRoot->getElementById("five")->firstChild();
205 265
206 EXPECT_EQ(0, characterBefore(createVisiblePositionInDOMTree(*one, 0))); 266 EXPECT_EQ('2', characterBefore(createVisiblePositionInDOMTree(*one, 0)))
267 << "VisiblePosition uses layout tree.";
207 EXPECT_EQ('2', characterBefore(createVisiblePositionInFlatTree(*one, 0))); 268 EXPECT_EQ('2', characterBefore(createVisiblePositionInFlatTree(*one, 0)));
208 269
209 EXPECT_EQ('1', characterBefore(createVisiblePositionInDOMTree(*one, 1))); 270 EXPECT_EQ('1', characterBefore(createVisiblePositionInDOMTree(*one, 1)));
210 EXPECT_EQ('1', characterBefore(createVisiblePositionInFlatTree(*one, 1))); 271 EXPECT_EQ('1', characterBefore(createVisiblePositionInFlatTree(*one, 1)));
211 272
212 EXPECT_EQ('1', characterBefore(createVisiblePositionInDOMTree(*two, 0))); 273 EXPECT_EQ('4', characterBefore(createVisiblePositionInDOMTree(*two, 0)))
274 << "VisiblePosition uses layout tree.";
213 EXPECT_EQ('4', characterBefore(createVisiblePositionInFlatTree(*two, 0))); 275 EXPECT_EQ('4', characterBefore(createVisiblePositionInFlatTree(*two, 0)));
214 276
215 EXPECT_EQ('4', characterBefore(createVisiblePositionInDOMTree(*five, 0))); 277 EXPECT_EQ('1', characterBefore(createVisiblePositionInDOMTree(*five, 0)))
278 << "VisiblePosition uses layout tree.";
216 EXPECT_EQ('1', characterBefore(createVisiblePositionInFlatTree(*five, 0))); 279 EXPECT_EQ('1', characterBefore(createVisiblePositionInFlatTree(*five, 0)));
217 } 280 }
218 281
219 TEST_F(VisibleUnitsTest, computeInlineBoxPosition) 282 TEST_F(VisibleUnitsTest, computeInlineBoxPosition)
220 { 283 {
221 const char* bodyContent = "<p id=host><b id=one>1</b><b id=two>22</b></p><b id=three>333</b>"; 284 const char* bodyContent = "<p id=host><b id=one>1</b><b id=two>22</b></p><b id=three>333</b>";
222 const char* shadowContent = "<b id=four>4444</b><content select=#two></conte nt><content select=#one></content><b id=five>5555</b>"; 285 const char* shadowContent = "<b id=four>4444</b><content select=#two></conte nt><content select=#one></content><b id=five>5555</b>";
223 setBodyContent(bodyContent); 286 setBodyContent(bodyContent);
224 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host"); 287 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host");
225 288
(...skipping 23 matching lines...) Expand all
249 TEST_F(VisibleUnitsTest, endOfDocument) 312 TEST_F(VisibleUnitsTest, endOfDocument)
250 { 313 {
251 const char* bodyContent = "<a id=host><b id=one>1</b><b id=two>22</b></a>"; 314 const char* bodyContent = "<a id=host><b id=one>1</b><b id=two>22</b></a>";
252 const char* shadowContent = "<p><content select=#two></content></p><p><conte nt select=#one></content></p>"; 315 const char* shadowContent = "<p><content select=#two></content></p><p><conte nt select=#one></content></p>";
253 setBodyContent(bodyContent); 316 setBodyContent(bodyContent);
254 setShadowContent(shadowContent, "host"); 317 setShadowContent(shadowContent, "host");
255 318
256 Element* one = document().getElementById("one"); 319 Element* one = document().getElementById("one");
257 Element* two = document().getElementById("two"); 320 Element* two = document().getElementById("two");
258 321
259 EXPECT_EQ(Position(two->firstChild(), 2), endOfDocument(createVisiblePositio nInDOMTree(*one->firstChild(), 0)).deepEquivalent()); 322 EXPECT_EQ(Position(one->firstChild(), 1), endOfDocument(createVisiblePositio nInDOMTree(*one->firstChild(), 0)).deepEquivalent()) << "walk in layout tree";
260 EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), endOfDocument(createVisi blePositionInFlatTree(*one->firstChild(), 0)).deepEquivalent()); 323 EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), endOfDocument(createVisi blePositionInFlatTree(*one->firstChild(), 0)).deepEquivalent());
261 324
262 EXPECT_EQ(Position(two->firstChild(), 2), endOfDocument(createVisiblePositio nInDOMTree(*two->firstChild(), 1)).deepEquivalent()); 325 EXPECT_EQ(Position(one->firstChild(), 1), endOfDocument(createVisiblePositio nInDOMTree(*two->firstChild(), 1)).deepEquivalent()) << "walk in layout tree";
263 EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), endOfDocument(createVisi blePositionInFlatTree(*two->firstChild(), 1)).deepEquivalent()); 326 EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), endOfDocument(createVisi blePositionInFlatTree(*two->firstChild(), 1)).deepEquivalent());
264 } 327 }
265 328
266 TEST_F(VisibleUnitsTest, endOfLine) 329 TEST_F(VisibleUnitsTest, endOfLine)
267 { 330 {
268 const char* bodyContent = "<a id=host><b id=one>11</b><b id=two>22</b></a><i id=three>333</i><i id=four>4444</i><br>"; 331 const char* bodyContent = "<a id=host><b id=one>11</b><b id=two>22</b></a><i id=three>333</i><i id=four>4444</i><br>";
269 const char* shadowContent = "<div><u id=five>55555</u><content select=#two>< /content><br><u id=six>666666</u><br><content select=#one></content><u id=seven> 7777777</u></div>"; 332 const char* shadowContent = "<div><u id=five>55555</u><content select=#two>< /content><br><u id=six>666666</u><br><content select=#one></content><u id=seven> 7777777</u></div>";
270 setBodyContent(bodyContent); 333 setBodyContent(bodyContent);
271 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host"); 334 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host");
272 335
273 Node* one = document().getElementById("one")->firstChild(); 336 Node* one = document().getElementById("one")->firstChild();
274 Node* two = document().getElementById("two")->firstChild(); 337 Node* two = document().getElementById("two")->firstChild();
275 Node* three = document().getElementById("three")->firstChild(); 338 Node* three = document().getElementById("three")->firstChild();
276 Node* four = document().getElementById("four")->firstChild(); 339 Node* four = document().getElementById("four")->firstChild();
277 Node* five = shadowRoot->getElementById("five")->firstChild(); 340 Node* five = shadowRoot->getElementById("five")->firstChild();
278 Node* six = shadowRoot->getElementById("six")->firstChild(); 341 Node* six = shadowRoot->getElementById("six")->firstChild();
279 Node* seven = shadowRoot->getElementById("seven")->firstChild(); 342 Node* seven = shadowRoot->getElementById("seven")->firstChild();
280 343
281 EXPECT_EQ(Position(seven, 7), endOfLine(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent()); 344 EXPECT_EQ(Position(seven, 7), endOfLine(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent());
282 EXPECT_EQ(PositionInFlatTree(seven, 7), endOfLine(createVisiblePositionInFla tTree(*one, 0)).deepEquivalent()); 345 EXPECT_EQ(PositionInFlatTree(seven, 7), endOfLine(createVisiblePositionInFla tTree(*one, 0)).deepEquivalent());
283 346
284 EXPECT_EQ(Position(seven, 7), endOfLine(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent()); 347 EXPECT_EQ(Position(seven, 7), endOfLine(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent());
285 EXPECT_EQ(PositionInFlatTree(seven, 7), endOfLine(createVisiblePositionInFla tTree(*one, 1)).deepEquivalent()); 348 EXPECT_EQ(PositionInFlatTree(seven, 7), endOfLine(createVisiblePositionInFla tTree(*one, 1)).deepEquivalent());
286 349
287 EXPECT_EQ(Position(seven, 7), endOfLine(createVisiblePositionInDOMTree(*two, 0)).deepEquivalent()); 350 EXPECT_EQ(Position(two, 2), endOfLine(createVisiblePositionInDOMTree(*two, 0 )).deepEquivalent()) << "walk in layout tree";
288 EXPECT_EQ(PositionInFlatTree(two, 2), endOfLine(createVisiblePositionInFlatT ree(*two, 0)).deepEquivalent()); 351 EXPECT_EQ(PositionInFlatTree(two, 2), endOfLine(createVisiblePositionInFlatT ree(*two, 0)).deepEquivalent());
289 352
290 // TODO(yosin) endOfLine(two, 1) -> (five, 5) is a broken result. We keep 353 // TODO(yosin) endOfLine(two, 1) -> (five, 5) is a broken result. We keep
291 // it as a marker for future change. 354 // it as a marker for future change.
292 EXPECT_EQ(Position(five, 5), endOfLine(createVisiblePositionInDOMTree(*two, 1)).deepEquivalent()); 355 EXPECT_EQ(Position(two, 2), endOfLine(createVisiblePositionInDOMTree(*two, 1 )).deepEquivalent()) << "walk in layout tree";
293 EXPECT_EQ(PositionInFlatTree(two, 2), endOfLine(createVisiblePositionInFlatT ree(*two, 1)).deepEquivalent()); 356 EXPECT_EQ(PositionInFlatTree(two, 2), endOfLine(createVisiblePositionInFlatT ree(*two, 1)).deepEquivalent());
294 357
295 EXPECT_EQ(Position(five, 5), endOfLine(createVisiblePositionInDOMTree(*three , 0)).deepEquivalent()); 358 EXPECT_EQ(Position(four, 4), endOfLine(createVisiblePositionInDOMTree(*three , 0)).deepEquivalent()) << "walk in layout tree";
296 EXPECT_EQ(PositionInFlatTree(four, 4), endOfLine(createVisiblePositionInFlat Tree(*three, 1)).deepEquivalent()); 359 EXPECT_EQ(PositionInFlatTree(four, 4), endOfLine(createVisiblePositionInFlat Tree(*three, 1)).deepEquivalent());
297 360
298 EXPECT_EQ(Position(four, 4), endOfLine(createVisiblePositionInDOMTree(*four, 1)).deepEquivalent()); 361 EXPECT_EQ(Position(four, 4), endOfLine(createVisiblePositionInDOMTree(*four, 1)).deepEquivalent());
299 EXPECT_EQ(PositionInFlatTree(four, 4), endOfLine(createVisiblePositionInFlat Tree(*four, 1)).deepEquivalent()); 362 EXPECT_EQ(PositionInFlatTree(four, 4), endOfLine(createVisiblePositionInFlat Tree(*four, 1)).deepEquivalent());
300 363
301 EXPECT_EQ(Position(five, 5), endOfLine(createVisiblePositionInDOMTree(*five, 1)).deepEquivalent()); 364 EXPECT_EQ(Position(two, 2), endOfLine(createVisiblePositionInDOMTree(*five, 1)).deepEquivalent()) << "walk in layout tree";
302 EXPECT_EQ(PositionInFlatTree(two, 2), endOfLine(createVisiblePositionInFlatT ree(*five, 1)).deepEquivalent()); 365 EXPECT_EQ(PositionInFlatTree(two, 2), endOfLine(createVisiblePositionInFlatT ree(*five, 1)).deepEquivalent());
303 366
304 EXPECT_EQ(Position(six, 6), endOfLine(createVisiblePositionInDOMTree(*six, 1 )).deepEquivalent()); 367 EXPECT_EQ(Position(six, 6), endOfLine(createVisiblePositionInDOMTree(*six, 1 )).deepEquivalent());
305 EXPECT_EQ(PositionInFlatTree(six, 6), endOfLine(createVisiblePositionInFlatT ree(*six, 1)).deepEquivalent()); 368 EXPECT_EQ(PositionInFlatTree(six, 6), endOfLine(createVisiblePositionInFlatT ree(*six, 1)).deepEquivalent());
306 369
307 EXPECT_EQ(Position(seven, 7), endOfLine(createVisiblePositionInDOMTree(*seve n, 1)).deepEquivalent()); 370 EXPECT_EQ(Position(seven, 7), endOfLine(createVisiblePositionInDOMTree(*seve n, 1)).deepEquivalent());
308 EXPECT_EQ(PositionInFlatTree(seven, 7), endOfLine(createVisiblePositionInFla tTree(*seven, 1)).deepEquivalent()); 371 EXPECT_EQ(PositionInFlatTree(seven, 7), endOfLine(createVisiblePositionInFla tTree(*seven, 1)).deepEquivalent());
309 } 372 }
310 373
311 TEST_F(VisibleUnitsTest, endOfParagraphFirstLetter) 374 TEST_F(VisibleUnitsTest, endOfParagraphFirstLetter)
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 const char* shadowContent = "<p><i id=three>333</i> <content select=#two></c ontent> <content select=#one></content> <i id=four>4444</i></p>"; 459 const char* shadowContent = "<p><i id=three>333</i> <content select=#two></c ontent> <content select=#one></content> <i id=four>4444</i></p>";
397 setBodyContent(bodyContent); 460 setBodyContent(bodyContent);
398 setShadowContent(shadowContent, "host"); 461 setShadowContent(shadowContent, "host");
399 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host"); 462 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host");
400 463
401 Node* one = document().getElementById("one")->firstChild(); 464 Node* one = document().getElementById("one")->firstChild();
402 Node* two = document().getElementById("two")->firstChild(); 465 Node* two = document().getElementById("two")->firstChild();
403 Node* three = shadowRoot->getElementById("three")->firstChild(); 466 Node* three = shadowRoot->getElementById("three")->firstChild();
404 Node* four = shadowRoot->getElementById("four")->firstChild(); 467 Node* four = shadowRoot->getElementById("four")->firstChild();
405 468
406 EXPECT_EQ(Position(two, 2), endOfSentence(createVisiblePositionInDOMTree(*on e, 0)).deepEquivalent()); 469 EXPECT_EQ(Position(four, 4), endOfSentence(createVisiblePositionInDOMTree(*o ne, 0)).deepEquivalent()) << "walk in layout tree";
407 EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionIn FlatTree(*one, 0)).deepEquivalent()); 470 EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionIn FlatTree(*one, 0)).deepEquivalent());
408 471
409 EXPECT_EQ(Position(two, 2), endOfSentence(createVisiblePositionInDOMTree(*on e, 1)).deepEquivalent()); 472 EXPECT_EQ(Position(four, 4), endOfSentence(createVisiblePositionInDOMTree(*o ne, 1)).deepEquivalent()) << "walk in layout tree";
410 EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionIn FlatTree(*one, 1)).deepEquivalent()); 473 EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionIn FlatTree(*one, 1)).deepEquivalent());
411 474
412 EXPECT_EQ(Position(two, 2), endOfSentence(createVisiblePositionInDOMTree(*tw o, 0)).deepEquivalent()); 475 EXPECT_EQ(Position(four, 4), endOfSentence(createVisiblePositionInDOMTree(*t wo, 0)).deepEquivalent()) << "walk in layout tree";
413 EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionIn FlatTree(*two, 0)).deepEquivalent()); 476 EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionIn FlatTree(*two, 0)).deepEquivalent());
414 477
415 EXPECT_EQ(Position(two, 2), endOfSentence(createVisiblePositionInDOMTree(*tw o, 1)).deepEquivalent()); 478 EXPECT_EQ(Position(four, 4), endOfSentence(createVisiblePositionInDOMTree(*t wo, 1)).deepEquivalent()) << "walk in layout tree";
416 EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionIn FlatTree(*two, 1)).deepEquivalent()); 479 EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionIn FlatTree(*two, 1)).deepEquivalent());
417 480
418 EXPECT_EQ(Position(four, 4), endOfSentence(createVisiblePositionInDOMTree(*t hree, 1)).deepEquivalent()); 481 EXPECT_EQ(Position(four, 4), endOfSentence(createVisiblePositionInDOMTree(*t hree, 1)).deepEquivalent());
419 EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionIn FlatTree(*three, 1)).deepEquivalent()); 482 EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionIn FlatTree(*three, 1)).deepEquivalent());
420 483
421 EXPECT_EQ(Position(four, 4), endOfSentence(createVisiblePositionInDOMTree(*f our, 1)).deepEquivalent()); 484 EXPECT_EQ(Position(four, 4), endOfSentence(createVisiblePositionInDOMTree(*f our, 1)).deepEquivalent());
422 EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionIn FlatTree(*four, 1)).deepEquivalent()); 485 EXPECT_EQ(PositionInFlatTree(four, 4), endOfSentence(createVisiblePositionIn FlatTree(*four, 1)).deepEquivalent());
423 } 486 }
424 487
425 TEST_F(VisibleUnitsTest, endOfWord) 488 TEST_F(VisibleUnitsTest, endOfWord)
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 TEST_F(VisibleUnitsTest, isEndOfEditableOrNonEditableContent) 523 TEST_F(VisibleUnitsTest, isEndOfEditableOrNonEditableContent)
461 { 524 {
462 const char* bodyContent = "<a id=host><b id=one contenteditable>1</b><b id=t wo>22</b></a>"; 525 const char* bodyContent = "<a id=host><b id=one contenteditable>1</b><b id=t wo>22</b></a>";
463 const char* shadowContent = "<content select=#two></content></p><p><content select=#one></content>"; 526 const char* shadowContent = "<content select=#two></content></p><p><content select=#one></content>";
464 setBodyContent(bodyContent); 527 setBodyContent(bodyContent);
465 setShadowContent(shadowContent, "host"); 528 setShadowContent(shadowContent, "host");
466 529
467 Element* one = document().getElementById("one"); 530 Element* one = document().getElementById("one");
468 Element* two = document().getElementById("two"); 531 Element* two = document().getElementById("two");
469 532
470 EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInDOMT ree(*one->firstChild(), 1))); 533 EXPECT_TRUE(isEndOfEditableOrNonEditableContent(createVisiblePositionInDOMTr ee(*one->firstChild(), 1))) << "walk in layout tree";
471 EXPECT_TRUE(isEndOfEditableOrNonEditableContent(createVisiblePositionInFlatT ree(*one->firstChild(), 1))); 534 EXPECT_TRUE(isEndOfEditableOrNonEditableContent(createVisiblePositionInFlatT ree(*one->firstChild(), 1)));
472 535
473 EXPECT_TRUE(isEndOfEditableOrNonEditableContent(createVisiblePositionInDOMTr ee(*two->firstChild(), 2))); 536 EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInDOMT ree(*two->firstChild(), 2))) << "walk in layout tree";
474 EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInFlat Tree(*two->firstChild(), 2))); 537 EXPECT_FALSE(isEndOfEditableOrNonEditableContent(createVisiblePositionInFlat Tree(*two->firstChild(), 2)));
475 } 538 }
476 539
477 TEST_F(VisibleUnitsTest, isEndOfEditableOrNonEditableContentWithInput) 540 TEST_F(VisibleUnitsTest, isEndOfEditableOrNonEditableContentWithInput)
478 { 541 {
479 const char* bodyContent = "<input id=sample value=ab>cde"; 542 const char* bodyContent = "<input id=sample value=ab>cde";
480 setBodyContent(bodyContent); 543 setBodyContent(bodyContent);
481 544
482 Node* text = toHTMLTextFormControlElement(document().getElementById("sample" ))->innerEditorElement()->firstChild(); 545 Node* text = toHTMLTextFormControlElement(document().getElementById("sample" ))->innerEditorElement()->firstChild();
483 546
(...skipping 21 matching lines...) Expand all
505 Node* five = shadowRoot->getElementById("five")->firstChild(); 568 Node* five = shadowRoot->getElementById("five")->firstChild();
506 Node* six = shadowRoot->getElementById("six")->firstChild(); 569 Node* six = shadowRoot->getElementById("six")->firstChild();
507 Node* seven = shadowRoot->getElementById("seven")->firstChild(); 570 Node* seven = shadowRoot->getElementById("seven")->firstChild();
508 571
509 EXPECT_FALSE(isEndOfLine(createVisiblePositionInDOMTree(*one, 0))); 572 EXPECT_FALSE(isEndOfLine(createVisiblePositionInDOMTree(*one, 0)));
510 EXPECT_FALSE(isEndOfLine(createVisiblePositionInFlatTree(*one, 0))); 573 EXPECT_FALSE(isEndOfLine(createVisiblePositionInFlatTree(*one, 0)));
511 574
512 EXPECT_FALSE(isEndOfLine(createVisiblePositionInDOMTree(*one, 1))); 575 EXPECT_FALSE(isEndOfLine(createVisiblePositionInDOMTree(*one, 1)));
513 EXPECT_FALSE(isEndOfLine(createVisiblePositionInFlatTree(*one, 1))); 576 EXPECT_FALSE(isEndOfLine(createVisiblePositionInFlatTree(*one, 1)));
514 577
515 EXPECT_FALSE(isEndOfLine(createVisiblePositionInDOMTree(*two, 2))); 578 EXPECT_TRUE(isEndOfLine(createVisiblePositionInDOMTree(*two, 2))) << "walk i n layout tree";
516 EXPECT_TRUE(isEndOfLine(createVisiblePositionInFlatTree(*two, 2))); 579 EXPECT_TRUE(isEndOfLine(createVisiblePositionInFlatTree(*two, 2)));
517 580
518 EXPECT_FALSE(isEndOfLine(createVisiblePositionInDOMTree(*three, 3))); 581 EXPECT_FALSE(isEndOfLine(createVisiblePositionInDOMTree(*three, 3)));
519 EXPECT_FALSE(isEndOfLine(createVisiblePositionInFlatTree(*three, 3))); 582 EXPECT_FALSE(isEndOfLine(createVisiblePositionInFlatTree(*three, 3)));
520 583
521 EXPECT_TRUE(isEndOfLine(createVisiblePositionInDOMTree(*four, 4))); 584 EXPECT_TRUE(isEndOfLine(createVisiblePositionInDOMTree(*four, 4)));
522 EXPECT_TRUE(isEndOfLine(createVisiblePositionInFlatTree(*four, 4))); 585 EXPECT_TRUE(isEndOfLine(createVisiblePositionInFlatTree(*four, 4)));
523 586
524 EXPECT_TRUE(isEndOfLine(createVisiblePositionInDOMTree(*five, 5))); 587 EXPECT_FALSE(isEndOfLine(createVisiblePositionInDOMTree(*five, 5))) << "walk in layout tree";
525 EXPECT_FALSE(isEndOfLine(createVisiblePositionInFlatTree(*five, 5))); 588 EXPECT_FALSE(isEndOfLine(createVisiblePositionInFlatTree(*five, 5)));
526 589
527 EXPECT_TRUE(isEndOfLine(createVisiblePositionInDOMTree(*six, 6))); 590 EXPECT_TRUE(isEndOfLine(createVisiblePositionInDOMTree(*six, 6)));
528 EXPECT_TRUE(isEndOfLine(createVisiblePositionInFlatTree(*six, 6))); 591 EXPECT_TRUE(isEndOfLine(createVisiblePositionInFlatTree(*six, 6)));
529 592
530 EXPECT_TRUE(isEndOfLine(createVisiblePositionInDOMTree(*seven, 7))); 593 EXPECT_TRUE(isEndOfLine(createVisiblePositionInDOMTree(*seven, 7)));
531 EXPECT_TRUE(isEndOfLine(createVisiblePositionInFlatTree(*seven, 7))); 594 EXPECT_TRUE(isEndOfLine(createVisiblePositionInFlatTree(*seven, 7)));
532 } 595 }
533 596
534 TEST_F(VisibleUnitsTest, isLogicalEndOfLine) 597 TEST_F(VisibleUnitsTest, isLogicalEndOfLine)
(...skipping 10 matching lines...) Expand all
545 Node* five = shadowRoot->getElementById("five")->firstChild(); 608 Node* five = shadowRoot->getElementById("five")->firstChild();
546 Node* six = shadowRoot->getElementById("six")->firstChild(); 609 Node* six = shadowRoot->getElementById("six")->firstChild();
547 Node* seven = shadowRoot->getElementById("seven")->firstChild(); 610 Node* seven = shadowRoot->getElementById("seven")->firstChild();
548 611
549 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*one, 0))); 612 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*one, 0)));
550 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*one, 0))); 613 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*one, 0)));
551 614
552 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*one, 1))); 615 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*one, 1)));
553 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*one, 1))); 616 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*one, 1)));
554 617
555 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*two, 2))); 618 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*two, 2))) << "walk in layout tree";
556 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*two, 2))); 619 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*two, 2)));
557 620
558 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*three, 3))); 621 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*three, 3)));
559 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*three, 3))) ; 622 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*three, 3))) ;
560 623
561 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*four, 4))); 624 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*four, 4)));
562 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*four, 4))); 625 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*four, 4)));
563 626
564 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*five, 5))); 627 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*five, 5))) < < "walk in layout tree";
565 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*five, 5))); 628 EXPECT_FALSE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*five, 5)));
566 629
567 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*six, 6))); 630 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*six, 6)));
568 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*six, 6))); 631 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*six, 6)));
569 632
570 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*seven, 7))); 633 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInDOMTree(*seven, 7)));
571 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*seven, 7))); 634 EXPECT_TRUE(isLogicalEndOfLine(createVisiblePositionInFlatTree(*seven, 7)));
572 } 635 }
573 636
574 TEST_F(VisibleUnitsTest, inSameLine) 637 TEST_F(VisibleUnitsTest, inSameLine)
575 { 638 {
576 const char* bodyContent = "<p id='host'>00<b id='one'>11</b><b id='two'>22</ b>33</p>"; 639 const char* bodyContent = "<p id='host'>00<b id='one'>11</b><b id='two'>22</ b>33</p>";
577 const char* shadowContent = "<div><span id='s4'>44</span><content select=#tw o></content><br><span id='s5'>55</span><br><content select=#one></content><span id='s6'>66</span></div>"; 640 const char* shadowContent = "<div><span id='s4'>44</span><content select=#tw o></content><br><span id='s5'>55</span><br><content select=#one></content><span id='s6'>66</span></div>";
578 setBodyContent(bodyContent); 641 setBodyContent(bodyContent);
579 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host"); 642 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host");
580 643
581 Element* body = document().body(); 644 Element* body = document().body();
582 Element* one = body->querySelector("#one", ASSERT_NO_EXCEPTION); 645 Element* one = body->querySelector("#one", ASSERT_NO_EXCEPTION);
583 Element* two = body->querySelector("#two", ASSERT_NO_EXCEPTION); 646 Element* two = body->querySelector("#two", ASSERT_NO_EXCEPTION);
584 Element* four = shadowRoot->querySelector("#s4", ASSERT_NO_EXCEPTION); 647 Element* four = shadowRoot->querySelector("#s4", ASSERT_NO_EXCEPTION);
585 Element* five = shadowRoot->querySelector("#s5", ASSERT_NO_EXCEPTION); 648 Element* five = shadowRoot->querySelector("#s5", ASSERT_NO_EXCEPTION);
586 649
587 EXPECT_TRUE(inSameLine(positionWithAffinityInDOMTree(*one, 0), positionWithA ffinityInDOMTree(*two, 0))); 650 EXPECT_FALSE(inSameLine(positionWithAffinityInDOMTree(*one, 0), positionWith AffinityInDOMTree(*two, 0))) << "walk in layout tree";
588 EXPECT_TRUE(inSameLine(positionWithAffinityInDOMTree(*one->firstChild(), 0), positionWithAffinityInDOMTree(*two->firstChild(), 0))); 651 EXPECT_FALSE(inSameLine(positionWithAffinityInDOMTree(*one->firstChild(), 0) , positionWithAffinityInDOMTree(*two->firstChild(), 0)));
589 EXPECT_FALSE(inSameLine(positionWithAffinityInDOMTree(*one->firstChild(), 0) , positionWithAffinityInDOMTree(*five->firstChild(), 0))); 652 EXPECT_FALSE(inSameLine(positionWithAffinityInDOMTree(*one->firstChild(), 0) , positionWithAffinityInDOMTree(*five->firstChild(), 0)));
590 EXPECT_FALSE(inSameLine(positionWithAffinityInDOMTree(*two->firstChild(), 0) , positionWithAffinityInDOMTree(*four->firstChild(), 0))); 653 EXPECT_TRUE(inSameLine(positionWithAffinityInDOMTree(*two->firstChild(), 0), positionWithAffinityInDOMTree(*four->firstChild(), 0))) << "walk in layout tree ";
591 654
592 EXPECT_TRUE(inSameLine(createVisiblePositionInDOMTree(*one, 0), createVisibl ePositionInDOMTree(*two, 0))); 655 EXPECT_FALSE(inSameLine(createVisiblePositionInDOMTree(*one, 0), createVisib lePositionInDOMTree(*two, 0))) << "walk in layout tree";
593 EXPECT_TRUE(inSameLine(createVisiblePositionInDOMTree(*one->firstChild(), 0) , createVisiblePositionInDOMTree(*two->firstChild(), 0))); 656 EXPECT_FALSE(inSameLine(createVisiblePositionInDOMTree(*one->firstChild(), 0 ), createVisiblePositionInDOMTree(*two->firstChild(), 0))) << "walk in layout tr ee";
594 EXPECT_FALSE(inSameLine(createVisiblePositionInDOMTree(*one->firstChild(), 0 ), createVisiblePositionInDOMTree(*five->firstChild(), 0))); 657 EXPECT_FALSE(inSameLine(createVisiblePositionInDOMTree(*one->firstChild(), 0 ), createVisiblePositionInDOMTree(*five->firstChild(), 0)));
595 EXPECT_FALSE(inSameLine(createVisiblePositionInDOMTree(*two->firstChild(), 0 ), createVisiblePositionInDOMTree(*four->firstChild(), 0))); 658 EXPECT_TRUE(inSameLine(createVisiblePositionInDOMTree(*two->firstChild(), 0) , createVisiblePositionInDOMTree(*four->firstChild(), 0))) << "walk in layout tr ee";
596 659
597 EXPECT_FALSE(inSameLine(positionWithAffinityInFlatTree(*one, 0), positionWit hAffinityInFlatTree(*two, 0))); 660 EXPECT_FALSE(inSameLine(positionWithAffinityInFlatTree(*one, 0), positionWit hAffinityInFlatTree(*two, 0)));
598 EXPECT_FALSE(inSameLine(positionWithAffinityInFlatTree(*one->firstChild(), 0 ), positionWithAffinityInFlatTree(*two->firstChild(), 0))); 661 EXPECT_FALSE(inSameLine(positionWithAffinityInFlatTree(*one->firstChild(), 0 ), positionWithAffinityInFlatTree(*two->firstChild(), 0)));
599 EXPECT_FALSE(inSameLine(positionWithAffinityInFlatTree(*one->firstChild(), 0 ), positionWithAffinityInFlatTree(*five->firstChild(), 0))); 662 EXPECT_FALSE(inSameLine(positionWithAffinityInFlatTree(*one->firstChild(), 0 ), positionWithAffinityInFlatTree(*five->firstChild(), 0)));
600 EXPECT_TRUE(inSameLine(positionWithAffinityInFlatTree(*two->firstChild(), 0) , positionWithAffinityInFlatTree(*four->firstChild(), 0))); 663 EXPECT_TRUE(inSameLine(positionWithAffinityInFlatTree(*two->firstChild(), 0) , positionWithAffinityInFlatTree(*four->firstChild(), 0)));
601 664
602 EXPECT_FALSE(inSameLine(createVisiblePositionInFlatTree(*one, 0), createVisi blePositionInFlatTree(*two, 0))); 665 EXPECT_FALSE(inSameLine(createVisiblePositionInFlatTree(*one, 0), createVisi blePositionInFlatTree(*two, 0)));
603 EXPECT_FALSE(inSameLine(createVisiblePositionInFlatTree(*one->firstChild(), 0), createVisiblePositionInFlatTree(*two->firstChild(), 0))); 666 EXPECT_FALSE(inSameLine(createVisiblePositionInFlatTree(*one->firstChild(), 0), createVisiblePositionInFlatTree(*two->firstChild(), 0)));
604 EXPECT_FALSE(inSameLine(createVisiblePositionInFlatTree(*one->firstChild(), 0), createVisiblePositionInFlatTree(*five->firstChild(), 0))); 667 EXPECT_FALSE(inSameLine(createVisiblePositionInFlatTree(*one->firstChild(), 0), createVisiblePositionInFlatTree(*five->firstChild(), 0)));
605 EXPECT_TRUE(inSameLine(createVisiblePositionInFlatTree(*two->firstChild(), 0 ), createVisiblePositionInFlatTree(*four->firstChild(), 0))); 668 EXPECT_TRUE(inSameLine(createVisiblePositionInFlatTree(*two->firstChild(), 0 ), createVisiblePositionInFlatTree(*four->firstChild(), 0)));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 712
650 EXPECT_TRUE(isStartOfLine(createVisiblePositionInDOMTree(*one, 0))); 713 EXPECT_TRUE(isStartOfLine(createVisiblePositionInDOMTree(*one, 0)));
651 EXPECT_TRUE(isStartOfLine(createVisiblePositionInFlatTree(*one, 0))); 714 EXPECT_TRUE(isStartOfLine(createVisiblePositionInFlatTree(*one, 0)));
652 715
653 EXPECT_FALSE(isStartOfLine(createVisiblePositionInDOMTree(*one, 1))); 716 EXPECT_FALSE(isStartOfLine(createVisiblePositionInDOMTree(*one, 1)));
654 EXPECT_FALSE(isStartOfLine(createVisiblePositionInFlatTree(*one, 1))); 717 EXPECT_FALSE(isStartOfLine(createVisiblePositionInFlatTree(*one, 1)));
655 718
656 EXPECT_FALSE(isStartOfLine(createVisiblePositionInDOMTree(*two, 0))); 719 EXPECT_FALSE(isStartOfLine(createVisiblePositionInDOMTree(*two, 0)));
657 EXPECT_FALSE(isStartOfLine(createVisiblePositionInFlatTree(*two, 0))); 720 EXPECT_FALSE(isStartOfLine(createVisiblePositionInFlatTree(*two, 0)));
658 721
659 EXPECT_FALSE(isStartOfLine(createVisiblePositionInDOMTree(*three, 0))); 722 EXPECT_TRUE(isStartOfLine(createVisiblePositionInDOMTree(*three, 0))) << "wa lk in layout tree";
660 EXPECT_TRUE(isStartOfLine(createVisiblePositionInFlatTree(*three, 0))); 723 EXPECT_TRUE(isStartOfLine(createVisiblePositionInFlatTree(*three, 0)));
661 724
662 EXPECT_FALSE(isStartOfLine(createVisiblePositionInDOMTree(*four, 0))); 725 EXPECT_FALSE(isStartOfLine(createVisiblePositionInDOMTree(*four, 0)));
663 EXPECT_FALSE(isStartOfLine(createVisiblePositionInFlatTree(*four, 0))); 726 EXPECT_FALSE(isStartOfLine(createVisiblePositionInFlatTree(*four, 0)));
664 727
665 EXPECT_TRUE(isStartOfLine(createVisiblePositionInDOMTree(*five, 0))); 728 EXPECT_TRUE(isStartOfLine(createVisiblePositionInDOMTree(*five, 0)));
666 EXPECT_TRUE(isStartOfLine(createVisiblePositionInFlatTree(*five, 0))); 729 EXPECT_TRUE(isStartOfLine(createVisiblePositionInFlatTree(*five, 0)));
667 730
668 EXPECT_TRUE(isStartOfLine(createVisiblePositionInDOMTree(*six, 0))); 731 EXPECT_TRUE(isStartOfLine(createVisiblePositionInDOMTree(*six, 0)));
669 EXPECT_TRUE(isStartOfLine(createVisiblePositionInFlatTree(*six, 0))); 732 EXPECT_TRUE(isStartOfLine(createVisiblePositionInFlatTree(*six, 0)));
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 812
750 Element* one = document().getElementById("one"); 813 Element* one = document().getElementById("one");
751 Element* two = document().getElementById("two"); 814 Element* two = document().getElementById("two");
752 Element* three = document().getElementById("three"); 815 Element* three = document().getElementById("three");
753 Element* four = shadowRoot->getElementById("four"); 816 Element* four = shadowRoot->getElementById("four");
754 Element* five = shadowRoot->getElementById("five"); 817 Element* five = shadowRoot->getElementById("five");
755 818
756 EXPECT_EQ(Position(two->firstChild(), 1), leftPositionOf(createVisiblePositi on(Position(one, 0))).deepEquivalent()); 819 EXPECT_EQ(Position(two->firstChild(), 1), leftPositionOf(createVisiblePositi on(Position(one, 0))).deepEquivalent());
757 EXPECT_EQ(PositionInFlatTree(two->firstChild(), 1), leftPositionOf(createVis iblePosition(PositionInFlatTree(one, 0))).deepEquivalent()); 820 EXPECT_EQ(PositionInFlatTree(two->firstChild(), 1), leftPositionOf(createVis iblePosition(PositionInFlatTree(one, 0))).deepEquivalent());
758 821
759 EXPECT_EQ(Position(one->firstChild(), 0), leftPositionOf(createVisiblePositi on(Position(two, 0))).deepEquivalent()); 822 EXPECT_EQ(Position(four->firstChild(), 3), leftPositionOf(createVisiblePosit ion(Position(two, 0))).deepEquivalent()) << "walk in layout tree";
760 EXPECT_EQ(PositionInFlatTree(four->firstChild(), 3), leftPositionOf(createVi siblePosition(PositionInFlatTree(two, 0))).deepEquivalent()); 823 EXPECT_EQ(PositionInFlatTree(four->firstChild(), 3), leftPositionOf(createVi siblePosition(PositionInFlatTree(two, 0))).deepEquivalent());
761 824
762 EXPECT_EQ(Position(two->firstChild(), 2), leftPositionOf(createVisiblePositi on(Position(three, 0))).deepEquivalent()); 825 EXPECT_EQ(Position(five->firstChild(), 5), leftPositionOf(createVisiblePosit ion(Position(three, 0))).deepEquivalent()) << "walk in layout tree";
763 EXPECT_EQ(PositionInFlatTree(five->firstChild(), 5), leftPositionOf(createVi siblePosition(PositionInFlatTree(three, 0))).deepEquivalent()); 826 EXPECT_EQ(PositionInFlatTree(five->firstChild(), 5), leftPositionOf(createVi siblePosition(PositionInFlatTree(three, 0))).deepEquivalent());
764 } 827 }
765 828
766 TEST_F(VisibleUnitsTest, localCaretRectOfPosition) 829 TEST_F(VisibleUnitsTest, localCaretRectOfPosition)
767 { 830 {
768 const char* bodyContent = "<p id='host'><b id='one'>1</b></p><b id='two'>22< /b>"; 831 const char* bodyContent = "<p id='host'><b id='one'>1</b></p><b id='two'>22< /b>";
769 const char* shadowContent = "<b id='two'>22</b><content select=#one></conten t><b id='three'>333</b>"; 832 const char* shadowContent = "<b id='two'>22</b><content select=#one></conten t><b id='three'>333</b>";
770 setBodyContent(bodyContent); 833 setBodyContent(bodyContent);
771 setShadowContent(shadowContent, "host"); 834 setShadowContent(shadowContent, "host");
772 835
(...skipping 25 matching lines...) Expand all
798 Node* five = shadowRoot->getElementById("five")->firstChild(); 861 Node* five = shadowRoot->getElementById("five")->firstChild();
799 Node* six = shadowRoot->getElementById("six")->firstChild(); 862 Node* six = shadowRoot->getElementById("six")->firstChild();
800 Node* seven = shadowRoot->getElementById("seven")->firstChild(); 863 Node* seven = shadowRoot->getElementById("seven")->firstChild();
801 864
802 EXPECT_EQ(Position(seven, 7), logicalEndOfLine(createVisiblePositionInDOMTre e(*one, 0)).deepEquivalent()); 865 EXPECT_EQ(Position(seven, 7), logicalEndOfLine(createVisiblePositionInDOMTre e(*one, 0)).deepEquivalent());
803 EXPECT_EQ(PositionInFlatTree(seven, 7), logicalEndOfLine(createVisiblePositi onInFlatTree(*one, 0)).deepEquivalent()); 866 EXPECT_EQ(PositionInFlatTree(seven, 7), logicalEndOfLine(createVisiblePositi onInFlatTree(*one, 0)).deepEquivalent());
804 867
805 EXPECT_EQ(Position(seven, 7), logicalEndOfLine(createVisiblePositionInDOMTre e(*one, 1)).deepEquivalent()); 868 EXPECT_EQ(Position(seven, 7), logicalEndOfLine(createVisiblePositionInDOMTre e(*one, 1)).deepEquivalent());
806 EXPECT_EQ(PositionInFlatTree(seven, 7), logicalEndOfLine(createVisiblePositi onInFlatTree(*one, 1)).deepEquivalent()); 869 EXPECT_EQ(PositionInFlatTree(seven, 7), logicalEndOfLine(createVisiblePositi onInFlatTree(*one, 1)).deepEquivalent());
807 870
808 EXPECT_EQ(Position(seven, 7), logicalEndOfLine(createVisiblePositionInDOMTre e(*two, 0)).deepEquivalent()); 871 EXPECT_EQ(Position(two, 2), logicalEndOfLine(createVisiblePositionInDOMTree( *two, 0)).deepEquivalent()) << "walk in layout tree";
809 EXPECT_EQ(PositionInFlatTree(two, 2), logicalEndOfLine(createVisiblePosition InFlatTree(*two, 0)).deepEquivalent()); 872 EXPECT_EQ(PositionInFlatTree(two, 2), logicalEndOfLine(createVisiblePosition InFlatTree(*two, 0)).deepEquivalent());
810 873
811 // TODO(yosin) logicalEndOfLine(two, 1) -> (five, 5) is a broken result. We keep 874 // TODO(yosin) logicalEndOfLine(two, 1) -> (five, 5) is a broken result. We keep
812 // it as a marker for future change. 875 // it as a marker for future change.
813 EXPECT_EQ(Position(five, 5), logicalEndOfLine(createVisiblePositionInDOMTree (*two, 1)).deepEquivalent()); 876 EXPECT_EQ(Position(two, 2), logicalEndOfLine(createVisiblePositionInDOMTree( *two, 1)).deepEquivalent()) << "walk in layout tree";
814 EXPECT_EQ(PositionInFlatTree(two, 2), logicalEndOfLine(createVisiblePosition InFlatTree(*two, 1)).deepEquivalent()); 877 EXPECT_EQ(PositionInFlatTree(two, 2), logicalEndOfLine(createVisiblePosition InFlatTree(*two, 1)).deepEquivalent());
815 878
816 EXPECT_EQ(Position(five, 5), logicalEndOfLine(createVisiblePositionInDOMTree (*three, 0)).deepEquivalent()); 879 EXPECT_EQ(Position(four, 4), logicalEndOfLine(createVisiblePositionInDOMTree (*three, 0)).deepEquivalent()) << "walk in layout tree";
817 EXPECT_EQ(PositionInFlatTree(four, 4), logicalEndOfLine(createVisiblePositio nInFlatTree(*three, 1)).deepEquivalent()); 880 EXPECT_EQ(PositionInFlatTree(four, 4), logicalEndOfLine(createVisiblePositio nInFlatTree(*three, 1)).deepEquivalent());
818 881
819 EXPECT_EQ(Position(four, 4), logicalEndOfLine(createVisiblePositionInDOMTree (*four, 1)).deepEquivalent()); 882 EXPECT_EQ(Position(four, 4), logicalEndOfLine(createVisiblePositionInDOMTree (*four, 1)).deepEquivalent());
820 EXPECT_EQ(PositionInFlatTree(four, 4), logicalEndOfLine(createVisiblePositio nInFlatTree(*four, 1)).deepEquivalent()); 883 EXPECT_EQ(PositionInFlatTree(four, 4), logicalEndOfLine(createVisiblePositio nInFlatTree(*four, 1)).deepEquivalent());
821 884
822 EXPECT_EQ(Position(five, 5), logicalEndOfLine(createVisiblePositionInDOMTree (*five, 1)).deepEquivalent()); 885 EXPECT_EQ(Position(two, 2), logicalEndOfLine(createVisiblePositionInDOMTree( *five, 1)).deepEquivalent()) << "walk in layout tree";
823 EXPECT_EQ(PositionInFlatTree(two, 2), logicalEndOfLine(createVisiblePosition InFlatTree(*five, 1)).deepEquivalent()); 886 EXPECT_EQ(PositionInFlatTree(two, 2), logicalEndOfLine(createVisiblePosition InFlatTree(*five, 1)).deepEquivalent());
824 887
825 EXPECT_EQ(Position(six, 6), logicalEndOfLine(createVisiblePositionInDOMTree( *six, 1)).deepEquivalent()); 888 EXPECT_EQ(Position(six, 6), logicalEndOfLine(createVisiblePositionInDOMTree( *six, 1)).deepEquivalent());
826 EXPECT_EQ(PositionInFlatTree(six, 6), logicalEndOfLine(createVisiblePosition InFlatTree(*six, 1)).deepEquivalent()); 889 EXPECT_EQ(PositionInFlatTree(six, 6), logicalEndOfLine(createVisiblePosition InFlatTree(*six, 1)).deepEquivalent());
827 890
828 EXPECT_EQ(Position(seven, 7), logicalEndOfLine(createVisiblePositionInDOMTre e(*seven, 1)).deepEquivalent()); 891 EXPECT_EQ(Position(seven, 7), logicalEndOfLine(createVisiblePositionInDOMTre e(*seven, 1)).deepEquivalent());
829 EXPECT_EQ(PositionInFlatTree(seven, 7), logicalEndOfLine(createVisiblePositi onInFlatTree(*seven, 1)).deepEquivalent()); 892 EXPECT_EQ(PositionInFlatTree(seven, 7), logicalEndOfLine(createVisiblePositi onInFlatTree(*seven, 1)).deepEquivalent());
830 } 893 }
831 894
832 TEST_F(VisibleUnitsTest, logicalStartOfLine) 895 TEST_F(VisibleUnitsTest, logicalStartOfLine)
(...skipping 10 matching lines...) Expand all
843 Node* five = shadowRoot->getElementById("five")->firstChild(); 906 Node* five = shadowRoot->getElementById("five")->firstChild();
844 Node* six = shadowRoot->getElementById("six")->firstChild(); 907 Node* six = shadowRoot->getElementById("six")->firstChild();
845 Node* seven = shadowRoot->getElementById("seven")->firstChild(); 908 Node* seven = shadowRoot->getElementById("seven")->firstChild();
846 909
847 EXPECT_EQ(Position(one, 0), logicalStartOfLine(createVisiblePositionInDOMTre e(*one, 0)).deepEquivalent()); 910 EXPECT_EQ(Position(one, 0), logicalStartOfLine(createVisiblePositionInDOMTre e(*one, 0)).deepEquivalent());
848 EXPECT_EQ(PositionInFlatTree(one, 0), logicalStartOfLine(createVisiblePositi onInFlatTree(*one, 0)).deepEquivalent()); 911 EXPECT_EQ(PositionInFlatTree(one, 0), logicalStartOfLine(createVisiblePositi onInFlatTree(*one, 0)).deepEquivalent());
849 912
850 EXPECT_EQ(Position(one, 0), logicalStartOfLine(createVisiblePositionInDOMTre e(*one, 1)).deepEquivalent()); 913 EXPECT_EQ(Position(one, 0), logicalStartOfLine(createVisiblePositionInDOMTre e(*one, 1)).deepEquivalent());
851 EXPECT_EQ(PositionInFlatTree(one, 0), logicalStartOfLine(createVisiblePositi onInFlatTree(*one, 1)).deepEquivalent()); 914 EXPECT_EQ(PositionInFlatTree(one, 0), logicalStartOfLine(createVisiblePositi onInFlatTree(*one, 1)).deepEquivalent());
852 915
853 EXPECT_EQ(Position(one, 0), logicalStartOfLine(createVisiblePositionInDOMTre e(*two, 0)).deepEquivalent()); 916 EXPECT_EQ(Position(five, 0), logicalStartOfLine(createVisiblePositionInDOMTr ee(*two, 0)).deepEquivalent()) << "walk in layout tree";
854 EXPECT_EQ(PositionInFlatTree(five, 0), logicalStartOfLine(createVisiblePosit ionInFlatTree(*two, 0)).deepEquivalent()); 917 EXPECT_EQ(PositionInFlatTree(five, 0), logicalStartOfLine(createVisiblePosit ionInFlatTree(*two, 0)).deepEquivalent());
855 918
856 EXPECT_EQ(Position(five, 0), logicalStartOfLine(createVisiblePositionInDOMTr ee(*two, 1)).deepEquivalent()); 919 EXPECT_EQ(Position(five, 0), logicalStartOfLine(createVisiblePositionInDOMTr ee(*two, 1)).deepEquivalent());
857 EXPECT_EQ(PositionInFlatTree(five, 0), logicalStartOfLine(createVisiblePosit ionInFlatTree(*two, 1)).deepEquivalent()); 920 EXPECT_EQ(PositionInFlatTree(five, 0), logicalStartOfLine(createVisiblePosit ionInFlatTree(*two, 1)).deepEquivalent());
858 921
859 EXPECT_EQ(Position(five, 0), logicalStartOfLine(createVisiblePositionInDOMTr ee(*three, 0)).deepEquivalent()); 922 EXPECT_EQ(Position(three, 0), logicalStartOfLine(createVisiblePositionInDOMT ree(*three, 0)).deepEquivalent()) << "walk in layout tree";
860 EXPECT_EQ(PositionInFlatTree(three, 0), logicalStartOfLine(createVisiblePosi tionInFlatTree(*three, 1)).deepEquivalent()); 923 EXPECT_EQ(PositionInFlatTree(three, 0), logicalStartOfLine(createVisiblePosi tionInFlatTree(*three, 1)).deepEquivalent());
861 924
862 // TODO(yosin) logicalStartOfLine(four, 1) -> (two, 2) is a broken result. 925 // TODO(yosin) logicalStartOfLine(four, 1) -> (two, 2) is a broken result.
863 // We keep it as a marker for future change. 926 // We keep it as a marker for future change.
864 EXPECT_EQ(Position(two, 2), logicalStartOfLine(createVisiblePositionInDOMTre e(*four, 1)).deepEquivalent()); 927 EXPECT_EQ(Position(three, 0), logicalStartOfLine(createVisiblePositionInDOMT ree(*four, 1)).deepEquivalent()) << "walk in layout tree";
865 EXPECT_EQ(PositionInFlatTree(three, 0), logicalStartOfLine(createVisiblePosi tionInFlatTree(*four, 1)).deepEquivalent()); 928 EXPECT_EQ(PositionInFlatTree(three, 0), logicalStartOfLine(createVisiblePosi tionInFlatTree(*four, 1)).deepEquivalent());
866 929
867 EXPECT_EQ(Position(five, 0), logicalStartOfLine(createVisiblePositionInDOMTr ee(*five, 1)).deepEquivalent()); 930 EXPECT_EQ(Position(five, 0), logicalStartOfLine(createVisiblePositionInDOMTr ee(*five, 1)).deepEquivalent());
868 EXPECT_EQ(PositionInFlatTree(five, 0), logicalStartOfLine(createVisiblePosit ionInFlatTree(*five, 1)).deepEquivalent()); 931 EXPECT_EQ(PositionInFlatTree(five, 0), logicalStartOfLine(createVisiblePosit ionInFlatTree(*five, 1)).deepEquivalent());
869 932
870 EXPECT_EQ(Position(six, 0), logicalStartOfLine(createVisiblePositionInDOMTre e(*six, 1)).deepEquivalent()); 933 EXPECT_EQ(Position(six, 0), logicalStartOfLine(createVisiblePositionInDOMTre e(*six, 1)).deepEquivalent());
871 EXPECT_EQ(PositionInFlatTree(six, 0), logicalStartOfLine(createVisiblePositi onInFlatTree(*six, 1)).deepEquivalent()); 934 EXPECT_EQ(PositionInFlatTree(six, 0), logicalStartOfLine(createVisiblePositi onInFlatTree(*six, 1)).deepEquivalent());
872 935
873 EXPECT_EQ(Position(one, 0), logicalStartOfLine(createVisiblePositionInDOMTre e(*seven, 1)).deepEquivalent()); 936 EXPECT_EQ(Position(one, 0), logicalStartOfLine(createVisiblePositionInDOMTre e(*seven, 1)).deepEquivalent());
874 EXPECT_EQ(PositionInFlatTree(one, 0), logicalStartOfLine(createVisiblePositi onInFlatTree(*seven, 1)).deepEquivalent()); 937 EXPECT_EQ(PositionInFlatTree(one, 0), logicalStartOfLine(createVisiblePositi onInFlatTree(*seven, 1)).deepEquivalent());
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
968 TEST_F(VisibleUnitsTest, nextPositionOf) 1031 TEST_F(VisibleUnitsTest, nextPositionOf)
969 { 1032 {
970 const char* bodyContent = "<b id=zero>0</b><p id=host><b id=one>1</b><b id=t wo>22</b></p><b id=three>333</b>"; 1033 const char* bodyContent = "<b id=zero>0</b><p id=host><b id=one>1</b><b id=t wo>22</b></p><b id=three>333</b>";
971 const char* shadowContent = "<b id=four>4444</b><content select=#two></conte nt><content select=#one></content><b id=five>55555</b>"; 1034 const char* shadowContent = "<b id=four>4444</b><content select=#two></conte nt><content select=#one></content><b id=five>55555</b>";
972 setBodyContent(bodyContent); 1035 setBodyContent(bodyContent);
973 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host"); 1036 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host");
974 1037
975 Element* zero = document().getElementById("zero"); 1038 Element* zero = document().getElementById("zero");
976 Element* one = document().getElementById("one"); 1039 Element* one = document().getElementById("one");
977 Element* two = document().getElementById("two"); 1040 Element* two = document().getElementById("two");
978 Element* three = document().getElementById("three"); 1041 // Element* three = document().getElementById("three");
979 Element* four = shadowRoot->getElementById("four"); 1042 Element* four = shadowRoot->getElementById("four");
980 Element* five = shadowRoot->getElementById("five"); 1043 Element* five = shadowRoot->getElementById("five");
981 1044
982 EXPECT_EQ(Position(one->firstChild(), 0), nextPositionOf(createVisiblePositi on(Position(zero, 1))).deepEquivalent()); 1045 EXPECT_EQ(Position(four->firstChild(), 0), nextPositionOf(createVisiblePosit ion(Position(zero, 1))).deepEquivalent())
1046 << "visible position walks layout tree";
983 EXPECT_EQ(PositionInFlatTree(four->firstChild(), 0), nextPositionOf(createVi siblePosition(PositionInFlatTree(zero, 1))).deepEquivalent()); 1047 EXPECT_EQ(PositionInFlatTree(four->firstChild(), 0), nextPositionOf(createVi siblePosition(PositionInFlatTree(zero, 1))).deepEquivalent());
984 1048
985 EXPECT_EQ(Position(one->firstChild(), 1), nextPositionOf(createVisiblePositi on(Position(one, 0))).deepEquivalent()); 1049 EXPECT_EQ(Position(one->firstChild(), 1), nextPositionOf(createVisiblePositi on(Position(one, 0))).deepEquivalent())
1050 << "visible position walks layout tree";
986 EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), nextPositionOf(createVis iblePosition(PositionInFlatTree(one, 0))).deepEquivalent()); 1051 EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), nextPositionOf(createVis iblePosition(PositionInFlatTree(one, 0))).deepEquivalent());
987 1052
988 EXPECT_EQ(Position(two->firstChild(), 1), nextPositionOf(createVisiblePositi on(Position(one, 1))).deepEquivalent()); 1053 EXPECT_EQ(Position(five->firstChild(), 1), nextPositionOf(createVisiblePosit ion(Position(one, 1))).deepEquivalent());
989 EXPECT_EQ(PositionInFlatTree(five->firstChild(), 1), nextPositionOf(createVi siblePosition(PositionInFlatTree(one, 1))).deepEquivalent()); 1054 EXPECT_EQ(PositionInFlatTree(five->firstChild(), 1), nextPositionOf(createVi siblePosition(PositionInFlatTree(one, 1))).deepEquivalent());
990 1055
991 EXPECT_EQ(Position(three->firstChild(), 0), nextPositionOf(createVisiblePosi tion(Position(two, 2))).deepEquivalent()); 1056 EXPECT_EQ(Position(one->firstChild(), 1), nextPositionOf(createVisiblePositi on(Position(two, 2))).deepEquivalent())
1057 << "visible position walks layout tree";
992 EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), nextPositionOf(createVis iblePosition(PositionInFlatTree(two, 2))).deepEquivalent()); 1058 EXPECT_EQ(PositionInFlatTree(one->firstChild(), 1), nextPositionOf(createVis iblePosition(PositionInFlatTree(two, 2))).deepEquivalent());
993 } 1059 }
994 1060
995 TEST_F(VisibleUnitsTest, previousPositionOf) 1061 TEST_F(VisibleUnitsTest, previousPositionOf)
996 { 1062 {
997 const char* bodyContent = "<b id=zero>0</b><p id=host><b id=one>1</b><b id=t wo>22</b></p><b id=three>333</b>"; 1063 const char* bodyContent = "<b id=zero>0</b><p id=host><b id=one>1</b><b id=t wo>22</b></p><b id=three>333</b>";
998 const char* shadowContent = "<b id=four>4444</b><content select=#two></conte nt><content select=#one></content><b id=five>55555</b>"; 1064 const char* shadowContent = "<b id=four>4444</b><content select=#two></conte nt><content select=#one></content><b id=five>55555</b>";
999 setBodyContent(bodyContent); 1065 setBodyContent(bodyContent);
1000 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host"); 1066 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host");
1001 1067
1002 Node* zero = document().getElementById("zero")->firstChild(); 1068 Node* zero = document().getElementById("zero")->firstChild();
1003 Node* one = document().getElementById("one")->firstChild(); 1069 Node* one = document().getElementById("one")->firstChild();
1004 Node* two = document().getElementById("two")->firstChild(); 1070 Node* two = document().getElementById("two")->firstChild();
1005 Node* three = document().getElementById("three")->firstChild(); 1071 Node* three = document().getElementById("three")->firstChild();
1006 Node* four = shadowRoot->getElementById("four")->firstChild(); 1072 Node* four = shadowRoot->getElementById("four")->firstChild();
1007 Node* five = shadowRoot->getElementById("five")->firstChild(); 1073 Node* five = shadowRoot->getElementById("five")->firstChild();
1008 1074
1009 EXPECT_EQ(Position(zero, 0), previousPositionOf(createVisiblePosition(Positi on(zero, 1))).deepEquivalent()); 1075 EXPECT_EQ(Position(zero, 0), previousPositionOf(createVisiblePosition(Positi on(zero, 1))).deepEquivalent());
1010 EXPECT_EQ(PositionInFlatTree(zero, 0), previousPositionOf(createVisiblePosit ion(PositionInFlatTree(zero, 1))).deepEquivalent()); 1076 EXPECT_EQ(PositionInFlatTree(zero, 0), previousPositionOf(createVisiblePosit ion(PositionInFlatTree(zero, 1))).deepEquivalent());
1011 1077
1012 EXPECT_EQ(Position(zero, 1), previousPositionOf(createVisiblePosition(Positi on(one, 0))).deepEquivalent()); 1078 EXPECT_EQ(Position(two, 1), previousPositionOf(createVisiblePosition(Positio n(one, 0))).deepEquivalent())
1079 << "visible position walks layout tree";
1013 EXPECT_EQ(PositionInFlatTree(two, 1), previousPositionOf(createVisiblePositi on(PositionInFlatTree(one, 0))).deepEquivalent()); 1080 EXPECT_EQ(PositionInFlatTree(two, 1), previousPositionOf(createVisiblePositi on(PositionInFlatTree(one, 0))).deepEquivalent());
1014 1081
1015 EXPECT_EQ(Position(one, 0), previousPositionOf(createVisiblePosition(Positio n(one, 1))).deepEquivalent()); 1082 EXPECT_EQ(Position(two, 2), previousPositionOf(createVisiblePosition(Positio n(one, 1))).deepEquivalent())
1083 << "visible position walks layout tree";
1016 EXPECT_EQ(PositionInFlatTree(two, 2), previousPositionOf(createVisiblePositi on(PositionInFlatTree(one, 1))).deepEquivalent()); 1084 EXPECT_EQ(PositionInFlatTree(two, 2), previousPositionOf(createVisiblePositi on(PositionInFlatTree(one, 1))).deepEquivalent());
1017 1085
1018 EXPECT_EQ(Position(one, 0), previousPositionOf(createVisiblePosition(Positio n(two, 0))).deepEquivalent()); 1086 EXPECT_EQ(Position(four, 3), previousPositionOf(createVisiblePosition(Positi on(two, 0))).deepEquivalent())
1087 << "visible position walks layout tree";
1019 EXPECT_EQ(PositionInFlatTree(four, 3), previousPositionOf(createVisiblePosit ion(PositionInFlatTree(two, 0))).deepEquivalent()); 1088 EXPECT_EQ(PositionInFlatTree(four, 3), previousPositionOf(createVisiblePosit ion(PositionInFlatTree(two, 0))).deepEquivalent());
1020 1089
1021 // DOM tree to shadow tree 1090 // DOM tree to shadow tree
1022 EXPECT_EQ(Position(two, 2), previousPositionOf(createVisiblePosition(Positio n(three, 0))).deepEquivalent()); 1091 EXPECT_EQ(Position(five, 5), previousPositionOf(createVisiblePosition(Positi on(three, 0))).deepEquivalent())
1092 << "visible position walks layout tree";
1023 EXPECT_EQ(PositionInFlatTree(five, 5), previousPositionOf(createVisiblePosit ion(PositionInFlatTree(three, 0))).deepEquivalent()); 1093 EXPECT_EQ(PositionInFlatTree(five, 5), previousPositionOf(createVisiblePosit ion(PositionInFlatTree(three, 0))).deepEquivalent());
1024 1094
1025 // Shadow tree to DOM tree 1095 // Shadow tree to DOM tree
1026 EXPECT_EQ(Position(), previousPositionOf(createVisiblePosition(Position(four , 0))).deepEquivalent()); 1096 EXPECT_EQ(Position(zero, 1), previousPositionOf(createVisiblePosition(Positi on(four, 0))).deepEquivalent())
1097 << "visible position walks layout tree";
1027 EXPECT_EQ(PositionInFlatTree(zero, 1), previousPositionOf(createVisiblePosit ion(PositionInFlatTree(four, 0))).deepEquivalent()); 1098 EXPECT_EQ(PositionInFlatTree(zero, 1), previousPositionOf(createVisiblePosit ion(PositionInFlatTree(four, 0))).deepEquivalent());
1028 1099
1029 // Note: Canonicalization maps (five, 0) to (four, 4) in DOM tree and 1100 // Note: Canonicalization maps (five, 0) to (four, 4) in DOM tree and
1030 // (one, 1) in flat tree. 1101 // (one, 1) in flat tree.
1031 EXPECT_EQ(Position(four, 4), previousPositionOf(createVisiblePosition(Positi on(five, 1))).deepEquivalent()); 1102 EXPECT_EQ(Position(one, 1), previousPositionOf(createVisiblePosition(Positio n(five, 1))).deepEquivalent())
1103 << "visible position walks layout tree";
1032 EXPECT_EQ(PositionInFlatTree(one, 1), previousPositionOf(createVisiblePositi on(PositionInFlatTree(five, 1))).deepEquivalent()); 1104 EXPECT_EQ(PositionInFlatTree(one, 1), previousPositionOf(createVisiblePositi on(PositionInFlatTree(five, 1))).deepEquivalent());
1033 } 1105 }
1034 1106
1035 TEST_F(VisibleUnitsTest, previousPositionOfOneCharPerLine) 1107 TEST_F(VisibleUnitsTest, previousPositionOfOneCharPerLine)
1036 { 1108 {
1037 const char* bodyContent = "<div id=sample style='font-size: 500px'>A&#x714a; &#xfa67;</div>"; 1109 const char* bodyContent = "<div id=sample style='font-size: 500px'>A&#x714a; &#xfa67;</div>";
1038 setBodyContent(bodyContent); 1110 setBodyContent(bodyContent);
1039 1111
1040 Node* sample = document().getElementById("sample")->firstChild(); 1112 Node* sample = document().getElementById("sample")->firstChild();
1041 1113
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1101 const char* shadowContent = "<p id=four>4444</p><content select=#two></conte nt><content select=#one></content><p id=five>55555</p>"; 1173 const char* shadowContent = "<p id=four>4444</p><content select=#two></conte nt><content select=#one></content><p id=five>55555</p>";
1102 setBodyContent(bodyContent); 1174 setBodyContent(bodyContent);
1103 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host"); 1175 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host");
1104 1176
1105 Node* one = document().getElementById("one")->firstChild(); 1177 Node* one = document().getElementById("one")->firstChild();
1106 Node* two = document().getElementById("two")->firstChild(); 1178 Node* two = document().getElementById("two")->firstChild();
1107 Node* three = document().getElementById("three")->firstChild(); 1179 Node* three = document().getElementById("three")->firstChild();
1108 Node* four = shadowRoot->getElementById("four")->firstChild(); 1180 Node* four = shadowRoot->getElementById("four")->firstChild();
1109 Node* five = shadowRoot->getElementById("five")->firstChild(); 1181 Node* five = shadowRoot->getElementById("five")->firstChild();
1110 1182
1111 EXPECT_EQ(Position(), rightPositionOf(createVisiblePosition(Position(one, 1) )).deepEquivalent()); 1183 EXPECT_EQ(Position(five, 0), rightPositionOf(createVisiblePosition(Position( one, 1))).deepEquivalent()) << "walk in layout tree";
1112 EXPECT_EQ(PositionInFlatTree(five, 0), rightPositionOf(createVisiblePosition (PositionInFlatTree(one, 1))).deepEquivalent()); 1184 EXPECT_EQ(PositionInFlatTree(five, 0), rightPositionOf(createVisiblePosition (PositionInFlatTree(one, 1))).deepEquivalent());
1113 1185
1114 EXPECT_EQ(Position(one, 1), rightPositionOf(createVisiblePosition(Position(t wo, 2))).deepEquivalent()); 1186 EXPECT_EQ(Position(one, 1), rightPositionOf(createVisiblePosition(Position(t wo, 2))).deepEquivalent());
1115 EXPECT_EQ(PositionInFlatTree(one, 1), rightPositionOf(createVisiblePosition( PositionInFlatTree(two, 2))).deepEquivalent()); 1187 EXPECT_EQ(PositionInFlatTree(one, 1), rightPositionOf(createVisiblePosition( PositionInFlatTree(two, 2))).deepEquivalent());
1116 1188
1117 EXPECT_EQ(Position(five, 0), rightPositionOf(createVisiblePosition(Position( four, 4))).deepEquivalent()); 1189 EXPECT_EQ(Position(two, 0), rightPositionOf(createVisiblePosition(Position(f our, 4))).deepEquivalent()) << "walk in layout tree";
1118 EXPECT_EQ(PositionInFlatTree(two, 0), rightPositionOf(createVisiblePosition( PositionInFlatTree(four, 4))).deepEquivalent()); 1190 EXPECT_EQ(PositionInFlatTree(two, 0), rightPositionOf(createVisiblePosition( PositionInFlatTree(four, 4))).deepEquivalent());
1119 1191
1120 EXPECT_EQ(Position(), rightPositionOf(createVisiblePosition(Position(five, 5 ))).deepEquivalent()); 1192 EXPECT_EQ(Position(three, 0), rightPositionOf(createVisiblePosition(Position (five, 5))).deepEquivalent()) << "walk in layout tree";
1121 EXPECT_EQ(PositionInFlatTree(three, 0), rightPositionOf(createVisiblePositio n(PositionInFlatTree(five, 5))).deepEquivalent()); 1193 EXPECT_EQ(PositionInFlatTree(three, 0), rightPositionOf(createVisiblePositio n(PositionInFlatTree(five, 5))).deepEquivalent());
1122 } 1194 }
1123 1195
1124 TEST_F(VisibleUnitsTest, startOfDocument) 1196 TEST_F(VisibleUnitsTest, startOfDocument)
1125 { 1197 {
1126 const char* bodyContent = "<a id=host><b id=one>1</b><b id=two>22</b></a>"; 1198 const char* bodyContent = "<a id=host><b id=one>1</b><b id=two>22</b></a>";
1127 const char* shadowContent = "<p><content select=#two></content></p><p><conte nt select=#one></content></p>"; 1199 const char* shadowContent = "<p><content select=#two></content></p><p><conte nt select=#one></content></p>";
1128 setBodyContent(bodyContent); 1200 setBodyContent(bodyContent);
1129 setShadowContent(shadowContent, "host"); 1201 setShadowContent(shadowContent, "host");
1130 1202
1131 Node* one = document().getElementById("one")->firstChild(); 1203 Node* one = document().getElementById("one")->firstChild();
1132 Node* two = document().getElementById("two")->firstChild(); 1204 Node* two = document().getElementById("two")->firstChild();
1133 1205
1134 EXPECT_EQ(Position(one, 0), startOfDocument(createVisiblePositionInDOMTree(* one, 0)).deepEquivalent()); 1206 EXPECT_EQ(Position(two, 0), startOfDocument(createVisiblePositionInDOMTree(* one, 0)).deepEquivalent()) << "walk in layout tree";
1135 EXPECT_EQ(PositionInFlatTree(two, 0), startOfDocument(createVisiblePositionI nFlatTree(*one, 0)).deepEquivalent()); 1207 EXPECT_EQ(PositionInFlatTree(two, 0), startOfDocument(createVisiblePositionI nFlatTree(*one, 0)).deepEquivalent());
1136 1208
1137 EXPECT_EQ(Position(one, 0), startOfDocument(createVisiblePositionInDOMTree(* two, 1)).deepEquivalent()); 1209 EXPECT_EQ(Position(two, 0), startOfDocument(createVisiblePositionInDOMTree(* two, 1)).deepEquivalent()) << "walk in layout tree";
1138 EXPECT_EQ(PositionInFlatTree(two, 0), startOfDocument(createVisiblePositionI nFlatTree(*two, 1)).deepEquivalent()); 1210 EXPECT_EQ(PositionInFlatTree(two, 0), startOfDocument(createVisiblePositionI nFlatTree(*two, 1)).deepEquivalent());
1139 } 1211 }
1140 1212
1141 TEST_F(VisibleUnitsTest, startOfLine) 1213 TEST_F(VisibleUnitsTest, startOfLine)
1142 { 1214 {
1143 const char* bodyContent = "<a id=host><b id=one>11</b><b id=two>22</b></a><i id=three>333</i><i id=four>4444</i><br>"; 1215 const char* bodyContent = "<a id=host><b id=one>11</b><b id=two>22</b></a><i id=three>333</i><i id=four>4444</i><br>";
1144 const char* shadowContent = "<div><u id=five>55555</u><content select=#two>< /content><br><u id=six>666666</u><br><content select=#one></content><u id=seven> 7777777</u></div>"; 1216 const char* shadowContent = "<div><u id=five>55555</u><content select=#two>< /content><br><u id=six>666666</u><br><content select=#one></content><u id=seven> 7777777</u></div>";
1145 setBodyContent(bodyContent); 1217 setBodyContent(bodyContent);
1146 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host"); 1218 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host");
1147 1219
1148 Node* one = document().getElementById("one")->firstChild(); 1220 Node* one = document().getElementById("one")->firstChild();
1149 Node* two = document().getElementById("two")->firstChild(); 1221 Node* two = document().getElementById("two")->firstChild();
1150 Node* three = document().getElementById("three")->firstChild(); 1222 Node* three = document().getElementById("three")->firstChild();
1151 Node* four = document().getElementById("four")->firstChild(); 1223 Node* four = document().getElementById("four")->firstChild();
1152 Node* five = shadowRoot->getElementById("five")->firstChild(); 1224 Node* five = shadowRoot->getElementById("five")->firstChild();
1153 Node* six = shadowRoot->getElementById("six")->firstChild(); 1225 Node* six = shadowRoot->getElementById("six")->firstChild();
1154 Node* seven = shadowRoot->getElementById("seven")->firstChild(); 1226 Node* seven = shadowRoot->getElementById("seven")->firstChild();
1155 1227
1156 EXPECT_EQ(Position(one, 0), startOfLine(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent()); 1228 EXPECT_EQ(Position(one, 0), startOfLine(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent());
1157 EXPECT_EQ(PositionInFlatTree(one, 0), startOfLine(createVisiblePositionInFla tTree(*one, 0)).deepEquivalent()); 1229 EXPECT_EQ(PositionInFlatTree(one, 0), startOfLine(createVisiblePositionInFla tTree(*one, 0)).deepEquivalent());
1158 1230
1159 EXPECT_EQ(Position(one, 0), startOfLine(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent()); 1231 EXPECT_EQ(Position(one, 0), startOfLine(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent());
1160 EXPECT_EQ(PositionInFlatTree(one, 0), startOfLine(createVisiblePositionInFla tTree(*one, 1)).deepEquivalent()); 1232 EXPECT_EQ(PositionInFlatTree(one, 0), startOfLine(createVisiblePositionInFla tTree(*one, 1)).deepEquivalent());
1161 1233
1162 EXPECT_EQ(Position(one, 0), startOfLine(createVisiblePositionInDOMTree(*two, 0)).deepEquivalent()); 1234 EXPECT_EQ(Position(five, 0), startOfLine(createVisiblePositionInDOMTree(*two , 0)).deepEquivalent()) << "walk in layout tree";
1163 EXPECT_EQ(PositionInFlatTree(five, 0), startOfLine(createVisiblePositionInFl atTree(*two, 0)).deepEquivalent()); 1235 EXPECT_EQ(PositionInFlatTree(five, 0), startOfLine(createVisiblePositionInFl atTree(*two, 0)).deepEquivalent());
1164 1236
1165 EXPECT_EQ(Position(five, 0), startOfLine(createVisiblePositionInDOMTree(*two , 1)).deepEquivalent()); 1237 EXPECT_EQ(Position(five, 0), startOfLine(createVisiblePositionInDOMTree(*two , 1)).deepEquivalent());
1166 EXPECT_EQ(PositionInFlatTree(five, 0), startOfLine(createVisiblePositionInFl atTree(*two, 1)).deepEquivalent()); 1238 EXPECT_EQ(PositionInFlatTree(five, 0), startOfLine(createVisiblePositionInFl atTree(*two, 1)).deepEquivalent());
1167 1239
1168 EXPECT_EQ(Position(five, 0), startOfLine(createVisiblePositionInDOMTree(*thr ee, 0)).deepEquivalent()); 1240 EXPECT_EQ(Position(three, 0), startOfLine(createVisiblePositionInDOMTree(*th ree, 0)).deepEquivalent()) << "walk in layout tree";
1169 EXPECT_EQ(PositionInFlatTree(three, 0), startOfLine(createVisiblePositionInF latTree(*three, 1)).deepEquivalent()); 1241 EXPECT_EQ(PositionInFlatTree(three, 0), startOfLine(createVisiblePositionInF latTree(*three, 1)).deepEquivalent());
1170 1242
1171 // TODO(yosin) startOfLine(four, 1) -> (two, 2) is a broken result. We keep 1243 // TODO(yosin) startOfLine(four, 1) -> (two, 2) is a broken result. We keep
1172 // it as a marker for future change. 1244 // it as a marker for future change.
1173 EXPECT_EQ(Position(two, 2), startOfLine(createVisiblePositionInDOMTree(*four , 1)).deepEquivalent()); 1245 EXPECT_EQ(Position(three, 0), startOfLine(createVisiblePositionInDOMTree(*fo ur, 1)).deepEquivalent()) << "walk in layout tree";
1174 EXPECT_EQ(PositionInFlatTree(three, 0), startOfLine(createVisiblePositionInF latTree(*four, 1)).deepEquivalent()); 1246 EXPECT_EQ(PositionInFlatTree(three, 0), startOfLine(createVisiblePositionInF latTree(*four, 1)).deepEquivalent());
1175 1247
1176 EXPECT_EQ(Position(five, 0), startOfLine(createVisiblePositionInDOMTree(*fiv e, 1)).deepEquivalent()); 1248 EXPECT_EQ(Position(five, 0), startOfLine(createVisiblePositionInDOMTree(*fiv e, 1)).deepEquivalent());
1177 EXPECT_EQ(PositionInFlatTree(five, 0), startOfLine(createVisiblePositionInFl atTree(*five, 1)).deepEquivalent()); 1249 EXPECT_EQ(PositionInFlatTree(five, 0), startOfLine(createVisiblePositionInFl atTree(*five, 1)).deepEquivalent());
1178 1250
1179 EXPECT_EQ(Position(six, 0), startOfLine(createVisiblePositionInDOMTree(*six, 1)).deepEquivalent()); 1251 EXPECT_EQ(Position(six, 0), startOfLine(createVisiblePositionInDOMTree(*six, 1)).deepEquivalent());
1180 EXPECT_EQ(PositionInFlatTree(six, 0), startOfLine(createVisiblePositionInFla tTree(*six, 1)).deepEquivalent()); 1252 EXPECT_EQ(PositionInFlatTree(six, 0), startOfLine(createVisiblePositionInFla tTree(*six, 1)).deepEquivalent());
1181 1253
1182 EXPECT_EQ(Position(one, 0), startOfLine(createVisiblePositionInDOMTree(*seve n, 1)).deepEquivalent()); 1254 EXPECT_EQ(Position(one, 0), startOfLine(createVisiblePositionInDOMTree(*seve n, 1)).deepEquivalent());
1183 EXPECT_EQ(PositionInFlatTree(one, 0), startOfLine(createVisiblePositionInFla tTree(*seven, 1)).deepEquivalent()); 1255 EXPECT_EQ(PositionInFlatTree(one, 0), startOfLine(createVisiblePositionInFla tTree(*seven, 1)).deepEquivalent());
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1227 const char* bodyContent = "<a id=host><b id=one>1</b><b id=two>22</b></a>"; 1299 const char* bodyContent = "<a id=host><b id=one>1</b><b id=two>22</b></a>";
1228 const char* shadowContent = "<p><i id=three>333</i> <content select=#two></c ontent> <content select=#one></content> <i id=four>4444</i></p>"; 1300 const char* shadowContent = "<p><i id=three>333</i> <content select=#two></c ontent> <content select=#one></content> <i id=four>4444</i></p>";
1229 setBodyContent(bodyContent); 1301 setBodyContent(bodyContent);
1230 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host"); 1302 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host");
1231 1303
1232 Node* one = document().getElementById("one")->firstChild(); 1304 Node* one = document().getElementById("one")->firstChild();
1233 Node* two = document().getElementById("two")->firstChild(); 1305 Node* two = document().getElementById("two")->firstChild();
1234 Node* three = shadowRoot->getElementById("three")->firstChild(); 1306 Node* three = shadowRoot->getElementById("three")->firstChild();
1235 Node* four = shadowRoot->getElementById("four")->firstChild(); 1307 Node* four = shadowRoot->getElementById("four")->firstChild();
1236 1308
1237 EXPECT_EQ(Position(one, 0), startOfSentence(createVisiblePositionInDOMTree(* one, 0)).deepEquivalent()); 1309 EXPECT_EQ(Position(three, 0), startOfSentence(createVisiblePositionInDOMTree (*one, 0)).deepEquivalent()) << "walk in layout tree";
1238 EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositio nInFlatTree(*one, 0)).deepEquivalent()); 1310 EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositio nInFlatTree(*one, 0)).deepEquivalent());
1239 1311
1240 EXPECT_EQ(Position(one, 0), startOfSentence(createVisiblePositionInDOMTree(* one, 1)).deepEquivalent()); 1312 EXPECT_EQ(Position(three, 0), startOfSentence(createVisiblePositionInDOMTree (*one, 1)).deepEquivalent()) << "walk in layout tree";
1241 EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositio nInFlatTree(*one, 1)).deepEquivalent()); 1313 EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositio nInFlatTree(*one, 1)).deepEquivalent());
1242 1314
1243 EXPECT_EQ(Position(one, 0), startOfSentence(createVisiblePositionInDOMTree(* two, 0)).deepEquivalent()); 1315 EXPECT_EQ(Position(three, 0), startOfSentence(createVisiblePositionInDOMTree (*two, 0)).deepEquivalent()) << "walk in layout tree";
1244 EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositio nInFlatTree(*two, 0)).deepEquivalent()); 1316 EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositio nInFlatTree(*two, 0)).deepEquivalent());
1245 1317
1246 EXPECT_EQ(Position(one, 0), startOfSentence(createVisiblePositionInDOMTree(* two, 1)).deepEquivalent()); 1318 EXPECT_EQ(Position(three, 0), startOfSentence(createVisiblePositionInDOMTree (*two, 1)).deepEquivalent()) << "walk in layout tree";
1247 EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositio nInFlatTree(*two, 1)).deepEquivalent()); 1319 EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositio nInFlatTree(*two, 1)).deepEquivalent());
1248 1320
1249 EXPECT_EQ(Position(three, 0), startOfSentence(createVisiblePositionInDOMTree (*three, 1)).deepEquivalent()); 1321 EXPECT_EQ(Position(three, 0), startOfSentence(createVisiblePositionInDOMTree (*three, 1)).deepEquivalent());
1250 EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositio nInFlatTree(*three, 1)).deepEquivalent()); 1322 EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositio nInFlatTree(*three, 1)).deepEquivalent());
1251 1323
1252 EXPECT_EQ(Position(three, 0), startOfSentence(createVisiblePositionInDOMTree (*four, 1)).deepEquivalent()); 1324 EXPECT_EQ(Position(three, 0), startOfSentence(createVisiblePositionInDOMTree (*four, 1)).deepEquivalent());
1253 EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositio nInFlatTree(*four, 1)).deepEquivalent()); 1325 EXPECT_EQ(PositionInFlatTree(three, 0), startOfSentence(createVisiblePositio nInFlatTree(*four, 1)).deepEquivalent());
1254 } 1326 }
1255 1327
1256 TEST_F(VisibleUnitsTest, startOfWord) 1328 TEST_F(VisibleUnitsTest, startOfWord)
1257 { 1329 {
1258 const char* bodyContent = "<a id=host><b id=one>1</b> <b id=two>22</b></a><i id=three>333</i>"; 1330 const char* bodyContent = "<a id=host><b id=one>1</b> <b id=two>22</b></a><i id=three>333</i>";
1259 const char* shadowContent = "<p><u id=four>44444</u><content select=#two></c ontent><span id=space> </span><content select=#one></content><u id=five>55555</u ></p>"; 1331 const char* shadowContent = "<p><u id=four>44444</u><content select=#two></c ontent><span id=space> </span><content select=#one></content><u id=five>55555</u ></p>";
1260 setBodyContent(bodyContent); 1332 setBodyContent(bodyContent);
1261 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host"); 1333 ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host");
1262 1334
1263 Node* one = document().getElementById("one")->firstChild(); 1335 Node* one = document().getElementById("one")->firstChild();
1264 Node* two = document().getElementById("two")->firstChild(); 1336 Node* two = document().getElementById("two")->firstChild();
1265 Node* three = document().getElementById("three")->firstChild(); 1337 Node* three = document().getElementById("three")->firstChild();
1266 Node* four = shadowRoot->getElementById("four")->firstChild(); 1338 Node* four = shadowRoot->getElementById("four")->firstChild();
1267 Node* five = shadowRoot->getElementById("five")->firstChild(); 1339 Node* five = shadowRoot->getElementById("five")->firstChild();
1268 Node* space = shadowRoot->getElementById("space")->firstChild(); 1340 Node* space = shadowRoot->getElementById("space")->firstChild();
1269 1341
1270 EXPECT_EQ(Position(one, 0), startOfWord(createVisiblePositionInDOMTree(*one, 0)).deepEquivalent()); 1342 EXPECT_EQ(Position(four, 0), startOfWord(createVisiblePositionInDOMTree(*one , 0)).deepEquivalent()) << "can't handle flat tree correctly";
1271 EXPECT_EQ(PositionInFlatTree(space, 1), startOfWord(createVisiblePositionInF latTree(*one, 0)).deepEquivalent()); 1343 EXPECT_EQ(PositionInFlatTree(space, 1), startOfWord(createVisiblePositionInF latTree(*one, 0)).deepEquivalent());
1272 1344
1273 EXPECT_EQ(Position(one, 0), startOfWord(createVisiblePositionInDOMTree(*one, 1)).deepEquivalent()); 1345 EXPECT_EQ(Position(space, 1), startOfWord(createVisiblePositionInDOMTree(*on e, 1)).deepEquivalent()) << "walk on layout tree";
1274 EXPECT_EQ(PositionInFlatTree(space, 1), startOfWord(createVisiblePositionInF latTree(*one, 1)).deepEquivalent()); 1346 EXPECT_EQ(PositionInFlatTree(space, 1), startOfWord(createVisiblePositionInF latTree(*one, 1)).deepEquivalent());
1275 1347
1276 EXPECT_EQ(Position(one, 0), startOfWord(createVisiblePositionInDOMTree(*two, 0)).deepEquivalent()); 1348 EXPECT_EQ(Position(four, 0), startOfWord(createVisiblePositionInDOMTree(*two , 0)).deepEquivalent()) << "walk on layout tree";
1277 EXPECT_EQ(PositionInFlatTree(four, 0), startOfWord(createVisiblePositionInFl atTree(*two, 0)).deepEquivalent()); 1349 EXPECT_EQ(PositionInFlatTree(four, 0), startOfWord(createVisiblePositionInFl atTree(*two, 0)).deepEquivalent());
1278 1350
1279 EXPECT_EQ(Position(one, 0), startOfWord(createVisiblePositionInDOMTree(*two, 1)).deepEquivalent()); 1351 EXPECT_EQ(Position(four, 0), startOfWord(createVisiblePositionInDOMTree(*two , 1)).deepEquivalent()) << "walk on layout tree";
1280 EXPECT_EQ(PositionInFlatTree(four, 0), startOfWord(createVisiblePositionInFl atTree(*two, 1)).deepEquivalent()); 1352 EXPECT_EQ(PositionInFlatTree(four, 0), startOfWord(createVisiblePositionInFl atTree(*two, 1)).deepEquivalent());
1281 1353
1282 EXPECT_EQ(Position(one, 0), startOfWord(createVisiblePositionInDOMTree(*thre e, 1)).deepEquivalent()); 1354 EXPECT_EQ(Position(four, 0), startOfWord(createVisiblePositionInDOMTree(*thr ee, 1)).deepEquivalent()) << "can't handle flat tree correctly";
1283 EXPECT_EQ(PositionInFlatTree(space, 1), startOfWord(createVisiblePositionInF latTree(*three, 1)).deepEquivalent()); 1355 EXPECT_EQ(PositionInFlatTree(space, 1), startOfWord(createVisiblePositionInF latTree(*three, 1)).deepEquivalent());
1284 1356
1285 EXPECT_EQ(Position(four, 0), startOfWord(createVisiblePositionInDOMTree(*fou r, 1)).deepEquivalent()); 1357 EXPECT_EQ(Position(four, 0), startOfWord(createVisiblePositionInDOMTree(*fou r, 1)).deepEquivalent());
1286 EXPECT_EQ(PositionInFlatTree(four, 0), startOfWord(createVisiblePositionInFl atTree(*four, 1)).deepEquivalent()); 1358 EXPECT_EQ(PositionInFlatTree(four, 0), startOfWord(createVisiblePositionInFl atTree(*four, 1)).deepEquivalent());
1287 1359
1288 EXPECT_EQ(Position(space, 1), startOfWord(createVisiblePositionInDOMTree(*fi ve, 1)).deepEquivalent()); 1360 EXPECT_EQ(Position(space, 1), startOfWord(createVisiblePositionInDOMTree(*fi ve, 1)).deepEquivalent());
1289 EXPECT_EQ(PositionInFlatTree(space, 1), startOfWord(createVisiblePositionInF latTree(*five, 1)).deepEquivalent()); 1361 EXPECT_EQ(PositionInFlatTree(space, 1), startOfWord(createVisiblePositionInF latTree(*five, 1)).deepEquivalent());
1290 } 1362 }
1291 1363
1292 TEST_F(VisibleUnitsTest, endsOfNodeAreVisuallyDistinctPositionsWithInvisibleChil d) 1364 TEST_F(VisibleUnitsTest, endsOfNodeAreVisuallyDistinctPositionsWithInvisibleChil d)
(...skipping 10 matching lines...) Expand all
1303 { 1375 {
1304 // Repro case of crbug.com/584030 1376 // Repro case of crbug.com/584030
1305 const char* bodyContent = "<button><rt><script>document.designMode = 'on'</s cript></rt></button>"; 1377 const char* bodyContent = "<button><rt><script>document.designMode = 'on'</s cript></rt></button>";
1306 setBodyContent(bodyContent); 1378 setBodyContent(bodyContent);
1307 1379
1308 Node* button = document().querySelector("button", ASSERT_NO_EXCEPTION); 1380 Node* button = document().querySelector("button", ASSERT_NO_EXCEPTION);
1309 EXPECT_TRUE(endsOfNodeAreVisuallyDistinctPositions(button)); 1381 EXPECT_TRUE(endsOfNodeAreVisuallyDistinctPositions(button));
1310 } 1382 }
1311 1383
1312 } // namespace blink 1384 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698