Index: third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part_test.cc |
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part_test.cc b/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part_test.cc |
index b4cfa988cc5fc65aa46f8945a4a904e9b625a870..c2b0ba66fab33c2c8788037916dc462c3896def6 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part_test.cc |
+++ b/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part_test.cc |
@@ -78,5 +78,84 @@ TEST_F(NGOutOfFlowLayoutPartTest, FixedInsideAbs) { |
// fixed2 top is positioned: #fixed2.top |
EXPECT_EQ(fixed_2->offsetTop(), LayoutUnit(9)); |
}; |
-} |
-} |
+ |
+TEST_F(NGOutOfFlowLayoutPartTest, OrthogonalWritingMode1) { |
+ setBodyInnerHTML( |
+ R"HTML( |
+ <style> |
+ #container { |
+ position: relative; |
+ writing-mode: horizontal-tb; |
+ width: 200px; |
+ height: 400px; |
+ } |
+ #abs-child { |
+ position: absolute; |
+ top: 10px; |
+ writing-mode: vertical-rl; |
+ width: auto; |
+ height: 30px; |
+ } |
+ </style> |
+ <div id="container"> |
+ <div id="abs-child"></div> |
+ </div> |
+ )HTML"); |
+ |
+ LayoutNGBlockFlow* block_flow = |
+ toLayoutNGBlockFlow(getLayoutObjectByElementId("container")); |
+ auto* node = new NGBlockNode(block_flow); |
+ RefPtr<NGConstraintSpace> space = |
+ NGConstraintSpace::CreateFromLayoutObject(*block_flow); |
+ |
+ RefPtr<const NGPhysicalFragment> fragment = |
+ node->Layout(space.get())->PhysicalFragment(); |
+ EXPECT_EQ(NGPhysicalSize(LayoutUnit(200), LayoutUnit(400)), fragment->Size()); |
+ |
+ fragment = toNGPhysicalBoxFragment(fragment.get())->Children()[0]; |
+ EXPECT_EQ(NGPhysicalSize(LayoutUnit(0), LayoutUnit(30)), fragment->Size()); |
+ EXPECT_EQ(NGPhysicalOffset(LayoutUnit(0), LayoutUnit(10)), |
+ fragment->Offset()); |
+}; |
+ |
+TEST_F(NGOutOfFlowLayoutPartTest, OrthogonalWritingMode2) { |
+ setBodyInnerHTML( |
+ R"HTML( |
+ <style> |
+ #container { |
+ position: relative; |
+ writing-mode: horizontal-tb; |
+ width: 200px; |
+ height: 400px; |
+ } |
+ #abs-child { |
+ position: absolute; |
+ top: 10px; |
+ writing-mode: vertical-rl; |
+ width: 20%; |
+ height: 30px; |
+ } |
+ </style> |
+ <div id="container"> |
+ <div id="abs-child"></div> |
+ </div> |
+ )HTML"); |
+ |
+ LayoutNGBlockFlow* block_flow = |
+ toLayoutNGBlockFlow(getLayoutObjectByElementId("container")); |
+ auto* node = new NGBlockNode(block_flow); |
+ RefPtr<NGConstraintSpace> space = |
+ NGConstraintSpace::CreateFromLayoutObject(*block_flow); |
+ |
+ RefPtr<const NGPhysicalFragment> fragment = |
+ node->Layout(space.get())->PhysicalFragment(); |
+ EXPECT_EQ(NGPhysicalSize(LayoutUnit(200), LayoutUnit(400)), fragment->Size()); |
+ |
+ fragment = toNGPhysicalBoxFragment(fragment.get())->Children()[0]; |
+ EXPECT_EQ(NGPhysicalSize(LayoutUnit(40), LayoutUnit(30)), fragment->Size()); |
+ EXPECT_EQ(NGPhysicalOffset(LayoutUnit(0), LayoutUnit(10)), |
+ fragment->Offset()); |
+}; |
+ |
+} // namespace |
+} // namespace blink |