OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/StaticRange.h" | 5 #include "core/dom/StaticRange.h" |
6 | 6 |
7 #include "bindings/core/v8/ExceptionState.h" | 7 #include "bindings/core/v8/ExceptionState.h" |
8 #include "bindings/core/v8/V8BindingForTesting.h" | 8 #include "bindings/core/v8/V8BindingForTesting.h" |
9 #include "core/dom/Element.h" | 9 #include "core/dom/Element.h" |
10 #include "core/dom/NodeList.h" | 10 #include "core/dom/NodeList.h" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 HTMLDocument& StaticRangeTest::document() const { | 42 HTMLDocument& StaticRangeTest::document() const { |
43 return *m_document; | 43 return *m_document; |
44 } | 44 } |
45 | 45 |
46 TEST_F(StaticRangeTest, SplitTextNodeRangeWithinText) { | 46 TEST_F(StaticRangeTest, SplitTextNodeRangeWithinText) { |
47 V8TestingScope scope; | 47 V8TestingScope scope; |
48 document().body()->setInnerHTML("1234"); | 48 document().body()->setInnerHTML("1234"); |
49 Text* oldText = toText(document().body()->firstChild()); | 49 Text* oldText = toText(document().body()->firstChild()); |
50 | 50 |
51 StaticRange* staticRange04 = | 51 StaticRange* staticRange04 = |
52 StaticRange::create(document(), oldText, 0, oldText, 4); | 52 StaticRange::create(document(), oldText, 0u, oldText, 4u); |
53 StaticRange* staticRange02 = | 53 StaticRange* staticRange02 = |
54 StaticRange::create(document(), oldText, 0, oldText, 2); | 54 StaticRange::create(document(), oldText, 0u, oldText, 2u); |
55 StaticRange* staticRange22 = | 55 StaticRange* staticRange22 = |
56 StaticRange::create(document(), oldText, 2, oldText, 2); | 56 StaticRange::create(document(), oldText, 2u, oldText, 2u); |
57 StaticRange* staticRange24 = | 57 StaticRange* staticRange24 = |
58 StaticRange::create(document(), oldText, 2, oldText, 4); | 58 StaticRange::create(document(), oldText, 2u, oldText, 4u); |
59 | 59 |
60 Range* range04 = staticRange04->toRange(ASSERT_NO_EXCEPTION); | 60 Range* range04 = staticRange04->toRange(ASSERT_NO_EXCEPTION); |
61 Range* range02 = staticRange02->toRange(ASSERT_NO_EXCEPTION); | 61 Range* range02 = staticRange02->toRange(ASSERT_NO_EXCEPTION); |
62 Range* range22 = staticRange22->toRange(ASSERT_NO_EXCEPTION); | 62 Range* range22 = staticRange22->toRange(ASSERT_NO_EXCEPTION); |
63 Range* range24 = staticRange24->toRange(ASSERT_NO_EXCEPTION); | 63 Range* range24 = staticRange24->toRange(ASSERT_NO_EXCEPTION); |
64 | 64 |
65 oldText->splitText(2, ASSERT_NO_EXCEPTION); | 65 oldText->splitText(2, ASSERT_NO_EXCEPTION); |
66 Text* newText = toText(oldText->nextSibling()); | 66 Text* newText = toText(oldText->nextSibling()); |
67 | 67 |
68 // Range should mutate. | 68 // Range should mutate. |
(...skipping 18 matching lines...) Expand all Loading... |
87 EXPECT_EQ(2u, range22->endOffset()); | 87 EXPECT_EQ(2u, range22->endOffset()); |
88 | 88 |
89 EXPECT_TRUE(range24->boundaryPointsValid()); | 89 EXPECT_TRUE(range24->boundaryPointsValid()); |
90 EXPECT_EQ(oldText, range24->startContainer()); | 90 EXPECT_EQ(oldText, range24->startContainer()); |
91 EXPECT_EQ(2u, range24->startOffset()); | 91 EXPECT_EQ(2u, range24->startOffset()); |
92 EXPECT_EQ(newText, range24->endContainer()); | 92 EXPECT_EQ(newText, range24->endContainer()); |
93 EXPECT_EQ(2u, range24->endOffset()); | 93 EXPECT_EQ(2u, range24->endOffset()); |
94 | 94 |
95 // StaticRange shouldn't mutate. | 95 // StaticRange shouldn't mutate. |
96 EXPECT_EQ(oldText, staticRange04->startContainer()); | 96 EXPECT_EQ(oldText, staticRange04->startContainer()); |
97 EXPECT_EQ(0, staticRange04->startOffset()); | 97 EXPECT_EQ(0u, staticRange04->startOffset()); |
98 EXPECT_EQ(oldText, staticRange04->endContainer()); | 98 EXPECT_EQ(oldText, staticRange04->endContainer()); |
99 EXPECT_EQ(4, staticRange04->endOffset()); | 99 EXPECT_EQ(4u, staticRange04->endOffset()); |
100 | 100 |
101 EXPECT_EQ(oldText, staticRange02->startContainer()); | 101 EXPECT_EQ(oldText, staticRange02->startContainer()); |
102 EXPECT_EQ(0, staticRange02->startOffset()); | 102 EXPECT_EQ(0u, staticRange02->startOffset()); |
103 EXPECT_EQ(oldText, staticRange02->endContainer()); | 103 EXPECT_EQ(oldText, staticRange02->endContainer()); |
104 EXPECT_EQ(2, staticRange02->endOffset()); | 104 EXPECT_EQ(2u, staticRange02->endOffset()); |
105 | 105 |
106 EXPECT_EQ(oldText, staticRange22->startContainer()); | 106 EXPECT_EQ(oldText, staticRange22->startContainer()); |
107 EXPECT_EQ(2, staticRange22->startOffset()); | 107 EXPECT_EQ(2u, staticRange22->startOffset()); |
108 EXPECT_EQ(oldText, staticRange22->endContainer()); | 108 EXPECT_EQ(oldText, staticRange22->endContainer()); |
109 EXPECT_EQ(2, staticRange22->endOffset()); | 109 EXPECT_EQ(2u, staticRange22->endOffset()); |
110 | 110 |
111 EXPECT_EQ(oldText, staticRange24->startContainer()); | 111 EXPECT_EQ(oldText, staticRange24->startContainer()); |
112 EXPECT_EQ(2, staticRange24->startOffset()); | 112 EXPECT_EQ(2u, staticRange24->startOffset()); |
113 EXPECT_EQ(oldText, staticRange24->endContainer()); | 113 EXPECT_EQ(oldText, staticRange24->endContainer()); |
114 EXPECT_EQ(4, staticRange24->endOffset()); | 114 EXPECT_EQ(4u, staticRange24->endOffset()); |
115 } | 115 } |
116 | 116 |
117 TEST_F(StaticRangeTest, SplitTextNodeRangeOutsideText) { | 117 TEST_F(StaticRangeTest, SplitTextNodeRangeOutsideText) { |
118 V8TestingScope scope; | 118 V8TestingScope scope; |
119 document().body()->setInnerHTML( | 119 document().body()->setInnerHTML( |
120 "<span id=\"outer\">0<span id=\"inner-left\">1</span>SPLITME<span " | 120 "<span id=\"outer\">0<span id=\"inner-left\">1</span>SPLITME<span " |
121 "id=\"inner-right\">2</span>3</span>"); | 121 "id=\"inner-right\">2</span>3</span>"); |
122 | 122 |
123 Element* outer = document().getElementById(AtomicString::fromUTF8("outer")); | 123 Element* outer = document().getElementById(AtomicString::fromUTF8("outer")); |
124 Element* innerLeft = | 124 Element* innerLeft = |
125 document().getElementById(AtomicString::fromUTF8("inner-left")); | 125 document().getElementById(AtomicString::fromUTF8("inner-left")); |
126 Element* innerRight = | 126 Element* innerRight = |
127 document().getElementById(AtomicString::fromUTF8("inner-right")); | 127 document().getElementById(AtomicString::fromUTF8("inner-right")); |
128 Text* oldText = toText(outer->childNodes()->item(2)); | 128 Text* oldText = toText(outer->childNodes()->item(2)); |
129 | 129 |
130 StaticRange* staticRangeOuterOutside = | 130 StaticRange* staticRangeOuterOutside = |
131 StaticRange::create(document(), outer, 0, outer, 5); | 131 StaticRange::create(document(), outer, 0u, outer, 5u); |
132 StaticRange* staticRangeOuterInside = | 132 StaticRange* staticRangeOuterInside = |
133 StaticRange::create(document(), outer, 1, outer, 4); | 133 StaticRange::create(document(), outer, 1u, outer, 4u); |
134 StaticRange* staticRangeOuterSurroundingText = | 134 StaticRange* staticRangeOuterSurroundingText = |
135 StaticRange::create(document(), outer, 2, outer, 3); | 135 StaticRange::create(document(), outer, 2u, outer, 3u); |
136 StaticRange* staticRangeInnerLeft = | 136 StaticRange* staticRangeInnerLeft = |
137 StaticRange::create(document(), innerLeft, 0, innerLeft, 1); | 137 StaticRange::create(document(), innerLeft, 0u, innerLeft, 1u); |
138 StaticRange* staticRangeInnerRight = | 138 StaticRange* staticRangeInnerRight = |
139 StaticRange::create(document(), innerRight, 0, innerRight, 1); | 139 StaticRange::create(document(), innerRight, 0u, innerRight, 1u); |
140 StaticRange* staticRangeFromTextToMiddleOfElement = | 140 StaticRange* staticRangeFromTextToMiddleOfElement = |
141 StaticRange::create(document(), oldText, 6, outer, 3); | 141 StaticRange::create(document(), oldText, 6u, outer, 3u); |
142 | 142 |
143 Range* rangeOuterOutside = | 143 Range* rangeOuterOutside = |
144 staticRangeOuterOutside->toRange(ASSERT_NO_EXCEPTION); | 144 staticRangeOuterOutside->toRange(ASSERT_NO_EXCEPTION); |
145 Range* rangeOuterInside = | 145 Range* rangeOuterInside = |
146 staticRangeOuterInside->toRange(ASSERT_NO_EXCEPTION); | 146 staticRangeOuterInside->toRange(ASSERT_NO_EXCEPTION); |
147 Range* rangeOuterSurroundingText = | 147 Range* rangeOuterSurroundingText = |
148 staticRangeOuterSurroundingText->toRange(ASSERT_NO_EXCEPTION); | 148 staticRangeOuterSurroundingText->toRange(ASSERT_NO_EXCEPTION); |
149 Range* rangeInnerLeft = staticRangeInnerLeft->toRange(ASSERT_NO_EXCEPTION); | 149 Range* rangeInnerLeft = staticRangeInnerLeft->toRange(ASSERT_NO_EXCEPTION); |
150 Range* rangeInnerRight = staticRangeInnerRight->toRange(ASSERT_NO_EXCEPTION); | 150 Range* rangeInnerRight = staticRangeInnerRight->toRange(ASSERT_NO_EXCEPTION); |
151 Range* rangeFromTextToMiddleOfElement = | 151 Range* rangeFromTextToMiddleOfElement = |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 EXPECT_EQ(1u, rangeInnerRight->endOffset()); | 188 EXPECT_EQ(1u, rangeInnerRight->endOffset()); |
189 | 189 |
190 EXPECT_TRUE(rangeFromTextToMiddleOfElement->boundaryPointsValid()); | 190 EXPECT_TRUE(rangeFromTextToMiddleOfElement->boundaryPointsValid()); |
191 EXPECT_EQ(newText, rangeFromTextToMiddleOfElement->startContainer()); | 191 EXPECT_EQ(newText, rangeFromTextToMiddleOfElement->startContainer()); |
192 EXPECT_EQ(3u, rangeFromTextToMiddleOfElement->startOffset()); | 192 EXPECT_EQ(3u, rangeFromTextToMiddleOfElement->startOffset()); |
193 EXPECT_EQ(outer, rangeFromTextToMiddleOfElement->endContainer()); | 193 EXPECT_EQ(outer, rangeFromTextToMiddleOfElement->endContainer()); |
194 EXPECT_EQ(4u, rangeFromTextToMiddleOfElement->endOffset()); | 194 EXPECT_EQ(4u, rangeFromTextToMiddleOfElement->endOffset()); |
195 | 195 |
196 // StaticRange shouldn't mutate. | 196 // StaticRange shouldn't mutate. |
197 EXPECT_EQ(outer, staticRangeOuterOutside->startContainer()); | 197 EXPECT_EQ(outer, staticRangeOuterOutside->startContainer()); |
198 EXPECT_EQ(0, staticRangeOuterOutside->startOffset()); | 198 EXPECT_EQ(0u, staticRangeOuterOutside->startOffset()); |
199 EXPECT_EQ(outer, staticRangeOuterOutside->endContainer()); | 199 EXPECT_EQ(outer, staticRangeOuterOutside->endContainer()); |
200 EXPECT_EQ(5, staticRangeOuterOutside->endOffset()); | 200 EXPECT_EQ(5u, staticRangeOuterOutside->endOffset()); |
201 | 201 |
202 EXPECT_EQ(outer, staticRangeOuterInside->startContainer()); | 202 EXPECT_EQ(outer, staticRangeOuterInside->startContainer()); |
203 EXPECT_EQ(1, staticRangeOuterInside->startOffset()); | 203 EXPECT_EQ(1u, staticRangeOuterInside->startOffset()); |
204 EXPECT_EQ(outer, staticRangeOuterInside->endContainer()); | 204 EXPECT_EQ(outer, staticRangeOuterInside->endContainer()); |
205 EXPECT_EQ(4, staticRangeOuterInside->endOffset()); | 205 EXPECT_EQ(4u, staticRangeOuterInside->endOffset()); |
206 | 206 |
207 EXPECT_EQ(outer, staticRangeOuterSurroundingText->startContainer()); | 207 EXPECT_EQ(outer, staticRangeOuterSurroundingText->startContainer()); |
208 EXPECT_EQ(2, staticRangeOuterSurroundingText->startOffset()); | 208 EXPECT_EQ(2u, staticRangeOuterSurroundingText->startOffset()); |
209 EXPECT_EQ(outer, staticRangeOuterSurroundingText->endContainer()); | 209 EXPECT_EQ(outer, staticRangeOuterSurroundingText->endContainer()); |
210 EXPECT_EQ(3, staticRangeOuterSurroundingText->endOffset()); | 210 EXPECT_EQ(3u, staticRangeOuterSurroundingText->endOffset()); |
211 | 211 |
212 EXPECT_EQ(innerLeft, staticRangeInnerLeft->startContainer()); | 212 EXPECT_EQ(innerLeft, staticRangeInnerLeft->startContainer()); |
213 EXPECT_EQ(0, staticRangeInnerLeft->startOffset()); | 213 EXPECT_EQ(0u, staticRangeInnerLeft->startOffset()); |
214 EXPECT_EQ(innerLeft, staticRangeInnerLeft->endContainer()); | 214 EXPECT_EQ(innerLeft, staticRangeInnerLeft->endContainer()); |
215 EXPECT_EQ(1, staticRangeInnerLeft->endOffset()); | 215 EXPECT_EQ(1u, staticRangeInnerLeft->endOffset()); |
216 | 216 |
217 EXPECT_EQ(innerRight, staticRangeInnerRight->startContainer()); | 217 EXPECT_EQ(innerRight, staticRangeInnerRight->startContainer()); |
218 EXPECT_EQ(0, staticRangeInnerRight->startOffset()); | 218 EXPECT_EQ(0u, staticRangeInnerRight->startOffset()); |
219 EXPECT_EQ(innerRight, staticRangeInnerRight->endContainer()); | 219 EXPECT_EQ(innerRight, staticRangeInnerRight->endContainer()); |
220 EXPECT_EQ(1, staticRangeInnerRight->endOffset()); | 220 EXPECT_EQ(1u, staticRangeInnerRight->endOffset()); |
221 | 221 |
222 EXPECT_EQ(oldText, staticRangeFromTextToMiddleOfElement->startContainer()); | 222 EXPECT_EQ(oldText, staticRangeFromTextToMiddleOfElement->startContainer()); |
223 EXPECT_EQ(6, staticRangeFromTextToMiddleOfElement->startOffset()); | 223 EXPECT_EQ(6u, staticRangeFromTextToMiddleOfElement->startOffset()); |
224 EXPECT_EQ(outer, staticRangeFromTextToMiddleOfElement->endContainer()); | 224 EXPECT_EQ(outer, staticRangeFromTextToMiddleOfElement->endContainer()); |
225 EXPECT_EQ(3, staticRangeFromTextToMiddleOfElement->endOffset()); | 225 EXPECT_EQ(3u, staticRangeFromTextToMiddleOfElement->endOffset()); |
226 } | 226 } |
227 | 227 |
228 TEST_F(StaticRangeTest, InvalidToRange) { | 228 TEST_F(StaticRangeTest, InvalidToRange) { |
229 V8TestingScope scope; | 229 V8TestingScope scope; |
230 document().body()->setInnerHTML("1234"); | 230 document().body()->setInnerHTML("1234"); |
231 Text* oldText = toText(document().body()->firstChild()); | 231 Text* oldText = toText(document().body()->firstChild()); |
232 | 232 |
233 StaticRange* staticRange04 = | 233 StaticRange* staticRange04 = |
234 StaticRange::create(document(), oldText, 0, oldText, 4); | 234 StaticRange::create(document(), oldText, 0u, oldText, 4u); |
235 | 235 |
236 // Valid StaticRange. | 236 // Valid StaticRange. |
237 staticRange04->toRange(ASSERT_NO_EXCEPTION); | 237 staticRange04->toRange(ASSERT_NO_EXCEPTION); |
238 | 238 |
239 oldText->splitText(2, ASSERT_NO_EXCEPTION); | 239 oldText->splitText(2, ASSERT_NO_EXCEPTION); |
240 // StaticRange shouldn't mutate, endOffset() become invalid after splitText(). | 240 // StaticRange shouldn't mutate, endOffset() become invalid after splitText(). |
241 EXPECT_EQ(oldText, staticRange04->startContainer()); | 241 EXPECT_EQ(oldText, staticRange04->startContainer()); |
242 EXPECT_EQ(0, staticRange04->startOffset()); | 242 EXPECT_EQ(0u, staticRange04->startOffset()); |
243 EXPECT_EQ(oldText, staticRange04->endContainer()); | 243 EXPECT_EQ(oldText, staticRange04->endContainer()); |
244 EXPECT_EQ(4, staticRange04->endOffset()); | 244 EXPECT_EQ(4u, staticRange04->endOffset()); |
245 | 245 |
246 // Invalid StaticRange. | 246 // Invalid StaticRange. |
247 DummyExceptionStateForTesting exceptionState; | 247 DummyExceptionStateForTesting exceptionState; |
248 staticRange04->toRange(exceptionState); | 248 staticRange04->toRange(exceptionState); |
249 EXPECT_TRUE(exceptionState.hadException()); | 249 EXPECT_TRUE(exceptionState.hadException()); |
250 } | 250 } |
251 | 251 |
252 } // namespace blink | 252 } // namespace blink |
OLD | NEW |