| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "third_party/blink/renderer/core/layout/ng/ng_constraint_space_builder.h" |
| |
| #include "third_party/blink/renderer/core/layout/ng/ng_layout_test.h" |
| |
| namespace blink { |
| namespace { |
| |
| using NGConstraintSpaceBuilderTest = NGLayoutTest; |
| |
| // Asserts that indefinite inline length becomes initial containing |
| // block width for horizontal-tb inside vertical document. |
| TEST(NGConstraintSpaceBuilderTest, AvailableSizeFromHorizontalICB) { |
| NGPhysicalSize icb_size{NGSizeIndefinite, LayoutUnit(51)}; |
| |
| NGConstraintSpaceBuilder horizontal_builder(WritingMode::kHorizontalTb, |
| WritingMode::kHorizontalTb, |
| icb_size, /* is_new_fc */ true); |
| NGLogicalSize fixed_size{LayoutUnit(100), LayoutUnit(200)}; |
| NGLogicalSize indefinite_size{NGSizeIndefinite, NGSizeIndefinite}; |
| |
| horizontal_builder.SetAvailableSize(fixed_size); |
| horizontal_builder.SetPercentageResolutionSize(fixed_size); |
| |
| NGConstraintSpaceBuilder vertical_builder( |
| horizontal_builder.ToConstraintSpace(), WritingMode::kVerticalLr, |
| /* is_new_fc */ true); |
| |
| vertical_builder.SetAvailableSize(indefinite_size); |
| vertical_builder.SetPercentageResolutionSize(indefinite_size); |
| |
| NGConstraintSpace space = vertical_builder.ToConstraintSpace(); |
| |
| EXPECT_EQ(space.AvailableSize().inline_size, icb_size.height); |
| EXPECT_EQ(space.PercentageResolutionInlineSize(), icb_size.height); |
| }; |
| |
| // Asserts that indefinite inline length becomes initial containing |
| // block height for vertical-lr inside horizontal document. |
| TEST(NGConstraintSpaceBuilderTest, AvailableSizeFromVerticalICB) { |
| NGPhysicalSize icb_size{LayoutUnit(51), NGSizeIndefinite}; |
| |
| NGConstraintSpaceBuilder horizontal_builder(WritingMode::kVerticalLr, |
| WritingMode::kVerticalLr, |
| icb_size, /* is_new_fc */ true); |
| NGLogicalSize fixed_size{LayoutUnit(100), LayoutUnit(200)}; |
| NGLogicalSize indefinite_size{NGSizeIndefinite, NGSizeIndefinite}; |
| |
| horizontal_builder.SetAvailableSize(fixed_size); |
| horizontal_builder.SetPercentageResolutionSize(fixed_size); |
| |
| NGConstraintSpaceBuilder vertical_builder( |
| horizontal_builder.ToConstraintSpace(), WritingMode::kHorizontalTb, |
| /* is_new_fc */ true); |
| |
| vertical_builder.SetAvailableSize(indefinite_size); |
| vertical_builder.SetPercentageResolutionSize(indefinite_size); |
| |
| NGConstraintSpace space = vertical_builder.ToConstraintSpace(); |
| |
| EXPECT_EQ(space.AvailableSize().inline_size, icb_size.width); |
| EXPECT_EQ(space.PercentageResolutionInlineSize(), icb_size.width); |
| }; |
| |
| } // namespace |
| |
| } // namespace blink |