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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutTextTest.cpp

Issue 2369963005: Avoid creating consecutive whitespace renderers. (Closed)
Patch Set: Unit tests Created 4 years, 2 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
« no previous file with comments | « third_party/WebKit/Source/core/dom/Text.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/layout/LayoutText.h" 5 #include "core/layout/LayoutText.h"
6 6
7 #include "core/layout/LayoutTestHelper.h" 7 #include "core/layout/LayoutTestHelper.h"
8 #include "core/layout/line/InlineTextBox.h" 8 #include "core/layout/line/InlineTextBox.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 78
79 TEST_F(LayoutTextTest, WidthLengthBeyondLength) 79 TEST_F(LayoutTextTest, WidthLengthBeyondLength)
80 { 80 {
81 setBasicBody("x"); 81 setBasicBody("x");
82 // Width may vary by platform and we just want to make sure it's something r oughly reasonable. 82 // Width may vary by platform and we just want to make sure it's something r oughly reasonable.
83 float width = getBasicText()->width(0u, 2u, LayoutUnit(), LTR, false); 83 float width = getBasicText()->width(0u, 2u, LayoutUnit(), LTR, false);
84 ASSERT_GE(width, 4.f); 84 ASSERT_GE(width, 4.f);
85 ASSERT_LE(width, 20.f); 85 ASSERT_LE(width, 20.f);
86 } 86 }
87 87
88 TEST_F(LayoutTextTest, ConsecutiveWhitespaceRenderers)
89 {
90 setBodyInnerHTML("<span></span> <span id='span'></span>");
91
92 Element* span = document().getElementById("span");
93 Node* whitespace1 = span->previousSibling();
94 Node* whitespace2 = Text::create(document(), " ");
95 document().body()->insertBefore(whitespace2, span, ASSERT_NO_EXCEPTION);
96 document().view()->updateAllLifecyclePhases();
97
98 EXPECT_TRUE(whitespace1->layoutObject());
99 EXPECT_FALSE(whitespace2->layoutObject());
100 }
mstensho (USE GERRIT) 2016/09/28 11:19:09 How about a test similar to this one, except that
101
102 TEST_F(LayoutTextTest, ConsecutiveWhitespaceRenderersDisplayNone)
103 {
104 setBodyInnerHTML("<span></span> <span style='display:none'></span> <span></s pan>");
105
106 // First <span>
107 Node* child = document().body()->firstChild();
108 ASSERT_TRUE(child);
109
110 // First whitespace node
111 child = child->nextSibling();
112 ASSERT_TRUE(child);
113 EXPECT_TRUE(child->isTextNode());
114 EXPECT_TRUE(child->layoutObject());
115
116 // <span display:none>
117 child = child->nextSibling();
118 ASSERT_TRUE(child);
119 EXPECT_FALSE(child->layoutObject());
120
121 // Second whitespace node
122 child = child->nextSibling();
123 ASSERT_TRUE(child);
124 EXPECT_TRUE(child->isTextNode());
125 EXPECT_FALSE(child->layoutObject());
126 }
127
128 TEST_F(LayoutTextTest, ConsecutiveWhitespaceRenderersComment)
129 {
130 setBodyInnerHTML("<span></span> <!-- --> <span></span>");
131
132 // First <span>
133 Node* child = document().body()->firstChild();
134 ASSERT_TRUE(child);
135
136 // First whitespace node
137 child = child->nextSibling();
138 ASSERT_TRUE(child);
139 EXPECT_TRUE(child->isTextNode());
140 EXPECT_TRUE(child->layoutObject());
141
142 // <span display:none>
rune 2016/09/27 13:54:14 This should be the comment <!-- -->
rune 2016/09/28 12:13:10 Fixed.
143 child = child->nextSibling();
144 ASSERT_TRUE(child);
145 EXPECT_FALSE(child->layoutObject());
146
147 // Second whitespace node
148 child = child->nextSibling();
149 ASSERT_TRUE(child);
150 EXPECT_TRUE(child->isTextNode());
151 EXPECT_FALSE(child->layoutObject());
152 }
153
88 } // namespace blink 154 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/Text.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698