| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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煊
逸</div>"; | 1109 const char* bodyContent = "<div id=sample style='font-size: 500px'>A煊
逸</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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |