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

Side by Side Diff: third_party/WebKit/Source/core/editing/VisiblePositionTest.cpp

Issue 2354893002: Introduce VisiblePosition::isValid (Closed)
Patch Set: 201609211817 Created 4 years, 3 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 unified diff | Download patch
OLDNEW
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/VisiblePosition.h" 5 #include "core/editing/VisiblePosition.h"
6 6
7 #include "core/css/CSSStyleDeclaration.h"
7 #include "core/editing/EditingTestBase.h" 8 #include "core/editing/EditingTestBase.h"
8 #include "core/editing/VisibleUnits.h" 9 #include "core/editing/VisibleUnits.h"
9 10
10 namespace blink { 11 namespace blink {
11 12
12 class VisiblePositionTest : public EditingTestBase { 13 class VisiblePositionTest : public EditingTestBase {
13 }; 14 };
14 15
15 TEST_F(VisiblePositionTest, ShadowV0DistributedNodes) 16 TEST_F(VisiblePositionTest, ShadowV0DistributedNodes)
16 { 17 {
(...skipping 12 matching lines...) Expand all
29 EXPECT_EQ(Position(one->firstChild(), 0), createVisiblePosition(Position(one , 0)).deepEquivalent()); 30 EXPECT_EQ(Position(one->firstChild(), 0), createVisiblePosition(Position(one , 0)).deepEquivalent());
30 EXPECT_EQ(Position(one->firstChild(), 2), canonicalPositionOf(Position(two, 0))); 31 EXPECT_EQ(Position(one->firstChild(), 2), canonicalPositionOf(Position(two, 0)));
31 EXPECT_EQ(Position(one->firstChild(), 2), createVisiblePosition(Position(two , 0)).deepEquivalent()); 32 EXPECT_EQ(Position(one->firstChild(), 2), createVisiblePosition(Position(two , 0)).deepEquivalent());
32 33
33 EXPECT_EQ(PositionInFlatTree(five->firstChild(), 2), canonicalPositionOf(Pos itionInFlatTree(one, 0))); 34 EXPECT_EQ(PositionInFlatTree(five->firstChild(), 2), canonicalPositionOf(Pos itionInFlatTree(one, 0)));
34 EXPECT_EQ(PositionInFlatTree(five->firstChild(), 2), createVisiblePosition(P ositionInFlatTree(one, 0)).deepEquivalent()); 35 EXPECT_EQ(PositionInFlatTree(five->firstChild(), 2), createVisiblePosition(P ositionInFlatTree(one, 0)).deepEquivalent());
35 EXPECT_EQ(PositionInFlatTree(four->firstChild(), 2), canonicalPositionOf(Pos itionInFlatTree(two, 0))); 36 EXPECT_EQ(PositionInFlatTree(four->firstChild(), 2), canonicalPositionOf(Pos itionInFlatTree(two, 0)));
36 EXPECT_EQ(PositionInFlatTree(four->firstChild(), 2), createVisiblePosition(P ositionInFlatTree(two, 0)).deepEquivalent()); 37 EXPECT_EQ(PositionInFlatTree(four->firstChild(), 2), createVisiblePosition(P ositionInFlatTree(two, 0)).deepEquivalent());
37 } 38 }
38 39
40 #if DCHECK_IS_ON()
41
42 TEST_F(VisiblePositionTest, NullIsValid)
43 {
44 EXPECT_TRUE(VisiblePosition().isValid());
45 }
46
47 TEST_F(VisiblePositionTest, NonNullIsValidBeforeMutation)
48 {
49 setBodyContent("<p>one</p>");
50
51 Element* paragraph = document().querySelector("p");
52 Position position(paragraph->firstChild(), 1);
53 EXPECT_TRUE(createVisiblePosition(position).isValid());
54 }
55
56 TEST_F(VisiblePositionTest, NonNullInvalidatedAfterDOMChange)
57 {
58 setBodyContent("<p>one</p>");
59
60 Element* paragraph = document().querySelector("p");
61 Position position(paragraph->firstChild(), 1);
62 VisiblePosition nullVisiblePosition;
63 VisiblePosition nonNullVisiblePosition = createVisiblePosition(position);
64
65 Element* div = document().createElement("div", ASSERT_NO_EXCEPTION);
66 document().body()->appendChild(div);
67
68 EXPECT_TRUE(nullVisiblePosition.isValid());
69 EXPECT_FALSE(nonNullVisiblePosition.isValid());
70
71 updateAllLifecyclePhases();
72
73 // Invalid VisiblePosition can never become valid again.
74 EXPECT_FALSE(nonNullVisiblePosition.isValid());
75 }
76
77 TEST_F(VisiblePositionTest, NonNullInvalidatedAfterStyleChange)
78 {
79 setBodyContent("<div>one</div><p>two</p>");
80
81 Element* paragraph = document().querySelector("p");
82 Element* div = document().querySelector("div");
83 Position position(paragraph->firstChild(), 1);
84
85 VisiblePosition visiblePosition1 = createVisiblePosition(position);
86 div->style()->setProperty("color", "red", "important", ASSERT_NO_EXCEPTION);
87 EXPECT_FALSE(visiblePosition1.isValid());
88
89 updateAllLifecyclePhases();
90
91 VisiblePosition visiblePosition2 = createVisiblePosition(position);
92 div->style()->setProperty("display", "none", "important", ASSERT_NO_EXCEPTIO N);
93 EXPECT_FALSE(visiblePosition2.isValid());
94
95 updateAllLifecyclePhases();
96
97 // Invalid VisiblePosition can never become valid again.
98 EXPECT_FALSE(visiblePosition1.isValid());
99 EXPECT_FALSE(visiblePosition2.isValid());
100 }
101
102 #endif
103
39 } // namespace blink 104 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/editing/VisiblePosition.cpp ('k') | third_party/WebKit/Source/core/editing/VisibleUnits.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698