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

Side by Side Diff: third_party/WebKit/Source/core/layout/ng/ng_block_node_test.cc

Issue 2921463004: [LayoutNG] PODify NGLayoutInputNode and sub-classes. (Closed)
Patch Set: new ng-bot expectations Created 3 years, 6 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 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_block_node.h" 5 #include "core/layout/ng/ng_block_node.h"
6 6
7 #include "core/layout/LayoutTestHelper.h" 7 #include "core/layout/LayoutTestHelper.h"
8 #include "core/layout/ng/ng_box_fragment.h" 8 #include "core/layout/ng/ng_box_fragment.h"
9 #include "core/layout/ng/ng_min_max_content_size.h" 9 #include "core/layout/ng/ng_min_max_content_size.h"
10 #include "core/style/ComputedStyle.h" 10 #include "core/style/ComputedStyle.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 namespace blink { 13 namespace blink {
14 namespace { 14 namespace {
15 class NGBlockNodeForTest : public RenderingTest { 15 class NGBlockNodeForTest : public RenderingTest {
16 public: 16 public:
17 NGBlockNodeForTest() { RuntimeEnabledFeatures::setLayoutNGEnabled(true); } 17 NGBlockNodeForTest() { RuntimeEnabledFeatures::setLayoutNGEnabled(true); }
18 ~NGBlockNodeForTest() { RuntimeEnabledFeatures::setLayoutNGEnabled(false); }; 18 ~NGBlockNodeForTest() { RuntimeEnabledFeatures::setLayoutNGEnabled(false); };
19 }; 19 };
20 20
21 TEST_F(NGBlockNodeForTest, ChildInlineAndBlock) { 21 TEST_F(NGBlockNodeForTest, ChildInlineAndBlock) {
22 SetBodyInnerHTML(R"HTML( 22 SetBodyInnerHTML(R"HTML(
23 <!DOCTYPE html> 23 <!DOCTYPE html>
24 <div id=container>Hello!<div></div></div> 24 <div id=container>Hello!<div></div></div>
25 )HTML"); 25 )HTML");
26 NGBlockNode* container = 26 NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container")));
27 new NGBlockNode(GetLayoutObjectByElementId("container")); 27 NGLayoutInputNode child1 = container.FirstChild();
28 NGLayoutInputNode* child1 = container->FirstChild(); 28 EXPECT_TRUE(child1 && child1.IsBlock());
29 EXPECT_TRUE(child1 && child1->IsBlock()); 29 NGLayoutInputNode child2 = child1.NextSibling();
30 NGLayoutInputNode* child2 = child1->NextSibling(); 30 EXPECT_TRUE(child2 && child2.IsBlock());
31 EXPECT_TRUE(child2 && child2->IsBlock()); 31 NGLayoutInputNode child3 = child2.NextSibling();
32 NGLayoutInputNode* child3 = child2->NextSibling();
33 EXPECT_EQ(child3, nullptr); 32 EXPECT_EQ(child3, nullptr);
34 } 33 }
35 34
36 TEST_F(NGBlockNodeForTest, ChildBlockAndInline) { 35 TEST_F(NGBlockNodeForTest, ChildBlockAndInline) {
37 SetBodyInnerHTML(R"HTML( 36 SetBodyInnerHTML(R"HTML(
38 <!DOCTYPE html> 37 <!DOCTYPE html>
39 <div id=container><div></div>Hello!</div> 38 <div id=container><div></div>Hello!</div>
40 )HTML"); 39 )HTML");
41 NGBlockNode* container = 40 NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container")));
42 new NGBlockNode(GetLayoutObjectByElementId("container")); 41 NGLayoutInputNode child1 = container.FirstChild();
43 NGLayoutInputNode* child1 = container->FirstChild(); 42 EXPECT_TRUE(child1 && child1.IsBlock());
44 EXPECT_TRUE(child1 && child1->IsBlock()); 43 NGLayoutInputNode child2 = child1.NextSibling();
45 NGLayoutInputNode* child2 = child1->NextSibling(); 44 EXPECT_TRUE(child2 && child2.IsBlock());
46 EXPECT_TRUE(child2 && child2->IsBlock()); 45 NGLayoutInputNode child3 = child2.NextSibling();
47 NGLayoutInputNode* child3 = child2->NextSibling();
48 EXPECT_EQ(child3, nullptr); 46 EXPECT_EQ(child3, nullptr);
49 } 47 }
50 48
51 TEST_F(NGBlockNodeForTest, ChildFloatBeforeBlock) { 49 TEST_F(NGBlockNodeForTest, ChildFloatBeforeBlock) {
52 SetBodyInnerHTML(R"HTML( 50 SetBodyInnerHTML(R"HTML(
53 <!DOCTYPE html> 51 <!DOCTYPE html>
54 <style> 52 <style>
55 float { float: left; } 53 float { float: left; }
56 </style> 54 </style>
57 <div id=container><float></float><div></div></div> 55 <div id=container><float></float><div></div></div>
58 )HTML"); 56 )HTML");
59 NGBlockNode* container = 57 NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container")));
60 new NGBlockNode(GetLayoutObjectByElementId("container")); 58 NGLayoutInputNode child1 = container.FirstChild();
61 NGLayoutInputNode* child1 = container->FirstChild(); 59 EXPECT_TRUE(child1 && child1.IsBlock());
62 EXPECT_TRUE(child1 && child1->IsBlock()); 60 NGLayoutInputNode child2 = child1.NextSibling();
63 NGLayoutInputNode* child2 = child1->NextSibling(); 61 EXPECT_TRUE(child2 && child2.IsBlock());
64 EXPECT_TRUE(child2 && child2->IsBlock()); 62 NGLayoutInputNode child3 = child2.NextSibling();
65 NGLayoutInputNode* child3 = child2->NextSibling();
66 EXPECT_EQ(child3, nullptr); 63 EXPECT_EQ(child3, nullptr);
67 } 64 }
68 65
69 TEST_F(NGBlockNodeForTest, ChildFloatBeforeInline) { 66 TEST_F(NGBlockNodeForTest, ChildFloatBeforeInline) {
70 SetBodyInnerHTML(R"HTML( 67 SetBodyInnerHTML(R"HTML(
71 <!DOCTYPE html> 68 <!DOCTYPE html>
72 <style> 69 <style>
73 float { float: left; } 70 float { float: left; }
74 </style> 71 </style>
75 <div id=container><float></float>Hello!</div> 72 <div id=container><float></float>Hello!</div>
76 )HTML"); 73 )HTML");
77 NGBlockNode* container = 74 NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container")));
78 new NGBlockNode(GetLayoutObjectByElementId("container")); 75 NGLayoutInputNode child1 = container.FirstChild();
79 NGLayoutInputNode* child1 = container->FirstChild(); 76 EXPECT_TRUE(child1 && child1.IsBlock());
80 EXPECT_TRUE(child1 && child1->IsBlock()); 77 NGLayoutInputNode child2 = child1.NextSibling();
81 NGLayoutInputNode* child2 = child1->NextSibling(); 78 EXPECT_TRUE(child2 && child2.IsBlock());
82 EXPECT_TRUE(child2 && child2->IsBlock());
83 } 79 }
84 80
85 TEST_F(NGBlockNodeForTest, ChildFloatAfterInline) { 81 TEST_F(NGBlockNodeForTest, ChildFloatAfterInline) {
86 SetBodyInnerHTML(R"HTML( 82 SetBodyInnerHTML(R"HTML(
87 <!DOCTYPE html> 83 <!DOCTYPE html>
88 <style> 84 <style>
89 float { float: left; } 85 float { float: left; }
90 </style> 86 </style>
91 <div id=container>Hello<float></float></div> 87 <div id=container>Hello<float></float></div>
92 )HTML"); 88 )HTML");
93 NGBlockNode* container = 89 NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container")));
94 new NGBlockNode(GetLayoutObjectByElementId("container")); 90 NGLayoutInputNode child1 = container.FirstChild();
95 NGLayoutInputNode* child1 = container->FirstChild(); 91 EXPECT_TRUE(child1 && child1.IsInline());
96 EXPECT_TRUE(child1 && child1->IsInline()); 92 NGLayoutInputNode child2 = child1.NextSibling();
97 NGLayoutInputNode* child2 = child1->NextSibling();
98 EXPECT_EQ(child2, nullptr); 93 EXPECT_EQ(child2, nullptr);
99 } 94 }
100 95
101 TEST_F(NGBlockNodeForTest, ChildFloatOnly) { 96 TEST_F(NGBlockNodeForTest, ChildFloatOnly) {
102 SetBodyInnerHTML(R"HTML( 97 SetBodyInnerHTML(R"HTML(
103 <!DOCTYPE html> 98 <!DOCTYPE html>
104 <style> 99 <style>
105 float { float: left; } 100 float { float: left; }
106 </style> 101 </style>
107 <div id=container><float></float></div> 102 <div id=container><float></float></div>
108 )HTML"); 103 )HTML");
109 NGBlockNode* container = 104 NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container")));
110 new NGBlockNode(GetLayoutObjectByElementId("container")); 105 NGLayoutInputNode child1 = container.FirstChild();
111 NGLayoutInputNode* child1 = container->FirstChild(); 106 EXPECT_TRUE(child1 && child1.IsBlock());
112 EXPECT_TRUE(child1 && child1->IsBlock()); 107 NGLayoutInputNode child2 = child1.NextSibling();
113 NGLayoutInputNode* child2 = child1->NextSibling();
114 EXPECT_EQ(child2, nullptr); 108 EXPECT_EQ(child2, nullptr);
115 } 109 }
116 110
117 TEST_F(NGBlockNodeForTest, ChildFloatWithSpaces) { 111 TEST_F(NGBlockNodeForTest, ChildFloatWithSpaces) {
118 SetBodyInnerHTML(R"HTML( 112 SetBodyInnerHTML(R"HTML(
119 <!DOCTYPE html> 113 <!DOCTYPE html>
120 <style> 114 <style>
121 float { float: left; } 115 float { float: left; }
122 </style> 116 </style>
123 <div id=container> 117 <div id=container>
124 <float></float> 118 <float></float>
125 </div> 119 </div>
126 )HTML"); 120 )HTML");
127 NGBlockNode* container = 121 NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container")));
128 new NGBlockNode(GetLayoutObjectByElementId("container")); 122 NGLayoutInputNode child1 = container.FirstChild();
129 NGLayoutInputNode* child1 = container->FirstChild(); 123 EXPECT_TRUE(child1 && child1.IsBlock());
130 EXPECT_TRUE(child1 && child1->IsBlock()); 124 NGLayoutInputNode child2 = child1.NextSibling();
131 NGLayoutInputNode* child2 = child1->NextSibling();
132 EXPECT_EQ(child2, nullptr); 125 EXPECT_EQ(child2, nullptr);
133 } 126 }
134 127
135 TEST_F(NGBlockNodeForTest, ChildOofBeforeInline) { 128 TEST_F(NGBlockNodeForTest, ChildOofBeforeInline) {
136 SetBodyInnerHTML(R"HTML( 129 SetBodyInnerHTML(R"HTML(
137 <!DOCTYPE html> 130 <!DOCTYPE html>
138 <style> 131 <style>
139 oof { position: absolute; } 132 oof { position: absolute; }
140 </style> 133 </style>
141 <div id=container><oof></oof>Hello!</div> 134 <div id=container><oof></oof>Hello!</div>
142 )HTML"); 135 )HTML");
143 NGBlockNode* container = 136 NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container")));
144 new NGBlockNode(GetLayoutObjectByElementId("container")); 137 NGLayoutInputNode child1 = container.FirstChild();
145 NGLayoutInputNode* child1 = container->FirstChild(); 138 EXPECT_TRUE(child1 && child1.IsBlock());
146 EXPECT_TRUE(child1 && child1->IsBlock()); 139 NGLayoutInputNode child2 = child1.NextSibling();
147 NGLayoutInputNode* child2 = child1->NextSibling(); 140 EXPECT_TRUE(child2 && child2.IsBlock());
148 EXPECT_TRUE(child2 && child2->IsBlock());
149 } 141 }
150 142
151 TEST_F(NGBlockNodeForTest, ChildOofAfterInline) { 143 TEST_F(NGBlockNodeForTest, ChildOofAfterInline) {
152 SetBodyInnerHTML(R"HTML( 144 SetBodyInnerHTML(R"HTML(
153 <!DOCTYPE html> 145 <!DOCTYPE html>
154 <style> 146 <style>
155 oof { position: absolute; } 147 oof { position: absolute; }
156 </style> 148 </style>
157 <div id=container>Hello!<oof></oof></div> 149 <div id=container>Hello!<oof></oof></div>
158 )HTML"); 150 )HTML");
159 NGBlockNode* container = 151 NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container")));
160 new NGBlockNode(GetLayoutObjectByElementId("container")); 152 NGLayoutInputNode child1 = container.FirstChild();
161 NGLayoutInputNode* child1 = container->FirstChild(); 153 EXPECT_TRUE(child1 && child1.IsInline());
162 EXPECT_TRUE(child1 && child1->IsInline()); 154 NGLayoutInputNode child2 = child1.NextSibling();
163 NGLayoutInputNode* child2 = child1->NextSibling();
164 EXPECT_EQ(child2, nullptr); 155 EXPECT_EQ(child2, nullptr);
165 } 156 }
166 157
167 TEST_F(NGBlockNodeForTest, MinAndMaxContent) { 158 TEST_F(NGBlockNodeForTest, MinAndMaxContent) {
168 SetBodyInnerHTML(R"HTML( 159 SetBodyInnerHTML(R"HTML(
169 <div id="box" > 160 <div id="box" >
170 <div id="first_child" style="width:30px"> 161 <div id="first_child" style="width:30px">
171 </div> 162 </div>
172 </div> 163 </div>
173 )HTML"); 164 )HTML");
174 const int kWidth = 30; 165 const int kWidth = 30;
175 166
176 NGBlockNode* box = new NGBlockNode(GetLayoutObjectByElementId("box")); 167 NGBlockNode box(ToLayoutBox(GetLayoutObjectByElementId("box")));
177 MinMaxContentSize sizes = box->ComputeMinMaxContentSize(); 168 MinMaxContentSize sizes = box.ComputeMinMaxContentSize();
178 EXPECT_EQ(LayoutUnit(kWidth), sizes.min_content); 169 EXPECT_EQ(LayoutUnit(kWidth), sizes.min_content);
179 EXPECT_EQ(LayoutUnit(kWidth), sizes.max_content); 170 EXPECT_EQ(LayoutUnit(kWidth), sizes.max_content);
180 } 171 }
181 } // namespace 172 } // namespace
182 } // namespace blink 173 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/ng/ng_block_node.cc ('k') | third_party/WebKit/Source/core/layout/ng/ng_break_token.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698