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

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

Issue 2749033006: Handle fallback content case in FlatTreeTraversal::traverseSiblings() (Closed)
Patch Set: Address hayato's comments. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversal.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.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 576 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 587
588 EXPECT_EQ(slot, FlatTreeTraversal::firstChild(*parent)); 588 EXPECT_EQ(slot, FlatTreeTraversal::firstChild(*parent));
589 EXPECT_EQ(child1, FlatTreeTraversal::firstChild(*slot)); 589 EXPECT_EQ(child1, FlatTreeTraversal::firstChild(*slot));
590 EXPECT_EQ(child2, FlatTreeTraversal::nextSibling(*child1)); 590 EXPECT_EQ(child2, FlatTreeTraversal::nextSibling(*child1));
591 EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*child2)); 591 EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*child2));
592 EXPECT_EQ(slot, FlatTreeTraversal::parent(*child1)); 592 EXPECT_EQ(slot, FlatTreeTraversal::parent(*child1));
593 EXPECT_EQ(slot, FlatTreeTraversal::parent(*child2)); 593 EXPECT_EQ(slot, FlatTreeTraversal::parent(*child2));
594 EXPECT_EQ(parent, FlatTreeTraversal::parent(*slot)); 594 EXPECT_EQ(parent, FlatTreeTraversal::parent(*slot));
595 } 595 }
596 596
597 TEST_F(FlatTreeTraversalTest, v1FallbackContent) {
598 const char* mainHTML = "<div id='d1'></div>";
599 const char* shadowHTML =
600 "<div id='before'></div>"
601 "<slot><p>fallback content</p></slot>"
602 "<div id='after'></div>";
603
604 setupDocumentTree(mainHTML);
605
606 Element* body = document().body();
607 Element* d1 = body->querySelector("#d1");
608
609 attachOpenShadowRoot(*d1, shadowHTML);
610 ShadowRoot* shadowRoot = d1->openShadowRoot();
611 Element* before = shadowRoot->querySelector("#before");
612 Element* after = shadowRoot->querySelector("#after");
613 Element* fallbackContent = shadowRoot->querySelector("p");
614
615 EXPECT_EQ(before, FlatTreeTraversal::firstChild(*d1));
616 EXPECT_EQ(after, FlatTreeTraversal::lastChild(*d1));
617 EXPECT_EQ(d1, FlatTreeTraversal::parent(*fallbackContent));
618
619 EXPECT_EQ(fallbackContent, FlatTreeTraversal::nextSibling(*before));
620 EXPECT_EQ(after, FlatTreeTraversal::nextSibling(*fallbackContent));
621 EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*after));
622
623 EXPECT_EQ(fallbackContent, FlatTreeTraversal::previousSibling(*after));
624 EXPECT_EQ(before, FlatTreeTraversal::previousSibling(*fallbackContent));
625 EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*before));
626 }
627
628 TEST_F(FlatTreeTraversalTest, v1FallbackContentSkippedInTraversal) {
629 const char* mainHTML = "<div id='d1'><span></span></div>";
630 const char* shadowHTML =
631 "<div id='before'></div>"
632 "<slot><p>fallback content</p></slot>"
633 "<div id='after'></div>";
634
635 setupDocumentTree(mainHTML);
636
637 Element* body = document().body();
638 Element* d1 = body->querySelector("#d1");
639 Element* span = body->querySelector("span");
640
641 attachOpenShadowRoot(*d1, shadowHTML);
642 ShadowRoot* shadowRoot = d1->openShadowRoot();
643 Element* before = shadowRoot->querySelector("#before");
644 Element* after = shadowRoot->querySelector("#after");
645 Element* fallbackContent = shadowRoot->querySelector("p");
646
647 EXPECT_EQ(before, FlatTreeTraversal::firstChild(*d1));
648 EXPECT_EQ(after, FlatTreeTraversal::lastChild(*d1));
649 EXPECT_EQ(d1, FlatTreeTraversal::parent(*span));
650
651 EXPECT_EQ(span, FlatTreeTraversal::nextSibling(*before));
652 EXPECT_EQ(after, FlatTreeTraversal::nextSibling(*span));
653 EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*after));
654
655 EXPECT_EQ(span, FlatTreeTraversal::previousSibling(*after));
656 EXPECT_EQ(before, FlatTreeTraversal::previousSibling(*span));
657 EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*before));
658
659 EXPECT_EQ(nullptr, FlatTreeTraversal::parent(*fallbackContent));
660 EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*fallbackContent));
661 EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*fallbackContent));
662 }
663
664 TEST_F(FlatTreeTraversalTest, v1AllFallbackContent) {
665 const char* mainHTML = "<div id='d1'></div>";
666 const char* shadowHTML =
667 "<slot name='a'><p id='x'>fallback content X</p></slot>"
668 "<slot name='b'><p id='y'>fallback content Y</p></slot>"
669 "<slot name='c'><p id='z'>fallback content Z</p></slot>";
670
671 setupDocumentTree(mainHTML);
672
673 Element* body = document().body();
674 Element* d1 = body->querySelector("#d1");
675
676 attachOpenShadowRoot(*d1, shadowHTML);
677 ShadowRoot* shadowRoot = d1->openShadowRoot();
678 Element* fallbackX = shadowRoot->querySelector("#x");
679 Element* fallbackY = shadowRoot->querySelector("#y");
680 Element* fallbackZ = shadowRoot->querySelector("#z");
681
682 EXPECT_EQ(fallbackX, FlatTreeTraversal::firstChild(*d1));
683 EXPECT_EQ(fallbackZ, FlatTreeTraversal::lastChild(*d1));
684 EXPECT_EQ(d1, FlatTreeTraversal::parent(*fallbackX));
685 EXPECT_EQ(d1, FlatTreeTraversal::parent(*fallbackY));
686 EXPECT_EQ(d1, FlatTreeTraversal::parent(*fallbackZ));
687
688 EXPECT_EQ(fallbackY, FlatTreeTraversal::nextSibling(*fallbackX));
689 EXPECT_EQ(fallbackZ, FlatTreeTraversal::nextSibling(*fallbackY));
690 EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*fallbackZ));
691
692 EXPECT_EQ(fallbackY, FlatTreeTraversal::previousSibling(*fallbackZ));
693 EXPECT_EQ(fallbackX, FlatTreeTraversal::previousSibling(*fallbackY));
694 EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*fallbackX));
695 }
696
597 } // namespace blink 697 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversal.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698