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

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

Issue 2555923002: Changed TextDirection to an enum class and renamed its members (Closed)
Patch Set: Rebase after reopen Created 3 years, 12 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_layout_algorithm.h" 5 #include "core/layout/ng/ng_block_layout_algorithm.h"
6 6
7 #include "core/layout/ng/ng_block_node.h" 7 #include "core/layout/ng/ng_block_node.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_constraint_space_builder.h"
10 #include "core/layout/ng/ng_physical_fragment_base.h" 10 #include "core/layout/ng/ng_physical_fragment_base.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 } 50 }
51 51
52 RefPtr<ComputedStyle> style_; 52 RefPtr<ComputedStyle> style_;
53 }; 53 };
54 54
55 TEST_F(NGBlockLayoutAlgorithmTest, FixedSize) { 55 TEST_F(NGBlockLayoutAlgorithmTest, FixedSize) {
56 style_->setWidth(Length(30, Fixed)); 56 style_->setWidth(Length(30, Fixed));
57 style_->setHeight(Length(40, Fixed)); 57 style_->setHeight(Length(40, Fixed));
58 58
59 auto* space = ConstructConstraintSpace( 59 auto* space = ConstructConstraintSpace(
60 kHorizontalTopBottom, LTR, 60 kHorizontalTopBottom, TextDirection::Ltr,
61 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)); 61 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
62 NGPhysicalFragmentBase* frag = RunBlockLayoutAlgorithm(space, nullptr); 62 NGPhysicalFragmentBase* frag = RunBlockLayoutAlgorithm(space, nullptr);
63 63
64 EXPECT_EQ(LayoutUnit(30), frag->Width()); 64 EXPECT_EQ(LayoutUnit(30), frag->Width());
65 EXPECT_EQ(LayoutUnit(40), frag->Height()); 65 EXPECT_EQ(LayoutUnit(40), frag->Height());
66 } 66 }
67 67
68 // Verifies that two children are laid out with the correct size and position. 68 // Verifies that two children are laid out with the correct size and position.
69 TEST_F(NGBlockLayoutAlgorithmTest, LayoutBlockChildren) { 69 TEST_F(NGBlockLayoutAlgorithmTest, LayoutBlockChildren) {
70 const int kWidth = 30; 70 const int kWidth = 30;
71 const int kHeight1 = 20; 71 const int kHeight1 = 20;
72 const int kHeight2 = 30; 72 const int kHeight2 = 30;
73 const int kMarginTop = 5; 73 const int kMarginTop = 5;
74 const int kMarginBottom = 20; 74 const int kMarginBottom = 20;
75 style_->setWidth(Length(kWidth, Fixed)); 75 style_->setWidth(Length(kWidth, Fixed));
76 76
77 RefPtr<ComputedStyle> first_style = ComputedStyle::create(); 77 RefPtr<ComputedStyle> first_style = ComputedStyle::create();
78 first_style->setHeight(Length(kHeight1, Fixed)); 78 first_style->setHeight(Length(kHeight1, Fixed));
79 NGBlockNode* first_child = new NGBlockNode(first_style.get()); 79 NGBlockNode* first_child = new NGBlockNode(first_style.get());
80 80
81 RefPtr<ComputedStyle> second_style = ComputedStyle::create(); 81 RefPtr<ComputedStyle> second_style = ComputedStyle::create();
82 second_style->setHeight(Length(kHeight2, Fixed)); 82 second_style->setHeight(Length(kHeight2, Fixed));
83 second_style->setMarginTop(Length(kMarginTop, Fixed)); 83 second_style->setMarginTop(Length(kMarginTop, Fixed));
84 second_style->setMarginBottom(Length(kMarginBottom, Fixed)); 84 second_style->setMarginBottom(Length(kMarginBottom, Fixed));
85 NGBlockNode* second_child = new NGBlockNode(second_style.get()); 85 NGBlockNode* second_child = new NGBlockNode(second_style.get());
86 86
87 first_child->SetNextSibling(second_child); 87 first_child->SetNextSibling(second_child);
88 88
89 auto* space = ConstructConstraintSpace( 89 auto* space = ConstructConstraintSpace(
90 kHorizontalTopBottom, LTR, 90 kHorizontalTopBottom, TextDirection::Ltr,
91 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)); 91 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
92 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, first_child); 92 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, first_child);
93 93
94 EXPECT_EQ(LayoutUnit(kWidth), frag->Width()); 94 EXPECT_EQ(LayoutUnit(kWidth), frag->Width());
95 EXPECT_EQ(LayoutUnit(kHeight1 + kHeight2 + kMarginTop), frag->Height()); 95 EXPECT_EQ(LayoutUnit(kHeight1 + kHeight2 + kMarginTop), frag->Height());
96 EXPECT_EQ(NGPhysicalFragmentBase::kFragmentBox, frag->Type()); 96 EXPECT_EQ(NGPhysicalFragmentBase::kFragmentBox, frag->Type());
97 ASSERT_EQ(frag->Children().size(), 2UL); 97 ASSERT_EQ(frag->Children().size(), 2UL);
98 98
99 const NGPhysicalFragmentBase* child = frag->Children()[0]; 99 const NGPhysicalFragmentBase* child = frag->Children()[0];
100 EXPECT_EQ(kHeight1, child->Height()); 100 EXPECT_EQ(kHeight1, child->Height());
(...skipping 25 matching lines...) Expand all
126 RefPtr<ComputedStyle> div2_style = ComputedStyle::create(); 126 RefPtr<ComputedStyle> div2_style = ComputedStyle::create();
127 div2_style->setHeight(Length(kHeight, Fixed)); 127 div2_style->setHeight(Length(kHeight, Fixed));
128 div2_style->setWidth(Length(kWidth, Fixed)); 128 div2_style->setWidth(Length(kWidth, Fixed));
129 div1_style->setWritingMode(TopToBottomWritingMode); 129 div1_style->setWritingMode(TopToBottomWritingMode);
130 div2_style->setMarginLeft(Length(kMarginLeft, Fixed)); 130 div2_style->setMarginLeft(Length(kMarginLeft, Fixed));
131 NGBlockNode* div2 = new NGBlockNode(div2_style.get()); 131 NGBlockNode* div2 = new NGBlockNode(div2_style.get());
132 132
133 div1->SetFirstChild(div2); 133 div1->SetFirstChild(div2);
134 134
135 auto* space = 135 auto* space =
136 ConstructConstraintSpace(kHorizontalTopBottom, LTR, 136 ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::Ltr,
137 NGLogicalSize(LayoutUnit(500), LayoutUnit(500))); 137 NGLogicalSize(LayoutUnit(500), LayoutUnit(500)));
138 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 138 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
139 139
140 const NGPhysicalFragmentBase* child = frag->Children()[0]; 140 const NGPhysicalFragmentBase* child = frag->Children()[0];
141 // DIV2 141 // DIV2
142 child = static_cast<const NGPhysicalFragment*>(child)->Children()[0]; 142 child = static_cast<const NGPhysicalFragment*>(child)->Children()[0];
143 143
144 EXPECT_EQ(kHeight, child->Height()); 144 EXPECT_EQ(kHeight, child->Height());
145 EXPECT_EQ(0, child->TopOffset()); 145 EXPECT_EQ(0, child->TopOffset());
146 EXPECT_EQ(kMarginLeft, child->LeftOffset()); 146 EXPECT_EQ(kMarginLeft, child->LeftOffset());
(...skipping 27 matching lines...) Expand all
174 div2_style->setMarginTop(Length(kDiv2MarginTop, Fixed)); 174 div2_style->setMarginTop(Length(kDiv2MarginTop, Fixed));
175 NGBlockNode* div2 = new NGBlockNode(div2_style.get()); 175 NGBlockNode* div2 = new NGBlockNode(div2_style.get());
176 176
177 div1->SetFirstChild(div2); 177 div1->SetFirstChild(div2);
178 178
179 auto* space = 179 auto* space =
180 NGConstraintSpaceBuilder(kHorizontalTopBottom) 180 NGConstraintSpaceBuilder(kHorizontalTopBottom)
181 .SetAvailableSize(NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)) 181 .SetAvailableSize(NGLogicalSize(LayoutUnit(100), NGSizeIndefinite))
182 .SetPercentageResolutionSize( 182 .SetPercentageResolutionSize(
183 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)) 183 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite))
184 .SetTextDirection(LTR) 184 .SetTextDirection(TextDirection::Ltr)
185 .SetIsNewFormattingContext(true) 185 .SetIsNewFormattingContext(true)
186 .ToConstraintSpace(); 186 .ToConstraintSpace();
187 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 187 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
188 188
189 EXPECT_TRUE(frag->MarginStrut().IsEmpty()); 189 EXPECT_TRUE(frag->MarginStrut().IsEmpty());
190 ASSERT_EQ(frag->Children().size(), 1UL); 190 ASSERT_EQ(frag->Children().size(), 1UL);
191 const NGPhysicalFragment* div2_fragment = 191 const NGPhysicalFragment* div2_fragment =
192 static_cast<const NGPhysicalFragment*>(frag->Children()[0].get()); 192 static_cast<const NGPhysicalFragment*>(frag->Children()[0].get());
193 EXPECT_EQ(NGMarginStrut({LayoutUnit(kDiv2MarginTop)}), 193 EXPECT_EQ(NGMarginStrut({LayoutUnit(kDiv2MarginTop)}),
194 div2_fragment->MarginStrut()); 194 div2_fragment->MarginStrut());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 NGBlockNode* div7 = new NGBlockNode(div7_style.get()); 249 NGBlockNode* div7 = new NGBlockNode(div7_style.get());
250 250
251 div1->SetFirstChild(div2); 251 div1->SetFirstChild(div2);
252 div2->SetNextSibling(div3); 252 div2->SetNextSibling(div3);
253 div1->SetNextSibling(div4); 253 div1->SetNextSibling(div4);
254 div4->SetNextSibling(div5); 254 div4->SetNextSibling(div5);
255 div5->SetFirstChild(div6); 255 div5->SetFirstChild(div6);
256 div6->SetNextSibling(div7); 256 div6->SetNextSibling(div7);
257 257
258 auto* space = ConstructConstraintSpace( 258 auto* space = ConstructConstraintSpace(
259 kHorizontalTopBottom, LTR, 259 kHorizontalTopBottom, TextDirection::Ltr,
260 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)); 260 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
261 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 261 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
262 262
263 ASSERT_EQ(frag->Children().size(), 3UL); 263 ASSERT_EQ(frag->Children().size(), 3UL);
264 264
265 // DIV1 265 // DIV1
266 const NGPhysicalFragmentBase* child = frag->Children()[0]; 266 const NGPhysicalFragmentBase* child = frag->Children()[0];
267 EXPECT_EQ(kHeight, child->Height()); 267 EXPECT_EQ(kHeight, child->Height());
268 EXPECT_EQ(0, child->TopOffset()); 268 EXPECT_EQ(0, child->TopOffset());
269 269
(...skipping 28 matching lines...) Expand all
298 298
299 // DIV2 299 // DIV2
300 RefPtr<ComputedStyle> div2_style = ComputedStyle::create(); 300 RefPtr<ComputedStyle> div2_style = ComputedStyle::create();
301 div2_style->setHeight(Length(kHeight, Fixed)); 301 div2_style->setHeight(Length(kHeight, Fixed));
302 div2_style->setMarginBottom(Length(kDiv2MarginBottom, Fixed)); 302 div2_style->setMarginBottom(Length(kDiv2MarginBottom, Fixed));
303 NGBlockNode* div2 = new NGBlockNode(div2_style.get()); 303 NGBlockNode* div2 = new NGBlockNode(div2_style.get());
304 304
305 div1->SetFirstChild(div2); 305 div1->SetFirstChild(div2);
306 306
307 auto* space = ConstructConstraintSpace( 307 auto* space = ConstructConstraintSpace(
308 kHorizontalTopBottom, LTR, 308 kHorizontalTopBottom, TextDirection::Ltr,
309 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)); 309 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
310 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 310 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
311 311
312 // Verify that margins are collapsed. 312 // Verify that margins are collapsed.
313 EXPECT_EQ(NGMarginStrut({LayoutUnit(0), LayoutUnit(kDiv2MarginBottom)}), 313 EXPECT_EQ(NGMarginStrut({LayoutUnit(0), LayoutUnit(kDiv2MarginBottom)}),
314 frag->MarginStrut()); 314 frag->MarginStrut());
315 315
316 // Verify that margins are NOT collapsed. 316 // Verify that margins are NOT collapsed.
317 div1_style->setHeight(Length(kHeight, Fixed)); 317 div1_style->setHeight(Length(kHeight, Fixed));
318 frag = RunBlockLayoutAlgorithm(space, div1); 318 frag = RunBlockLayoutAlgorithm(space, div1);
(...skipping 28 matching lines...) Expand all
347 // DIV2 347 // DIV2
348 RefPtr<ComputedStyle> div2_style = ComputedStyle::create(); 348 RefPtr<ComputedStyle> div2_style = ComputedStyle::create();
349 div2_style->setHeight(Length(kHeight, Fixed)); 349 div2_style->setHeight(Length(kHeight, Fixed));
350 div2_style->setMarginTop(Length(kDiv2Margin, Fixed)); 350 div2_style->setMarginTop(Length(kDiv2Margin, Fixed));
351 div2_style->setMarginBottom(Length(kDiv2Margin, Fixed)); 351 div2_style->setMarginBottom(Length(kDiv2Margin, Fixed));
352 NGBlockNode* div2 = new NGBlockNode(div2_style.get()); 352 NGBlockNode* div2 = new NGBlockNode(div2_style.get());
353 353
354 div1->SetFirstChild(div2); 354 div1->SetFirstChild(div2);
355 355
356 auto* space = ConstructConstraintSpace( 356 auto* space = ConstructConstraintSpace(
357 kHorizontalTopBottom, LTR, 357 kHorizontalTopBottom, TextDirection::Ltr,
358 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)); 358 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
359 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 359 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
360 360
361 // Verify that margins do NOT collapse. 361 // Verify that margins do NOT collapse.
362 frag = RunBlockLayoutAlgorithm(space, div1); 362 frag = RunBlockLayoutAlgorithm(space, div1);
363 EXPECT_EQ(NGMarginStrut({LayoutUnit(kDiv1Margin), LayoutUnit(kDiv1Margin)}), 363 EXPECT_EQ(NGMarginStrut({LayoutUnit(kDiv1Margin), LayoutUnit(kDiv1Margin)}),
364 frag->MarginStrut()); 364 frag->MarginStrut());
365 ASSERT_EQ(frag->Children().size(), 1UL); 365 ASSERT_EQ(frag->Children().size(), 1UL);
366 366
367 EXPECT_EQ(NGMarginStrut({LayoutUnit(kDiv2Margin), LayoutUnit(kDiv2Margin)}), 367 EXPECT_EQ(NGMarginStrut({LayoutUnit(kDiv2Margin), LayoutUnit(kDiv2Margin)}),
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 NGBlockNode* vertical_div = new NGBlockNode(vertical_style.get()); 402 NGBlockNode* vertical_div = new NGBlockNode(vertical_style.get());
403 403
404 // Horizontal DIV 404 // Horizontal DIV
405 RefPtr<ComputedStyle> horizontal_style = ComputedStyle::create(); 405 RefPtr<ComputedStyle> horizontal_style = ComputedStyle::create();
406 horizontal_style->setMarginLeft(Length(kHorizontalDivMarginLeft, Fixed)); 406 horizontal_style->setMarginLeft(Length(kHorizontalDivMarginLeft, Fixed));
407 horizontal_style->setWritingMode(TopToBottomWritingMode); 407 horizontal_style->setWritingMode(TopToBottomWritingMode);
408 NGBlockNode* horizontal_div = new NGBlockNode(horizontal_style.get()); 408 NGBlockNode* horizontal_div = new NGBlockNode(horizontal_style.get());
409 409
410 vertical_div->SetNextSibling(horizontal_div); 410 vertical_div->SetNextSibling(horizontal_div);
411 411
412 auto* space = ConstructConstraintSpace( 412 auto* space =
413 kVerticalLeftRight, LTR, NGLogicalSize(LayoutUnit(500), LayoutUnit(500))); 413 ConstructConstraintSpace(kVerticalLeftRight, TextDirection::Ltr,
414 NGLogicalSize(LayoutUnit(500), LayoutUnit(500)));
414 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, vertical_div); 415 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, vertical_div);
415 416
416 ASSERT_EQ(frag->Children().size(), 2UL); 417 ASSERT_EQ(frag->Children().size(), 2UL);
417 const NGPhysicalFragmentBase* child = frag->Children()[1]; 418 const NGPhysicalFragmentBase* child = frag->Children()[1];
418 // Horizontal div 419 // Horizontal div
419 EXPECT_EQ(0, child->TopOffset()); 420 EXPECT_EQ(0, child->TopOffset());
420 EXPECT_EQ(kVerticalDivWidth + kHorizontalDivMarginLeft, child->LeftOffset()); 421 EXPECT_EQ(kVerticalDivWidth + kHorizontalDivMarginLeft, child->LeftOffset());
421 } 422 }
422 423
423 // Verifies that the margin strut of a child with a different writing mode does 424 // Verifies that the margin strut of a child with a different writing mode does
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 // DIV3 461 // DIV3
461 RefPtr<ComputedStyle> div3_style = ComputedStyle::create(); 462 RefPtr<ComputedStyle> div3_style = ComputedStyle::create();
462 div3_style->setHeight(Length(kHeight, Fixed)); 463 div3_style->setHeight(Length(kHeight, Fixed));
463 div3_style->setMarginTop(Length(kMarginTop, Fixed)); 464 div3_style->setMarginTop(Length(kMarginTop, Fixed));
464 NGBlockNode* div3 = new NGBlockNode(div3_style.get()); 465 NGBlockNode* div3 = new NGBlockNode(div3_style.get());
465 466
466 div1->SetFirstChild(div2); 467 div1->SetFirstChild(div2);
467 div1->SetNextSibling(div3); 468 div1->SetNextSibling(div3);
468 469
469 auto* space = 470 auto* space =
470 ConstructConstraintSpace(kHorizontalTopBottom, LTR, 471 ConstructConstraintSpace(kHorizontalTopBottom, TextDirection::Ltr,
471 NGLogicalSize(LayoutUnit(500), LayoutUnit(500))); 472 NGLogicalSize(LayoutUnit(500), LayoutUnit(500)));
472 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 473 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
473 474
474 ASSERT_EQ(frag->Children().size(), 2UL); 475 ASSERT_EQ(frag->Children().size(), 2UL);
475 476
476 const NGPhysicalFragmentBase* child1 = frag->Children()[0]; 477 const NGPhysicalFragmentBase* child1 = frag->Children()[0];
477 EXPECT_EQ(0, child1->TopOffset()); 478 EXPECT_EQ(0, child1->TopOffset());
478 EXPECT_EQ(kHeight, child1->Height()); 479 EXPECT_EQ(kHeight, child1->Height());
479 480
480 const NGPhysicalFragmentBase* child2 = frag->Children()[1]; 481 const NGPhysicalFragmentBase* child2 = frag->Children()[1];
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 div1_style->setPaddingBottom(Length(kPaddingBottom, Fixed)); 524 div1_style->setPaddingBottom(Length(kPaddingBottom, Fixed));
524 div1_style->setPaddingLeft(Length(kPaddingLeft, Fixed)); 525 div1_style->setPaddingLeft(Length(kPaddingLeft, Fixed));
525 NGBlockNode* div1 = new NGBlockNode(div1_style.get()); 526 NGBlockNode* div1 = new NGBlockNode(div1_style.get());
526 527
527 RefPtr<ComputedStyle> div2_style = ComputedStyle::create(); 528 RefPtr<ComputedStyle> div2_style = ComputedStyle::create();
528 NGBlockNode* div2 = new NGBlockNode(div2_style.get()); 529 NGBlockNode* div2 = new NGBlockNode(div2_style.get());
529 530
530 div1->SetFirstChild(div2); 531 div1->SetFirstChild(div2);
531 532
532 auto* space = ConstructConstraintSpace( 533 auto* space = ConstructConstraintSpace(
533 kHorizontalTopBottom, LTR, 534 kHorizontalTopBottom, TextDirection::Ltr,
534 NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite)); 535 NGLogicalSize(LayoutUnit(1000), NGSizeIndefinite));
535 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 536 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
536 537
537 ASSERT_EQ(frag->Children().size(), 1UL); 538 ASSERT_EQ(frag->Children().size(), 1UL);
538 539
539 // div1 540 // div1
540 const NGPhysicalFragmentBase* child = frag->Children()[0]; 541 const NGPhysicalFragmentBase* child = frag->Children()[0];
541 EXPECT_EQ(kBorderLeft + kPaddingLeft + kWidth + kPaddingRight + kBorderRight, 542 EXPECT_EQ(kBorderLeft + kPaddingLeft + kWidth + kPaddingRight + kBorderRight,
542 child->Width()); 543 child->Width());
543 EXPECT_EQ(kBorderTop + kPaddingTop + kHeight + kPaddingBottom + kBorderBottom, 544 EXPECT_EQ(kBorderTop + kPaddingTop + kHeight + kPaddingBottom + kBorderBottom,
(...skipping 13 matching lines...) Expand all
557 const int kPaddingLeft = 10; 558 const int kPaddingLeft = 10;
558 const int kWidth = 30; 559 const int kWidth = 30;
559 style_->setWidth(Length(kWidth, Fixed)); 560 style_->setWidth(Length(kWidth, Fixed));
560 style_->setPaddingLeft(Length(kPaddingLeft, Fixed)); 561 style_->setPaddingLeft(Length(kPaddingLeft, Fixed));
561 562
562 RefPtr<ComputedStyle> first_style = ComputedStyle::create(); 563 RefPtr<ComputedStyle> first_style = ComputedStyle::create();
563 first_style->setWidth(Length(40, Percent)); 564 first_style->setWidth(Length(40, Percent));
564 NGBlockNode* first_child = new NGBlockNode(first_style.get()); 565 NGBlockNode* first_child = new NGBlockNode(first_style.get());
565 566
566 auto* space = ConstructConstraintSpace( 567 auto* space = ConstructConstraintSpace(
567 kHorizontalTopBottom, LTR, 568 kHorizontalTopBottom, TextDirection::Ltr,
568 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)); 569 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
569 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, first_child); 570 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, first_child);
570 571
571 EXPECT_EQ(LayoutUnit(kWidth + kPaddingLeft), frag->Width()); 572 EXPECT_EQ(LayoutUnit(kWidth + kPaddingLeft), frag->Width());
572 EXPECT_EQ(NGPhysicalFragmentBase::kFragmentBox, frag->Type()); 573 EXPECT_EQ(NGPhysicalFragmentBase::kFragmentBox, frag->Type());
573 ASSERT_EQ(frag->Children().size(), 1UL); 574 ASSERT_EQ(frag->Children().size(), 1UL);
574 575
575 const NGPhysicalFragmentBase* child = frag->Children()[0]; 576 const NGPhysicalFragmentBase* child = frag->Children()[0];
576 EXPECT_EQ(LayoutUnit(12), child->Width()); 577 EXPECT_EQ(LayoutUnit(12), child->Width());
577 } 578 }
578 579
579 // A very simple auto margin case. We rely on the tests in ng_length_utils_test 580 // A very simple auto margin case. We rely on the tests in ng_length_utils_test
580 // for the more complex cases; just make sure we handle auto at all here. 581 // for the more complex cases; just make sure we handle auto at all here.
581 TEST_F(NGBlockLayoutAlgorithmTest, AutoMargin) { 582 TEST_F(NGBlockLayoutAlgorithmTest, AutoMargin) {
582 const int kPaddingLeft = 10; 583 const int kPaddingLeft = 10;
583 const int kWidth = 30; 584 const int kWidth = 30;
584 style_->setWidth(Length(kWidth, Fixed)); 585 style_->setWidth(Length(kWidth, Fixed));
585 style_->setPaddingLeft(Length(kPaddingLeft, Fixed)); 586 style_->setPaddingLeft(Length(kPaddingLeft, Fixed));
586 587
587 RefPtr<ComputedStyle> first_style = ComputedStyle::create(); 588 RefPtr<ComputedStyle> first_style = ComputedStyle::create();
588 const int kChildWidth = 10; 589 const int kChildWidth = 10;
589 first_style->setWidth(Length(kChildWidth, Fixed)); 590 first_style->setWidth(Length(kChildWidth, Fixed));
590 first_style->setMarginLeft(Length(Auto)); 591 first_style->setMarginLeft(Length(Auto));
591 first_style->setMarginRight(Length(Auto)); 592 first_style->setMarginRight(Length(Auto));
592 NGBlockNode* first_child = new NGBlockNode(first_style.get()); 593 NGBlockNode* first_child = new NGBlockNode(first_style.get());
593 594
594 auto* space = ConstructConstraintSpace( 595 auto* space = ConstructConstraintSpace(
595 kHorizontalTopBottom, LTR, 596 kHorizontalTopBottom, TextDirection::Ltr,
596 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite)); 597 NGLogicalSize(LayoutUnit(100), NGSizeIndefinite));
597 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, first_child); 598 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, first_child);
598 599
599 EXPECT_EQ(LayoutUnit(kWidth + kPaddingLeft), frag->Width()); 600 EXPECT_EQ(LayoutUnit(kWidth + kPaddingLeft), frag->Width());
600 EXPECT_EQ(NGPhysicalFragmentBase::kFragmentBox, frag->Type()); 601 EXPECT_EQ(NGPhysicalFragmentBase::kFragmentBox, frag->Type());
601 EXPECT_EQ(LayoutUnit(kWidth + kPaddingLeft), frag->WidthOverflow()); 602 EXPECT_EQ(LayoutUnit(kWidth + kPaddingLeft), frag->WidthOverflow());
602 ASSERT_EQ(1UL, frag->Children().size()); 603 ASSERT_EQ(1UL, frag->Children().size());
603 604
604 const NGPhysicalFragmentBase* child = frag->Children()[0]; 605 const NGPhysicalFragmentBase* child = frag->Children()[0];
605 EXPECT_EQ(LayoutUnit(kChildWidth), child->Width()); 606 EXPECT_EQ(LayoutUnit(kChildWidth), child->Width());
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 div4_style->setHeight(Length(kDiv4Size, Fixed)); 667 div4_style->setHeight(Length(kDiv4Size, Fixed));
667 div4_style->setMarginLeft(Length(kDiv4LeftMargin, Fixed)); 668 div4_style->setMarginLeft(Length(kDiv4LeftMargin, Fixed));
668 div4_style->setFloating(EFloat::Left); 669 div4_style->setFloating(EFloat::Left);
669 NGBlockNode* div4 = new NGBlockNode(div4_style.get()); 670 NGBlockNode* div4 = new NGBlockNode(div4_style.get());
670 671
671 div1->SetNextSibling(div2); 672 div1->SetNextSibling(div2);
672 div2->SetNextSibling(div3); 673 div2->SetNextSibling(div3);
673 div3->SetNextSibling(div4); 674 div3->SetNextSibling(div4);
674 675
675 auto* space = ConstructConstraintSpace( 676 auto* space = ConstructConstraintSpace(
676 kHorizontalTopBottom, LTR, 677 kHorizontalTopBottom, TextDirection::Ltr,
677 NGLogicalSize(LayoutUnit(kParentSize), LayoutUnit(kParentSize))); 678 NGLogicalSize(LayoutUnit(kParentSize), LayoutUnit(kParentSize)));
678 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 679 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
679 ASSERT_EQ(frag->Children().size(), 4UL); 680 ASSERT_EQ(frag->Children().size(), 4UL);
680 681
681 // DIV1 682 // DIV1
682 const NGPhysicalFragmentBase* child1 = frag->Children()[0]; 683 const NGPhysicalFragmentBase* child1 = frag->Children()[0];
683 EXPECT_EQ(kDiv1TopMargin, child1->TopOffset()); 684 EXPECT_EQ(kDiv1TopMargin, child1->TopOffset());
684 EXPECT_EQ(kParentLeftPadding, child1->LeftOffset()); 685 EXPECT_EQ(kParentLeftPadding, child1->LeftOffset());
685 686
686 // DIV2 687 // DIV2
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 div3_style->setWidth(Length(kDiv3Size, Fixed)); 744 div3_style->setWidth(Length(kDiv3Size, Fixed));
744 div3_style->setHeight(Length(kDiv3Size, Fixed)); 745 div3_style->setHeight(Length(kDiv3Size, Fixed));
745 NGBlockNode* div3 = new NGBlockNode(div3_style.get()); 746 NGBlockNode* div3 = new NGBlockNode(div3_style.get());
746 747
747 div1->SetNextSibling(div2); 748 div1->SetNextSibling(div2);
748 div2->SetNextSibling(div3); 749 div2->SetNextSibling(div3);
749 750
750 // clear: left; 751 // clear: left;
751 div3_style->setClear(EClear::ClearLeft); 752 div3_style->setClear(EClear::ClearLeft);
752 auto* space = ConstructConstraintSpace( 753 auto* space = ConstructConstraintSpace(
753 kHorizontalTopBottom, LTR, 754 kHorizontalTopBottom, TextDirection::Ltr,
754 NGLogicalSize(LayoutUnit(kParentSize), LayoutUnit(kParentSize))); 755 NGLogicalSize(LayoutUnit(kParentSize), LayoutUnit(kParentSize)));
755 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1); 756 NGPhysicalFragment* frag = RunBlockLayoutAlgorithm(space, div1);
756 const NGPhysicalFragmentBase* child3 = frag->Children()[2]; 757 const NGPhysicalFragmentBase* child3 = frag->Children()[2];
757 EXPECT_EQ(kDiv1Size, child3->TopOffset()); 758 EXPECT_EQ(kDiv1Size, child3->TopOffset());
758 759
759 // clear: right; 760 // clear: right;
760 div3_style->setClear(EClear::ClearRight); 761 div3_style->setClear(EClear::ClearRight);
761 space = ConstructConstraintSpace( 762 space = ConstructConstraintSpace(
762 kHorizontalTopBottom, LTR, 763 kHorizontalTopBottom, TextDirection::Ltr,
763 NGLogicalSize(LayoutUnit(kParentSize), LayoutUnit(kParentSize))); 764 NGLogicalSize(LayoutUnit(kParentSize), LayoutUnit(kParentSize)));
764 frag = RunBlockLayoutAlgorithm(space, div1); 765 frag = RunBlockLayoutAlgorithm(space, div1);
765 child3 = frag->Children()[2]; 766 child3 = frag->Children()[2];
766 EXPECT_EQ(kDiv1Size + kDiv2Size, child3->TopOffset()); 767 EXPECT_EQ(kDiv1Size + kDiv2Size, child3->TopOffset());
767 768
768 // clear: both; 769 // clear: both;
769 div3_style->setClear(EClear::ClearBoth); 770 div3_style->setClear(EClear::ClearBoth);
770 space = ConstructConstraintSpace( 771 space = ConstructConstraintSpace(
771 kHorizontalTopBottom, LTR, 772 kHorizontalTopBottom, TextDirection::Ltr,
772 NGLogicalSize(LayoutUnit(kParentSize), LayoutUnit(kParentSize))); 773 NGLogicalSize(LayoutUnit(kParentSize), LayoutUnit(kParentSize)));
773 frag = RunBlockLayoutAlgorithm(space, div1); 774 frag = RunBlockLayoutAlgorithm(space, div1);
774 space = ConstructConstraintSpace( 775 space = ConstructConstraintSpace(
775 kHorizontalTopBottom, LTR, 776 kHorizontalTopBottom, TextDirection::Ltr,
776 NGLogicalSize(LayoutUnit(kParentSize), LayoutUnit(kParentSize))); 777 NGLogicalSize(LayoutUnit(kParentSize), LayoutUnit(kParentSize)));
777 child3 = frag->Children()[2]; 778 child3 = frag->Children()[2];
778 EXPECT_EQ(kDiv1Size + kDiv2Size, child3->TopOffset()); 779 EXPECT_EQ(kDiv1Size + kDiv2Size, child3->TopOffset());
779 } 780 }
780 781
781 } // namespace 782 } // namespace
782 } // namespace blink 783 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698