aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/layout_2020/flexbox/construct.rs (renamed from components/layout_2020/flexbox.rs)41
-rw-r--r--components/layout_2020/flexbox/layout.rs33
-rw-r--r--components/layout_2020/flexbox/mod.rs21
-rw-r--r--components/style/properties/longhands/position.mako.rs15
-rw-r--r--components/style/properties/shorthands/position.mako.rs6
5 files changed, 71 insertions, 45 deletions
diff --git a/components/layout_2020/flexbox.rs b/components/layout_2020/flexbox/construct.rs
index 32ea3340ff7..e23858efe7f 100644
--- a/components/layout_2020/flexbox.rs
+++ b/components/layout_2020/flexbox/construct.rs
@@ -2,36 +2,21 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+use super::{FlexContainer, FlexLevelBox};
use crate::cell::ArcRefCell;
use crate::context::LayoutContext;
use crate::dom_traversal::{
BoxSlot, Contents, NodeAndStyleInfo, NodeExt, NonReplacedContents, TraversalHandler,
};
use crate::element_data::LayoutBox;
-use crate::formatting_contexts::{IndependentFormattingContext, IndependentLayout};
+use crate::formatting_contexts::IndependentFormattingContext;
use crate::fragments::Tag;
-use crate::positioned::{AbsolutelyPositionedBox, PositioningContext};
+use crate::positioned::AbsolutelyPositionedBox;
use crate::sizing::{BoxContentSizes, ContentSizes, ContentSizesRequest};
use crate::style_ext::DisplayGeneratingBox;
-use crate::ContainingBlock;
use rayon::iter::{IntoParallelIterator, ParallelIterator};
use std::borrow::Cow;
-use style::values::computed::Length;
use style::values::specified::text::TextDecorationLine;
-use style::Zero;
-
-// FIXME: `min-width: auto` is not zero: https://drafts.csswg.org/css-flexbox/#min-size-auto
-
-#[derive(Debug, Serialize)]
-pub(crate) struct FlexContainer {
- children: Vec<ArcRefCell<FlexLevelBox>>,
-}
-
-#[derive(Debug, Serialize)]
-pub(crate) enum FlexLevelBox {
- FlexItem(IndependentFormattingContext),
- OutOfFlowAbsolutelyPositionedBox(ArcRefCell<AbsolutelyPositionedBox>),
-}
impl FlexContainer {
pub fn construct<'dom>(
@@ -230,23 +215,3 @@ where
FlexContainer { children }
}
}
-
-impl FlexContainer {
- pub(crate) fn layout(
- &self,
- layout_context: &LayoutContext,
- positioning_context: &mut PositioningContext,
- containing_block: &ContainingBlock,
- tree_rank: usize,
- ) -> IndependentLayout {
- // FIXME
- let _ = layout_context;
- let _ = positioning_context;
- let _ = containing_block;
- let _ = tree_rank;
- IndependentLayout {
- fragments: Vec::new(),
- content_block_size: Length::zero(),
- }
- }
-}
diff --git a/components/layout_2020/flexbox/layout.rs b/components/layout_2020/flexbox/layout.rs
new file mode 100644
index 00000000000..1da062b7764
--- /dev/null
+++ b/components/layout_2020/flexbox/layout.rs
@@ -0,0 +1,33 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+
+use super::FlexContainer;
+use crate::context::LayoutContext;
+use crate::formatting_contexts::IndependentLayout;
+use crate::positioned::PositioningContext;
+use crate::ContainingBlock;
+use style::values::computed::Length;
+use style::Zero;
+
+// FIXME: `min-width: auto` is not zero: https://drafts.csswg.org/css-flexbox/#min-size-auto
+
+impl FlexContainer {
+ pub(crate) fn layout(
+ &self,
+ layout_context: &LayoutContext,
+ positioning_context: &mut PositioningContext,
+ containing_block: &ContainingBlock,
+ tree_rank: usize,
+ ) -> IndependentLayout {
+ // FIXME
+ let _ = layout_context;
+ let _ = positioning_context;
+ let _ = containing_block;
+ let _ = tree_rank;
+ IndependentLayout {
+ fragments: Vec::new(),
+ content_block_size: Length::zero(),
+ }
+ }
+}
diff --git a/components/layout_2020/flexbox/mod.rs b/components/layout_2020/flexbox/mod.rs
new file mode 100644
index 00000000000..c7aed0bd0e9
--- /dev/null
+++ b/components/layout_2020/flexbox/mod.rs
@@ -0,0 +1,21 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
+
+use crate::cell::ArcRefCell;
+use crate::formatting_contexts::IndependentFormattingContext;
+use crate::positioned::AbsolutelyPositionedBox;
+
+mod construct;
+mod layout;
+
+#[derive(Debug, Serialize)]
+pub(crate) struct FlexContainer {
+ children: Vec<ArcRefCell<FlexLevelBox>>,
+}
+
+#[derive(Debug, Serialize)]
+pub(crate) enum FlexLevelBox {
+ FlexItem(IndependentFormattingContext),
+ OutOfFlowAbsolutelyPositionedBox(ArcRefCell<AbsolutelyPositionedBox>),
+}
diff --git a/components/style/properties/longhands/position.mako.rs b/components/style/properties/longhands/position.mako.rs
index 239c2edd5cb..25354ab19af 100644
--- a/components/style/properties/longhands/position.mako.rs
+++ b/components/style/properties/longhands/position.mako.rs
@@ -72,7 +72,8 @@ ${helpers.predefined_type(
${helpers.single_keyword(
"flex-direction",
"row row-reverse column column-reverse",
- engines="gecko servo-2013",
+ engines="gecko servo-2013 servo-2020",
+ servo_2020_pref="layout.flexbox.enabled",
spec="https://drafts.csswg.org/css-flexbox/#flex-direction-property",
extra_prefixes="webkit",
animation_value_type="discrete",
@@ -83,7 +84,8 @@ ${helpers.single_keyword(
${helpers.single_keyword(
"flex-wrap",
"nowrap wrap wrap-reverse",
- engines="gecko servo-2013",
+ engines="gecko servo-2013 servo-2020",
+ servo_2020_pref="layout.flexbox.enabled",
spec="https://drafts.csswg.org/css-flexbox/#flex-wrap-property",
extra_prefixes="webkit",
animation_value_type="discrete",
@@ -205,7 +207,8 @@ ${helpers.predefined_type(
"flex-grow",
"NonNegativeNumber",
"From::from(0.0)",
- engines="gecko servo-2013",
+ engines="gecko servo-2013 servo-2020",
+ servo_2020_pref="layout.flexbox.enabled",
spec="https://drafts.csswg.org/css-flexbox/#flex-grow-property",
extra_prefixes="webkit",
animation_value_type="NonNegativeNumber",
@@ -216,7 +219,8 @@ ${helpers.predefined_type(
"flex-shrink",
"NonNegativeNumber",
"From::from(1.0)",
- engines="gecko servo-2013",
+ engines="gecko servo-2013 servo-2020",
+ servo_2020_pref="layout.flexbox.enabled",
spec="https://drafts.csswg.org/css-flexbox/#flex-shrink-property",
extra_prefixes="webkit",
animation_value_type="NonNegativeNumber",
@@ -278,7 +282,8 @@ ${helpers.predefined_type(
"flex-basis",
"FlexBasis",
"computed::FlexBasis::auto()",
- engines="gecko servo-2013",
+ engines="gecko servo-2013 servo-2020",
+ servo_2020_pref="layout.flexbox.enabled",
spec="https://drafts.csswg.org/css-flexbox/#flex-basis-property",
extra_prefixes="webkit",
animation_value_type="FlexBasis",
diff --git a/components/style/properties/shorthands/position.mako.rs b/components/style/properties/shorthands/position.mako.rs
index 48e56e6ef3c..ff9b5cd5790 100644
--- a/components/style/properties/shorthands/position.mako.rs
+++ b/components/style/properties/shorthands/position.mako.rs
@@ -5,7 +5,8 @@
<%namespace name="helpers" file="/helpers.mako.rs" />
<%helpers:shorthand name="flex-flow"
- engines="gecko servo-2013"
+ engines="gecko servo-2013 servo-2020",
+ servo_2020_pref="layout.flexbox.enabled",
sub_properties="flex-direction flex-wrap"
extra_prefixes="webkit"
derive_serialize="True"
@@ -45,7 +46,8 @@
</%helpers:shorthand>
<%helpers:shorthand name="flex"
- engines="gecko servo-2013"
+ engines="gecko servo-2013 servo-2020",
+ servo_2020_pref="layout.flexbox.enabled",
sub_properties="flex-grow flex-shrink flex-basis"
extra_prefixes="webkit"
derive_serialize="True"