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

Unified 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversalTest.cpp
diff --git a/third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversalTest.cpp b/third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversalTest.cpp
index d87fd3ab2ca8daa0b9876d5726c12888e17987fb..6b8c652fdef697b369b2dee7729ae81fe1d97569 100644
--- a/third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversalTest.cpp
+++ b/third_party/WebKit/Source/core/dom/shadow/FlatTreeTraversalTest.cpp
@@ -594,4 +594,104 @@ TEST_F(FlatTreeTraversalTest, v1SlotInDocumentTree) {
EXPECT_EQ(parent, FlatTreeTraversal::parent(*slot));
}
+TEST_F(FlatTreeTraversalTest, v1FallbackContent) {
+ const char* mainHTML = "<div id='d1'></div>";
+ const char* shadowHTML =
+ "<div id='before'></div>"
+ "<slot><p>fallback content</p></slot>"
+ "<div id='after'></div>";
+
+ setupDocumentTree(mainHTML);
+
+ Element* body = document().body();
+ Element* d1 = body->querySelector("#d1");
+
+ attachOpenShadowRoot(*d1, shadowHTML);
+ ShadowRoot* shadowRoot = d1->openShadowRoot();
+ Element* before = shadowRoot->querySelector("#before");
+ Element* after = shadowRoot->querySelector("#after");
+ Element* fallbackContent = shadowRoot->querySelector("p");
+
+ EXPECT_EQ(before, FlatTreeTraversal::firstChild(*d1));
+ EXPECT_EQ(after, FlatTreeTraversal::lastChild(*d1));
+ EXPECT_EQ(d1, FlatTreeTraversal::parent(*fallbackContent));
+
+ EXPECT_EQ(fallbackContent, FlatTreeTraversal::nextSibling(*before));
+ EXPECT_EQ(after, FlatTreeTraversal::nextSibling(*fallbackContent));
+ EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*after));
+
+ EXPECT_EQ(fallbackContent, FlatTreeTraversal::previousSibling(*after));
+ EXPECT_EQ(before, FlatTreeTraversal::previousSibling(*fallbackContent));
+ EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*before));
+}
+
+TEST_F(FlatTreeTraversalTest, v1FallbackContentSkippedInTraversal) {
+ const char* mainHTML = "<div id='d1'><span></span></div>";
+ const char* shadowHTML =
+ "<div id='before'></div>"
+ "<slot><p>fallback content</p></slot>"
+ "<div id='after'></div>";
+
+ setupDocumentTree(mainHTML);
+
+ Element* body = document().body();
+ Element* d1 = body->querySelector("#d1");
+ Element* span = body->querySelector("span");
+
+ attachOpenShadowRoot(*d1, shadowHTML);
+ ShadowRoot* shadowRoot = d1->openShadowRoot();
+ Element* before = shadowRoot->querySelector("#before");
+ Element* after = shadowRoot->querySelector("#after");
+ Element* fallbackContent = shadowRoot->querySelector("p");
+
+ EXPECT_EQ(before, FlatTreeTraversal::firstChild(*d1));
+ EXPECT_EQ(after, FlatTreeTraversal::lastChild(*d1));
+ EXPECT_EQ(d1, FlatTreeTraversal::parent(*span));
+
+ EXPECT_EQ(span, FlatTreeTraversal::nextSibling(*before));
+ EXPECT_EQ(after, FlatTreeTraversal::nextSibling(*span));
+ EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*after));
+
+ EXPECT_EQ(span, FlatTreeTraversal::previousSibling(*after));
+ EXPECT_EQ(before, FlatTreeTraversal::previousSibling(*span));
+ EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*before));
+
+ EXPECT_EQ(nullptr, FlatTreeTraversal::parent(*fallbackContent));
+ EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*fallbackContent));
+ EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*fallbackContent));
+}
+
+TEST_F(FlatTreeTraversalTest, v1AllFallbackContent) {
+ const char* mainHTML = "<div id='d1'></div>";
+ const char* shadowHTML =
+ "<slot name='a'><p id='x'>fallback content X</p></slot>"
+ "<slot name='b'><p id='y'>fallback content Y</p></slot>"
+ "<slot name='c'><p id='z'>fallback content Z</p></slot>";
+
+ setupDocumentTree(mainHTML);
+
+ Element* body = document().body();
+ Element* d1 = body->querySelector("#d1");
+
+ attachOpenShadowRoot(*d1, shadowHTML);
+ ShadowRoot* shadowRoot = d1->openShadowRoot();
+ Element* fallbackX = shadowRoot->querySelector("#x");
+ Element* fallbackY = shadowRoot->querySelector("#y");
+ Element* fallbackZ = shadowRoot->querySelector("#z");
+
+ EXPECT_EQ(fallbackX, FlatTreeTraversal::firstChild(*d1));
+ EXPECT_EQ(fallbackZ, FlatTreeTraversal::lastChild(*d1));
+ EXPECT_EQ(d1, FlatTreeTraversal::parent(*fallbackX));
+ EXPECT_EQ(d1, FlatTreeTraversal::parent(*fallbackY));
+ EXPECT_EQ(d1, FlatTreeTraversal::parent(*fallbackZ));
+
+ EXPECT_EQ(fallbackY, FlatTreeTraversal::nextSibling(*fallbackX));
+ EXPECT_EQ(fallbackZ, FlatTreeTraversal::nextSibling(*fallbackY));
+ EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*fallbackZ));
+
+ EXPECT_EQ(fallbackY, FlatTreeTraversal::previousSibling(*fallbackZ));
+ EXPECT_EQ(fallbackX, FlatTreeTraversal::previousSibling(*fallbackY));
+ EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*fallbackX));
+}
+
} // namespace blink
« 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