// Copyright 2016 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_block_node.h" #include "third_party/blink/renderer/core/layout/min_max_sizes.h" #include "third_party/blink/renderer/core/layout/ng/ng_layout_test.h" namespace blink { namespace { using NGBlockNodeForTest = NGLayoutTest; TEST_F(NGBlockNodeForTest, IsFloatingForOutOfFlowFloating) { SetBodyInnerHTML(R"HTML(
)HTML"); NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container"))); EXPECT_FALSE(container.IsFloating()); } TEST_F(NGBlockNodeForTest, ChildInlineAndBlock) { SetBodyInnerHTML(R"HTML(
Hello!
)HTML"); NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container"))); NGLayoutInputNode child1 = container.FirstChild(); EXPECT_TRUE(child1 && child1.IsBlock()); NGLayoutInputNode child2 = child1.NextSibling(); EXPECT_TRUE(child2 && child2.IsBlock()); NGLayoutInputNode child3 = child2.NextSibling(); EXPECT_EQ(child3, nullptr); } TEST_F(NGBlockNodeForTest, ChildBlockAndInline) { SetBodyInnerHTML(R"HTML(
Hello!
)HTML"); NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container"))); NGLayoutInputNode child1 = container.FirstChild(); EXPECT_TRUE(child1 && child1.IsBlock()); NGLayoutInputNode child2 = child1.NextSibling(); EXPECT_TRUE(child2 && child2.IsBlock()); NGLayoutInputNode child3 = child2.NextSibling(); EXPECT_EQ(child3, nullptr); } TEST_F(NGBlockNodeForTest, ChildFloatBeforeBlock) { SetBodyInnerHTML(R"HTML(
)HTML"); NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container"))); NGLayoutInputNode child1 = container.FirstChild(); EXPECT_TRUE(child1 && child1.IsBlock()); NGLayoutInputNode child2 = child1.NextSibling(); EXPECT_TRUE(child2 && child2.IsBlock()); NGLayoutInputNode child3 = child2.NextSibling(); EXPECT_EQ(child3, nullptr); } TEST_F(NGBlockNodeForTest, ChildFloatBeforeInline) { SetBodyInnerHTML(R"HTML(
Hello!
)HTML"); NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container"))); NGLayoutInputNode child1 = container.FirstChild(); EXPECT_TRUE(child1 && child1.IsInline()); NGLayoutInputNode child2 = child1.NextSibling(); EXPECT_EQ(child2, nullptr); } TEST_F(NGBlockNodeForTest, ChildFloatAfterInline) { SetBodyInnerHTML(R"HTML(
Hello
)HTML"); NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container"))); NGLayoutInputNode child1 = container.FirstChild(); EXPECT_TRUE(child1 && child1.IsInline()); NGLayoutInputNode child2 = child1.NextSibling(); EXPECT_EQ(child2, nullptr); } TEST_F(NGBlockNodeForTest, ChildFloatOnly) { SetBodyInnerHTML(R"HTML(
)HTML"); NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container"))); NGLayoutInputNode child1 = container.FirstChild(); EXPECT_TRUE(child1 && child1.IsBlock()); NGLayoutInputNode child2 = child1.NextSibling(); EXPECT_EQ(child2, nullptr); } TEST_F(NGBlockNodeForTest, ChildFloatWithSpaces) { SetBodyInnerHTML(R"HTML(
)HTML"); NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container"))); NGLayoutInputNode child1 = container.FirstChild(); EXPECT_TRUE(child1 && child1.IsBlock()); NGLayoutInputNode child2 = child1.NextSibling(); EXPECT_EQ(child2, nullptr); } TEST_F(NGBlockNodeForTest, ChildOofBeforeInline) { SetBodyInnerHTML(R"HTML(
Hello!
)HTML"); NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container"))); NGLayoutInputNode child1 = container.FirstChild(); EXPECT_TRUE(child1 && child1.IsInline()); NGLayoutInputNode child2 = child1.NextSibling(); EXPECT_EQ(child2, nullptr); } TEST_F(NGBlockNodeForTest, ChildOofAfterInline) { SetBodyInnerHTML(R"HTML(
Hello!
)HTML"); NGBlockNode container(ToLayoutBox(GetLayoutObjectByElementId("container"))); NGLayoutInputNode child1 = container.FirstChild(); EXPECT_TRUE(child1 && child1.IsInline()); NGLayoutInputNode child2 = child1.NextSibling(); EXPECT_EQ(child2, nullptr); } TEST_F(NGBlockNodeForTest, MinAndMaxContent) { SetBodyInnerHTML(R"HTML(
)HTML"); const int kWidth = 30; NGBlockNode box(ToLayoutBox(GetLayoutObjectByElementId("box"))); MinMaxSizes sizes = box.ComputeMinMaxSizes( WritingMode::kHorizontalTb, MinMaxSizesInput( /* percentage_resolution_block_size */ LayoutUnit(), MinMaxSizesType::kContent)) .sizes; EXPECT_EQ(LayoutUnit(kWidth), sizes.min_size); EXPECT_EQ(LayoutUnit(kWidth), sizes.max_size); } } // namespace } // namespace blink