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

Side by Side Diff: third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversalTest.cpp

Issue 2178243002: Make ExceptionState parameter of ContainerNode::querySelector() as an optional parameter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 2016-07-26T10:56:52 Created 4 years, 4 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/dom/shadow/FlatTreeTraversal.h" 5 #include "core/dom/shadow/FlatTreeTraversal.h"
6 6
7 #include "bindings/core/v8/ExceptionStatePlaceholder.h" 7 #include "bindings/core/v8/ExceptionStatePlaceholder.h"
8 #include "core/dom/Document.h" 8 #include "core/dom/Document.h"
9 #include "core/dom/Element.h" 9 #include "core/dom/Element.h"
10 #include "core/dom/Node.h" 10 #include "core/dom/Node.h"
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 "</div>"; 109 "</div>";
110 const char* shadowHTML = 110 const char* shadowHTML =
111 "<a id='s00'>s00</a>" 111 "<a id='s00'>s00</a>"
112 "<content select='#m01'></content>" 112 "<content select='#m01'></content>"
113 "<a id='s02'>s02</a>" 113 "<a id='s02'>s02</a>"
114 "<a id='s03'><content select='#m00'></content></a>" 114 "<a id='s03'><content select='#m00'></content></a>"
115 "<a id='s04'>s04</a>"; 115 "<a id='s04'>s04</a>";
116 setupSampleHTML(mainHTML, shadowHTML, 0); 116 setupSampleHTML(mainHTML, shadowHTML, 0);
117 117
118 Element* body = document().body(); 118 Element* body = document().body();
119 Element* m0 = body->querySelector("#m0", ASSERT_NO_EXCEPTION); 119 Element* m0 = body->querySelector("#m0");
120 Element* m00 = m0->querySelector("#m00", ASSERT_NO_EXCEPTION); 120 Element* m00 = m0->querySelector("#m00");
121 Element* m01 = m0->querySelector("#m01", ASSERT_NO_EXCEPTION); 121 Element* m01 = m0->querySelector("#m01");
122 122
123 Element* shadowHost = m0; 123 Element* shadowHost = m0;
124 ShadowRoot* shadowRoot = shadowHost->openShadowRoot(); 124 ShadowRoot* shadowRoot = shadowHost->openShadowRoot();
125 Element* s00 = shadowRoot->querySelector("#s00", ASSERT_NO_EXCEPTION); 125 Element* s00 = shadowRoot->querySelector("#s00");
126 Element* s02 = shadowRoot->querySelector("#s02", ASSERT_NO_EXCEPTION); 126 Element* s02 = shadowRoot->querySelector("#s02");
127 Element* s03 = shadowRoot->querySelector("#s03", ASSERT_NO_EXCEPTION); 127 Element* s03 = shadowRoot->querySelector("#s03");
128 Element* s04 = shadowRoot->querySelector("#s04", ASSERT_NO_EXCEPTION); 128 Element* s04 = shadowRoot->querySelector("#s04");
129 129
130 const unsigned numberOfChildNodes = 5; 130 const unsigned numberOfChildNodes = 5;
131 Node* expectedChildNodes[5] = { s00, m01, s02, s03, s04 }; 131 Node* expectedChildNodes[5] = { s00, m01, s02, s03, s04 };
132 132
133 ASSERT_EQ(numberOfChildNodes, FlatTreeTraversal::countChildren(*shadowHost)) ; 133 ASSERT_EQ(numberOfChildNodes, FlatTreeTraversal::countChildren(*shadowHost)) ;
134 EXPECT_TRUE(FlatTreeTraversal::hasChildren(*shadowHost)); 134 EXPECT_TRUE(FlatTreeTraversal::hasChildren(*shadowHost));
135 135
136 for (unsigned index = 0; index < numberOfChildNodes; ++index) { 136 for (unsigned index = 0; index < numberOfChildNodes; ++index) {
137 Node* child = FlatTreeTraversal::childAt(*shadowHost, index); 137 Node* child = FlatTreeTraversal::childAt(*shadowHost, index);
138 EXPECT_EQ(expectedChildNodes[index], child) 138 EXPECT_EQ(expectedChildNodes[index], child)
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 "<a id='s10'>s10</a>" 184 "<a id='s10'>s10</a>"
185 "<a id='s11'><content select='#m12'></content></a>" 185 "<a id='s11'><content select='#m12'></content></a>"
186 "<a id='s12'>s12</a>" 186 "<a id='s12'>s12</a>"
187 "<a id='s13'>" 187 "<a id='s13'>"
188 "<content select='#m10'></content>" 188 "<content select='#m10'></content>"
189 "<content select='#m11'></content>" 189 "<content select='#m11'></content>"
190 "</a>" 190 "</a>"
191 "<a id='s14'>s14</a>"; 191 "<a id='s14'>s14</a>";
192 setupSampleHTML(mainHTML, shadowHTML, 1); 192 setupSampleHTML(mainHTML, shadowHTML, 1);
193 Element* body = document().body(); 193 Element* body = document().body();
194 Element* m0 = body->querySelector("#m0", ASSERT_NO_EXCEPTION); 194 Element* m0 = body->querySelector("#m0");
195 Element* m1 = body->querySelector("#m1", ASSERT_NO_EXCEPTION); 195 Element* m1 = body->querySelector("#m1");
196 Element* m2 = body->querySelector("#m2", ASSERT_NO_EXCEPTION); 196 Element* m2 = body->querySelector("#m2");
197 197
198 Element* m00 = body->querySelector("#m00", ASSERT_NO_EXCEPTION); 198 Element* m00 = body->querySelector("#m00");
199 Element* m01 = body->querySelector("#m01", ASSERT_NO_EXCEPTION); 199 Element* m01 = body->querySelector("#m01");
200 Element* m10 = body->querySelector("#m10", ASSERT_NO_EXCEPTION); 200 Element* m10 = body->querySelector("#m10");
201 Element* m11 = body->querySelector("#m11", ASSERT_NO_EXCEPTION); 201 Element* m11 = body->querySelector("#m11");
202 Element* m12 = body->querySelector("#m12", ASSERT_NO_EXCEPTION); 202 Element* m12 = body->querySelector("#m12");
203 Element* m20 = body->querySelector("#m20", ASSERT_NO_EXCEPTION); 203 Element* m20 = body->querySelector("#m20");
204 Element* m21 = body->querySelector("#m21", ASSERT_NO_EXCEPTION); 204 Element* m21 = body->querySelector("#m21");
205 205
206 ShadowRoot* shadowRoot = m1->openShadowRoot(); 206 ShadowRoot* shadowRoot = m1->openShadowRoot();
207 Element* s10 = shadowRoot->querySelector("#s10", ASSERT_NO_EXCEPTION); 207 Element* s10 = shadowRoot->querySelector("#s10");
208 Element* s11 = shadowRoot->querySelector("#s11", ASSERT_NO_EXCEPTION); 208 Element* s11 = shadowRoot->querySelector("#s11");
209 Element* s12 = shadowRoot->querySelector("#s12", ASSERT_NO_EXCEPTION); 209 Element* s12 = shadowRoot->querySelector("#s12");
210 Element* s13 = shadowRoot->querySelector("#s13", ASSERT_NO_EXCEPTION); 210 Element* s13 = shadowRoot->querySelector("#s13");
211 Element* s14 = shadowRoot->querySelector("#s14", ASSERT_NO_EXCEPTION); 211 Element* s14 = shadowRoot->querySelector("#s14");
212 212
213 testCommonAncestor(body, *m0, *m1); 213 testCommonAncestor(body, *m0, *m1);
214 testCommonAncestor(body, *m1, *m2); 214 testCommonAncestor(body, *m1, *m2);
215 testCommonAncestor(body, *m1, *m20); 215 testCommonAncestor(body, *m1, *m20);
216 testCommonAncestor(body, *s14, *m21); 216 testCommonAncestor(body, *s14, *m21);
217 217
218 testCommonAncestor(m0, *m0, *m0); 218 testCommonAncestor(m0, *m0, *m0);
219 testCommonAncestor(m0, *m00, *m01); 219 testCommonAncestor(m0, *m00, *m01);
220 220
221 testCommonAncestor(m1, *m1, *m1); 221 testCommonAncestor(m1, *m1, *m1);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 const char* shadowHTML = 255 const char* shadowHTML =
256 "<content select='#m11'></content>" 256 "<content select='#m11'></content>"
257 "<a id='s11'>s11</a>" 257 "<a id='s11'>s11</a>"
258 "<a id='s12'>" 258 "<a id='s12'>"
259 "<b id='s120'>s120</b>" 259 "<b id='s120'>s120</b>"
260 "<content select='#m10'></content>" 260 "<content select='#m10'></content>"
261 "</a>"; 261 "</a>";
262 setupSampleHTML(mainHTML, shadowHTML, 1); 262 setupSampleHTML(mainHTML, shadowHTML, 1);
263 263
264 Element* body = document().body(); 264 Element* body = document().body();
265 Element* m0 = body->querySelector("#m0", ASSERT_NO_EXCEPTION); 265 Element* m0 = body->querySelector("#m0");
266 Element* m1 = body->querySelector("#m1", ASSERT_NO_EXCEPTION); 266 Element* m1 = body->querySelector("#m1");
267 Element* m2 = body->querySelector("#m2", ASSERT_NO_EXCEPTION); 267 Element* m2 = body->querySelector("#m2");
268 268
269 Element* m10 = body->querySelector("#m10", ASSERT_NO_EXCEPTION); 269 Element* m10 = body->querySelector("#m10");
270 Element* m11 = body->querySelector("#m11", ASSERT_NO_EXCEPTION); 270 Element* m11 = body->querySelector("#m11");
271 271
272 ShadowRoot* shadowRoot = m1->openShadowRoot(); 272 ShadowRoot* shadowRoot = m1->openShadowRoot();
273 Element* s11 = shadowRoot->querySelector("#s11", ASSERT_NO_EXCEPTION); 273 Element* s11 = shadowRoot->querySelector("#s11");
274 Element* s12 = shadowRoot->querySelector("#s12", ASSERT_NO_EXCEPTION); 274 Element* s12 = shadowRoot->querySelector("#s12");
275 Element* s120 = shadowRoot->querySelector("#s120", ASSERT_NO_EXCEPTION); 275 Element* s120 = shadowRoot->querySelector("#s120");
276 276
277 // Main tree node to main tree node 277 // Main tree node to main tree node
278 EXPECT_EQ(*m1, FlatTreeTraversal::nextSkippingChildren(*m0)); 278 EXPECT_EQ(*m1, FlatTreeTraversal::nextSkippingChildren(*m0));
279 EXPECT_EQ(*m0, FlatTreeTraversal::previousSkippingChildren(*m1)); 279 EXPECT_EQ(*m0, FlatTreeTraversal::previousSkippingChildren(*m1));
280 280
281 // Distribute node to main tree node 281 // Distribute node to main tree node
282 EXPECT_EQ(*m2, FlatTreeTraversal::nextSkippingChildren(*m10)); 282 EXPECT_EQ(*m2, FlatTreeTraversal::nextSkippingChildren(*m10));
283 EXPECT_EQ(*m1, FlatTreeTraversal::previousSkippingChildren(*m2)); 283 EXPECT_EQ(*m1, FlatTreeTraversal::previousSkippingChildren(*m2));
284 284
285 // Distribute node to node in shadow tree 285 // Distribute node to node in shadow tree
(...skipping 27 matching lines...) Expand all
313 "<div id='m2'></div>"; 313 "<div id='m2'></div>";
314 const char* shadowHTML = 314 const char* shadowHTML =
315 "<content select='#m11'></content>" 315 "<content select='#m11'></content>"
316 "<a id='s11'>s11</a>" 316 "<a id='s11'>s11</a>"
317 "<a id='s12'>" 317 "<a id='s12'>"
318 "<content select='#m10'></content>" 318 "<content select='#m10'></content>"
319 "</a>"; 319 "</a>";
320 setupSampleHTML(mainHTML, shadowHTML, 1); 320 setupSampleHTML(mainHTML, shadowHTML, 1);
321 321
322 Element* body = document().body(); 322 Element* body = document().body();
323 Element* m0 = body->querySelector("#m0", ASSERT_NO_EXCEPTION); 323 Element* m0 = body->querySelector("#m0");
324 Element* m1 = body->querySelector("#m1", ASSERT_NO_EXCEPTION); 324 Element* m1 = body->querySelector("#m1");
325 Element* m2 = body->querySelector("#m2", ASSERT_NO_EXCEPTION); 325 Element* m2 = body->querySelector("#m2");
326 326
327 Element* m10 = body->querySelector("#m10", ASSERT_NO_EXCEPTION); 327 Element* m10 = body->querySelector("#m10");
328 328
329 ShadowRoot* shadowRoot = m1->openShadowRoot(); 329 ShadowRoot* shadowRoot = m1->openShadowRoot();
330 Element* s11 = shadowRoot->querySelector("#s11", ASSERT_NO_EXCEPTION); 330 Element* s11 = shadowRoot->querySelector("#s11");
331 Element* s12 = shadowRoot->querySelector("#s12", ASSERT_NO_EXCEPTION); 331 Element* s12 = shadowRoot->querySelector("#s12");
332 332
333 EXPECT_EQ(m0->firstChild(), FlatTreeTraversal::lastWithin(*m0)); 333 EXPECT_EQ(m0->firstChild(), FlatTreeTraversal::lastWithin(*m0));
334 EXPECT_EQ(*m0->firstChild(), FlatTreeTraversal::lastWithinOrSelf(*m0)); 334 EXPECT_EQ(*m0->firstChild(), FlatTreeTraversal::lastWithinOrSelf(*m0));
335 335
336 EXPECT_EQ(m10->firstChild(), FlatTreeTraversal::lastWithin(*m1)); 336 EXPECT_EQ(m10->firstChild(), FlatTreeTraversal::lastWithin(*m1));
337 EXPECT_EQ(*m10->firstChild(), FlatTreeTraversal::lastWithinOrSelf(*m1)); 337 EXPECT_EQ(*m10->firstChild(), FlatTreeTraversal::lastWithinOrSelf(*m1));
338 338
339 EXPECT_EQ(nullptr, FlatTreeTraversal::lastWithin(*m2)); 339 EXPECT_EQ(nullptr, FlatTreeTraversal::lastWithin(*m2));
340 EXPECT_EQ(*m2, FlatTreeTraversal::lastWithinOrSelf(*m2)); 340 EXPECT_EQ(*m2, FlatTreeTraversal::lastWithinOrSelf(*m2));
341 341
(...skipping 16 matching lines...) Expand all
358 const char* shadowHTML = 358 const char* shadowHTML =
359 "<content select='#m11'></content>" 359 "<content select='#m11'></content>"
360 "<a id='s11'>s11</a>" 360 "<a id='s11'>s11</a>"
361 "<a id='s12'>" 361 "<a id='s12'>"
362 "<b id='s120'>s120</b>" 362 "<b id='s120'>s120</b>"
363 "<content select='#m10'></content>" 363 "<content select='#m10'></content>"
364 "</a>"; 364 "</a>";
365 setupSampleHTML(mainHTML, shadowHTML, 1); 365 setupSampleHTML(mainHTML, shadowHTML, 1);
366 366
367 Element* body = document().body(); 367 Element* body = document().body();
368 Element* m0 = body->querySelector("#m0", ASSERT_NO_EXCEPTION); 368 Element* m0 = body->querySelector("#m0");
369 Element* m1 = body->querySelector("#m1", ASSERT_NO_EXCEPTION); 369 Element* m1 = body->querySelector("#m1");
370 Element* m2 = body->querySelector("#m2", ASSERT_NO_EXCEPTION); 370 Element* m2 = body->querySelector("#m2");
371 371
372 Element* m10 = body->querySelector("#m10", ASSERT_NO_EXCEPTION); 372 Element* m10 = body->querySelector("#m10");
373 Element* m11 = body->querySelector("#m11", ASSERT_NO_EXCEPTION); 373 Element* m11 = body->querySelector("#m11");
374 374
375 ShadowRoot* shadowRoot = m1->openShadowRoot(); 375 ShadowRoot* shadowRoot = m1->openShadowRoot();
376 Element* s11 = shadowRoot->querySelector("#s11", ASSERT_NO_EXCEPTION); 376 Element* s11 = shadowRoot->querySelector("#s11");
377 Element* s12 = shadowRoot->querySelector("#s12", ASSERT_NO_EXCEPTION); 377 Element* s12 = shadowRoot->querySelector("#s12");
378 Element* s120 = shadowRoot->querySelector("#s120", ASSERT_NO_EXCEPTION); 378 Element* s120 = shadowRoot->querySelector("#s120");
379 379
380 EXPECT_EQ(*m0->firstChild(), FlatTreeTraversal::previousPostOrder(*m0)); 380 EXPECT_EQ(*m0->firstChild(), FlatTreeTraversal::previousPostOrder(*m0));
381 EXPECT_EQ(*s12, FlatTreeTraversal::previousPostOrder(*m1)); 381 EXPECT_EQ(*s12, FlatTreeTraversal::previousPostOrder(*m1));
382 EXPECT_EQ(*m10->firstChild(), FlatTreeTraversal::previousPostOrder(*m10)); 382 EXPECT_EQ(*m10->firstChild(), FlatTreeTraversal::previousPostOrder(*m10));
383 EXPECT_EQ(*s120, FlatTreeTraversal::previousPostOrder(*m10->firstChild())); 383 EXPECT_EQ(*s120, FlatTreeTraversal::previousPostOrder(*m10->firstChild()));
384 EXPECT_EQ(*s120, FlatTreeTraversal::previousPostOrder(*m10->firstChild(), s1 2)); 384 EXPECT_EQ(*s120, FlatTreeTraversal::previousPostOrder(*m10->firstChild(), s1 2));
385 EXPECT_EQ(*m11->firstChild(), FlatTreeTraversal::previousPostOrder(*m11)); 385 EXPECT_EQ(*m11->firstChild(), FlatTreeTraversal::previousPostOrder(*m11));
386 EXPECT_EQ(*m0, FlatTreeTraversal::previousPostOrder(*m11->firstChild())); 386 EXPECT_EQ(*m0, FlatTreeTraversal::previousPostOrder(*m11->firstChild()));
387 EXPECT_EQ(nullptr, FlatTreeTraversal::previousPostOrder(*m11->firstChild(), m11)); 387 EXPECT_EQ(nullptr, FlatTreeTraversal::previousPostOrder(*m11->firstChild(), m11));
388 EXPECT_EQ(*m2->firstChild(), FlatTreeTraversal::previousPostOrder(*m2)); 388 EXPECT_EQ(*m2->firstChild(), FlatTreeTraversal::previousPostOrder(*m2));
(...skipping 12 matching lines...) Expand all
401 "<div id='m1'>" 401 "<div id='m1'>"
402 "<span id='m10'>m10</span>" 402 "<span id='m10'>m10</span>"
403 "<span id='m11'>m11</span>" 403 "<span id='m11'>m11</span>"
404 "</div>" 404 "</div>"
405 "<div id='m2'>m2</div>"; 405 "<div id='m2'>m2</div>";
406 const char* shadowHTML = 406 const char* shadowHTML =
407 "<content select='#m11'></content>"; 407 "<content select='#m11'></content>";
408 setupSampleHTML(mainHTML, shadowHTML, 1); 408 setupSampleHTML(mainHTML, shadowHTML, 1);
409 409
410 Element* body = document().body(); 410 Element* body = document().body();
411 Element* m10 = body->querySelector("#m10", ASSERT_NO_EXCEPTION); 411 Element* m10 = body->querySelector("#m10");
412 412
413 EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*m10)); 413 EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*m10));
414 EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*m10)); 414 EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*m10));
415 } 415 }
416 416
417 TEST_F(FlatTreeTraversalTest, redistribution) 417 TEST_F(FlatTreeTraversalTest, redistribution)
418 { 418 {
419 const char* mainHTML = 419 const char* mainHTML =
420 "<div id='m0'>m0</div>" 420 "<div id='m0'>m0</div>"
421 "<div id='m1'>" 421 "<div id='m1'>"
422 "<span id='m10'>m10</span>" 422 "<span id='m10'>m10</span>"
423 "<span id='m11'>m11</span>" 423 "<span id='m11'>m11</span>"
424 "</div>" 424 "</div>"
425 "<div id='m2'>m2</div>"; 425 "<div id='m2'>m2</div>";
426 const char* shadowHTML1 = 426 const char* shadowHTML1 =
427 "<div id='s1'>" 427 "<div id='s1'>"
428 "<content></content>" 428 "<content></content>"
429 "</div>"; 429 "</div>";
430 430
431 setupSampleHTML(mainHTML, shadowHTML1, 1); 431 setupSampleHTML(mainHTML, shadowHTML1, 1);
432 432
433 const char* shadowHTML2 = 433 const char* shadowHTML2 =
434 "<div id='s2'>" 434 "<div id='s2'>"
435 "<content select='#m10'></content>" 435 "<content select='#m10'></content>"
436 "<span id='s21'>s21</span>" 436 "<span id='s21'>s21</span>"
437 "</div>"; 437 "</div>";
438 438
439 Element* body = document().body(); 439 Element* body = document().body();
440 Element* m1 = body->querySelector("#m1", ASSERT_NO_EXCEPTION); 440 Element* m1 = body->querySelector("#m1");
441 Element* m10 = body->querySelector("#m10", ASSERT_NO_EXCEPTION); 441 Element* m10 = body->querySelector("#m10");
442 442
443 ShadowRoot* shadowRoot1 = m1->openShadowRoot(); 443 ShadowRoot* shadowRoot1 = m1->openShadowRoot();
444 Element* s1 = shadowRoot1->querySelector("#s1", ASSERT_NO_EXCEPTION); 444 Element* s1 = shadowRoot1->querySelector("#s1");
445 445
446 attachV0ShadowRoot(*s1, shadowHTML2); 446 attachV0ShadowRoot(*s1, shadowHTML2);
447 447
448 ShadowRoot* shadowRoot2 = s1->openShadowRoot(); 448 ShadowRoot* shadowRoot2 = s1->openShadowRoot();
449 Element* s21 = shadowRoot2->querySelector("#s21", ASSERT_NO_EXCEPTION); 449 Element* s21 = shadowRoot2->querySelector("#s21");
450 450
451 EXPECT_EQ(s21, FlatTreeTraversal::nextSibling(*m10)); 451 EXPECT_EQ(s21, FlatTreeTraversal::nextSibling(*m10));
452 EXPECT_EQ(m10, FlatTreeTraversal::previousSibling(*s21)); 452 EXPECT_EQ(m10, FlatTreeTraversal::previousSibling(*s21));
453 453
454 // FlatTreeTraversal::traverseSiblings does not work for a node which is not in a document flat tree. 454 // FlatTreeTraversal::traverseSiblings does not work for a node which is not in a document flat tree.
455 // e.g. The following test fails. The result of FlatTreeTraversal::previousS ibling(*m11)) will be #m10, instead of nullptr. 455 // e.g. The following test fails. The result of FlatTreeTraversal::previousS ibling(*m11)) will be #m10, instead of nullptr.
456 // Element* m11 = body->querySelector("#m11", ASSERT_NO_EXCEPTION); 456 // Element* m11 = body->querySelector("#m11");
457 // EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*m11)); 457 // EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*m11));
458 } 458 }
459 459
460 TEST_F(FlatTreeTraversalTest, v1Simple) 460 TEST_F(FlatTreeTraversalTest, v1Simple)
461 { 461 {
462 const char* mainHTML = 462 const char* mainHTML =
463 "<div id='host'>" 463 "<div id='host'>"
464 "<div id='child1' slot='slot1'></div>" 464 "<div id='child1' slot='slot1'></div>"
465 "<div id='child2' slot='slot2'></div>" 465 "<div id='child2' slot='slot2'></div>"
466 "</div>"; 466 "</div>";
467 const char* shadowHTML = 467 const char* shadowHTML =
468 "<div id='shadow-child1'></div>" 468 "<div id='shadow-child1'></div>"
469 "<slot name='slot1'></slot>" 469 "<slot name='slot1'></slot>"
470 "<slot name='slot2'></slot>" 470 "<slot name='slot2'></slot>"
471 "<div id='shadow-child2'></div>"; 471 "<div id='shadow-child2'></div>";
472 472
473 setupDocumentTree(mainHTML); 473 setupDocumentTree(mainHTML);
474 Element* body = document().body(); 474 Element* body = document().body();
475 Element* host = body->querySelector("#host", ASSERT_NO_EXCEPTION); 475 Element* host = body->querySelector("#host");
476 Element* child1 = body->querySelector("#child1", ASSERT_NO_EXCEPTION); 476 Element* child1 = body->querySelector("#child1");
477 Element* child2 = body->querySelector("#child2", ASSERT_NO_EXCEPTION); 477 Element* child2 = body->querySelector("#child2");
478 478
479 attachOpenShadowRoot(*host, shadowHTML); 479 attachOpenShadowRoot(*host, shadowHTML);
480 ShadowRoot* shadowRoot = host->openShadowRoot(); 480 ShadowRoot* shadowRoot = host->openShadowRoot();
481 Element* slot1 = shadowRoot->querySelector("[name=slot1]", ASSERT_NO_EXCEPTI ON); 481 Element* slot1 = shadowRoot->querySelector("[name=slot1]");
482 Element* slot2 = shadowRoot->querySelector("[name=slot2]", ASSERT_NO_EXCEPTI ON); 482 Element* slot2 = shadowRoot->querySelector("[name=slot2]");
483 Element* shadowChild1 = shadowRoot->querySelector("#shadow-child1", ASSERT_N O_EXCEPTION); 483 Element* shadowChild1 = shadowRoot->querySelector("#shadow-child1");
484 Element* shadowChild2 = shadowRoot->querySelector("#shadow-child2", ASSERT_N O_EXCEPTION); 484 Element* shadowChild2 = shadowRoot->querySelector("#shadow-child2");
485 485
486 EXPECT_TRUE(slot1); 486 EXPECT_TRUE(slot1);
487 EXPECT_TRUE(slot2); 487 EXPECT_TRUE(slot2);
488 EXPECT_EQ(shadowChild1, FlatTreeTraversal::firstChild(*host)); 488 EXPECT_EQ(shadowChild1, FlatTreeTraversal::firstChild(*host));
489 EXPECT_EQ(child1, FlatTreeTraversal::nextSibling(*shadowChild1)); 489 EXPECT_EQ(child1, FlatTreeTraversal::nextSibling(*shadowChild1));
490 EXPECT_EQ(child2, FlatTreeTraversal::nextSibling(*child1)); 490 EXPECT_EQ(child2, FlatTreeTraversal::nextSibling(*child1));
491 EXPECT_EQ(shadowChild2, FlatTreeTraversal::nextSibling(*child2)); 491 EXPECT_EQ(shadowChild2, FlatTreeTraversal::nextSibling(*child2));
492 } 492 }
493 493
494 TEST_F(FlatTreeTraversalTest, v1Redistribution) 494 TEST_F(FlatTreeTraversalTest, v1Redistribution)
(...skipping 17 matching lines...) Expand all
512 "</div>"; 512 "</div>";
513 const char* shadowHTML2 = 513 const char* shadowHTML2 =
514 "<div id='d1-1-1'></div>" 514 "<div id='d1-1-1'></div>"
515 "<slot name='d1-1-s1'></slot>" 515 "<slot name='d1-1-s1'></slot>"
516 "<slot name='d1-1-s2'></slot>" 516 "<slot name='d1-1-s2'></slot>"
517 "<div id='d1-1-2'></div>"; 517 "<div id='d1-1-2'></div>";
518 518
519 setupDocumentTree(mainHTML); 519 setupDocumentTree(mainHTML);
520 520
521 Element* body = document().body(); 521 Element* body = document().body();
522 Element* d1 = body->querySelector("#d1", ASSERT_NO_EXCEPTION); 522 Element* d1 = body->querySelector("#d1");
523 Element* d2 = body->querySelector("#d2", ASSERT_NO_EXCEPTION); 523 Element* d2 = body->querySelector("#d2");
524 Element* d3 = body->querySelector("#d3", ASSERT_NO_EXCEPTION); 524 Element* d3 = body->querySelector("#d3");
525 Element* d4 = body->querySelector("#d4", ASSERT_NO_EXCEPTION); 525 Element* d4 = body->querySelector("#d4");
526 Element* d5 = body->querySelector("#d5", ASSERT_NO_EXCEPTION); 526 Element* d5 = body->querySelector("#d5");
527 Element* d6 = body->querySelector("#d6", ASSERT_NO_EXCEPTION); 527 Element* d6 = body->querySelector("#d6");
528 528
529 attachOpenShadowRoot(*d1, shadowHTML1); 529 attachOpenShadowRoot(*d1, shadowHTML1);
530 ShadowRoot* shadowRoot1 = d1->openShadowRoot(); 530 ShadowRoot* shadowRoot1 = d1->openShadowRoot();
531 Element* d11 = shadowRoot1->querySelector("#d1-1", ASSERT_NO_EXCEPTION); 531 Element* d11 = shadowRoot1->querySelector("#d1-1");
532 Element* d12 = shadowRoot1->querySelector("#d1-2", ASSERT_NO_EXCEPTION); 532 Element* d12 = shadowRoot1->querySelector("#d1-2");
533 Element* d13 = shadowRoot1->querySelector("#d1-3", ASSERT_NO_EXCEPTION); 533 Element* d13 = shadowRoot1->querySelector("#d1-3");
534 Element* d14 = shadowRoot1->querySelector("#d1-4", ASSERT_NO_EXCEPTION); 534 Element* d14 = shadowRoot1->querySelector("#d1-4");
535 Element* d1s0 = shadowRoot1->querySelector("#d1-s0", ASSERT_NO_EXCEPTION); 535 Element* d1s0 = shadowRoot1->querySelector("#d1-s0");
536 Element* d1s1 = shadowRoot1->querySelector("[name=d1-s1]", ASSERT_NO_EXCEPTI ON); 536 Element* d1s1 = shadowRoot1->querySelector("[name=d1-s1]");
537 Element* d1s2 = shadowRoot1->querySelector("[name=d1-s2]", ASSERT_NO_EXCEPTI ON); 537 Element* d1s2 = shadowRoot1->querySelector("[name=d1-s2]");
538 538
539 attachOpenShadowRoot(*d11, shadowHTML2); 539 attachOpenShadowRoot(*d11, shadowHTML2);
540 ShadowRoot* shadowRoot2 = d11->openShadowRoot(); 540 ShadowRoot* shadowRoot2 = d11->openShadowRoot();
541 Element* d111 = shadowRoot2->querySelector("#d1-1-1", ASSERT_NO_EXCEPTION); 541 Element* d111 = shadowRoot2->querySelector("#d1-1-1");
542 Element* d112 = shadowRoot2->querySelector("#d1-1-2", ASSERT_NO_EXCEPTION); 542 Element* d112 = shadowRoot2->querySelector("#d1-1-2");
543 Element* d11s1 = shadowRoot2->querySelector("[name=d1-1-s1]", ASSERT_NO_EXCE PTION); 543 Element* d11s1 = shadowRoot2->querySelector("[name=d1-1-s1]");
544 Element* d11s2 = shadowRoot2->querySelector("[name=d1-1-s2]", ASSERT_NO_EXCE PTION); 544 Element* d11s2 = shadowRoot2->querySelector("[name=d1-1-s2]");
545 545
546 EXPECT_TRUE(d5); 546 EXPECT_TRUE(d5);
547 EXPECT_TRUE(d12); 547 EXPECT_TRUE(d12);
548 EXPECT_TRUE(d13); 548 EXPECT_TRUE(d13);
549 EXPECT_TRUE(d1s0); 549 EXPECT_TRUE(d1s0);
550 EXPECT_TRUE(d1s1); 550 EXPECT_TRUE(d1s1);
551 EXPECT_TRUE(d1s2); 551 EXPECT_TRUE(d1s2);
552 EXPECT_TRUE(d11s1); 552 EXPECT_TRUE(d11s1);
553 EXPECT_TRUE(d11s2); 553 EXPECT_TRUE(d11s2);
554 EXPECT_EQ(d11, FlatTreeTraversal::next(*d1)); 554 EXPECT_EQ(d11, FlatTreeTraversal::next(*d1));
555 EXPECT_EQ(d111, FlatTreeTraversal::next(*d11)); 555 EXPECT_EQ(d111, FlatTreeTraversal::next(*d11));
556 EXPECT_EQ(d2, FlatTreeTraversal::next(*d111)); 556 EXPECT_EQ(d2, FlatTreeTraversal::next(*d111));
557 EXPECT_EQ(d14, FlatTreeTraversal::next(*d2)); 557 EXPECT_EQ(d14, FlatTreeTraversal::next(*d2));
558 EXPECT_EQ(d112, FlatTreeTraversal::next(*d14)); 558 EXPECT_EQ(d112, FlatTreeTraversal::next(*d14));
559 EXPECT_EQ(d6, FlatTreeTraversal::next(*d112)); 559 EXPECT_EQ(d6, FlatTreeTraversal::next(*d112));
560 560
561 EXPECT_EQ(d112, FlatTreeTraversal::previous(*d6)); 561 EXPECT_EQ(d112, FlatTreeTraversal::previous(*d6));
562 562
563 EXPECT_EQ(d11, FlatTreeTraversal::parent(*d111)); 563 EXPECT_EQ(d11, FlatTreeTraversal::parent(*d111));
564 EXPECT_EQ(d11, FlatTreeTraversal::parent(*d112)); 564 EXPECT_EQ(d11, FlatTreeTraversal::parent(*d112));
565 EXPECT_EQ(d11, FlatTreeTraversal::parent(*d2)); 565 EXPECT_EQ(d11, FlatTreeTraversal::parent(*d2));
566 EXPECT_EQ(d11, FlatTreeTraversal::parent(*d14)); 566 EXPECT_EQ(d11, FlatTreeTraversal::parent(*d14));
567 EXPECT_EQ(nullptr, FlatTreeTraversal::parent(*d3)); 567 EXPECT_EQ(nullptr, FlatTreeTraversal::parent(*d3));
568 EXPECT_EQ(nullptr, FlatTreeTraversal::parent(*d4)); 568 EXPECT_EQ(nullptr, FlatTreeTraversal::parent(*d4));
569 } 569 }
570 570
571 } // namespace blink 571 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/TextTest.cpp ('k') | third_party/WebKit/Source/core/editing/RelocatablePositionTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698