Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build(deps): bump bitflags from 1.3.2 to 2.3.1 #30273

Merged
merged 1 commit into from Sep 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 8 additions & 8 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Expand Up @@ -17,7 +17,7 @@ atomic_refcell = "0.1.11"
arrayvec = "0.7"
backtrace = "0.3"
base64 = "0.21.3"
bitflags = "1.0"
bitflags = "2.3"
byteorder = "1.0"
encoding_rs = "0.8"
euclid = "0.22"
Expand Down
11 changes: 6 additions & 5 deletions components/gfx/font.rs
Expand Up @@ -177,16 +177,17 @@ impl Font {
}

bitflags! {
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub struct ShapingFlags: u8 {
#[doc = "Set if the text is entirely whitespace."]
/// Set if the text is entirely whitespace.
const IS_WHITESPACE_SHAPING_FLAG = 0x01;
#[doc = "Set if we are to ignore ligatures."]
/// Set if we are to ignore ligatures.
const IGNORE_LIGATURES_SHAPING_FLAG = 0x02;
#[doc = "Set if we are to disable kerning."]
/// Set if we are to disable kerning.
const DISABLE_KERNING_SHAPING_FLAG = 0x04;
#[doc = "Text direction is right-to-left."]
/// Text direction is right-to-left.
const RTL_FLAG = 0x08;
#[doc = "Set if word-break is set to keep-all."]
/// Set if word-break is set to keep-all.
const KEEP_ALL_FLAG = 0x10;
}
}
Expand Down
7 changes: 3 additions & 4 deletions components/gfx_traits/lib.rs
Expand Up @@ -57,10 +57,9 @@ impl StackingContextId {
}

int_range_index! {
#[derive(Deserialize, Serialize)]
#[doc = "An index that refers to a byte offset in a text run. This could \
point to the middle of a glyph."]
#[derive(MallocSizeOf)]
#[derive(Deserialize, MallocSizeOf, Serialize)]
/// An index that refers to a byte offset in a text run. This could
/// the middle of a glyph.
struct ByteIndex(isize)
}

Expand Down
11 changes: 5 additions & 6 deletions components/layout/block.rs
Expand Up @@ -603,10 +603,11 @@ pub struct BlockFlow {
}

bitflags! {
#[derive(Clone, Copy)]
struct BlockFlowFlags: u8 {
#[doc = "If this is set, then this block flow is the root flow."]
/// If this is set, then this block flow is the root flow.
const IS_ROOT = 0b0000_0001;
#[doc = "If this is set, then this block flow has overflow and it will scroll."]
/// If this is set, then this block flow has overflow and it will scroll.
const HAS_SCROLLING_OVERFLOW = 0b0000_0010;
}
}
Expand Down Expand Up @@ -1663,9 +1664,7 @@ impl BlockFlow {
//
// TODO(#2265, pcwalton): Do this in the cascade instead.
let containing_block_text_align = self.fragment.style().get_inherited_text().text_align;
kid.mut_base()
.flags
.set_text_align(containing_block_text_align);
kid.mut_base().text_align = containing_block_text_align;

// Handle `text-indent` on behalf of any inline children that we have. This is
// necessary because any percentages are relative to the containing block, which only
Expand Down Expand Up @@ -2970,7 +2969,7 @@ pub trait ISizeAndMarginsComputer {
// Check for direction of parent flow (NOT Containing Block)
let block_mode = block.base.writing_mode;
let container_mode = block.base.block_container_writing_mode;
let block_align = block.base.flags.text_align();
let block_align = block.base.text_align;

// FIXME (mbrubeck): Handle vertical writing modes.
let parent_has_same_direction = container_mode.is_bidi_ltr() == block_mode.is_bidi_ltr();
Expand Down
5 changes: 3 additions & 2 deletions components/layout/data.rs
Expand Up @@ -51,10 +51,11 @@ impl Default for LayoutData {
}

bitflags! {
#[derive(Clone, Copy)]
pub struct LayoutDataFlags: u8 {
#[doc = "Whether a flow has been newly constructed."]
/// Whether a flow has been newly constructed.
const HAS_NEWLY_CONSTRUCTED_FLOW = 0x01;
#[doc = "Whether this node has been traversed by layout."]
/// Whether this node has been traversed by layout.
const HAS_BEEN_TRAVERSED = 0x02;
}
}
1 change: 1 addition & 0 deletions components/layout/display_list/builder.rs
Expand Up @@ -2223,6 +2223,7 @@ impl Fragment {
}

bitflags! {
#[derive(Clone, Copy)]
pub struct StackingContextCollectionFlags: u8 {
/// This flow never establishes a containing block.
const POSITION_NEVER_CREATES_CONTAINING_BLOCK = 0b001;
Expand Down
2 changes: 1 addition & 1 deletion components/layout/flex.rs
Expand Up @@ -658,7 +658,7 @@ impl FlexFlow {
// Per CSS 2.1 § 16.3.1, text alignment propagates to all children in flow.
//
// TODO(#2265, pcwalton): Do this in the cascade instead.
block.base.flags.set_text_align(containing_block_text_align);
block.base.text_align = containing_block_text_align;

let margin = block.fragment.style().logical_margin();
let auto_len = if line.auto_margin_count == 0 || line.free_space <= Au(0) {
Expand Down
91 changes: 37 additions & 54 deletions components/layout/flow.rs
Expand Up @@ -47,7 +47,6 @@ use app_units::Au;
use euclid::default::{Point2D, Rect, Size2D, Vector2D};
use gfx_traits::print_tree::PrintTree;
use gfx_traits::StackingContextId;
use num_traits::cast::FromPrimitive;
use serde::ser::{Serialize, SerializeStruct, Serializer};
use servo_geometry::{au_rect_to_f32_rect, f32_rect_to_au_rect, MaxRect};
use std::fmt;
Expand Down Expand Up @@ -613,73 +612,53 @@ impl FlowClass {
}

bitflags! {
#[doc = "Flags used in flows."]
/// Flags used in flows.
#[derive(Clone, Copy, Debug)]
pub struct FlowFlags: u32 {
// text align flags
#[doc = "Whether this flow is absolutely positioned. This is checked all over layout, so a"]
#[doc = "virtual call is too expensive."]
/// Whether this flow is absolutely positioned. This is checked all over layout, so a
/// virtual call is too expensive.
const IS_ABSOLUTELY_POSITIONED = 0b0000_0000_0000_0000_0100_0000;
#[doc = "Whether this flow clears to the left. This is checked all over layout, so a"]
#[doc = "virtual call is too expensive."]
/// Whether this flow clears to the left. This is checked all over layout, so a
/// virtual call is too expensive.
const CLEARS_LEFT = 0b0000_0000_0000_0000_1000_0000;
#[doc = "Whether this flow clears to the right. This is checked all over layout, so a"]
#[doc = "virtual call is too expensive."]
/// Whether this flow clears to the right. This is checked all over layout, so a
/// virtual call is too expensive.
const CLEARS_RIGHT = 0b0000_0000_0000_0001_0000_0000;
#[doc = "Whether this flow is left-floated. This is checked all over layout, so a"]
#[doc = "virtual call is too expensive."]
/// Whether this flow is left-floated. This is checked all over layout, so a
/// virtual call is too expensive.
const FLOATS_LEFT = 0b0000_0000_0000_0010_0000_0000;
#[doc = "Whether this flow is right-floated. This is checked all over layout, so a"]
#[doc = "virtual call is too expensive."]
/// Whether this flow is right-floated. This is checked all over layout, so a
/// virtual call is too expensive.
const FLOATS_RIGHT = 0b0000_0000_0000_0100_0000_0000;
#[doc = "Text alignment. \
\
NB: If you update this, update `TEXT_ALIGN_SHIFT` below."]
const TEXT_ALIGN = 0b0000_0000_0111_1000_0000_0000;
#[doc = "Whether this flow has a fragment with `counter-reset` or `counter-increment` \
styles."]
const AFFECTS_COUNTERS = 0b0000_0000_1000_0000_0000_0000;
#[doc = "Whether this flow's descendants have fragments that affect `counter-reset` or \
`counter-increment` styles."]
const HAS_COUNTER_AFFECTING_CHILDREN = 0b0000_0001_0000_0000_0000_0000;
#[doc = "Whether this flow behaves as though it had `position: static` for the purposes \
of positioning in the inline direction. This is set for flows with `position: \
static` and `position: relative` as well as absolutely-positioned flows with \
unconstrained positions in the inline direction."]
const INLINE_POSITION_IS_STATIC = 0b0000_0010_0000_0000_0000_0000;
#[doc = "Whether this flow behaves as though it had `position: static` for the purposes \
of positioning in the block direction. This is set for flows with `position: \
static` and `position: relative` as well as absolutely-positioned flows with \
unconstrained positions in the block direction."]
const BLOCK_POSITION_IS_STATIC = 0b0000_0100_0000_0000_0000_0000;
/// Whether this flow has a fragment with `counter-reset` or `counter-increment`
/// styles.
const AFFECTS_COUNTERS = 0b0000_0000_0000_1000_0000_0000;
/// Whether this flow's descendants have fragments that affect `counter-reset` or
// `counter-increment` styles.
const HAS_COUNTER_AFFECTING_CHILDREN = 0b0000_0000_0001_0000_0000_0000;
/// Whether this flow behaves as though it had `position: static` for the purposes
/// of positioning in the inline direction. This is set for flows with `position:
/// static` and `position: relative` as well as absolutely-positioned flows with
/// unconstrained positions in the inline direction."]
const INLINE_POSITION_IS_STATIC = 0b0000_0000_0010_0000_0000_0000;
/// Whether this flow behaves as though it had `position: static` for the purposes
/// of positioning in the block direction. This is set for flows with `position:
/// static` and `position: relative` as well as absolutely-positioned flows with
/// unconstrained positions in the block direction.
const BLOCK_POSITION_IS_STATIC = 0b0000_0000_0100_0000_0000_0000;

/// Whether any ancestor is a fragmentation container
const CAN_BE_FRAGMENTED = 0b0000_1000_0000_0000_0000_0000;
const CAN_BE_FRAGMENTED = 0b0000_0000_1000_0000_0000_0000;

/// Whether this flow contains any text and/or replaced fragments.
const CONTAINS_TEXT_OR_REPLACED_FRAGMENTS = 0b0001_0000_0000_0000_0000_0000;
const CONTAINS_TEXT_OR_REPLACED_FRAGMENTS = 0b0000_0001_0000_0000_0000_0000;

/// Whether margins are prohibited from collapsing with this flow.
const MARGINS_CANNOT_COLLAPSE = 0b0010_0000_0000_0000_0000_0000;
const MARGINS_CANNOT_COLLAPSE = 0b0000_0010_0000_0000_0000_0000;
}
}

/// The number of bits we must shift off to handle the text alignment field.
///
/// NB: If you update this, update `TEXT_ALIGN` above.
static TEXT_ALIGN_SHIFT: usize = 11;

impl FlowFlags {
#[inline]
pub fn text_align(self) -> TextAlign {
TextAlign::from_u32((self & FlowFlags::TEXT_ALIGN).bits() >> TEXT_ALIGN_SHIFT).unwrap()
}

#[inline]
pub fn set_text_align(&mut self, value: TextAlign) {
*self = (*self & !FlowFlags::TEXT_ALIGN) |
FlowFlags::from_bits((value as u32) << TEXT_ALIGN_SHIFT).unwrap();
}

#[inline]
pub fn float_kind(&self) -> Float {
if self.contains(FlowFlags::FLOATS_LEFT) {
Expand Down Expand Up @@ -936,6 +915,9 @@ pub struct BaseFlow {
/// Various flags for flows, tightly packed to save space.
pub flags: FlowFlags,

/// Text alignment of this flow.
pub text_align: TextAlign,

/// The ID of the StackingContext that contains this flow. This is initialized
/// to 0, but it assigned during the collect_stacking_contexts phase of display
/// list construction.
Expand Down Expand Up @@ -1115,8 +1097,9 @@ impl BaseFlow {
early_absolute_position_info: EarlyAbsolutePositionInfo::new(writing_mode),
late_absolute_position_info: LateAbsolutePositionInfo::new(),
clip: MaxRect::max_rect(),
flags: flags,
writing_mode: writing_mode,
flags,
text_align: TextAlign::Start,
writing_mode,
thread_id: 0,
stacking_context_id: StackingContextId::root(),
clipping_and_scrolling: None,
Expand Down
8 changes: 5 additions & 3 deletions components/layout/fragment.rs
Expand Up @@ -534,6 +534,7 @@ pub struct ScannedTextFragmentInfo {
}

bitflags! {
#[derive(Clone, Copy)]
pub struct ScannedTextFlags: u8 {
/// Whether a line break is required after this fragment if wrapping on newlines (e.g. if
/// `white-space: pre` is in effect).
Expand Down Expand Up @@ -3328,10 +3329,10 @@ bitflags! {
// Various flags we can use when splitting fragments. See
// `calculate_split_position_using_breaking_strategy()`.
struct SplitOptions: u8 {
#[doc = "True if this is the first fragment on the line."]
/// True if this is the first fragment on the line."]
const STARTS_LINE = 0x01;
#[doc = "True if we should attempt to split at character boundaries if this split fails. \
This is used to implement `overflow-wrap: break-word`."]
/// True if we should attempt to split at character boundaries if this split fails. \
/// This is used to implement `overflow-wrap: break-word`."]
const RETRY_AT_CHARACTER_BOUNDARIES = 0x02;
}
}
Expand Down Expand Up @@ -3446,6 +3447,7 @@ impl Overflow {
}

bitflags! {
#[derive(Clone, Debug)]
pub struct FragmentFlags: u8 {
// TODO(stshine): find a better name since these flags can also be used for grid item.
/// Whether this fragment represents a child in a row flex container.
Expand Down
4 changes: 2 additions & 2 deletions components/layout/incremental.rs
Expand Up @@ -16,8 +16,8 @@ pub enum RelayoutMode {

bitflags! {
pub struct SpecialRestyleDamage: u8 {
#[doc = "If this flag is set, we need to reflow the entire document. This is more or less a \
temporary hack to deal with cases that we don't handle incrementally yet."]
/// If this flag is set, we need to reflow the entire document. This is more or less a
/// temporary hack to deal with cases that we don't handle incrementally yet.
const REFLOW_ENTIRE_DOCUMENT = 0x01;
}
}
Expand Down
5 changes: 3 additions & 2 deletions components/layout/inline.rs
Expand Up @@ -221,7 +221,7 @@ impl Line {

int_range_index! {
#[derive(Serialize)]
#[doc = "The index of a fragment in a flattened vector of DOM elements."]
/// The index of a fragment in a flattened vector of DOM elements.
struct FragmentIndex(isize)
}

Expand Down Expand Up @@ -1658,7 +1658,7 @@ impl Flow for InlineFlow {
InlineFlow::set_inline_fragment_positions(
&mut self.fragments,
line,
self.base.flags.text_align(),
self.base.text_align,
indentation,
line_index + 1 == line_count,
);
Expand Down Expand Up @@ -2053,6 +2053,7 @@ pub struct InlineFragmentNodeInfo {
}

bitflags! {
#[derive(Clone)]
pub struct InlineFragmentNodeFlags: u8 {
const FIRST_FRAGMENT_OF_ELEMENT = 0x01;
const LAST_FRAGMENT_OF_ELEMENT = 0x02;
Expand Down
6 changes: 3 additions & 3 deletions components/layout_2020/fragment_tree/base_fragment.rs
Expand Up @@ -72,10 +72,10 @@ impl From<BaseFragmentInfo> for BaseFragment {
}

bitflags! {
#[doc = "Flags used to track various information about a DOM node during layout."]
#[derive(Serialize)]
/// Flags used to track various information about a DOM node during layout.
#[derive(Clone, Copy, Debug, Serialize)]
pub(crate) struct FragmentFlags: u8 {
#[doc = "Whether or not this node is a body element on an HTML document."]
/// Whether or not this node is a body element on an HTML document.
const IS_BODY_ELEMENT_OF_HTML_ELEMENT_ROOT = 0b00000001;
}
}
Expand Down