| 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/layout/ng/ng_layout_inline_items_builder.h" | 5 #include "core/layout/ng/ng_layout_inline_items_builder.h" |
| 6 | 6 |
| 7 #include "core/layout/LayoutInline.h" | 7 #include "core/layout/LayoutInline.h" |
| 8 #include "core/layout/ng/ng_inline_node.h" | 8 #include "core/layout/ng/ng_inline_node.h" |
| 9 #include "core/style/ComputedStyle.h" | 9 #include "core/style/ComputedStyle.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 String collapsed("text text text text"); | 90 String collapsed("text text text text"); |
| 91 TestWhitespaceValue(collapsed, input, EWhiteSpace::kNormal); | 91 TestWhitespaceValue(collapsed, input, EWhiteSpace::kNormal); |
| 92 TestWhitespaceValue(collapsed, input, EWhiteSpace::kNowrap); | 92 TestWhitespaceValue(collapsed, input, EWhiteSpace::kNowrap); |
| 93 TestWhitespaceValue(collapsed, input, EWhiteSpace::kWebkitNowrap); | 93 TestWhitespaceValue(collapsed, input, EWhiteSpace::kWebkitNowrap); |
| 94 TestWhitespaceValue(collapsed, input, EWhiteSpace::kPreLine); | 94 TestWhitespaceValue(collapsed, input, EWhiteSpace::kPreLine); |
| 95 TestWhitespaceValue(input, input, EWhiteSpace::kPre); | 95 TestWhitespaceValue(input, input, EWhiteSpace::kPre); |
| 96 TestWhitespaceValue(input, input, EWhiteSpace::kPreWrap); | 96 TestWhitespaceValue(input, input, EWhiteSpace::kPreWrap); |
| 97 } | 97 } |
| 98 | 98 |
| 99 TEST_F(NGLayoutInlineItemsBuilderTest, CollapseNewLines) { | 99 TEST_F(NGLayoutInlineItemsBuilderTest, CollapseNewLines) { |
| 100 String input("text\ntext \n text"); | 100 String input("text\ntext \n text\n\ntext"); |
| 101 String collapsed("text text text"); | 101 String collapsed("text text text text"); |
| 102 TestWhitespaceValue(collapsed, input, EWhiteSpace::kNormal); | 102 TestWhitespaceValue(collapsed, input, EWhiteSpace::kNormal); |
| 103 TestWhitespaceValue(collapsed, input, EWhiteSpace::kNowrap); | 103 TestWhitespaceValue(collapsed, input, EWhiteSpace::kNowrap); |
| 104 TestWhitespaceValue("text\ntext\ntext", input, EWhiteSpace::kPreLine); | 104 TestWhitespaceValue("text\ntext\ntext\n\ntext", input, EWhiteSpace::kPreLine); |
| 105 TestWhitespaceValue(input, input, EWhiteSpace::kPre); | 105 TestWhitespaceValue(input, input, EWhiteSpace::kPre); |
| 106 TestWhitespaceValue(input, input, EWhiteSpace::kPreWrap); | 106 TestWhitespaceValue(input, input, EWhiteSpace::kPreWrap); |
| 107 } | 107 } |
| 108 | 108 |
| 109 TEST_F(NGLayoutInlineItemsBuilderTest, CollapseNewlinesAsSpaces) { |
| 110 EXPECT_EQ("text text", TestAppend("text\ntext")); |
| 111 EXPECT_EQ("text text", TestAppend("text\n\ntext")); |
| 112 EXPECT_EQ("text text", TestAppend("text \n\n text")); |
| 113 EXPECT_EQ("text text", TestAppend("text \n \n text")); |
| 114 } |
| 115 |
| 109 TEST_F(NGLayoutInlineItemsBuilderTest, CollapseAcrossElements) { | 116 TEST_F(NGLayoutInlineItemsBuilderTest, CollapseAcrossElements) { |
| 110 EXPECT_EQ("text text", TestAppend("text ", " text")) | 117 EXPECT_EQ("text text", TestAppend("text ", " text")) |
| 111 << "Spaces are collapsed even when across elements."; | 118 << "Spaces are collapsed even when across elements."; |
| 112 } | 119 } |
| 113 | 120 |
| 114 TEST_F(NGLayoutInlineItemsBuilderTest, CollapseLeadingSpaces) { | 121 TEST_F(NGLayoutInlineItemsBuilderTest, CollapseLeadingSpaces) { |
| 115 EXPECT_EQ("text", TestAppend(" text")); | 122 EXPECT_EQ("text", TestAppend(" text")); |
| 116 EXPECT_EQ("text", TestAppend(" ", "text")); | 123 EXPECT_EQ("text", TestAppend(" ", "text")); |
| 117 EXPECT_EQ("text", TestAppend(" ", " text")); | 124 EXPECT_EQ("text", TestAppend(" ", " text")); |
| 118 } | 125 } |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 NGLayoutInlineItemsBuilder builder(&items_); | 175 NGLayoutInlineItemsBuilder builder(&items_); |
| 169 RefPtr<ComputedStyle> pre_wrap(CreateWhitespaceStyle(EWhiteSpace::kPreWrap)); | 176 RefPtr<ComputedStyle> pre_wrap(CreateWhitespaceStyle(EWhiteSpace::kPreWrap)); |
| 170 builder.Append("text ", pre_wrap.get()); | 177 builder.Append("text ", pre_wrap.get()); |
| 171 builder.Append(" text", style_.get()); | 178 builder.Append(" text", style_.get()); |
| 172 EXPECT_EQ("text text", builder.ToString()) | 179 EXPECT_EQ("text text", builder.ToString()) |
| 173 << "The whitespace in constructions like '<span style=\"white-space: " | 180 << "The whitespace in constructions like '<span style=\"white-space: " |
| 174 "pre-wrap\">text <span><span> text</span>' does not collapse."; | 181 "pre-wrap\">text <span><span> text</span>' does not collapse."; |
| 175 } | 182 } |
| 176 | 183 |
| 177 TEST_F(NGLayoutInlineItemsBuilderTest, CollapseZeroWidthSpaces) { | 184 TEST_F(NGLayoutInlineItemsBuilderTest, CollapseZeroWidthSpaces) { |
| 178 EXPECT_EQ("text text", TestAppend("text\ntext")) | |
| 179 << "Newline is converted to a space."; | |
| 180 | |
| 181 EXPECT_EQ(String(u"text\u200Btext"), TestAppend(u"text\u200B\ntext")) | 185 EXPECT_EQ(String(u"text\u200Btext"), TestAppend(u"text\u200B\ntext")) |
| 182 << "Newline is removed if the character before is ZWS."; | 186 << "Newline is removed if the character before is ZWS."; |
| 183 EXPECT_EQ(String(u"text\u200Btext"), TestAppend(u"text\n\u200Btext")) | 187 EXPECT_EQ(String(u"text\u200Btext"), TestAppend(u"text\n\u200Btext")) |
| 184 << "Newline is removed if the character after is ZWS."; | 188 << "Newline is removed if the character after is ZWS."; |
| 185 EXPECT_EQ(String(u"text\u200B\u200Btext"), | 189 EXPECT_EQ(String(u"text\u200B\u200Btext"), |
| 186 TestAppend(u"text\u200B\n\u200Btext")) | 190 TestAppend(u"text\u200B\n\u200Btext")) |
| 187 << "Newline is removed if the character before/after is ZWS."; | 191 << "Newline is removed if the character before/after is ZWS."; |
| 188 | 192 |
| 189 EXPECT_EQ(String(u"text\u200Btext"), TestAppend(u"text\n", u"\u200Btext")) | 193 EXPECT_EQ(String(u"text\u200Btext"), TestAppend(u"text\n", u"\u200Btext")) |
| 190 << "Newline is removed if the character after across elements is ZWS."; | 194 << "Newline is removed if the character after across elements is ZWS."; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 217 } | 221 } |
| 218 | 222 |
| 219 TEST_F(NGLayoutInlineItemsBuilderTest, CollapseAroundReplacedElement) { | 223 TEST_F(NGLayoutInlineItemsBuilderTest, CollapseAroundReplacedElement) { |
| 220 NGLayoutInlineItemsBuilder builder(&items_); | 224 NGLayoutInlineItemsBuilder builder(&items_); |
| 221 builder.Append("Hello ", style_.get()); | 225 builder.Append("Hello ", style_.get()); |
| 222 builder.Append(objectReplacementCharacter); | 226 builder.Append(objectReplacementCharacter); |
| 223 builder.Append(" World", style_.get()); | 227 builder.Append(" World", style_.get()); |
| 224 EXPECT_EQ(String(u"Hello \uFFFC World"), builder.ToString()); | 228 EXPECT_EQ(String(u"Hello \uFFFC World"), builder.ToString()); |
| 225 } | 229 } |
| 226 | 230 |
| 227 TEST_F(NGLayoutInlineItemsBuilderTest, AppendAsOpaqueToSpaceCollapsing) { | 231 TEST_F(NGLayoutInlineItemsBuilderTest, CollapseNewlineAfterObject) { |
| 228 NGLayoutInlineItemsBuilder builder(&items_); | 232 NGLayoutInlineItemsBuilder builder(&items_); |
| 229 builder.Append("Hello ", style_.get()); | 233 builder.Append(objectReplacementCharacter); |
| 230 builder.AppendAsOpaqueToSpaceCollapsing(firstStrongIsolateCharacter); | 234 builder.Append("\n", style_.get()); |
| 231 builder.Append(" World", style_.get()); | 235 builder.Append(objectReplacementCharacter); |
| 232 EXPECT_EQ(String(u"Hello \u2068World"), builder.ToString()); | 236 EXPECT_EQ(String(u"\uFFFC \uFFFC"), builder.ToString()); |
| 237 EXPECT_EQ(3u, items_.size()); |
| 238 EXPECT_EQ(nullptr, items_[0].Style()); |
| 239 EXPECT_EQ(style_.get(), items_[1].Style()); |
| 240 EXPECT_EQ(nullptr, items_[2].Style()); |
| 233 } | 241 } |
| 234 | 242 |
| 235 TEST_F(NGLayoutInlineItemsBuilderTest, AppendEmptyString) { | 243 TEST_F(NGLayoutInlineItemsBuilderTest, AppendEmptyString) { |
| 236 EXPECT_EQ("", TestAppend("")); | 244 EXPECT_EQ("", TestAppend("")); |
| 237 EXPECT_EQ(0u, items_.size()); | 245 EXPECT_EQ(0u, items_.size()); |
| 238 } | 246 } |
| 239 | 247 |
| 240 TEST_F(NGLayoutInlineItemsBuilderTest, Empty) { | 248 TEST_F(NGLayoutInlineItemsBuilderTest, Empty) { |
| 241 Vector<NGLayoutInlineItem> items; | 249 Vector<NGLayoutInlineItem> items; |
| 242 NGLayoutInlineItemsBuilder builder(&items); | 250 NGLayoutInlineItemsBuilder builder(&items); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 u"\u2068\u202E" | 326 u"\u2068\u202E" |
| 319 u"\u05E2\u05D1\u05E8\u05D9\u05EA" | 327 u"\u05E2\u05D1\u05E8\u05D9\u05EA" |
| 320 u"\u202C\u2069" | 328 u"\u202C\u2069" |
| 321 u" World"), | 329 u" World"), |
| 322 builder.ToString()); | 330 builder.ToString()); |
| 323 } | 331 } |
| 324 | 332 |
| 325 } // namespace | 333 } // namespace |
| 326 | 334 |
| 327 } // namespace blink | 335 } // namespace blink |
| OLD | NEW |