diff --git a/components/style/properties/data.py b/components/style/properties/data.py index 26cc7851c0e..642e1b4ebcc 100644 --- a/components/style/properties/data.py +++ b/components/style/properties/data.py @@ -476,6 +476,7 @@ class Longhand(Property): "OverflowClipBox", "OverflowWrap", "OverscrollBehavior", + "PageOrientation", "Percentage", "PrintColorAdjust", "Resize", diff --git a/components/style/properties/longhands/page.mako.rs b/components/style/properties/longhands/page.mako.rs index ec41989a137..aa5715db46b 100644 --- a/components/style/properties/longhands/page.mako.rs +++ b/components/style/properties/longhands/page.mako.rs @@ -29,3 +29,15 @@ ${helpers.predefined_type( spec="https://drafts.csswg.org/css-page-3/#using-named-pages", animation_value_type="discrete", )} + +${helpers.predefined_type( + "page-orientation", + "PageOrientation", + "computed::PageOrientation::Upright", + engines="gecko", + gecko_pref="layout.css.page-orientation.enabled", + initial_specified_value="specified::PageOrientation::Upright", + spec="https://drafts.csswg.org/css-page-3/#page-orientation-prop", + animation_value_type="none", + rule_types_allowed=PAGE_RULE, +)} diff --git a/components/style/values/computed/mod.rs b/components/style/values/computed/mod.rs index dac4c4f2467..e196826dcb9 100644 --- a/components/style/values/computed/mod.rs +++ b/components/style/values/computed/mod.rs @@ -81,7 +81,7 @@ pub use self::list::ListStyleType; pub use self::list::Quotes; pub use self::motion::{OffsetPath, OffsetRotate}; pub use self::outline::OutlineStyle; -pub use self::page::{PageName, PageSize, PageSizeOrientation, PaperSize}; +pub use self::page::{PageName, PageOrientation, PageSize, PageSizeOrientation, PaperSize}; pub use self::percentage::{NonNegativePercentage, Percentage}; pub use self::position::AspectRatio; pub use self::position::{ diff --git a/components/style/values/computed/page.rs b/components/style/values/computed/page.rs index d54fca329b4..6f71c912cfb 100644 --- a/components/style/values/computed/page.rs +++ b/components/style/values/computed/page.rs @@ -11,6 +11,7 @@ use crate::values::generics::size::Size2D; use crate::values::specified::page as specified; pub use generics::page::GenericPageSize; +pub use generics::page::PageOrientation; pub use generics::page::PageSizeOrientation; pub use generics::page::PaperSize; pub use specified::PageName; diff --git a/components/style/values/generics/page.rs b/components/style/values/generics/page.rs index ed81c9e5349..5c96a788f44 100644 --- a/components/style/values/generics/page.rs +++ b/components/style/values/generics/page.rs @@ -70,6 +70,22 @@ impl PaperSize { } } +/// Page orientation names. +/// +/// https://drafts.csswg.org/css-page-3/#page-orientation-prop +#[derive( + Clone, Copy, Debug, Eq, MallocSizeOf, Parse, PartialEq, SpecifiedValueInfo, ToComputedValue, ToCss, ToResolvedValue, ToShmem, +)] +#[repr(u8)] +pub enum PageOrientation { + /// upright + Upright, + /// rotate-left (counter-clockwise) + RotateLeft, + /// rotate-right (clockwise) + RotateRight, +} + /// Paper orientation /// /// https://drafts.csswg.org/css-page-3/#page-size-prop diff --git a/components/style/values/specified/mod.rs b/components/style/values/specified/mod.rs index fd1307f4e17..3b97173d37c 100644 --- a/components/style/values/specified/mod.rs +++ b/components/style/values/specified/mod.rs @@ -72,7 +72,7 @@ pub use self::list::ListStyleType; pub use self::list::Quotes; pub use self::motion::{OffsetPath, OffsetRotate}; pub use self::outline::OutlineStyle; -pub use self::page::{PageName, PageSize, PageSizeOrientation, PaperSize}; +pub use self::page::{PageName, PageOrientation, PageSize, PageSizeOrientation, PaperSize}; pub use self::percentage::{NonNegativePercentage, Percentage}; pub use self::position::AspectRatio; pub use self::position::{ diff --git a/components/style/values/specified/page.rs b/components/style/values/specified/page.rs index f8727a9c1d3..76d9105e8f3 100644 --- a/components/style/values/specified/page.rs +++ b/components/style/values/specified/page.rs @@ -11,6 +11,7 @@ use crate::values::{generics, CustomIdent}; use cssparser::Parser; use style_traits::ParseError; +pub use generics::page::PageOrientation; pub use generics::page::PageSizeOrientation; pub use generics::page::PaperSize; /// Specified value of the @page size descriptor