From e0454e0b6556fef9a6b7894a11ba02b5d92bfde6 Mon Sep 17 00:00:00 2001 From: Daniel Robertson Date: Fri, 8 Apr 2016 17:51:02 -0400 Subject: [PATCH] Add tests and clean up *_mode_assign_inline_sizes Clean up block_mode_assign_inline_sizes and inline_mode_assign_inline_sizes and add extra css tests. --- components/layout/flex.rs | 21 +++--- tests/wpt/mozilla/meta/MANIFEST.json | 6 ++ .../css/flex-item-assign-inline-size.html | 67 +++++++++++++++++++ 3 files changed, 84 insertions(+), 10 deletions(-) create mode 100644 tests/wpt/mozilla/tests/css/flex-item-assign-inline-size.html diff --git a/components/layout/flex.rs b/components/layout/flex.rs index 4c8f749b0867..a506370c17f6 100644 --- a/components/layout/flex.rs +++ b/components/layout/flex.rs @@ -186,14 +186,20 @@ impl FlexFlow { // FIXME (mbrubeck): Get correct mode for absolute containing block let containing_block_mode = self.block_flow.base.writing_mode; + let container_block_size = match self.available_main_size { + AxisSize::Definite(length) => Some(length), + _ => None + }; + let container_inline_size = match self.available_cross_size { + AxisSize::Definite(length) => length, + AxisSize::MinMax(ref constraint) => constraint.clamp(content_inline_size), + AxisSize::Infinite => content_inline_size + }; let mut iterator = self.block_flow.base.child_iter_mut().enumerate().peekable(); while let Some((_, kid)) = iterator.next() { { let kid_base = flow::mut_base(kid); - kid_base.block_container_explicit_block_size = match self.available_main_size { - AxisSize::Definite(length) => Some(length), - _ => None - } + kid_base.block_container_explicit_block_size = container_block_size; } // The inline-start margin edge of the child flow is at our inline-start content edge, @@ -210,11 +216,7 @@ impl FlexFlow { inline_end_content_edge }; } - kid_base.block_container_inline_size = match self.available_main_size { - AxisSize::Definite(length) => length, - AxisSize::MinMax(ref constraint) => constraint.clamp(content_inline_size), - AxisSize::Infinite => content_inline_size, - }; + kid_base.block_container_inline_size = container_inline_size; kid_base.block_container_writing_mode = containing_block_mode; } } @@ -247,7 +249,6 @@ impl FlexFlow { let even_content_inline_size = inline_size / child_count; - let inline_size = self.block_flow.base.block_container_inline_size; let container_mode = self.block_flow.base.block_container_writing_mode; self.block_flow.base.position.size.inline = inline_size; diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index a8dc3b3dd290..5b6b0a286d8c 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -5709,6 +5709,12 @@ ] }, "testharness": { + "css/flex-item-assign-inline-size.html": [ + { + "path": "css/flex-item-assign-inline-size.html", + "url": "/_mozilla/css/flex-item-assign-inline-size.html" + } + ], "css/float_relative_to_position.html": [ { "path": "css/float_relative_to_position.html", diff --git a/tests/wpt/mozilla/tests/css/flex-item-assign-inline-size.html b/tests/wpt/mozilla/tests/css/flex-item-assign-inline-size.html new file mode 100644 index 000000000000..a6f0dd15169f --- /dev/null +++ b/tests/wpt/mozilla/tests/css/flex-item-assign-inline-size.html @@ -0,0 +1,67 @@ + + + + +Test inline size against percentage + + + +
+
+
+
+
+
+
+
+
+
+ + + + +