aboutsummaryrefslogtreecommitdiffstats
path: root/components/style/properties/computed_value_flags.rs
diff options
context:
space:
mode:
authorDelan Azabani <dazabani@igalia.com>2024-02-27 23:39:06 +0800
committerGitHub <noreply@github.com>2024-02-27 15:39:06 +0000
commitfaf754dfa655f0b9a28f62bc47a78fbf78ebcaf4 (patch)
tree4725e1446680d036797b1fc258733ae6b2c9f354 /components/style/properties/computed_value_flags.rs
parentb07505417e629bbb081be9683630f2d7a5f50544 (diff)
downloadservo-faf754dfa655f0b9a28f62bc47a78fbf78ebcaf4.tar.gz
servo-faf754dfa655f0b9a28f62bc47a78fbf78ebcaf4.zip
Move Stylo to its own repo (#31350)
* Remove packages that were moved to external repo * Add workspace dependencies pointing to 2023-06-14 branch * Fix servo-tidy.toml errors * Update commit to include #31346 * Update commit to include servo/stylo#2 * Move css-properties.json lookup to target/doc/stylo * Remove dependency on vendored mako in favour of pypi dependency This also removes etc/ci/generate_workflow.py, which has been unused since at least 9e71bd6a7010d6e5723831696ae0ebe26b47682f. * Add temporary code to debug Windows test failures * Fix failures on Windows due to custom target dir * Update commit to include servo/stylo#3 * Fix license in tests/unit/style/build.rs * Document how to build with local Stylo in Cargo.toml
Diffstat (limited to 'components/style/properties/computed_value_flags.rs')
-rw-r--r--components/style/properties/computed_value_flags.rs190
1 files changed, 0 insertions, 190 deletions
diff --git a/components/style/properties/computed_value_flags.rs b/components/style/properties/computed_value_flags.rs
deleted file mode 100644
index f12760aa8b4..00000000000
--- a/components/style/properties/computed_value_flags.rs
+++ /dev/null
@@ -1,190 +0,0 @@
-/* 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/. */
-
-//! Misc information about a given computed style.
-
-bitflags! {
- /// Misc information about a given computed style.
- ///
- /// All flags are currently inherited for text, pseudo elements, and
- /// anonymous boxes, see StyleBuilder::for_inheritance and its callsites.
- /// If we ever want to add some flags that shouldn't inherit for them,
- /// we might want to add a function to handle this.
- #[repr(C)]
- pub struct ComputedValueFlags: u32 {
- /// Whether the style or any of the ancestors has a text-decoration-line
- /// property that should get propagated to descendants.
- ///
- /// text-decoration-line is a reset property, but gets propagated in the
- /// frame/box tree.
- const HAS_TEXT_DECORATION_LINES = 1 << 0;
-
- /// Whether line break inside should be suppressed.
- ///
- /// If this flag is set, the line should not be broken inside,
- /// which means inlines act as if nowrap is set, <br> element is
- /// suppressed, and blocks are inlinized.
- ///
- /// This bit is propagated to all children of line participants.
- /// It is currently used by ruby to make its content unbreakable.
- const SHOULD_SUPPRESS_LINEBREAK = 1 << 1;
-
- /// A flag used to mark text that that has text-combine-upright.
- ///
- /// This is used from Gecko's layout engine.
- const IS_TEXT_COMBINED = 1 << 2;
-
- /// A flag used to mark styles under a relevant link that is also
- /// visited.
- const IS_RELEVANT_LINK_VISITED = 1 << 3;
-
- /// A flag used to mark styles which are a pseudo-element or under one.
- const IS_IN_PSEUDO_ELEMENT_SUBTREE = 1 << 4;
-
- /// A flag used to mark styles which have contain:style or under one.
- const SELF_OR_ANCESTOR_HAS_CONTAIN_STYLE = 1 << 5;
-
- /// Whether this style's `display` property depends on our parent style.
- ///
- /// This is important because it may affect our optimizations to avoid
- /// computing the style of pseudo-elements, given whether the
- /// pseudo-element is generated depends on the `display` value.
- const DISPLAY_DEPENDS_ON_INHERITED_STYLE = 1 << 6;
-
- /// Whether this style's `content` depends on our parent style.
- ///
- /// Important because of the same reason.
- const CONTENT_DEPENDS_ON_INHERITED_STYLE = 1 << 7;
-
- /// Whether the child explicitly inherits any reset property.
- const INHERITS_RESET_STYLE = 1 << 8;
-
- /// Whether any value on our style is font-metric-dependent on our
- /// primary font.
- const DEPENDS_ON_SELF_FONT_METRICS = 1 << 9;
-
- /// Whether any value on our style is font-metric-dependent on the
- /// primary font of our parent.
- const DEPENDS_ON_INHERITED_FONT_METRICS = 1 << 10;
-
- /// Whether the style or any of the ancestors has a multicol style.
- ///
- /// Only used in Servo.
- const CAN_BE_FRAGMENTED = 1 << 11;
-
- /// Whether this style is the style of the document element.
- const IS_ROOT_ELEMENT_STYLE = 1 << 12;
-
- /// Whether this element is inside an `opacity: 0` subtree.
- const IS_IN_OPACITY_ZERO_SUBTREE = 1 << 13;
-
- /// Whether there are author-specified rules for border-* properties
- /// (except border-image-*), background-color, or background-image.
- ///
- /// TODO(emilio): Maybe do include border-image, see:
- ///
- /// https://github.com/w3c/csswg-drafts/issues/4777#issuecomment-604424845
- const HAS_AUTHOR_SPECIFIED_BORDER_BACKGROUND = 1 << 14;
-
- /// Whether there are author-specified rules for `font-family`.
- const HAS_AUTHOR_SPECIFIED_FONT_FAMILY = 1 << 16;
-
- /// Whether there are author-specified rules for `font-synthesis-weight`.
- const HAS_AUTHOR_SPECIFIED_FONT_SYNTHESIS_WEIGHT = 1 << 17;
-
- /// Whether there are author-specified rules for `font-synthesis-style`.
- const HAS_AUTHOR_SPECIFIED_FONT_SYNTHESIS_STYLE = 1 << 18;
-
- // (There's also font-synthesis-small-caps, but we don't currently need to
- // keep track of that.)
-
- /// Whether there are author-specified rules for `letter-spacing`.
- const HAS_AUTHOR_SPECIFIED_LETTER_SPACING = 1 << 19;
-
- /// Whether there are author-specified rules for `word-spacing`.
- const HAS_AUTHOR_SPECIFIED_WORD_SPACING = 1 << 20;
-
- /// Whether the style depends on viewport units.
- const USES_VIEWPORT_UNITS = 1 << 21;
-
- /// Whether the style depends on viewport units on container queries.
- ///
- /// This needs to be a separate flag from `USES_VIEWPORT_UNITS` because
- /// it causes us to re-match the style (rather than re-cascascading it,
- /// which is enough for other uses of viewport units).
- const USES_VIEWPORT_UNITS_ON_CONTAINER_QUERIES = 1 << 22;
-
- /// A flag used to mark styles which have `container-type` of `size` or
- /// `inline-size`, or under one.
- const SELF_OR_ANCESTOR_HAS_SIZE_CONTAINER_TYPE = 1 << 23;
-
- /// Whether the style evaluated any relative selector.
- const CONSIDERED_RELATIVE_SELECTOR = 1 << 24;
-
- /// Whether the style evaluated the matched element to be an anchor of
- /// a relative selector.
- const ANCHORS_RELATIVE_SELECTOR = 1 << 25;
-
- /// Whether the style uses container query units, in which case the style depends on the
- /// container's size and we can't reuse it across cousins (without double-checking the
- /// container at least).
- const USES_CONTAINER_UNITS = 1 << 26;
- }
-}
-
-impl Default for ComputedValueFlags {
- #[inline]
- fn default() -> Self {
- Self::empty()
- }
-}
-
-impl ComputedValueFlags {
- /// Flags that are unconditionally propagated to descendants.
- #[inline]
- fn inherited_flags() -> Self {
- Self::IS_RELEVANT_LINK_VISITED |
- Self::CAN_BE_FRAGMENTED |
- Self::IS_IN_PSEUDO_ELEMENT_SUBTREE |
- Self::HAS_TEXT_DECORATION_LINES |
- Self::IS_IN_OPACITY_ZERO_SUBTREE |
- Self::SELF_OR_ANCESTOR_HAS_CONTAIN_STYLE |
- Self::SELF_OR_ANCESTOR_HAS_SIZE_CONTAINER_TYPE
- }
-
- /// Flags that may be propagated to descendants.
- #[inline]
- fn maybe_inherited_flags() -> Self {
- Self::inherited_flags() | Self::SHOULD_SUPPRESS_LINEBREAK
- }
-
- /// Flags that are an input to the cascade.
- #[inline]
- fn cascade_input_flags() -> Self {
- Self::USES_VIEWPORT_UNITS_ON_CONTAINER_QUERIES |
- Self::CONSIDERED_RELATIVE_SELECTOR |
- Self::ANCHORS_RELATIVE_SELECTOR
- }
-
- /// Returns the flags that are always propagated to descendants.
- ///
- /// See StyleAdjuster::set_bits and StyleBuilder.
- #[inline]
- pub fn inherited(self) -> Self {
- self & Self::inherited_flags()
- }
-
- /// Flags that are conditionally propagated to descendants, just to handle
- /// properly style invalidation.
- #[inline]
- pub fn maybe_inherited(self) -> Self {
- self & Self::maybe_inherited_flags()
- }
-
- /// Flags that are an input to the cascade.
- #[inline]
- pub fn for_cascade_inputs(self) -> Self {
- self & Self::cascade_input_flags()
- }
-}