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

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

Issue 2466913002: Reland of [LayoutNG] Remove simple constructors from NGPhysicalConstraintSpace. (Closed)
Patch Set: Created 4 years, 1 month 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 | « no previous file | third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc » ('j') | 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/ng/ng_block_layout_algorithm.h" 5 #include "core/layout/ng/ng_block_layout_algorithm.h"
6 6
7 #include "core/layout/ng/ng_box.h" 7 #include "core/layout/ng/ng_box.h"
8 #include "core/layout/ng/ng_constraint_space.h" 8 #include "core/layout/ng/ng_constraint_space.h"
9 #include "core/layout/ng/ng_constraint_space_builder.h"
9 #include "core/layout/ng/ng_physical_fragment.h" 10 #include "core/layout/ng/ng_physical_fragment.h"
10 #include "core/layout/ng/ng_length_utils.h" 11 #include "core/layout/ng/ng_length_utils.h"
11 #include "core/layout/ng/ng_units.h" 12 #include "core/layout/ng/ng_units.h"
12 #include "core/style/ComputedStyle.h" 13 #include "core/style/ComputedStyle.h"
13 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
14 15
15 namespace blink { 16 namespace blink {
16 namespace { 17 namespace {
17 18
18 NGConstraintSpace* ConstructConstraintSpace(NGWritingMode writing_mode, 19 NGConstraintSpace* ConstructConstraintSpace(NGWritingMode writing_mode,
19 NGDirection direction, 20 NGDirection direction,
20 NGPhysicalSize size) { 21 NGLogicalSize size) {
21 return new NGConstraintSpace(writing_mode, direction, 22 NGConstraintSpaceBuilder builder(writing_mode);
22 new NGPhysicalConstraintSpace(size)); 23 return new NGConstraintSpace(
24 writing_mode, direction,
25 builder.SetContainerSize(size).ToConstraintSpace());
23 } 26 }
24 27
25 class NGBlockLayoutAlgorithmTest : public ::testing::Test { 28 class NGBlockLayoutAlgorithmTest : public ::testing::Test {
26 protected: 29 protected:
27 void SetUp() override { style_ = ComputedStyle::create(); } 30 void SetUp() override { style_ = ComputedStyle::create(); }
28 31
29 NGPhysicalFragment* RunBlockLayoutAlgorithm(NGConstraintSpace* space, 32 NGPhysicalFragment* RunBlockLayoutAlgorithm(NGConstraintSpace* space,
30 NGBox* first_child) { 33 NGBox* first_child) {
31 NGBlockLayoutAlgorithm algorithm(style_, first_child, space); 34 NGBlockLayoutAlgorithm algorithm(style_, first_child, space);
32 NGPhysicalFragment* frag; 35 NGPhysicalFragment* frag;
33 while (!algorithm.Layout(&frag)) 36 while (!algorithm.Layout(&frag))
34 continue; 37 continue;
35 return frag; 38 return frag;
36 } 39 }
37 40
38 RefPtr<ComputedStyle> style_; 41 RefPtr<ComputedStyle> style_;
39 }; 42 };
40 43
41 TEST_F(NGBlockLayoutAlgorithmTest, FixedSize) { 44 TEST_F(NGBlockLayoutAlgorithmTest, FixedSize) {
42 style_->setWidth(Length(30, Fixed)); 45 style_->setWidth(Length(30, Fixed));
43 style_->setHeight(Length(40, Fixed)); 46 style_->setHeight(Length(40, Fixed));
44 47
45 auto* space = ConstructConstraintSpace( 48 auto* space = ConstructConstraintSpace(
46 HorizontalTopBottom, LeftToRight, 49 HorizontalTopBottom, LeftToRight,
47 NGPhysicalSize(LayoutUnit(100), NGSizeIndefinite)); 50 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
48 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, nullptr); 51 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, nullptr);
49 52
50 EXPECT_EQ(LayoutUnit(30), frag->Width()); 53 EXPECT_EQ(LayoutUnit(30), frag->Width());
51 EXPECT_EQ(LayoutUnit(40), frag->Height()); 54 EXPECT_EQ(LayoutUnit(40), frag->Height());
52 } 55 }
53 56
54 // Verifies that two children are laid out with the correct size and position. 57 // Verifies that two children are laid out with the correct size and position.
55 TEST_F(NGBlockLayoutAlgorithmTest, LayoutBlockChildren) { 58 TEST_F(NGBlockLayoutAlgorithmTest, LayoutBlockChildren) {
56 const int kWidth = 30; 59 const int kWidth = 30;
57 const int kHeight1 = 20; 60 const int kHeight1 = 20;
58 const int kHeight2 = 30; 61 const int kHeight2 = 30;
59 const int kMarginTop = 5; 62 const int kMarginTop = 5;
60 const int kMarginBottom = 20; 63 const int kMarginBottom = 20;
61 style_->setWidth(Length(kWidth, Fixed)); 64 style_->setWidth(Length(kWidth, Fixed));
62 65
63 RefPtr<ComputedStyle> first_style = ComputedStyle::create(); 66 RefPtr<ComputedStyle> first_style = ComputedStyle::create();
64 first_style->setHeight(Length(kHeight1, Fixed)); 67 first_style->setHeight(Length(kHeight1, Fixed));
65 NGBox* first_child = new NGBox(first_style.get()); 68 NGBox* first_child = new NGBox(first_style.get());
66 69
67 RefPtr<ComputedStyle> second_style = ComputedStyle::create(); 70 RefPtr<ComputedStyle> second_style = ComputedStyle::create();
68 second_style->setHeight(Length(kHeight2, Fixed)); 71 second_style->setHeight(Length(kHeight2, Fixed));
69 second_style->setMarginTop(Length(kMarginTop, Fixed)); 72 second_style->setMarginTop(Length(kMarginTop, Fixed));
70 second_style->setMarginBottom(Length(kMarginBottom, Fixed)); 73 second_style->setMarginBottom(Length(kMarginBottom, Fixed));
71 NGBox* second_child = new NGBox(second_style.get()); 74 NGBox* second_child = new NGBox(second_style.get());
72 75
73 first_child->SetNextSibling(second_child); 76 first_child->SetNextSibling(second_child);
74 77
75 auto* space = ConstructConstraintSpace( 78 auto* space = ConstructConstraintSpace(
76 HorizontalTopBottom, LeftToRight, 79 HorizontalTopBottom, LeftToRight,
77 NGPhysicalSize(LayoutUnit(100), NGSizeIndefinite)); 80 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
78 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, first_child); 81 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, first_child);
79 82
80 EXPECT_EQ(LayoutUnit(kWidth), frag->Width()); 83 EXPECT_EQ(LayoutUnit(kWidth), frag->Width());
81 EXPECT_EQ(LayoutUnit(kHeight1 + kHeight2 + kMarginTop), frag->Height()); 84 EXPECT_EQ(LayoutUnit(kHeight1 + kHeight2 + kMarginTop), frag->Height());
82 EXPECT_EQ(NGPhysicalFragmentBase::FragmentBox, frag->Type()); 85 EXPECT_EQ(NGPhysicalFragmentBase::FragmentBox, frag->Type());
83 ASSERT_EQ(frag->Children().size(), 2UL); 86 ASSERT_EQ(frag->Children().size(), 2UL);
84 87
85 const NGPhysicalFragmentBase* child = frag->Children()[0]; 88 const NGPhysicalFragmentBase* child = frag->Children()[0];
86 EXPECT_EQ(kHeight1, child->Height()); 89 EXPECT_EQ(kHeight1, child->Height());
87 EXPECT_EQ(0, child->TopOffset()); 90 EXPECT_EQ(0, child->TopOffset());
(...skipping 23 matching lines...) Expand all
111 114
112 RefPtr<ComputedStyle> div2_style = ComputedStyle::create(); 115 RefPtr<ComputedStyle> div2_style = ComputedStyle::create();
113 div2_style->setHeight(Length(kHeight, Fixed)); 116 div2_style->setHeight(Length(kHeight, Fixed));
114 div2_style->setWidth(Length(kWidth, Fixed)); 117 div2_style->setWidth(Length(kWidth, Fixed));
115 div1_style->setWritingMode(TopToBottomWritingMode); 118 div1_style->setWritingMode(TopToBottomWritingMode);
116 div2_style->setMarginLeft(Length(kMarginLeft, Fixed)); 119 div2_style->setMarginLeft(Length(kMarginLeft, Fixed));
117 NGBox* div2 = new NGBox(div2_style.get()); 120 NGBox* div2 = new NGBox(div2_style.get());
118 121
119 div1->SetFirstChild(div2); 122 div1->SetFirstChild(div2);
120 123
121 auto* space = ConstructConstraintSpace( 124 auto* space =
122 HorizontalTopBottom, LeftToRight, 125 ConstructConstraintSpace(HorizontalTopBottom, LeftToRight,
123 NGPhysicalSize(LayoutUnit(500), LayoutUnit(500))); 126 NGLogicalSize(LayoutUnit(500), LayoutUnit(500)));
124 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 127 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
125 128
126 const NGPhysicalFragmentBase* child = frag->Children()[0]; 129 const NGPhysicalFragmentBase* child = frag->Children()[0];
127 // DIV2 130 // DIV2
128 child = static_cast<const NGPhysicalFragment*>(child)->Children()[0]; 131 child = static_cast<const NGPhysicalFragment*>(child)->Children()[0];
129 132
130 EXPECT_EQ(kHeight, child->Height()); 133 EXPECT_EQ(kHeight, child->Height());
131 EXPECT_EQ(0, child->TopOffset()); 134 EXPECT_EQ(0, child->TopOffset());
132 EXPECT_EQ(kMarginLeft, child->LeftOffset()); 135 EXPECT_EQ(kMarginLeft, child->LeftOffset());
133 } 136 }
(...skipping 23 matching lines...) Expand all
157 160
158 // DIV2 161 // DIV2
159 RefPtr<ComputedStyle> div2_style = ComputedStyle::create(); 162 RefPtr<ComputedStyle> div2_style = ComputedStyle::create();
160 div2_style->setMarginTop(Length(kDiv2MarginTop, Fixed)); 163 div2_style->setMarginTop(Length(kDiv2MarginTop, Fixed));
161 NGBox* div2 = new NGBox(div2_style.get()); 164 NGBox* div2 = new NGBox(div2_style.get());
162 165
163 div1->SetFirstChild(div2); 166 div1->SetFirstChild(div2);
164 167
165 auto* space = ConstructConstraintSpace( 168 auto* space = ConstructConstraintSpace(
166 HorizontalTopBottom, LeftToRight, 169 HorizontalTopBottom, LeftToRight,
167 NGPhysicalSize(LayoutUnit(100), NGSizeIndefinite)); 170 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
168 space->SetIsNewFormattingContext(true); 171 space->SetIsNewFormattingContext(true);
169 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 172 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
170 173
171 EXPECT_TRUE(frag->MarginStrut().IsEmpty()); 174 EXPECT_TRUE(frag->MarginStrut().IsEmpty());
172 ASSERT_EQ(frag->Children().size(), 1UL); 175 ASSERT_EQ(frag->Children().size(), 1UL);
173 const NGPhysicalFragment* div2_fragment = 176 const NGPhysicalFragment* div2_fragment =
174 static_cast<const NGPhysicalFragment*>(frag->Children()[0].get()); 177 static_cast<const NGPhysicalFragment*>(frag->Children()[0].get());
175 EXPECT_EQ(NGMarginStrut({LayoutUnit(kDiv2MarginTop)}), 178 EXPECT_EQ(NGMarginStrut({LayoutUnit(kDiv2MarginTop)}),
176 div2_fragment->MarginStrut()); 179 div2_fragment->MarginStrut());
177 EXPECT_EQ(kDiv1MarginTop, div2_fragment->TopOffset()); 180 EXPECT_EQ(kDiv1MarginTop, div2_fragment->TopOffset());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 235
233 div1->SetFirstChild(div2); 236 div1->SetFirstChild(div2);
234 div2->SetNextSibling(div3); 237 div2->SetNextSibling(div3);
235 div1->SetNextSibling(div4); 238 div1->SetNextSibling(div4);
236 div4->SetNextSibling(div5); 239 div4->SetNextSibling(div5);
237 div5->SetFirstChild(div6); 240 div5->SetFirstChild(div6);
238 div6->SetNextSibling(div7); 241 div6->SetNextSibling(div7);
239 242
240 auto* space = ConstructConstraintSpace( 243 auto* space = ConstructConstraintSpace(
241 HorizontalTopBottom, LeftToRight, 244 HorizontalTopBottom, LeftToRight,
242 NGPhysicalSize(LayoutUnit(100), NGSizeIndefinite)); 245 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
243 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 246 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
244 247
245 ASSERT_EQ(frag->Children().size(), 3UL); 248 ASSERT_EQ(frag->Children().size(), 3UL);
246 249
247 // DIV1 250 // DIV1
248 const NGPhysicalFragmentBase* child = frag->Children()[0]; 251 const NGPhysicalFragmentBase* child = frag->Children()[0];
249 EXPECT_EQ(kHeight, child->Height()); 252 EXPECT_EQ(kHeight, child->Height());
250 EXPECT_EQ(0, child->TopOffset()); 253 EXPECT_EQ(0, child->TopOffset());
251 254
252 // DIV5 255 // DIV5
(...skipping 28 matching lines...) Expand all
281 // DIV2 284 // DIV2
282 RefPtr<ComputedStyle> div2_style = ComputedStyle::create(); 285 RefPtr<ComputedStyle> div2_style = ComputedStyle::create();
283 div2_style->setHeight(Length(kHeight, Fixed)); 286 div2_style->setHeight(Length(kHeight, Fixed));
284 div2_style->setMarginBottom(Length(kDiv2MarginBottom, Fixed)); 287 div2_style->setMarginBottom(Length(kDiv2MarginBottom, Fixed));
285 NGBox* div2 = new NGBox(div2_style.get()); 288 NGBox* div2 = new NGBox(div2_style.get());
286 289
287 div1->SetFirstChild(div2); 290 div1->SetFirstChild(div2);
288 291
289 auto* space = ConstructConstraintSpace( 292 auto* space = ConstructConstraintSpace(
290 HorizontalTopBottom, LeftToRight, 293 HorizontalTopBottom, LeftToRight,
291 NGPhysicalSize(LayoutUnit(100), NGSizeIndefinite)); 294 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
292 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 295 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
293 296
294 // Verify that margins are collapsed. 297 // Verify that margins are collapsed.
295 EXPECT_EQ(NGMarginStrut({LayoutUnit(0), LayoutUnit(kDiv2MarginBottom)}), 298 EXPECT_EQ(NGMarginStrut({LayoutUnit(0), LayoutUnit(kDiv2MarginBottom)}),
296 frag->MarginStrut()); 299 frag->MarginStrut());
297 300
298 // Verify that margins are NOT collapsed. 301 // Verify that margins are NOT collapsed.
299 div1_style->setHeight(Length(kHeight, Fixed)); 302 div1_style->setHeight(Length(kHeight, Fixed));
300 frag = RunBlockLayoutAlgorithm(space, div1); 303 frag = RunBlockLayoutAlgorithm(space, div1);
301 EXPECT_EQ(NGMarginStrut({LayoutUnit(0), LayoutUnit(kDiv1MarginBottom)}), 304 EXPECT_EQ(NGMarginStrut({LayoutUnit(0), LayoutUnit(kDiv1MarginBottom)}),
(...skipping 28 matching lines...) Expand all
330 RefPtr<ComputedStyle> div2_style = ComputedStyle::create(); 333 RefPtr<ComputedStyle> div2_style = ComputedStyle::create();
331 div2_style->setHeight(Length(kHeight, Fixed)); 334 div2_style->setHeight(Length(kHeight, Fixed));
332 div2_style->setMarginTop(Length(kDiv2Margin, Fixed)); 335 div2_style->setMarginTop(Length(kDiv2Margin, Fixed));
333 div2_style->setMarginBottom(Length(kDiv2Margin, Fixed)); 336 div2_style->setMarginBottom(Length(kDiv2Margin, Fixed));
334 NGBox* div2 = new NGBox(div2_style.get()); 337 NGBox* div2 = new NGBox(div2_style.get());
335 338
336 div1->SetFirstChild(div2); 339 div1->SetFirstChild(div2);
337 340
338 auto* space = ConstructConstraintSpace( 341 auto* space = ConstructConstraintSpace(
339 HorizontalTopBottom, LeftToRight, 342 HorizontalTopBottom, LeftToRight,
340 NGPhysicalSize(LayoutUnit(100), NGSizeIndefinite)); 343 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
341 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 344 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
342 345
343 // Verify that margins do NOT collapse. 346 // Verify that margins do NOT collapse.
344 frag = RunBlockLayoutAlgorithm(space, div1); 347 frag = RunBlockLayoutAlgorithm(space, div1);
345 EXPECT_EQ(NGMarginStrut({LayoutUnit(kDiv1Margin), LayoutUnit(kDiv1Margin)}), 348 EXPECT_EQ(NGMarginStrut({LayoutUnit(kDiv1Margin), LayoutUnit(kDiv1Margin)}),
346 frag->MarginStrut()); 349 frag->MarginStrut());
347 ASSERT_EQ(frag->Children().size(), 1UL); 350 ASSERT_EQ(frag->Children().size(), 1UL);
348 351
349 EXPECT_EQ(NGMarginStrut({LayoutUnit(kDiv2Margin), LayoutUnit(kDiv2Margin)}), 352 EXPECT_EQ(NGMarginStrut({LayoutUnit(kDiv2Margin), LayoutUnit(kDiv2Margin)}),
350 static_cast<const NGPhysicalFragment*>(frag->Children()[0].get()) 353 static_cast<const NGPhysicalFragment*>(frag->Children()[0].get())
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 NGBox* vertical_div = new NGBox(vertical_style.get()); 387 NGBox* vertical_div = new NGBox(vertical_style.get());
385 388
386 // Horizontal DIV 389 // Horizontal DIV
387 RefPtr<ComputedStyle> horizontal_style = ComputedStyle::create(); 390 RefPtr<ComputedStyle> horizontal_style = ComputedStyle::create();
388 horizontal_style->setMarginLeft(Length(kHorizontalDivMarginLeft, Fixed)); 391 horizontal_style->setMarginLeft(Length(kHorizontalDivMarginLeft, Fixed));
389 horizontal_style->setWritingMode(TopToBottomWritingMode); 392 horizontal_style->setWritingMode(TopToBottomWritingMode);
390 NGBox* horizontal_div = new NGBox(horizontal_style.get()); 393 NGBox* horizontal_div = new NGBox(horizontal_style.get());
391 394
392 vertical_div->SetNextSibling(horizontal_div); 395 vertical_div->SetNextSibling(horizontal_div);
393 396
394 auto* space = ConstructConstraintSpace( 397 auto* space =
395 VerticalLeftRight, LeftToRight, 398 ConstructConstraintSpace(VerticalLeftRight, LeftToRight,
396 NGPhysicalSize(LayoutUnit(500), LayoutUnit(500))); 399 NGLogicalSize(LayoutUnit(500), LayoutUnit(500)));
397 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, vertical_div); 400 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, vertical_div);
398 401
399 ASSERT_EQ(frag->Children().size(), 2UL); 402 ASSERT_EQ(frag->Children().size(), 2UL);
400 const NGPhysicalFragmentBase* child = frag->Children()[1]; 403 const NGPhysicalFragmentBase* child = frag->Children()[1];
401 // Horizontal div 404 // Horizontal div
402 EXPECT_EQ(0, child->TopOffset()); 405 EXPECT_EQ(0, child->TopOffset());
403 EXPECT_EQ(kVerticalDivWidth + kHorizontalDivMarginLeft, child->LeftOffset()); 406 EXPECT_EQ(kVerticalDivWidth + kHorizontalDivMarginLeft, child->LeftOffset());
404 } 407 }
405 408
406 // Verifies that the margin strut of a child with a different writing mode does 409 // Verifies that the margin strut of a child with a different writing mode does
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
442 445
443 // DIV3 446 // DIV3
444 RefPtr<ComputedStyle> div3_style = ComputedStyle::create(); 447 RefPtr<ComputedStyle> div3_style = ComputedStyle::create();
445 div3_style->setHeight(Length(kHeight, Fixed)); 448 div3_style->setHeight(Length(kHeight, Fixed));
446 div3_style->setMarginTop(Length(kMarginTop, Fixed)); 449 div3_style->setMarginTop(Length(kMarginTop, Fixed));
447 NGBox* div3 = new NGBox(div3_style.get()); 450 NGBox* div3 = new NGBox(div3_style.get());
448 451
449 div1->SetFirstChild(div2); 452 div1->SetFirstChild(div2);
450 div1->SetNextSibling(div3); 453 div1->SetNextSibling(div3);
451 454
452 auto* space = ConstructConstraintSpace( 455 auto* space =
453 HorizontalTopBottom, LeftToRight, 456 ConstructConstraintSpace(HorizontalTopBottom, LeftToRight,
454 NGPhysicalSize(LayoutUnit(500), LayoutUnit(500))); 457 NGLogicalSize(LayoutUnit(500), LayoutUnit(500)));
455 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 458 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
456 459
457 ASSERT_EQ(frag->Children().size(), 2UL); 460 ASSERT_EQ(frag->Children().size(), 2UL);
458 461
459 const NGPhysicalFragmentBase* child1 = frag->Children()[0]; 462 const NGPhysicalFragmentBase* child1 = frag->Children()[0];
460 EXPECT_EQ(0, child1->TopOffset()); 463 EXPECT_EQ(0, child1->TopOffset());
461 EXPECT_EQ(kHeight, child1->Height()); 464 EXPECT_EQ(kHeight, child1->Height());
462 465
463 const NGPhysicalFragmentBase* child2 = frag->Children()[1]; 466 const NGPhysicalFragmentBase* child2 = frag->Children()[1];
464 EXPECT_EQ(kHeight + std::max(kMarginBottom, kMarginTop), child2->TopOffset()); 467 EXPECT_EQ(kHeight + std::max(kMarginBottom, kMarginTop), child2->TopOffset());
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 div1_style->setPaddingLeft(Length(kPaddingLeft, Fixed)); 510 div1_style->setPaddingLeft(Length(kPaddingLeft, Fixed));
508 NGBox* div1 = new NGBox(div1_style.get()); 511 NGBox* div1 = new NGBox(div1_style.get());
509 512
510 RefPtr<ComputedStyle> div2_style = ComputedStyle::create(); 513 RefPtr<ComputedStyle> div2_style = ComputedStyle::create();
511 NGBox* div2 = new NGBox(div2_style.get()); 514 NGBox* div2 = new NGBox(div2_style.get());
512 515
513 div1->SetFirstChild(div2); 516 div1->SetFirstChild(div2);
514 517
515 auto* space = ConstructConstraintSpace( 518 auto* space = ConstructConstraintSpace(
516 HorizontalTopBottom, LeftToRight, 519 HorizontalTopBottom, LeftToRight,
517 NGPhysicalSize(LayoutUnit(1000), NGSizeIndefinite)); 520 NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite));
518 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 521 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
519 522
520 ASSERT_EQ(frag->Children().size(), 1UL); 523 ASSERT_EQ(frag->Children().size(), 1UL);
521 524
522 // div1 525 // div1
523 const NGPhysicalFragmentBase* child = frag->Children()[0]; 526 const NGPhysicalFragmentBase* child = frag->Children()[0];
524 EXPECT_EQ(kBorderLeft + kPaddingLeft + kWidth + kPaddingRight + kBorderRight, 527 EXPECT_EQ(kBorderLeft + kPaddingLeft + kWidth + kPaddingRight + kBorderRight,
525 child->Width()); 528 child->Width());
526 EXPECT_EQ(kBorderTop + kPaddingTop + kHeight + kPaddingBottom + kBorderBottom, 529 EXPECT_EQ(kBorderTop + kPaddingTop + kHeight + kPaddingBottom + kBorderBottom,
527 child->Height()); 530 child->Height());
(...skipping 13 matching lines...) Expand all
541 const int kWidth = 30; 544 const int kWidth = 30;
542 style_->setWidth(Length(kWidth, Fixed)); 545 style_->setWidth(Length(kWidth, Fixed));
543 style_->setPaddingLeft(Length(kPaddingLeft, Fixed)); 546 style_->setPaddingLeft(Length(kPaddingLeft, Fixed));
544 547
545 RefPtr<ComputedStyle> first_style = ComputedStyle::create(); 548 RefPtr<ComputedStyle> first_style = ComputedStyle::create();
546 first_style->setWidth(Length(40, Percent)); 549 first_style->setWidth(Length(40, Percent));
547 NGBox* first_child = new NGBox(first_style.get()); 550 NGBox* first_child = new NGBox(first_style.get());
548 551
549 auto* space = ConstructConstraintSpace( 552 auto* space = ConstructConstraintSpace(
550 HorizontalTopBottom, LeftToRight, 553 HorizontalTopBottom, LeftToRight,
551 NGPhysicalSize(LayoutUnit(100), NGSizeIndefinite)); 554 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
552 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, first_child); 555 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, first_child);
553 556
554 EXPECT_EQ(frag->Width(), LayoutUnit(kWidth + kPaddingLeft)); 557 EXPECT_EQ(frag->Width(), LayoutUnit(kWidth + kPaddingLeft));
555 EXPECT_EQ(frag->Type(), NGPhysicalFragmentBase::FragmentBox); 558 EXPECT_EQ(frag->Type(), NGPhysicalFragmentBase::FragmentBox);
556 ASSERT_EQ(frag->Children().size(), 1UL); 559 ASSERT_EQ(frag->Children().size(), 1UL);
557 560
558 const NGPhysicalFragmentBase* child = frag->Children()[0]; 561 const NGPhysicalFragmentBase* child = frag->Children()[0];
559 EXPECT_EQ(child->Width(), LayoutUnit(12)); 562 EXPECT_EQ(child->Width(), LayoutUnit(12));
560 } 563 }
561 564
562 // A very simple auto margin case. We rely on the tests in ng_length_utils_test 565 // A very simple auto margin case. We rely on the tests in ng_length_utils_test
563 // for the more complex cases; just make sure we handle auto at all here. 566 // for the more complex cases; just make sure we handle auto at all here.
564 TEST_F(NGBlockLayoutAlgorithmTest, AutoMargin) { 567 TEST_F(NGBlockLayoutAlgorithmTest, AutoMargin) {
565 const int kPaddingLeft = 10; 568 const int kPaddingLeft = 10;
566 const int kWidth = 30; 569 const int kWidth = 30;
567 style_->setWidth(Length(kWidth, Fixed)); 570 style_->setWidth(Length(kWidth, Fixed));
568 style_->setPaddingLeft(Length(kPaddingLeft, Fixed)); 571 style_->setPaddingLeft(Length(kPaddingLeft, Fixed));
569 572
570 RefPtr<ComputedStyle> first_style = ComputedStyle::create(); 573 RefPtr<ComputedStyle> first_style = ComputedStyle::create();
571 const int kChildWidth = 10; 574 const int kChildWidth = 10;
572 first_style->setWidth(Length(kChildWidth, Fixed)); 575 first_style->setWidth(Length(kChildWidth, Fixed));
573 first_style->setMarginLeft(Length(Auto)); 576 first_style->setMarginLeft(Length(Auto));
574 first_style->setMarginRight(Length(Auto)); 577 first_style->setMarginRight(Length(Auto));
575 NGBox* first_child = new NGBox(first_style.get()); 578 NGBox* first_child = new NGBox(first_style.get());
576 579
577 auto* space = ConstructConstraintSpace( 580 auto* space = ConstructConstraintSpace(
578 HorizontalTopBottom, LeftToRight, 581 HorizontalTopBottom, LeftToRight,
579 NGPhysicalSize(LayoutUnit(100), NGSizeIndefinite)); 582 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
580 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, first_child); 583 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, first_child);
581 584
582 EXPECT_EQ(LayoutUnit(kWidth + kPaddingLeft), frag->Width()); 585 EXPECT_EQ(LayoutUnit(kWidth + kPaddingLeft), frag->Width());
583 EXPECT_EQ(NGPhysicalFragmentBase::FragmentBox, frag->Type()); 586 EXPECT_EQ(NGPhysicalFragmentBase::FragmentBox, frag->Type());
584 EXPECT_EQ(LayoutUnit(kWidth + kPaddingLeft), frag->WidthOverflow()); 587 EXPECT_EQ(LayoutUnit(kWidth + kPaddingLeft), frag->WidthOverflow());
585 ASSERT_EQ(1UL, frag->Children().size()); 588 ASSERT_EQ(1UL, frag->Children().size());
586 589
587 const NGPhysicalFragmentBase* child = frag->Children()[0]; 590 const NGPhysicalFragmentBase* child = frag->Children()[0];
588 EXPECT_EQ(LayoutUnit(kChildWidth), child->Width()); 591 EXPECT_EQ(LayoutUnit(kChildWidth), child->Width());
589 EXPECT_EQ(LayoutUnit(kPaddingLeft + 10), child->LeftOffset()); 592 EXPECT_EQ(LayoutUnit(kPaddingLeft + 10), child->LeftOffset());
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 div3_style->setHeight(Length(kDiv3Size, Fixed)); 641 div3_style->setHeight(Length(kDiv3Size, Fixed));
639 div3_style->setMarginLeft(Length(kDiv3LeftMargin, Fixed)); 642 div3_style->setMarginLeft(Length(kDiv3LeftMargin, Fixed));
640 div3_style->setFloating(EFloat::Left); 643 div3_style->setFloating(EFloat::Left);
641 NGBox* div3 = new NGBox(div3_style.get()); 644 NGBox* div3 = new NGBox(div3_style.get());
642 645
643 div1->SetNextSibling(div2); 646 div1->SetNextSibling(div2);
644 div2->SetNextSibling(div3); 647 div2->SetNextSibling(div3);
645 648
646 auto* space = ConstructConstraintSpace( 649 auto* space = ConstructConstraintSpace(
647 HorizontalTopBottom, LeftToRight, 650 HorizontalTopBottom, LeftToRight,
648 NGPhysicalSize(LayoutUnit(kParentSize), LayoutUnit(kParentSize))); 651 NGLogicalSize(LayoutUnit(kParentSize), LayoutUnit(kParentSize)));
649 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 652 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
650 ASSERT_EQ(frag->Children().size(), 3UL); 653 ASSERT_EQ(frag->Children().size(), 3UL);
651 654
652 // DIV1 655 // DIV1
653 const NGPhysicalFragmentBase* child1 = frag->Children()[0]; 656 const NGPhysicalFragmentBase* child1 = frag->Children()[0];
654 EXPECT_EQ(kDiv1TopMargin, child1->TopOffset()); 657 EXPECT_EQ(kDiv1TopMargin, child1->TopOffset());
655 EXPECT_EQ(0, child1->LeftOffset()); 658 EXPECT_EQ(0, child1->LeftOffset());
656 659
657 // DIV2 660 // DIV2
658 const NGPhysicalFragmentBase* child2 = frag->Children()[1]; 661 const NGPhysicalFragmentBase* child2 = frag->Children()[1];
659 EXPECT_EQ(0, child2->TopOffset()); 662 EXPECT_EQ(0, child2->TopOffset());
660 EXPECT_EQ(kParentSize - kDiv2Size, child2->LeftOffset()); 663 EXPECT_EQ(kParentSize - kDiv2Size, child2->LeftOffset());
661 664
662 // DIV3 665 // DIV3
663 const NGPhysicalFragmentBase* child3 = frag->Children()[2]; 666 const NGPhysicalFragmentBase* child3 = frag->Children()[2];
664 EXPECT_EQ(kDiv2Size, child3->TopOffset()); 667 EXPECT_EQ(kDiv2Size, child3->TopOffset());
665 EXPECT_EQ(kDiv3LeftMargin, child3->LeftOffset()); 668 EXPECT_EQ(kDiv3LeftMargin, child3->LeftOffset());
666 } 669 }
667 } // namespace 670 } // namespace
668 } // namespace blink 671 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698