OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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_base_layout_algorithm_test.h" | 5 #include "core/layout/ng/ng_base_layout_algorithm_test.h" |
6 | 6 |
7 #include "core/dom/TagCollection.h" | 7 #include "core/dom/TagCollection.h" |
8 #include "core/layout/line/InlineTextBox.h" | 8 #include "core/layout/line/InlineTextBox.h" |
9 #include "core/layout/ng/inline/ng_inline_node.h" | 9 #include "core/layout/ng/inline/ng_inline_node.h" |
10 #include "core/layout/ng/inline/ng_physical_line_box_fragment.h" | 10 #include "core/layout/ng/inline/ng_physical_line_box_fragment.h" |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 auto* line_box = ToNGPhysicalLineBoxFragment(child.Get()); | 126 auto* line_box = ToNGPhysicalLineBoxFragment(child.Get()); |
127 EXPECT_EQ(1u, line_box->Children().size()); | 127 EXPECT_EQ(1u, line_box->Children().size()); |
128 for (const auto& text : line_box->Children()) | 128 for (const auto& text : line_box->Children()) |
129 text_fragments.push_back(ToNGPhysicalTextFragment(text.Get())); | 129 text_fragments.push_back(ToNGPhysicalTextFragment(text.Get())); |
130 } | 130 } |
131 | 131 |
132 LayoutText* layout_text = | 132 LayoutText* layout_text = |
133 ToLayoutText(GetLayoutObjectByElementId("text")->SlowFirstChild()); | 133 ToLayoutText(GetLayoutObjectByElementId("text")->SlowFirstChild()); |
134 DCHECK(layout_text->HasTextBoxes()); | 134 DCHECK(layout_text->HasTextBoxes()); |
135 | 135 |
136 ASSERT_EQ(4UL, text_fragments.size()); | 136 // Line break points may vary by minor differences in fonts. |
| 137 // The test is valid as long as we have 3 or more lines and their positions |
| 138 // are correct. |
| 139 EXPECT_GE(text_fragments.size(), 3UL); |
137 | 140 |
138 auto* text_fragment1 = text_fragments[0]; | 141 auto* text_fragment1 = text_fragments[0]; |
139 // 40 = #left-float1' width 30 + #left-float2 10 | 142 // 40 = #left-float1' width 30 + #left-float2 10 |
140 EXPECT_EQ(LayoutUnit(40), text_fragment1->LeftOffset()); | 143 EXPECT_EQ(LayoutUnit(40), text_fragment1->LeftOffset()); |
141 EXPECT_EQ("The quick ", text_fragment1->Text()); | |
142 InlineTextBox* inline_text_box1 = layout_text->FirstTextBox(); | 144 InlineTextBox* inline_text_box1 = layout_text->FirstTextBox(); |
143 EXPECT_EQ(LayoutUnit(40), inline_text_box1->X()); | 145 EXPECT_EQ(LayoutUnit(40), inline_text_box1->X()); |
144 | 146 |
145 auto* text_fragment2 = text_fragments[1]; | 147 auto* text_fragment2 = text_fragments[1]; |
146 // 40 = #left-float1' width 30 | 148 // 40 = #left-float1' width 30 |
147 EXPECT_EQ(LayoutUnit(30), text_fragment2->LeftOffset()); | 149 EXPECT_EQ(LayoutUnit(30), text_fragment2->LeftOffset()); |
148 EXPECT_EQ("brown fox ", text_fragment2->Text()); | |
149 InlineTextBox* inline_text_box2 = inline_text_box1->NextTextBox(); | 150 InlineTextBox* inline_text_box2 = inline_text_box1->NextTextBox(); |
150 EXPECT_EQ(LayoutUnit(30), inline_text_box2->X()); | 151 EXPECT_EQ(LayoutUnit(30), inline_text_box2->X()); |
151 | 152 |
152 auto* text_fragment3 = text_fragments[2]; | 153 auto* text_fragment3 = text_fragments[2]; |
153 EXPECT_EQ(LayoutUnit(), text_fragment3->LeftOffset()); | 154 EXPECT_EQ(LayoutUnit(), text_fragment3->LeftOffset()); |
154 EXPECT_EQ("jumps over the lazy ", text_fragment3->Text()); | |
155 InlineTextBox* inline_text_box3 = inline_text_box2->NextTextBox(); | 155 InlineTextBox* inline_text_box3 = inline_text_box2->NextTextBox(); |
156 EXPECT_EQ(LayoutUnit(), inline_text_box3->X()); | 156 EXPECT_EQ(LayoutUnit(), inline_text_box3->X()); |
157 } | 157 } |
158 | 158 |
159 // Verifies that text correctly flows around the inline float that fits on | 159 // Verifies that text correctly flows around the inline float that fits on |
160 // the same text line. | 160 // the same text line. |
161 TEST_F(NGInlineLayoutAlgorithmTest, TextFloatsAroundInlineFloatThatFitsOnLine) { | 161 TEST_F(NGInlineLayoutAlgorithmTest, TextFloatsAroundInlineFloatThatFitsOnLine) { |
162 SetBodyInnerHTML(R"HTML( | 162 SetBodyInnerHTML(R"HTML( |
163 <!DOCTYPE html> | 163 <!DOCTYPE html> |
164 <style> | 164 <style> |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
294 ToLayoutText(GetLayoutObjectByElementId("text")->SlowFirstChild()); | 294 ToLayoutText(GetLayoutObjectByElementId("text")->SlowFirstChild()); |
295 DCHECK(layout_text->HasTextBoxes()); | 295 DCHECK(layout_text->HasTextBoxes()); |
296 | 296 |
297 InlineTextBox* inline_text_box1 = layout_text->FirstTextBox(); | 297 InlineTextBox* inline_text_box1 = layout_text->FirstTextBox(); |
298 // 45 = sum of left's inline margins: 40 + left's width: 5 | 298 // 45 = sum of left's inline margins: 40 + left's width: 5 |
299 EXPECT_EQ(LayoutUnit(45), inline_text_box1->X()); | 299 EXPECT_EQ(LayoutUnit(45), inline_text_box1->X()); |
300 } | 300 } |
301 | 301 |
302 } // namespace | 302 } // namespace |
303 } // namespace blink | 303 } // namespace blink |
OLD | NEW |