| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "config.h" | 5 #include "config.h" |
| 6 #include "core/editing/VisibleSelection.h" | 6 #include "core/editing/VisibleSelection.h" |
| 7 | 7 |
| 8 #include "core/dom/Document.h" | 8 #include "core/dom/Document.h" |
| 9 #include "core/dom/Range.h" | 9 #include "core/dom/Range.h" |
| 10 #include "core/dom/Text.h" | 10 #include "core/dom/Text.h" |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 const char* shadowContent = "<a><span id='s4'>44</span><content select=#two>
</content><span id='s5'>55</span><content select=#one></content><span id='s6'>66
</span></a>"; | 92 const char* shadowContent = "<a><span id='s4'>44</span><content select=#two>
</content><span id='s5'>55</span><content select=#one></content><span id='s6'>66
</span></a>"; |
| 93 setBodyContent(bodyContent); | 93 setBodyContent(bodyContent); |
| 94 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent); | 94 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent); |
| 95 | 95 |
| 96 RefPtrWillBeRawPtr<Element> body = document().body(); | 96 RefPtrWillBeRawPtr<Element> body = document().body(); |
| 97 RefPtrWillBeRawPtr<Element> host = body->querySelector("#host", ASSERT_NO_EX
CEPTION); | 97 RefPtrWillBeRawPtr<Element> host = body->querySelector("#host", ASSERT_NO_EX
CEPTION); |
| 98 RefPtrWillBeRawPtr<Element> one = body->querySelector("#one", ASSERT_NO_EXCE
PTION); | 98 RefPtrWillBeRawPtr<Element> one = body->querySelector("#one", ASSERT_NO_EXCE
PTION); |
| 99 RefPtrWillBeRawPtr<Element> two = body->querySelector("#two", ASSERT_NO_EXCE
PTION); | 99 RefPtrWillBeRawPtr<Element> two = body->querySelector("#two", ASSERT_NO_EXCE
PTION); |
| 100 RefPtrWillBeRawPtr<Element> six = shadowRoot->querySelector("#s6", ASSERT_NO
_EXCEPTION); | 100 RefPtrWillBeRawPtr<Element> six = shadowRoot->querySelector("#s6", ASSERT_NO
_EXCEPTION); |
| 101 | 101 |
| 102 ASSERT_UNUSED(two, two); |
| 103 (void)six; |
| 104 |
| 102 VisibleSelection selection(Position::firstPositionInNode(one.get()), Positio
n::lastPositionInNode(shadowRoot.get())); | 105 VisibleSelection selection(Position::firstPositionInNode(one.get()), Positio
n::lastPositionInNode(shadowRoot.get())); |
| 103 | 106 |
| 104 EXPECT_EQ(Position(host.get(), Position::PositionIsBeforeAnchor), selection.
start()); | 107 EXPECT_EQ(Position(host.get(), Position::PositionIsBeforeAnchor), selection.
start()); |
| 105 EXPECT_EQ(Position(one->firstChild(), 0, Position::PositionIsOffsetInAnchor)
, selection.end()); | 108 EXPECT_EQ(Position(one->firstChild(), 0, Position::PositionIsOffsetInAnchor)
, selection.end()); |
| 106 } | 109 } |
| 107 | 110 |
| 108 TEST_F(VisibleSelectionTest, ShadowDistributedNodes) | 111 TEST_F(VisibleSelectionTest, ShadowDistributedNodes) |
| 109 { | 112 { |
| 110 const char* bodyContent = "<p id='host'>00<b id='one'>11</b><b id='two'>22</
b>33</p>"; | 113 const char* bodyContent = "<p id='host'>00<b id='one'>11</b><b id='two'>22</
b>33</p>"; |
| 111 const char* shadowContent = "<a><span id='s4'>44</span><content select=#two>
</content><span id='s5'>55</span><content select=#one></content><span id='s6'>66
</span></a>"; | 114 const char* shadowContent = "<a><span id='s4'>44</span><content select=#two>
</content><span id='s5'>55</span><content select=#one></content><span id='s6'>66
</span></a>"; |
| 112 setBodyContent(bodyContent); | 115 setBodyContent(bodyContent); |
| 113 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent); | 116 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent); |
| 114 | 117 |
| 115 RefPtrWillBeRawPtr<Element> body = document().body(); | 118 RefPtrWillBeRawPtr<Element> body = document().body(); |
| 116 RefPtrWillBeRawPtr<Element> host = body->querySelector("#host", ASSERT_NO_EX
CEPTION); | 119 RefPtrWillBeRawPtr<Element> host = body->querySelector("#host", ASSERT_NO_EX
CEPTION); |
| 117 RefPtrWillBeRawPtr<Element> one = body->querySelector("#one", ASSERT_NO_EXCE
PTION); | 120 RefPtrWillBeRawPtr<Element> one = body->querySelector("#one", ASSERT_NO_EXCE
PTION); |
| 118 RefPtrWillBeRawPtr<Element> two = body->querySelector("#two", ASSERT_NO_EXCE
PTION); | 121 RefPtrWillBeRawPtr<Element> two = body->querySelector("#two", ASSERT_NO_EXCE
PTION); |
| 119 RefPtrWillBeRawPtr<Element> five = shadowRoot->querySelector("#s5", ASSERT_N
O_EXCEPTION); | 122 RefPtrWillBeRawPtr<Element> five = shadowRoot->querySelector("#s5", ASSERT_N
O_EXCEPTION); |
| 120 | 123 |
| 124 ASSERT_UNUSED(host, host); |
| 125 ASSERT_UNUSED(five, five); |
| 126 |
| 121 VisibleSelection selection(Position::firstPositionInNode(one.get()), Positio
n::lastPositionInNode(two.get())); | 127 VisibleSelection selection(Position::firstPositionInNode(one.get()), Positio
n::lastPositionInNode(two.get())); |
| 122 | 128 |
| 123 EXPECT_EQ(Position(one->firstChild(), 0, Position::PositionIsOffsetInAnchor)
, selection.start()); | 129 EXPECT_EQ(Position(one->firstChild(), 0, Position::PositionIsOffsetInAnchor)
, selection.start()); |
| 124 EXPECT_EQ(Position(two->firstChild(), 2, Position::PositionIsOffsetInAnchor)
, selection.end()); | 130 EXPECT_EQ(Position(two->firstChild(), 2, Position::PositionIsOffsetInAnchor)
, selection.end()); |
| 125 } | 131 } |
| 126 | 132 |
| 127 TEST_F(VisibleSelectionTest, ShadowNested) | 133 TEST_F(VisibleSelectionTest, ShadowNested) |
| 128 { | 134 { |
| 129 const char* bodyContent = "<p id='host'>00<b id='one'>11</b><b id='two'>22</
b>33</p>"; | 135 const char* bodyContent = "<p id='host'>00<b id='one'>11</b><b id='two'>22</
b>33</p>"; |
| 130 const char* shadowContent = "<a><span id='s4'>44</span><content select=#two>
</content><span id='s5'>55</span><content select=#one></content><span id='s6'>66
</span></a>"; | 136 const char* shadowContent = "<a><span id='s4'>44</span><content select=#two>
</content><span id='s5'>55</span><content select=#one></content><span id='s6'>66
</span></a>"; |
| 131 const char* shadowContent2 = "<span id='s7'>77</span><content></content><spa
n id='s8'>88</span>"; | 137 const char* shadowContent2 = "<span id='s7'>77</span><content></content><spa
n id='s8'>88</span>"; |
| 132 setBodyContent(bodyContent); | 138 setBodyContent(bodyContent); |
| 133 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent); | 139 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot = setShadowContent(shadowContent); |
| 134 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot2 = createShadowRootForElementWithI
DAndSetInnerHTML(*shadowRoot, "s5", shadowContent2); | 140 RefPtrWillBeRawPtr<ShadowRoot> shadowRoot2 = createShadowRootForElementWithI
DAndSetInnerHTML(*shadowRoot, "s5", shadowContent2); |
| 135 | 141 |
| 136 RefPtrWillBeRawPtr<Element> body = document().body(); | 142 RefPtrWillBeRawPtr<Element> body = document().body(); |
| 137 RefPtrWillBeRawPtr<Element> host = body->querySelector("#host", ASSERT_NO_EX
CEPTION); | 143 RefPtrWillBeRawPtr<Element> host = body->querySelector("#host", ASSERT_NO_EX
CEPTION); |
| 138 RefPtrWillBeRawPtr<Element> one = body->querySelector("#one", ASSERT_NO_EXCE
PTION); | 144 RefPtrWillBeRawPtr<Element> one = body->querySelector("#one", ASSERT_NO_EXCE
PTION); |
| 139 RefPtrWillBeRawPtr<Element> two = body->querySelector("#two", ASSERT_NO_EXCE
PTION); | 145 RefPtrWillBeRawPtr<Element> two = body->querySelector("#two", ASSERT_NO_EXCE
PTION); |
| 140 RefPtrWillBeRawPtr<Element> host2 = shadowRoot->querySelector("#host2", ASSE
RT_NO_EXCEPTION); | 146 RefPtrWillBeRawPtr<Element> host2 = shadowRoot->querySelector("#host2", ASSE
RT_NO_EXCEPTION); |
| 141 RefPtrWillBeRawPtr<Element> eight = shadowRoot2->querySelector("#s8", ASSERT
_NO_EXCEPTION); | 147 RefPtrWillBeRawPtr<Element> eight = shadowRoot2->querySelector("#s8", ASSERT
_NO_EXCEPTION); |
| 142 | 148 |
| 149 ASSERT_UNUSED(two, two); |
| 150 ASSERT_UNUSED(eight, eight); |
| 151 (void)host2; |
| 152 |
| 143 VisibleSelection selection(Position::firstPositionInNode(one.get()), Positio
n::lastPositionInNode(shadowRoot2.get())); | 153 VisibleSelection selection(Position::firstPositionInNode(one.get()), Positio
n::lastPositionInNode(shadowRoot2.get())); |
| 144 | 154 |
| 145 EXPECT_EQ(Position(host.get(), Position::PositionIsBeforeAnchor), selection.
start()); | 155 EXPECT_EQ(Position(host.get(), Position::PositionIsBeforeAnchor), selection.
start()); |
| 146 EXPECT_EQ(Position(one->firstChild(), 0, Position::PositionIsOffsetInAnchor)
, selection.end()); | 156 EXPECT_EQ(Position(one->firstChild(), 0, Position::PositionIsOffsetInAnchor)
, selection.end()); |
| 147 } | 157 } |
| 148 | 158 |
| 149 TEST_F(VisibleSelectionTest, WordGranularity) | 159 TEST_F(VisibleSelectionTest, WordGranularity) |
| 150 { | 160 { |
| 151 setBodyContent(LOREM_IPSUM); | 161 setBodyContent(LOREM_IPSUM); |
| 152 | 162 |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 selection.expandUsingGranularity(WordGranularity); | 238 selection.expandUsingGranularity(WordGranularity); |
| 229 | 239 |
| 230 RefPtrWillBeRawPtr<Range> range = selection.firstRange(); | 240 RefPtrWillBeRawPtr<Range> range = selection.firstRange(); |
| 231 EXPECT_EQ(0, range->startOffset()); | 241 EXPECT_EQ(0, range->startOffset()); |
| 232 EXPECT_EQ(11, range->endOffset()); | 242 EXPECT_EQ(11, range->endOffset()); |
| 233 EXPECT_EQ("Lorem ipsum", range->text()); | 243 EXPECT_EQ("Lorem ipsum", range->text()); |
| 234 } | 244 } |
| 235 } | 245 } |
| 236 | 246 |
| 237 } // namespace blink | 247 } // namespace blink |
| OLD | NEW |