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

Unified Diff: third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part_test.cc

Issue 2651393003: [layoutng] Propagate fixed descendants of abs. (Closed)
Patch Set: fixed1 is a reserved keyword on a mac Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
new file mode 100644
index 0000000000000000000000000000000000000000..c7fec0b567af2260e2c87ccbd562bfd3f398c3e6
--- /dev/null
+++ b/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part_test.cc
@@ -0,0 +1,82 @@
+// 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 "core/layout/ng/ng_out_of_flow_layout_part.h"
+
+#include "core/layout/LayoutTestHelper.h"
+#include "core/layout/ng/layout_ng_block_flow.h"
+
+namespace blink {
+namespace {
+
+class NGOutOfFlowLayoutPartTest : public RenderingTest {
+ public:
+ NGOutOfFlowLayoutPartTest() {
+ RuntimeEnabledFeatures::setLayoutNGEnabled(true);
+ };
+ ~NGOutOfFlowLayoutPartTest() {
+ RuntimeEnabledFeatures::setLayoutNGEnabled(false);
+ };
+};
+
+// Fixed blocks inside absolute blocks trigger otherwise unused while loop
+// inside NGOutOfFlowLayoutPart::Run.
+// This test exercises this loop by placing two fixed elements inside abs.
+TEST_F(NGOutOfFlowLayoutPartTest, FixedInsideAbs) {
+ setBodyInnerHTML(
+ R"HTML(
+ <style>
+ body{ padding:0px; margin:0px}
+ #rel { position:relative }
+ #abs {
+ position: absolute;
+ top:49px;
+ left:0px;
+ }
+ #pad {
+ width:100px;
+ height:50px;
+ }
+ #fixed1 {
+ position:fixed;
+ width:50px;
+ }
+ #fixed2 {
+ position:fixed;
+ top:9px;
+ left:7px;
+ }
+ </style>
+ <div id='rel'>
+ <div id='abs'>
+ <div id='pad'></div>
+ <div id='fixed1'>
+ <p>fixed static</p>
+ </div>
+ <div id='fixed2'>
+ <p>fixed plain</p>
+ </div>
+ </div>
+ </div>
+ )HTML");
+
+ // Test whether the oof fragments have been collected at NG->Legacy boundary.
+ Element* rel = document().getElementById("rel");
+ LayoutNGBlockFlow* block_flow = toLayoutNGBlockFlow(rel->layoutObject());
+ NGConstraintSpace* space =
+ NGConstraintSpace::CreateFromLayoutObject(*block_flow);
+ NGBlockNode node(block_flow);
+ RefPtr<NGPhysicalFragment> fragment = node.Layout(space);
+ EXPECT_EQ(fragment->OutOfFlowDescendants().size(), (size_t)2);
+
+ // Test the final result.
+ Element* fixed_1 = document().getElementById("fixed1");
+ Element* fixed_2 = document().getElementById("fixed2");
+ // fixed1 top is static: #abs.top + #pad.height
+ EXPECT_EQ(fixed_1->offsetTop(), LayoutUnit(99));
+ // fixed2 top is positioned: #fixed2.top
+ EXPECT_EQ(fixed_2->offsetTop(), LayoutUnit(9));
+};
+}
+}
« no previous file with comments | « third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698