| 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/dom/shadow/ComposedTreeTraversal.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" |
| 11 #include "core/dom/NodeTraversal.h" | 11 #include "core/dom/NodeTraversal.h" |
| 12 #include "core/dom/shadow/ShadowRoot.h" | 12 #include "core/dom/shadow/ShadowRoot.h" |
| 13 #include "core/frame/FrameView.h" | 13 #include "core/frame/FrameView.h" |
| 14 #include "core/html/HTMLDocument.h" | 14 #include "core/html/HTMLDocument.h" |
| 15 #include "core/html/HTMLElement.h" | 15 #include "core/html/HTMLElement.h" |
| 16 #include "core/testing/DummyPageHolder.h" | 16 #include "core/testing/DummyPageHolder.h" |
| 17 #include "platform/geometry/IntSize.h" | 17 #include "platform/geometry/IntSize.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
| 19 #include "wtf/Compiler.h" | 19 #include "wtf/Compiler.h" |
| 20 #include "wtf/OwnPtr.h" | 20 #include "wtf/OwnPtr.h" |
| 21 #include "wtf/PassRefPtr.h" | 21 #include "wtf/PassRefPtr.h" |
| 22 #include "wtf/RefPtr.h" | 22 #include "wtf/RefPtr.h" |
| 23 #include "wtf/StdLibExtras.h" | 23 #include "wtf/StdLibExtras.h" |
| 24 #include "wtf/Vector.h" | 24 #include "wtf/Vector.h" |
| 25 | 25 |
| 26 namespace blink { | 26 namespace blink { |
| 27 | 27 |
| 28 class ComposedTreeTraversalTest : public ::testing::Test { | 28 class FlatTreeTraversalTest : public ::testing::Test { |
| 29 protected: | 29 protected: |
| 30 HTMLDocument& document() const; | 30 HTMLDocument& document() const; |
| 31 | 31 |
| 32 // Sets |mainHTML| to BODY element with |innerHTML| property and attaches | 32 // Sets |mainHTML| to BODY element with |innerHTML| property and attaches |
| 33 // shadow root to child with |shadowHTML|, then update distribution for | 33 // shadow root to child with |shadowHTML|, then update distribution for |
| 34 // calling member functions in |ComposedTreeTraversal|. | 34 // calling member functions in |FlatTreeTraversal|. |
| 35 void setupSampleHTML(const char* mainHTML, const char* shadowHTML, unsigned)
; | 35 void setupSampleHTML(const char* mainHTML, const char* shadowHTML, unsigned)
; |
| 36 | 36 |
| 37 void setupDocumentTree(const char* mainHTML); | 37 void setupDocumentTree(const char* mainHTML); |
| 38 | 38 |
| 39 void attachV0ShadowRoot(Element& shadowHost, const char* shadowInnerHTML); | 39 void attachV0ShadowRoot(Element& shadowHost, const char* shadowInnerHTML); |
| 40 void attachOpenShadowRoot(Element& shadowHost, const char* shadowInnerHTML); | 40 void attachOpenShadowRoot(Element& shadowHost, const char* shadowInnerHTML); |
| 41 | 41 |
| 42 private: | 42 private: |
| 43 void SetUp() override; | 43 void SetUp() override; |
| 44 | 44 |
| 45 RefPtrWillBePersistent<HTMLDocument> m_document; | 45 RefPtrWillBePersistent<HTMLDocument> m_document; |
| 46 OwnPtr<DummyPageHolder> m_dummyPageHolder; | 46 OwnPtr<DummyPageHolder> m_dummyPageHolder; |
| 47 }; | 47 }; |
| 48 | 48 |
| 49 void ComposedTreeTraversalTest::SetUp() | 49 void FlatTreeTraversalTest::SetUp() |
| 50 { | 50 { |
| 51 m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600)); | 51 m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600)); |
| 52 m_document = toHTMLDocument(&m_dummyPageHolder->document()); | 52 m_document = toHTMLDocument(&m_dummyPageHolder->document()); |
| 53 ASSERT(m_document); | 53 ASSERT(m_document); |
| 54 } | 54 } |
| 55 | 55 |
| 56 HTMLDocument& ComposedTreeTraversalTest::document() const | 56 HTMLDocument& FlatTreeTraversalTest::document() const |
| 57 { | 57 { |
| 58 return *m_document; | 58 return *m_document; |
| 59 } | 59 } |
| 60 | 60 |
| 61 void ComposedTreeTraversalTest::setupSampleHTML(const char* mainHTML, const char
* shadowHTML, unsigned index) | 61 void FlatTreeTraversalTest::setupSampleHTML(const char* mainHTML, const char* sh
adowHTML, unsigned index) |
| 62 { | 62 { |
| 63 RefPtrWillBeRawPtr<Element> body = document().body(); | 63 RefPtrWillBeRawPtr<Element> body = document().body(); |
| 64 body->setInnerHTML(String::fromUTF8(mainHTML), ASSERT_NO_EXCEPTION); | 64 body->setInnerHTML(String::fromUTF8(mainHTML), ASSERT_NO_EXCEPTION); |
| 65 RefPtrWillBeRawPtr<Element> shadowHost = toElement(NodeTraversal::childAt(*b
ody, index)); | 65 RefPtrWillBeRawPtr<Element> shadowHost = toElement(NodeTraversal::childAt(*b
ody, index)); |
| 66 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = shadowHost->createShadowRootInte
rnal(ShadowRootType::V0, ASSERT_NO_EXCEPTION); | 66 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = shadowHost->createShadowRootInte
rnal(ShadowRootType::V0, ASSERT_NO_EXCEPTION); |
| 67 shadowRoot->setInnerHTML(String::fromUTF8(shadowHTML), ASSERT_NO_EXCEPTION); | 67 shadowRoot->setInnerHTML(String::fromUTF8(shadowHTML), ASSERT_NO_EXCEPTION); |
| 68 body->updateDistribution(); | 68 body->updateDistribution(); |
| 69 } | 69 } |
| 70 | 70 |
| 71 void ComposedTreeTraversalTest::setupDocumentTree(const char* mainHTML) | 71 void FlatTreeTraversalTest::setupDocumentTree(const char* mainHTML) |
| 72 { | 72 { |
| 73 RefPtrWillBeRawPtr<Element> body = document().body(); | 73 RefPtrWillBeRawPtr<Element> body = document().body(); |
| 74 body->setInnerHTML(String::fromUTF8(mainHTML), ASSERT_NO_EXCEPTION); | 74 body->setInnerHTML(String::fromUTF8(mainHTML), ASSERT_NO_EXCEPTION); |
| 75 } | 75 } |
| 76 | 76 |
| 77 void ComposedTreeTraversalTest::attachV0ShadowRoot(Element& shadowHost, const ch
ar* shadowInnerHTML) | 77 void FlatTreeTraversalTest::attachV0ShadowRoot(Element& shadowHost, const char*
shadowInnerHTML) |
| 78 { | 78 { |
| 79 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = shadowHost.createShadowRootInter
nal(ShadowRootType::V0, ASSERT_NO_EXCEPTION); | 79 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = shadowHost.createShadowRootInter
nal(ShadowRootType::V0, ASSERT_NO_EXCEPTION); |
| 80 shadowRoot->setInnerHTML(String::fromUTF8(shadowInnerHTML), ASSERT_NO_EXCEPT
ION); | 80 shadowRoot->setInnerHTML(String::fromUTF8(shadowInnerHTML), ASSERT_NO_EXCEPT
ION); |
| 81 document().body()->updateDistribution(); | 81 document().body()->updateDistribution(); |
| 82 } | 82 } |
| 83 | 83 |
| 84 void ComposedTreeTraversalTest::attachOpenShadowRoot(Element& shadowHost, const
char* shadowInnerHTML) | 84 void FlatTreeTraversalTest::attachOpenShadowRoot(Element& shadowHost, const char
* shadowInnerHTML) |
| 85 { | 85 { |
| 86 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = shadowHost.createShadowRootInter
nal(ShadowRootType::Open, ASSERT_NO_EXCEPTION); | 86 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = shadowHost.createShadowRootInter
nal(ShadowRootType::Open, ASSERT_NO_EXCEPTION); |
| 87 shadowRoot->setInnerHTML(String::fromUTF8(shadowInnerHTML), ASSERT_NO_EXCEPT
ION); | 87 shadowRoot->setInnerHTML(String::fromUTF8(shadowInnerHTML), ASSERT_NO_EXCEPT
ION); |
| 88 document().body()->updateDistribution(); | 88 document().body()->updateDistribution(); |
| 89 } | 89 } |
| 90 | 90 |
| 91 void testCommonAncestor(Node* expectedResult, const Node& nodeA, const Node& nod
eB) | 91 void testCommonAncestor(Node* expectedResult, const Node& nodeA, const Node& nod
eB) |
| 92 { | 92 { |
| 93 Node* result1 = ComposedTreeTraversal::commonAncestor(nodeA, nodeB); | 93 Node* result1 = FlatTreeTraversal::commonAncestor(nodeA, nodeB); |
| 94 EXPECT_EQ(expectedResult, result1) << "commonAncestor(" << nodeA.textContent
() << "," << nodeB.textContent() << ")"; | 94 EXPECT_EQ(expectedResult, result1) << "commonAncestor(" << nodeA.textContent
() << "," << nodeB.textContent() << ")"; |
| 95 Node* result2 = ComposedTreeTraversal::commonAncestor(nodeB, nodeA); | 95 Node* result2 = FlatTreeTraversal::commonAncestor(nodeB, nodeA); |
| 96 EXPECT_EQ(expectedResult, result2) << "commonAncestor(" << nodeB.textContent
() << "," << nodeA.textContent() << ")"; | 96 EXPECT_EQ(expectedResult, result2) << "commonAncestor(" << nodeB.textContent
() << "," << nodeA.textContent() << ")"; |
| 97 } | 97 } |
| 98 | 98 |
| 99 // Test case for | 99 // Test case for |
| 100 // - childAt | 100 // - childAt |
| 101 // - countChildren | 101 // - countChildren |
| 102 // - hasChildren | 102 // - hasChildren |
| 103 // - index | 103 // - index |
| 104 // - isDescendantOf | 104 // - isDescendantOf |
| 105 TEST_F(ComposedTreeTraversalTest, childAt) | 105 TEST_F(FlatTreeTraversalTest, childAt) |
| 106 { | 106 { |
| 107 const char* mainHTML = | 107 const char* mainHTML = |
| 108 "<div id='m0'>" | 108 "<div id='m0'>" |
| 109 "<span id='m00'>m00</span>" | 109 "<span id='m00'>m00</span>" |
| 110 "<span id='m01'>m01</span>" | 110 "<span id='m01'>m01</span>" |
| 111 "</div>"; | 111 "</div>"; |
| 112 const char* shadowHTML = | 112 const char* shadowHTML = |
| 113 "<a id='s00'>s00</a>" | 113 "<a id='s00'>s00</a>" |
| 114 "<content select='#m01'></content>" | 114 "<content select='#m01'></content>" |
| 115 "<a id='s02'>s02</a>" | 115 "<a id='s02'>s02</a>" |
| 116 "<a id='s03'><content select='#m00'></content></a>" | 116 "<a id='s03'><content select='#m00'></content></a>" |
| 117 "<a id='s04'>s04</a>"; | 117 "<a id='s04'>s04</a>"; |
| 118 setupSampleHTML(mainHTML, shadowHTML, 0); | 118 setupSampleHTML(mainHTML, shadowHTML, 0); |
| 119 | 119 |
| 120 RefPtrWillBeRawPtr<Element> body = document().body(); | 120 RefPtrWillBeRawPtr<Element> body = document().body(); |
| 121 RefPtrWillBeRawPtr<Element> m0 = body->querySelector("#m0", ASSERT_NO_EXCEPT
ION); | 121 RefPtrWillBeRawPtr<Element> m0 = body->querySelector("#m0", ASSERT_NO_EXCEPT
ION); |
| 122 RefPtrWillBeRawPtr<Element> m00 = m0->querySelector("#m00", ASSERT_NO_EXCEPT
ION); | 122 RefPtrWillBeRawPtr<Element> m00 = m0->querySelector("#m00", ASSERT_NO_EXCEPT
ION); |
| 123 RefPtrWillBeRawPtr<Element> m01 = m0->querySelector("#m01", ASSERT_NO_EXCEPT
ION); | 123 RefPtrWillBeRawPtr<Element> m01 = m0->querySelector("#m01", ASSERT_NO_EXCEPT
ION); |
| 124 | 124 |
| 125 RefPtrWillBeRawPtr<Element> shadowHost = m0; | 125 RefPtrWillBeRawPtr<Element> shadowHost = m0; |
| 126 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = shadowHost->openShadowRoot(); | 126 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = shadowHost->openShadowRoot(); |
| 127 RefPtrWillBeRawPtr<Element> s00 = shadowRoot->querySelector("#s00", ASSERT_N
O_EXCEPTION); | 127 RefPtrWillBeRawPtr<Element> s00 = shadowRoot->querySelector("#s00", ASSERT_N
O_EXCEPTION); |
| 128 RefPtrWillBeRawPtr<Element> s02 = shadowRoot->querySelector("#s02", ASSERT_N
O_EXCEPTION); | 128 RefPtrWillBeRawPtr<Element> s02 = shadowRoot->querySelector("#s02", ASSERT_N
O_EXCEPTION); |
| 129 RefPtrWillBeRawPtr<Element> s03 = shadowRoot->querySelector("#s03", ASSERT_N
O_EXCEPTION); | 129 RefPtrWillBeRawPtr<Element> s03 = shadowRoot->querySelector("#s03", ASSERT_N
O_EXCEPTION); |
| 130 RefPtrWillBeRawPtr<Element> s04 = shadowRoot->querySelector("#s04", ASSERT_N
O_EXCEPTION); | 130 RefPtrWillBeRawPtr<Element> s04 = shadowRoot->querySelector("#s04", ASSERT_N
O_EXCEPTION); |
| 131 | 131 |
| 132 const unsigned numberOfChildNodes = 5; | 132 const unsigned numberOfChildNodes = 5; |
| 133 Node* expectedChildNodes[5] = { s00.get(), m01.get(), s02.get(), s03.get(),
s04.get() }; | 133 Node* expectedChildNodes[5] = { s00.get(), m01.get(), s02.get(), s03.get(),
s04.get() }; |
| 134 | 134 |
| 135 ASSERT_EQ(numberOfChildNodes, ComposedTreeTraversal::countChildren(*shadowHo
st)); | 135 ASSERT_EQ(numberOfChildNodes, FlatTreeTraversal::countChildren(*shadowHost))
; |
| 136 EXPECT_TRUE(ComposedTreeTraversal::hasChildren(*shadowHost)); | 136 EXPECT_TRUE(FlatTreeTraversal::hasChildren(*shadowHost)); |
| 137 | 137 |
| 138 for (unsigned index = 0; index < numberOfChildNodes; ++index) { | 138 for (unsigned index = 0; index < numberOfChildNodes; ++index) { |
| 139 Node* child = ComposedTreeTraversal::childAt(*shadowHost, index); | 139 Node* child = FlatTreeTraversal::childAt(*shadowHost, index); |
| 140 EXPECT_EQ(expectedChildNodes[index], child) | 140 EXPECT_EQ(expectedChildNodes[index], child) |
| 141 << "ComposedTreeTraversal::childAt(*shadowHost, " << index << ")"; | 141 << "FlatTreeTraversal::childAt(*shadowHost, " << index << ")"; |
| 142 EXPECT_EQ(index, ComposedTreeTraversal::index(*child)) | 142 EXPECT_EQ(index, FlatTreeTraversal::index(*child)) |
| 143 << "ComposedTreeTraversal::index(ComposedTreeTraversal(*shadowHost,
" << index << "))"; | 143 << "FlatTreeTraversal::index(FlatTreeTraversal(*shadowHost, " << ind
ex << "))"; |
| 144 EXPECT_TRUE(ComposedTreeTraversal::isDescendantOf(*child, *shadowHost)) | 144 EXPECT_TRUE(FlatTreeTraversal::isDescendantOf(*child, *shadowHost)) |
| 145 << "ComposedTreeTraversal::isDescendantOf(*ComposedTreeTraversal(*sh
adowHost, " << index << "), *shadowHost)"; | 145 << "FlatTreeTraversal::isDescendantOf(*FlatTreeTraversal(*shadowHost
, " << index << "), *shadowHost)"; |
| 146 } | 146 } |
| 147 EXPECT_EQ(nullptr, ComposedTreeTraversal::childAt(*shadowHost, numberOfChild
Nodes + 1)) | 147 EXPECT_EQ(nullptr, FlatTreeTraversal::childAt(*shadowHost, numberOfChildNode
s + 1)) |
| 148 << "Out of bounds childAt() returns nullptr."; | 148 << "Out of bounds childAt() returns nullptr."; |
| 149 | 149 |
| 150 // Distribute node |m00| is child of node in shadow tree |s03|. | 150 // Distribute node |m00| is child of node in shadow tree |s03|. |
| 151 EXPECT_EQ(m00.get(), ComposedTreeTraversal::childAt(*s03, 0)); | 151 EXPECT_EQ(m00.get(), FlatTreeTraversal::childAt(*s03, 0)); |
| 152 } | 152 } |
| 153 | 153 |
| 154 // Test case for | 154 // Test case for |
| 155 // - commonAncestor | 155 // - commonAncestor |
| 156 // - isDescendantOf | 156 // - isDescendantOf |
| 157 TEST_F(ComposedTreeTraversalTest, commonAncestor) | 157 TEST_F(FlatTreeTraversalTest, commonAncestor) |
| 158 { | 158 { |
| 159 // We build following composed tree: | 159 // We build following flat tree: |
| 160 // ____BODY___ | 160 // ____BODY___ |
| 161 // | | | | 161 // | | | |
| 162 // m0 m1 m2 m1 is shadow host having m10, m11, m12. | 162 // m0 m1 m2 m1 is shadow host having m10, m11, m12. |
| 163 // _|_ | __|__ | 163 // _|_ | __|__ |
| 164 // | | | | | | 164 // | | | | | |
| 165 // m00 m01 | m20 m21 | 165 // m00 m01 | m20 m21 |
| 166 // _____|_____________ | 166 // _____|_____________ |
| 167 // | | | | | | 167 // | | | | | |
| 168 // s10 s11 s12 s13 s14 | 168 // s10 s11 s12 s13 s14 |
| 169 // | | 169 // | |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 | 238 |
| 239 m20->remove(ASSERT_NO_EXCEPTION); | 239 m20->remove(ASSERT_NO_EXCEPTION); |
| 240 testCommonAncestor(m20.get(), *m20, *m20); | 240 testCommonAncestor(m20.get(), *m20, *m20); |
| 241 testCommonAncestor(nullptr, *m20, *s12); | 241 testCommonAncestor(nullptr, *m20, *s12); |
| 242 testCommonAncestor(nullptr, *m20, *m1); | 242 testCommonAncestor(nullptr, *m20, *m1); |
| 243 } | 243 } |
| 244 | 244 |
| 245 // Test case for | 245 // Test case for |
| 246 // - nextSkippingChildren | 246 // - nextSkippingChildren |
| 247 // - previousSkippingChildren | 247 // - previousSkippingChildren |
| 248 TEST_F(ComposedTreeTraversalTest, nextSkippingChildren) | 248 TEST_F(FlatTreeTraversalTest, nextSkippingChildren) |
| 249 { | 249 { |
| 250 const char* mainHTML = | 250 const char* mainHTML = |
| 251 "<div id='m0'>m0</div>" | 251 "<div id='m0'>m0</div>" |
| 252 "<div id='m1'>" | 252 "<div id='m1'>" |
| 253 "<span id='m10'>m10</span>" | 253 "<span id='m10'>m10</span>" |
| 254 "<span id='m11'>m11</span>" | 254 "<span id='m11'>m11</span>" |
| 255 "</div>" | 255 "</div>" |
| 256 "<div id='m2'>m2</div>"; | 256 "<div id='m2'>m2</div>"; |
| 257 const char* shadowHTML = | 257 const char* shadowHTML = |
| 258 "<content select='#m11'></content>" | 258 "<content select='#m11'></content>" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 270 | 270 |
| 271 RefPtrWillBeRawPtr<Element> m10 = body->querySelector("#m10", ASSERT_NO_EXCE
PTION); | 271 RefPtrWillBeRawPtr<Element> m10 = body->querySelector("#m10", ASSERT_NO_EXCE
PTION); |
| 272 RefPtrWillBeRawPtr<Element> m11 = body->querySelector("#m11", ASSERT_NO_EXCE
PTION); | 272 RefPtrWillBeRawPtr<Element> m11 = body->querySelector("#m11", ASSERT_NO_EXCE
PTION); |
| 273 | 273 |
| 274 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = m1->openShadowRoot(); | 274 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = m1->openShadowRoot(); |
| 275 RefPtrWillBeRawPtr<Element> s11 = shadowRoot->querySelector("#s11", ASSERT_N
O_EXCEPTION); | 275 RefPtrWillBeRawPtr<Element> s11 = shadowRoot->querySelector("#s11", ASSERT_N
O_EXCEPTION); |
| 276 RefPtrWillBeRawPtr<Element> s12 = shadowRoot->querySelector("#s12", ASSERT_N
O_EXCEPTION); | 276 RefPtrWillBeRawPtr<Element> s12 = shadowRoot->querySelector("#s12", ASSERT_N
O_EXCEPTION); |
| 277 RefPtrWillBeRawPtr<Element> s120 = shadowRoot->querySelector("#s120", ASSERT
_NO_EXCEPTION); | 277 RefPtrWillBeRawPtr<Element> s120 = shadowRoot->querySelector("#s120", ASSERT
_NO_EXCEPTION); |
| 278 | 278 |
| 279 // Main tree node to main tree node | 279 // Main tree node to main tree node |
| 280 EXPECT_EQ(*m1, ComposedTreeTraversal::nextSkippingChildren(*m0)); | 280 EXPECT_EQ(*m1, FlatTreeTraversal::nextSkippingChildren(*m0)); |
| 281 EXPECT_EQ(*m0, ComposedTreeTraversal::previousSkippingChildren(*m1)); | 281 EXPECT_EQ(*m0, FlatTreeTraversal::previousSkippingChildren(*m1)); |
| 282 | 282 |
| 283 // Distribute node to main tree node | 283 // Distribute node to main tree node |
| 284 EXPECT_EQ(*m2, ComposedTreeTraversal::nextSkippingChildren(*m10)); | 284 EXPECT_EQ(*m2, FlatTreeTraversal::nextSkippingChildren(*m10)); |
| 285 EXPECT_EQ(*m1, ComposedTreeTraversal::previousSkippingChildren(*m2)); | 285 EXPECT_EQ(*m1, FlatTreeTraversal::previousSkippingChildren(*m2)); |
| 286 | 286 |
| 287 // Distribute node to node in shadow tree | 287 // Distribute node to node in shadow tree |
| 288 EXPECT_EQ(*s11, ComposedTreeTraversal::nextSkippingChildren(*m11)); | 288 EXPECT_EQ(*s11, FlatTreeTraversal::nextSkippingChildren(*m11)); |
| 289 EXPECT_EQ(*m11, ComposedTreeTraversal::previousSkippingChildren(*s11)); | 289 EXPECT_EQ(*m11, FlatTreeTraversal::previousSkippingChildren(*s11)); |
| 290 | 290 |
| 291 // Node in shadow tree to distributed node | 291 // Node in shadow tree to distributed node |
| 292 EXPECT_EQ(*s11, ComposedTreeTraversal::nextSkippingChildren(*m11)); | 292 EXPECT_EQ(*s11, FlatTreeTraversal::nextSkippingChildren(*m11)); |
| 293 EXPECT_EQ(*m11, ComposedTreeTraversal::previousSkippingChildren(*s11)); | 293 EXPECT_EQ(*m11, FlatTreeTraversal::previousSkippingChildren(*s11)); |
| 294 | 294 |
| 295 EXPECT_EQ(*m10, ComposedTreeTraversal::nextSkippingChildren(*s120)); | 295 EXPECT_EQ(*m10, FlatTreeTraversal::nextSkippingChildren(*s120)); |
| 296 EXPECT_EQ(*s120, ComposedTreeTraversal::previousSkippingChildren(*m10)); | 296 EXPECT_EQ(*s120, FlatTreeTraversal::previousSkippingChildren(*m10)); |
| 297 | 297 |
| 298 // Node in shadow tree to main tree | 298 // Node in shadow tree to main tree |
| 299 EXPECT_EQ(*m2, ComposedTreeTraversal::nextSkippingChildren(*s12)); | 299 EXPECT_EQ(*m2, FlatTreeTraversal::nextSkippingChildren(*s12)); |
| 300 EXPECT_EQ(*m1, ComposedTreeTraversal::previousSkippingChildren(*m2)); | 300 EXPECT_EQ(*m1, FlatTreeTraversal::previousSkippingChildren(*m2)); |
| 301 } | 301 } |
| 302 | 302 |
| 303 // Test case for | 303 // Test case for |
| 304 // - lastWithin | 304 // - lastWithin |
| 305 // - lastWithinOrSelf | 305 // - lastWithinOrSelf |
| 306 TEST_F(ComposedTreeTraversalTest, lastWithin) | 306 TEST_F(FlatTreeTraversalTest, lastWithin) |
| 307 { | 307 { |
| 308 const char* mainHTML = | 308 const char* mainHTML = |
| 309 "<div id='m0'>m0</div>" | 309 "<div id='m0'>m0</div>" |
| 310 "<div id='m1'>" | 310 "<div id='m1'>" |
| 311 "<span id='m10'>m10</span>" | 311 "<span id='m10'>m10</span>" |
| 312 "<span id='m11'>m11</span>" | 312 "<span id='m11'>m11</span>" |
| 313 "<span id='m12'>m12</span>" // #m12 is not distributed. | 313 "<span id='m12'>m12</span>" // #m12 is not distributed. |
| 314 "</div>" | 314 "</div>" |
| 315 "<div id='m2'></div>"; | 315 "<div id='m2'></div>"; |
| 316 const char* shadowHTML = | 316 const char* shadowHTML = |
| 317 "<content select='#m11'></content>" | 317 "<content select='#m11'></content>" |
| 318 "<a id='s11'>s11</a>" | 318 "<a id='s11'>s11</a>" |
| 319 "<a id='s12'>" | 319 "<a id='s12'>" |
| 320 "<content select='#m10'></content>" | 320 "<content select='#m10'></content>" |
| 321 "</a>"; | 321 "</a>"; |
| 322 setupSampleHTML(mainHTML, shadowHTML, 1); | 322 setupSampleHTML(mainHTML, shadowHTML, 1); |
| 323 | 323 |
| 324 RefPtrWillBeRawPtr<Element> body = document().body(); | 324 RefPtrWillBeRawPtr<Element> body = document().body(); |
| 325 RefPtrWillBeRawPtr<Element> m0 = body->querySelector("#m0", ASSERT_NO_EXCEPT
ION); | 325 RefPtrWillBeRawPtr<Element> m0 = body->querySelector("#m0", ASSERT_NO_EXCEPT
ION); |
| 326 RefPtrWillBeRawPtr<Element> m1 = body->querySelector("#m1", ASSERT_NO_EXCEPT
ION); | 326 RefPtrWillBeRawPtr<Element> m1 = body->querySelector("#m1", ASSERT_NO_EXCEPT
ION); |
| 327 RefPtrWillBeRawPtr<Element> m2 = body->querySelector("#m2", ASSERT_NO_EXCEPT
ION); | 327 RefPtrWillBeRawPtr<Element> m2 = body->querySelector("#m2", ASSERT_NO_EXCEPT
ION); |
| 328 | 328 |
| 329 RefPtrWillBeRawPtr<Element> m10 = body->querySelector("#m10", ASSERT_NO_EXCE
PTION); | 329 RefPtrWillBeRawPtr<Element> m10 = body->querySelector("#m10", ASSERT_NO_EXCE
PTION); |
| 330 | 330 |
| 331 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = m1->openShadowRoot(); | 331 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = m1->openShadowRoot(); |
| 332 RefPtrWillBeRawPtr<Element> s11 = shadowRoot->querySelector("#s11", ASSERT_N
O_EXCEPTION); | 332 RefPtrWillBeRawPtr<Element> s11 = shadowRoot->querySelector("#s11", ASSERT_N
O_EXCEPTION); |
| 333 RefPtrWillBeRawPtr<Element> s12 = shadowRoot->querySelector("#s12", ASSERT_N
O_EXCEPTION); | 333 RefPtrWillBeRawPtr<Element> s12 = shadowRoot->querySelector("#s12", ASSERT_N
O_EXCEPTION); |
| 334 | 334 |
| 335 EXPECT_EQ(m0->firstChild(), ComposedTreeTraversal::lastWithin(*m0)); | 335 EXPECT_EQ(m0->firstChild(), FlatTreeTraversal::lastWithin(*m0)); |
| 336 EXPECT_EQ(*m0->firstChild(), ComposedTreeTraversal::lastWithinOrSelf(*m0)); | 336 EXPECT_EQ(*m0->firstChild(), FlatTreeTraversal::lastWithinOrSelf(*m0)); |
| 337 | 337 |
| 338 EXPECT_EQ(m10->firstChild(), ComposedTreeTraversal::lastWithin(*m1)); | 338 EXPECT_EQ(m10->firstChild(), FlatTreeTraversal::lastWithin(*m1)); |
| 339 EXPECT_EQ(*m10->firstChild(), ComposedTreeTraversal::lastWithinOrSelf(*m1)); | 339 EXPECT_EQ(*m10->firstChild(), FlatTreeTraversal::lastWithinOrSelf(*m1)); |
| 340 | 340 |
| 341 EXPECT_EQ(nullptr, ComposedTreeTraversal::lastWithin(*m2)); | 341 EXPECT_EQ(nullptr, FlatTreeTraversal::lastWithin(*m2)); |
| 342 EXPECT_EQ(*m2, ComposedTreeTraversal::lastWithinOrSelf(*m2)); | 342 EXPECT_EQ(*m2, FlatTreeTraversal::lastWithinOrSelf(*m2)); |
| 343 | 343 |
| 344 EXPECT_EQ(s11->firstChild(), ComposedTreeTraversal::lastWithin(*s11)); | 344 EXPECT_EQ(s11->firstChild(), FlatTreeTraversal::lastWithin(*s11)); |
| 345 EXPECT_EQ(*s11->firstChild(), ComposedTreeTraversal::lastWithinOrSelf(*s11))
; | 345 EXPECT_EQ(*s11->firstChild(), FlatTreeTraversal::lastWithinOrSelf(*s11)); |
| 346 | 346 |
| 347 EXPECT_EQ(m10->firstChild(), ComposedTreeTraversal::lastWithin(*s12)); | 347 EXPECT_EQ(m10->firstChild(), FlatTreeTraversal::lastWithin(*s12)); |
| 348 EXPECT_EQ(*m10->firstChild(), ComposedTreeTraversal::lastWithinOrSelf(*s12))
; | 348 EXPECT_EQ(*m10->firstChild(), FlatTreeTraversal::lastWithinOrSelf(*s12)); |
| 349 } | 349 } |
| 350 | 350 |
| 351 TEST_F(ComposedTreeTraversalTest, previousPostOrder) | 351 TEST_F(FlatTreeTraversalTest, previousPostOrder) |
| 352 { | 352 { |
| 353 const char* mainHTML = | 353 const char* mainHTML = |
| 354 "<div id='m0'>m0</div>" | 354 "<div id='m0'>m0</div>" |
| 355 "<div id='m1'>" | 355 "<div id='m1'>" |
| 356 "<span id='m10'>m10</span>" | 356 "<span id='m10'>m10</span>" |
| 357 "<span id='m11'>m11</span>" | 357 "<span id='m11'>m11</span>" |
| 358 "</div>" | 358 "</div>" |
| 359 "<div id='m2'>m2</div>"; | 359 "<div id='m2'>m2</div>"; |
| 360 const char* shadowHTML = | 360 const char* shadowHTML = |
| 361 "<content select='#m11'></content>" | 361 "<content select='#m11'></content>" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 372 RefPtrWillBeRawPtr<Element> m2 = body->querySelector("#m2", ASSERT_NO_EXCEPT
ION); | 372 RefPtrWillBeRawPtr<Element> m2 = body->querySelector("#m2", ASSERT_NO_EXCEPT
ION); |
| 373 | 373 |
| 374 RefPtrWillBeRawPtr<Element> m10 = body->querySelector("#m10", ASSERT_NO_EXCE
PTION); | 374 RefPtrWillBeRawPtr<Element> m10 = body->querySelector("#m10", ASSERT_NO_EXCE
PTION); |
| 375 RefPtrWillBeRawPtr<Element> m11 = body->querySelector("#m11", ASSERT_NO_EXCE
PTION); | 375 RefPtrWillBeRawPtr<Element> m11 = body->querySelector("#m11", ASSERT_NO_EXCE
PTION); |
| 376 | 376 |
| 377 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = m1->openShadowRoot(); | 377 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = m1->openShadowRoot(); |
| 378 RefPtrWillBeRawPtr<Element> s11 = shadowRoot->querySelector("#s11", ASSERT_N
O_EXCEPTION); | 378 RefPtrWillBeRawPtr<Element> s11 = shadowRoot->querySelector("#s11", ASSERT_N
O_EXCEPTION); |
| 379 RefPtrWillBeRawPtr<Element> s12 = shadowRoot->querySelector("#s12", ASSERT_N
O_EXCEPTION); | 379 RefPtrWillBeRawPtr<Element> s12 = shadowRoot->querySelector("#s12", ASSERT_N
O_EXCEPTION); |
| 380 RefPtrWillBeRawPtr<Element> s120 = shadowRoot->querySelector("#s120", ASSERT
_NO_EXCEPTION); | 380 RefPtrWillBeRawPtr<Element> s120 = shadowRoot->querySelector("#s120", ASSERT
_NO_EXCEPTION); |
| 381 | 381 |
| 382 EXPECT_EQ(*m0->firstChild(), ComposedTreeTraversal::previousPostOrder(*m0)); | 382 EXPECT_EQ(*m0->firstChild(), FlatTreeTraversal::previousPostOrder(*m0)); |
| 383 EXPECT_EQ(*s12, ComposedTreeTraversal::previousPostOrder(*m1)); | 383 EXPECT_EQ(*s12, FlatTreeTraversal::previousPostOrder(*m1)); |
| 384 EXPECT_EQ(*m10->firstChild(), ComposedTreeTraversal::previousPostOrder(*m10)
); | 384 EXPECT_EQ(*m10->firstChild(), FlatTreeTraversal::previousPostOrder(*m10)); |
| 385 EXPECT_EQ(*s120, ComposedTreeTraversal::previousPostOrder(*m10->firstChild()
)); | 385 EXPECT_EQ(*s120, FlatTreeTraversal::previousPostOrder(*m10->firstChild())); |
| 386 EXPECT_EQ(*s120, ComposedTreeTraversal::previousPostOrder(*m10->firstChild()
, s12.get())); | 386 EXPECT_EQ(*s120, FlatTreeTraversal::previousPostOrder(*m10->firstChild(), s1
2.get())); |
| 387 EXPECT_EQ(*m11->firstChild(), ComposedTreeTraversal::previousPostOrder(*m11)
); | 387 EXPECT_EQ(*m11->firstChild(), FlatTreeTraversal::previousPostOrder(*m11)); |
| 388 EXPECT_EQ(*m0, ComposedTreeTraversal::previousPostOrder(*m11->firstChild()))
; | 388 EXPECT_EQ(*m0, FlatTreeTraversal::previousPostOrder(*m11->firstChild())); |
| 389 EXPECT_EQ(nullptr, ComposedTreeTraversal::previousPostOrder(*m11->firstChild
(), m11.get())); | 389 EXPECT_EQ(nullptr, FlatTreeTraversal::previousPostOrder(*m11->firstChild(),
m11.get())); |
| 390 EXPECT_EQ(*m2->firstChild(), ComposedTreeTraversal::previousPostOrder(*m2)); | 390 EXPECT_EQ(*m2->firstChild(), FlatTreeTraversal::previousPostOrder(*m2)); |
| 391 | 391 |
| 392 EXPECT_EQ(*s11->firstChild(), ComposedTreeTraversal::previousPostOrder(*s11)
); | 392 EXPECT_EQ(*s11->firstChild(), FlatTreeTraversal::previousPostOrder(*s11)); |
| 393 EXPECT_EQ(*m10, ComposedTreeTraversal::previousPostOrder(*s12)); | 393 EXPECT_EQ(*m10, FlatTreeTraversal::previousPostOrder(*s12)); |
| 394 EXPECT_EQ(*s120->firstChild(), ComposedTreeTraversal::previousPostOrder(*s12
0)); | 394 EXPECT_EQ(*s120->firstChild(), FlatTreeTraversal::previousPostOrder(*s120)); |
| 395 EXPECT_EQ(*s11, ComposedTreeTraversal::previousPostOrder(*s120->firstChild()
)); | 395 EXPECT_EQ(*s11, FlatTreeTraversal::previousPostOrder(*s120->firstChild())); |
| 396 EXPECT_EQ(nullptr, ComposedTreeTraversal::previousPostOrder(*s120->firstChil
d(), s12.get())); | 396 EXPECT_EQ(nullptr, FlatTreeTraversal::previousPostOrder(*s120->firstChild(),
s12.get())); |
| 397 } | 397 } |
| 398 | 398 |
| 399 TEST_F(ComposedTreeTraversalTest, nextSiblingNotInDocumentComposedTree) | 399 TEST_F(FlatTreeTraversalTest, nextSiblingNotInDocumentFlatTree) |
| 400 { | 400 { |
| 401 const char* mainHTML = | 401 const char* mainHTML = |
| 402 "<div id='m0'>m0</div>" | 402 "<div id='m0'>m0</div>" |
| 403 "<div id='m1'>" | 403 "<div id='m1'>" |
| 404 "<span id='m10'>m10</span>" | 404 "<span id='m10'>m10</span>" |
| 405 "<span id='m11'>m11</span>" | 405 "<span id='m11'>m11</span>" |
| 406 "</div>" | 406 "</div>" |
| 407 "<div id='m2'>m2</div>"; | 407 "<div id='m2'>m2</div>"; |
| 408 const char* shadowHTML = | 408 const char* shadowHTML = |
| 409 "<content select='#m11'></content>"; | 409 "<content select='#m11'></content>"; |
| 410 setupSampleHTML(mainHTML, shadowHTML, 1); | 410 setupSampleHTML(mainHTML, shadowHTML, 1); |
| 411 | 411 |
| 412 RefPtrWillBeRawPtr<Element> body = document().body(); | 412 RefPtrWillBeRawPtr<Element> body = document().body(); |
| 413 RefPtrWillBeRawPtr<Element> m10 = body->querySelector("#m10", ASSERT_NO_EXCE
PTION); | 413 RefPtrWillBeRawPtr<Element> m10 = body->querySelector("#m10", ASSERT_NO_EXCE
PTION); |
| 414 | 414 |
| 415 EXPECT_EQ(nullptr, ComposedTreeTraversal::nextSibling(*m10)); | 415 EXPECT_EQ(nullptr, FlatTreeTraversal::nextSibling(*m10)); |
| 416 EXPECT_EQ(nullptr, ComposedTreeTraversal::previousSibling(*m10)); | 416 EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*m10)); |
| 417 } | 417 } |
| 418 | 418 |
| 419 TEST_F(ComposedTreeTraversalTest, redistribution) | 419 TEST_F(FlatTreeTraversalTest, redistribution) |
| 420 { | 420 { |
| 421 const char* mainHTML = | 421 const char* mainHTML = |
| 422 "<div id='m0'>m0</div>" | 422 "<div id='m0'>m0</div>" |
| 423 "<div id='m1'>" | 423 "<div id='m1'>" |
| 424 "<span id='m10'>m10</span>" | 424 "<span id='m10'>m10</span>" |
| 425 "<span id='m11'>m11</span>" | 425 "<span id='m11'>m11</span>" |
| 426 "</div>" | 426 "</div>" |
| 427 "<div id='m2'>m2</div>"; | 427 "<div id='m2'>m2</div>"; |
| 428 const char* shadowHTML1 = | 428 const char* shadowHTML1 = |
| 429 "<div id='s1'>" | 429 "<div id='s1'>" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 443 RefPtrWillBeRawPtr<Element> m10 = body->querySelector("#m10", ASSERT_NO_EXCE
PTION); | 443 RefPtrWillBeRawPtr<Element> m10 = body->querySelector("#m10", ASSERT_NO_EXCE
PTION); |
| 444 | 444 |
| 445 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot1 = m1->openShadowRoot(); | 445 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot1 = m1->openShadowRoot(); |
| 446 RefPtrWillBeRawPtr<Element> s1 = shadowRoot1->querySelector("#s1", ASSERT_NO
_EXCEPTION); | 446 RefPtrWillBeRawPtr<Element> s1 = shadowRoot1->querySelector("#s1", ASSERT_NO
_EXCEPTION); |
| 447 | 447 |
| 448 attachV0ShadowRoot(*s1, shadowHTML2); | 448 attachV0ShadowRoot(*s1, shadowHTML2); |
| 449 | 449 |
| 450 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot2 = s1->openShadowRoot(); | 450 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot2 = s1->openShadowRoot(); |
| 451 RefPtrWillBeRawPtr<Element> s21 = shadowRoot2->querySelector("#s21", ASSERT_
NO_EXCEPTION); | 451 RefPtrWillBeRawPtr<Element> s21 = shadowRoot2->querySelector("#s21", ASSERT_
NO_EXCEPTION); |
| 452 | 452 |
| 453 EXPECT_EQ(s21.get(), ComposedTreeTraversal::nextSibling(*m10)); | 453 EXPECT_EQ(s21.get(), FlatTreeTraversal::nextSibling(*m10)); |
| 454 EXPECT_EQ(m10.get(), ComposedTreeTraversal::previousSibling(*s21)); | 454 EXPECT_EQ(m10.get(), FlatTreeTraversal::previousSibling(*s21)); |
| 455 | 455 |
| 456 // ComposedTreeTraversal::traverseSiblings does not work for a node which is
not in a document composed tree. | 456 // FlatTreeTraversal::traverseSiblings does not work for a node which is not
in a document flat tree. |
| 457 // e.g. The following test fails. The result of ComposedTreeTraversal::previ
ousSibling(*m11)) will be #m10, instead of nullptr. | 457 // e.g. The following test fails. The result of FlatTreeTraversal::previousS
ibling(*m11)) will be #m10, instead of nullptr. |
| 458 // RefPtrWillBeRawPtr<Element> m11 = body->querySelector("#m11", ASSERT_NO_E
XCEPTION); | 458 // RefPtrWillBeRawPtr<Element> m11 = body->querySelector("#m11", ASSERT_NO_E
XCEPTION); |
| 459 // EXPECT_EQ(nullptr, ComposedTreeTraversal::previousSibling(*m11)); | 459 // EXPECT_EQ(nullptr, FlatTreeTraversal::previousSibling(*m11)); |
| 460 } | 460 } |
| 461 | 461 |
| 462 TEST_F(ComposedTreeTraversalTest, v1Simple) | 462 TEST_F(FlatTreeTraversalTest, v1Simple) |
| 463 { | 463 { |
| 464 const char* mainHTML = | 464 const char* mainHTML = |
| 465 "<div id='host'>" | 465 "<div id='host'>" |
| 466 "<div id='child1' slot='slot1'></div>" | 466 "<div id='child1' slot='slot1'></div>" |
| 467 "<div id='child2' slot='slot2'></div>" | 467 "<div id='child2' slot='slot2'></div>" |
| 468 "</div>"; | 468 "</div>"; |
| 469 const char* shadowHTML = | 469 const char* shadowHTML = |
| 470 "<div id='shadow-child1'></div>" | 470 "<div id='shadow-child1'></div>" |
| 471 "<slot name='slot1'></slot>" | 471 "<slot name='slot1'></slot>" |
| 472 "<slot name='slot2'></slot>" | 472 "<slot name='slot2'></slot>" |
| 473 "<div id='shadow-child2'></div>"; | 473 "<div id='shadow-child2'></div>"; |
| 474 | 474 |
| 475 setupDocumentTree(mainHTML); | 475 setupDocumentTree(mainHTML); |
| 476 RefPtrWillBeRawPtr<Element> body = document().body(); | 476 RefPtrWillBeRawPtr<Element> body = document().body(); |
| 477 RefPtrWillBeRawPtr<Element> host = body->querySelector("#host", ASSERT_NO_EX
CEPTION); | 477 RefPtrWillBeRawPtr<Element> host = body->querySelector("#host", ASSERT_NO_EX
CEPTION); |
| 478 RefPtrWillBeRawPtr<Element> child1 = body->querySelector("#child1", ASSERT_N
O_EXCEPTION); | 478 RefPtrWillBeRawPtr<Element> child1 = body->querySelector("#child1", ASSERT_N
O_EXCEPTION); |
| 479 RefPtrWillBeRawPtr<Element> child2 = body->querySelector("#child2", ASSERT_N
O_EXCEPTION); | 479 RefPtrWillBeRawPtr<Element> child2 = body->querySelector("#child2", ASSERT_N
O_EXCEPTION); |
| 480 | 480 |
| 481 attachOpenShadowRoot(*host, shadowHTML); | 481 attachOpenShadowRoot(*host, shadowHTML); |
| 482 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = host->openShadowRoot(); | 482 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = host->openShadowRoot(); |
| 483 RefPtrWillBeRawPtr<Element> slot1 = shadowRoot->querySelector("[name=slot1]"
, ASSERT_NO_EXCEPTION); | 483 RefPtrWillBeRawPtr<Element> slot1 = shadowRoot->querySelector("[name=slot1]"
, ASSERT_NO_EXCEPTION); |
| 484 RefPtrWillBeRawPtr<Element> slot2 = shadowRoot->querySelector("[name=slot2]"
, ASSERT_NO_EXCEPTION); | 484 RefPtrWillBeRawPtr<Element> slot2 = shadowRoot->querySelector("[name=slot2]"
, ASSERT_NO_EXCEPTION); |
| 485 RefPtrWillBeRawPtr<Element> shadowChild1 = shadowRoot->querySelector("#shado
w-child1", ASSERT_NO_EXCEPTION); | 485 RefPtrWillBeRawPtr<Element> shadowChild1 = shadowRoot->querySelector("#shado
w-child1", ASSERT_NO_EXCEPTION); |
| 486 RefPtrWillBeRawPtr<Element> shadowChild2 = shadowRoot->querySelector("#shado
w-child2", ASSERT_NO_EXCEPTION); | 486 RefPtrWillBeRawPtr<Element> shadowChild2 = shadowRoot->querySelector("#shado
w-child2", ASSERT_NO_EXCEPTION); |
| 487 | 487 |
| 488 EXPECT_TRUE(slot1); | 488 EXPECT_TRUE(slot1); |
| 489 EXPECT_TRUE(slot2); | 489 EXPECT_TRUE(slot2); |
| 490 EXPECT_EQ(shadowChild1.get(), ComposedTreeTraversal::firstChild(*host)); | 490 EXPECT_EQ(shadowChild1.get(), FlatTreeTraversal::firstChild(*host)); |
| 491 EXPECT_EQ(child1.get(), ComposedTreeTraversal::nextSibling(*shadowChild1)); | 491 EXPECT_EQ(child1.get(), FlatTreeTraversal::nextSibling(*shadowChild1)); |
| 492 EXPECT_EQ(child2.get(), ComposedTreeTraversal::nextSibling(*child1)); | 492 EXPECT_EQ(child2.get(), FlatTreeTraversal::nextSibling(*child1)); |
| 493 EXPECT_EQ(shadowChild2.get(), ComposedTreeTraversal::nextSibling(*child2)); | 493 EXPECT_EQ(shadowChild2.get(), FlatTreeTraversal::nextSibling(*child2)); |
| 494 } | 494 } |
| 495 | 495 |
| 496 TEST_F(ComposedTreeTraversalTest, v1Redistribution) | 496 TEST_F(FlatTreeTraversalTest, v1Redistribution) |
| 497 { | 497 { |
| 498 const char* mainHTML = | 498 const char* mainHTML = |
| 499 "<div id='d1'>" | 499 "<div id='d1'>" |
| 500 "<div id='d2' slot='d1-s1'></div>" | 500 "<div id='d2' slot='d1-s1'></div>" |
| 501 "<div id='d3' slot='d1-s2'></div>" | 501 "<div id='d3' slot='d1-s2'></div>" |
| 502 "<div id='d4' slot='nonexistent'></div>" | 502 "<div id='d4' slot='nonexistent'></div>" |
| 503 "<div id='d5'></div>" | 503 "<div id='d5'></div>" |
| 504 "</div>" | 504 "</div>" |
| 505 "<div id='d6'></div>"; | 505 "<div id='d6'></div>"; |
| 506 const char* shadowHTML1 = | 506 const char* shadowHTML1 = |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 546 RefPtrWillBeRawPtr<Element> d11s2 = shadowRoot2->querySelector("[name=d1-1-s
2]", ASSERT_NO_EXCEPTION); | 546 RefPtrWillBeRawPtr<Element> d11s2 = shadowRoot2->querySelector("[name=d1-1-s
2]", ASSERT_NO_EXCEPTION); |
| 547 | 547 |
| 548 EXPECT_TRUE(d5); | 548 EXPECT_TRUE(d5); |
| 549 EXPECT_TRUE(d12); | 549 EXPECT_TRUE(d12); |
| 550 EXPECT_TRUE(d13); | 550 EXPECT_TRUE(d13); |
| 551 EXPECT_TRUE(d1s0); | 551 EXPECT_TRUE(d1s0); |
| 552 EXPECT_TRUE(d1s1); | 552 EXPECT_TRUE(d1s1); |
| 553 EXPECT_TRUE(d1s2); | 553 EXPECT_TRUE(d1s2); |
| 554 EXPECT_TRUE(d11s1); | 554 EXPECT_TRUE(d11s1); |
| 555 EXPECT_TRUE(d11s2); | 555 EXPECT_TRUE(d11s2); |
| 556 EXPECT_EQ(d11.get(), ComposedTreeTraversal::next(*d1)); | 556 EXPECT_EQ(d11.get(), FlatTreeTraversal::next(*d1)); |
| 557 EXPECT_EQ(d111.get(), ComposedTreeTraversal::next(*d11)); | 557 EXPECT_EQ(d111.get(), FlatTreeTraversal::next(*d11)); |
| 558 EXPECT_EQ(d2.get(), ComposedTreeTraversal::next(*d111)); | 558 EXPECT_EQ(d2.get(), FlatTreeTraversal::next(*d111)); |
| 559 EXPECT_EQ(d14.get(), ComposedTreeTraversal::next(*d2)); | 559 EXPECT_EQ(d14.get(), FlatTreeTraversal::next(*d2)); |
| 560 EXPECT_EQ(d112.get(), ComposedTreeTraversal::next(*d14)); | 560 EXPECT_EQ(d112.get(), FlatTreeTraversal::next(*d14)); |
| 561 EXPECT_EQ(d6.get(), ComposedTreeTraversal::next(*d112)); | 561 EXPECT_EQ(d6.get(), FlatTreeTraversal::next(*d112)); |
| 562 | 562 |
| 563 EXPECT_EQ(d112.get(), ComposedTreeTraversal::previous(*d6)); | 563 EXPECT_EQ(d112.get(), FlatTreeTraversal::previous(*d6)); |
| 564 | 564 |
| 565 EXPECT_EQ(d11.get(), ComposedTreeTraversal::parent(*d111)); | 565 EXPECT_EQ(d11.get(), FlatTreeTraversal::parent(*d111)); |
| 566 EXPECT_EQ(d11.get(), ComposedTreeTraversal::parent(*d112)); | 566 EXPECT_EQ(d11.get(), FlatTreeTraversal::parent(*d112)); |
| 567 EXPECT_EQ(d11.get(), ComposedTreeTraversal::parent(*d2)); | 567 EXPECT_EQ(d11.get(), FlatTreeTraversal::parent(*d2)); |
| 568 EXPECT_EQ(d11.get(), ComposedTreeTraversal::parent(*d14)); | 568 EXPECT_EQ(d11.get(), FlatTreeTraversal::parent(*d14)); |
| 569 EXPECT_EQ(nullptr, ComposedTreeTraversal::parent(*d3)); | 569 EXPECT_EQ(nullptr, FlatTreeTraversal::parent(*d3)); |
| 570 EXPECT_EQ(nullptr, ComposedTreeTraversal::parent(*d4)); | 570 EXPECT_EQ(nullptr, FlatTreeTraversal::parent(*d4)); |
| 571 } | 571 } |
| 572 | 572 |
| 573 } // namespace blink | 573 } // namespace blink |
| OLD | NEW |