| 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/editing/VisibleUnits.h" | 5 #include "core/editing/VisibleUnits.h" |
| 6 | 6 |
| 7 #include <ostream> // NOLINT | 7 #include <ostream> // NOLINT |
| 8 #include "bindings/core/v8/V8BindingForTesting.h" | 8 #include "bindings/core/v8/V8BindingForTesting.h" |
| 9 #include "core/dom/Text.h" | 9 #include "core/dom/Text.h" |
| 10 #include "core/editing/EditingTestBase.h" | 10 #include "core/editing/EditingTestBase.h" |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 237 CanonicalPositionOf(Position(two, 0))); | 237 CanonicalPositionOf(Position(two, 0))); |
| 238 EXPECT_EQ(Position(two->firstChild(), 2), | 238 EXPECT_EQ(Position(two->firstChild(), 2), |
| 239 CanonicalPositionOf(Position(two, 1))); | 239 CanonicalPositionOf(Position(two, 1))); |
| 240 } | 240 } |
| 241 | 241 |
| 242 // For http://crbug.com/695317 | 242 // For http://crbug.com/695317 |
| 243 TEST_F(VisibleUnitsTest, canonicalPositionOfWithInputElement) { | 243 TEST_F(VisibleUnitsTest, canonicalPositionOfWithInputElement) { |
| 244 SetBodyContent("<input>123"); | 244 SetBodyContent("<input>123"); |
| 245 Element* const input = GetDocument().QuerySelector("input"); | 245 Element* const input = GetDocument().QuerySelector("input"); |
| 246 | 246 |
| 247 EXPECT_EQ(Position::BeforeNode(input), | 247 EXPECT_EQ(Position::BeforeNode(*input), |
| 248 CanonicalPositionOf(Position::FirstPositionInNode( | 248 CanonicalPositionOf(Position::FirstPositionInNode( |
| 249 GetDocument().documentElement()))); | 249 GetDocument().documentElement()))); |
| 250 | 250 |
| 251 EXPECT_EQ(PositionInFlatTree::BeforeNode(input), | 251 EXPECT_EQ(PositionInFlatTree::BeforeNode(*input), |
| 252 CanonicalPositionOf(PositionInFlatTree::FirstPositionInNode( | 252 CanonicalPositionOf(PositionInFlatTree::FirstPositionInNode( |
| 253 GetDocument().documentElement()))); | 253 GetDocument().documentElement()))); |
| 254 } | 254 } |
| 255 | 255 |
| 256 TEST_F(VisibleUnitsTest, characterBefore) { | 256 TEST_F(VisibleUnitsTest, characterBefore) { |
| 257 const char* body_content = | 257 const char* body_content = |
| 258 "<p id=host><b id=one>1</b><b id=two>22</b></p><b id=three>333</b>"; | 258 "<p id=host><b id=one>1</b><b id=two>22</b></p><b id=three>333</b>"; |
| 259 const char* shadow_content = | 259 const char* shadow_content = |
| 260 "<b id=four>4444</b><content select=#two></content><content " | 260 "<b id=four>4444</b><content select=#two></content><content " |
| 261 "select=#one></content><b id=five>5555</b>"; | 261 "select=#one></content><b id=five>5555</b>"; |
| (...skipping 1072 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1334 "<style>p:first-letter {color:red;}</style><p id=sample> (2)45 </p>"; | 1334 "<style>p:first-letter {color:red;}</style><p id=sample> (2)45 </p>"; |
| 1335 SetBodyContent(body_content); | 1335 SetBodyContent(body_content); |
| 1336 | 1336 |
| 1337 Node* sample = GetDocument().getElementById("sample")->firstChild(); | 1337 Node* sample = GetDocument().getElementById("sample")->firstChild(); |
| 1338 | 1338 |
| 1339 EXPECT_EQ(Position(GetDocument().body(), 0), | 1339 EXPECT_EQ(Position(GetDocument().body(), 0), |
| 1340 MostForwardCaretPosition( | 1340 MostForwardCaretPosition( |
| 1341 Position::FirstPositionInNode(GetDocument().body()))); | 1341 Position::FirstPositionInNode(GetDocument().body()))); |
| 1342 EXPECT_EQ( | 1342 EXPECT_EQ( |
| 1343 Position(sample, 1), | 1343 Position(sample, 1), |
| 1344 MostForwardCaretPosition(Position::BeforeNode(sample->parentNode()))); | 1344 MostForwardCaretPosition(Position::BeforeNode(*sample->parentNode()))); |
| 1345 EXPECT_EQ(Position(sample, 1), | 1345 EXPECT_EQ(Position(sample, 1), |
| 1346 MostForwardCaretPosition( | 1346 MostForwardCaretPosition( |
| 1347 Position::FirstPositionInNode(sample->parentNode()))); | 1347 Position::FirstPositionInNode(sample->parentNode()))); |
| 1348 EXPECT_EQ(Position(sample, 1), MostForwardCaretPosition(Position(sample, 0))); | 1348 EXPECT_EQ(Position(sample, 1), MostForwardCaretPosition(Position(sample, 0))); |
| 1349 EXPECT_EQ(Position(sample, 1), MostForwardCaretPosition(Position(sample, 1))); | 1349 EXPECT_EQ(Position(sample, 1), MostForwardCaretPosition(Position(sample, 1))); |
| 1350 EXPECT_EQ(Position(sample, 2), MostForwardCaretPosition(Position(sample, 2))); | 1350 EXPECT_EQ(Position(sample, 2), MostForwardCaretPosition(Position(sample, 2))); |
| 1351 EXPECT_EQ(Position(sample, 3), MostForwardCaretPosition(Position(sample, 3))); | 1351 EXPECT_EQ(Position(sample, 3), MostForwardCaretPosition(Position(sample, 3))); |
| 1352 EXPECT_EQ(Position(sample, 4), MostForwardCaretPosition(Position(sample, 4))); | 1352 EXPECT_EQ(Position(sample, 4), MostForwardCaretPosition(Position(sample, 4))); |
| 1353 EXPECT_EQ(Position(sample, 5), MostForwardCaretPosition(Position(sample, 5))); | 1353 EXPECT_EQ(Position(sample, 5), MostForwardCaretPosition(Position(sample, 5))); |
| 1354 EXPECT_EQ(Position(sample, 7), MostForwardCaretPosition(Position(sample, 6))); | 1354 EXPECT_EQ(Position(sample, 7), MostForwardCaretPosition(Position(sample, 6))); |
| (...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1898 EXPECT_FALSE(rect.IsEmpty()); | 1898 EXPECT_FALSE(rect.IsEmpty()); |
| 1899 } | 1899 } |
| 1900 | 1900 |
| 1901 // Regression test for crbug.com/675429 | 1901 // Regression test for crbug.com/675429 |
| 1902 TEST_F(VisibleUnitsTest, | 1902 TEST_F(VisibleUnitsTest, |
| 1903 canonicalizationWithCollapsedSpaceAndIsolatedCombiningCharacter) { | 1903 canonicalizationWithCollapsedSpaceAndIsolatedCombiningCharacter) { |
| 1904 SetBodyContent("<p> ⃣</p>"); // Leading space is necessary | 1904 SetBodyContent("<p> ⃣</p>"); // Leading space is necessary |
| 1905 | 1905 |
| 1906 Node* paragraph = GetDocument().QuerySelector("p"); | 1906 Node* paragraph = GetDocument().QuerySelector("p"); |
| 1907 Node* text = paragraph->firstChild(); | 1907 Node* text = paragraph->firstChild(); |
| 1908 Position start = CanonicalPositionOf(Position::BeforeNode(paragraph)); | 1908 Position start = CanonicalPositionOf(Position::BeforeNode(*paragraph)); |
| 1909 EXPECT_EQ(Position(text, 2), start); | 1909 EXPECT_EQ(Position(text, 2), start); |
| 1910 } | 1910 } |
| 1911 | 1911 |
| 1912 TEST_F(VisibleUnitsTest, | 1912 TEST_F(VisibleUnitsTest, |
| 1913 PreviousRootInlineBoxCandidatePositionWithDisplayNone) { | 1913 PreviousRootInlineBoxCandidatePositionWithDisplayNone) { |
| 1914 SetBodyContent( | 1914 SetBodyContent( |
| 1915 "<div contenteditable>" | 1915 "<div contenteditable>" |
| 1916 "<div id=one>one abc</div>" | 1916 "<div id=one>one abc</div>" |
| 1917 "<div id=two>two <b id=none style=display:none>def</b> ghi</div>" | 1917 "<div id=two>two <b id=none style=display:none>def</b> ghi</div>" |
| 1918 "</div>"); | 1918 "</div>"); |
| 1919 Element* const one = GetDocument().getElementById("one"); | 1919 Element* const one = GetDocument().getElementById("one"); |
| 1920 Element* const two = GetDocument().getElementById("two"); | 1920 Element* const two = GetDocument().getElementById("two"); |
| 1921 const VisiblePosition& visible_position = | 1921 const VisiblePosition& visible_position = |
| 1922 CreateVisiblePosition(Position::LastPositionInNode(two)); | 1922 CreateVisiblePosition(Position::LastPositionInNode(two)); |
| 1923 EXPECT_EQ(Position(one->firstChild(), 7), | 1923 EXPECT_EQ(Position(one->firstChild(), 7), |
| 1924 PreviousRootInlineBoxCandidatePosition( | 1924 PreviousRootInlineBoxCandidatePosition( |
| 1925 two->lastChild(), visible_position, kContentIsEditable)); | 1925 two->lastChild(), visible_position, kContentIsEditable)); |
| 1926 } | 1926 } |
| 1927 | 1927 |
| 1928 } // namespace blink | 1928 } // namespace blink |
| OLD | NEW |