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

Unified Diff: third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm_test.cc

Issue 2755143003: [LayoutNG] Make NGLineBuilder work with inline floats (Closed)
Patch Set: make setIsInPlacedTree to be available for LayoutNG Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/core/layout/ng/ng_space_utils.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm_test.cc
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm_test.cc b/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm_test.cc
index 6b10956bd53c8a565d43ff5ab6be84127f5d48a0..af6aa3cc09ba16609ec502c45fc22d28bf3e8f8f 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm_test.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm_test.cc
@@ -97,5 +97,119 @@ TEST_F(NGTextLayoutAlgorithmTest, TextFloatsAroundFloatsBefore) {
EXPECT_EQ(LayoutUnit(), inline_text_box3->x());
}
+// Verifies that text correctly flows around the inline float that fits on
+// the same text line.
+TEST_F(NGTextLayoutAlgorithmTest, TextFloatsAroundInlineFloatThatFitsOnLine) {
+ setBodyInnerHTML(R"HTML(
+ <!DOCTYPE html>
+ <style>
+ * {
+ font-family: "Arial", sans-serif;
+ font-size: 19px;
+ }
+ #container {
+ height: 200px; width: 200px; outline: solid orange;
+ }
+ #narrow-float {
+ float: left; width: 30px; height: 30px; background-color: blue;
+ }
+ </style>
+ <div id="container">
+ <span id="text">
+ The quick <div id="narrow-float"></div> brown fox jumps over the lazy
+ </span>
+ </div>
+ )HTML");
+ LayoutText* layout_text =
+ toLayoutText(getLayoutObjectByElementId("text")->slowFirstChild());
+ ASSERT(layout_text->hasTextBoxes());
+
+ InlineTextBox* inline_text_box1 = layout_text->firstTextBox();
+ // 30 == narrow-float's width.
+ EXPECT_EQ(LayoutUnit(30), inline_text_box1->x());
+
+ Element* narrow_float = document().getElementById("narrow-float");
+ // 8 == body's margin.
+ EXPECT_EQ(8, narrow_float->offsetLeft());
+ EXPECT_EQ(8, narrow_float->offsetTop());
+}
+
+// Verifies that the inline float got pushed to the next line if it doesn't
+// fit the current line.
+TEST_F(NGTextLayoutAlgorithmTest,
+ TextFloatsAroundInlineFloatThatDoesNotFitOnLine) {
+ setBodyInnerHTML(R"HTML(
+ <!DOCTYPE html>
+ <style>
+ * {
+ font-family: "Arial", sans-serif;
+ font-size: 19px;
+ }
+ #container {
+ height: 200px; width: 200px; outline: solid orange;
+ }
+ #wide-float {
+ float: left; width: 160px; height: 30px; background-color: red;
+ }
+ </style>
+ <div id="container">
+ <span id="text">
+ The quick <div id="wide-float"></div> brown fox jumps over the lazy dog
+ </span>
+ </div>
+ )HTML");
+ LayoutText* layout_text =
+ toLayoutText(getLayoutObjectByElementId("text")->slowFirstChild());
+ ASSERT(layout_text->hasTextBoxes());
+
+ InlineTextBox* inline_text_box1 = layout_text->firstTextBox();
+ EXPECT_EQ(LayoutUnit(), inline_text_box1->x());
+
+ Element* wide_float = document().getElementById("wide-float");
+ // 8 == body's margin.
+ EXPECT_EQ(8, wide_float->offsetLeft());
+}
+
+// Verifies that if an inline float pushed to the next line then all others
+// following inline floats positioned with respect to the float's top edge
+// alignment rule.
+TEST_F(NGTextLayoutAlgorithmTest,
+ FloatsArePositionedWithRespectToTopEdgeAlignmentRule) {
+ setBodyInnerHTML(R"HTML(
+ <!DOCTYPE html>
+ <style>
+ * {
+ font-family: "Arial", sans-serif;
+ font-size: 19px;
+ }
+ #container {
+ height: 200px; width: 200px; outline: solid orange;
+ }
+ #left-narrow {
+ float: left; width: 5px; height: 30px; background-color: blue;
+ }
+ #left-wide {
+ float: left; width: 160px; height: 30px; background-color: red;
+ }
+ </style>
+ <div id="container">
+ <span id="text">
+ The quick <div id="left-wide"></div> brown <div id="left-narrow"></div>
+ fox jumps over the lazy dog
+ </span>
+ </div>
+ )HTML");
+ Element* wide_float = document().getElementById("left-wide");
+ // 8 == body's margin.
+ EXPECT_EQ(8, wide_float->offsetLeft());
+
+ Element* narrow_float = document().getElementById("left-narrow");
+ // 160 float-wide's width + 8 body's margin.
+ EXPECT_EQ(160 + 8, narrow_float->offsetLeft());
+
+ // On the same line.
+ EXPECT_EQ(wide_float->offsetTop(), narrow_float->offsetTop());
+}
+
} // namespace
} // namespace blink
« no previous file with comments | « third_party/WebKit/Source/core/layout/ng/ng_space_utils.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698