diff options
-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.rs | 33 | ||||
-rw-r--r-- | components/layout_2020/flexbox/mod.rs | 21 | ||||
-rw-r--r-- | components/style/properties/longhands/position.mako.rs | 15 | ||||
-rw-r--r-- | components/style/properties/shorthands/position.mako.rs | 6 |
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" |