From 825f623b3c372134fb5bca4fba853f633597fc20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Mon, 4 Sep 2017 14:50:13 +0200 Subject: [PATCH 1/7] style: Stop the cascade when only reset structs change. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: 1395227 Reviewed-by: heycam MozReview-Commit-ID: JCZJl2fmtJ9 Signed-off-by: Emilio Cobos Álvarez --- components/style/gecko/restyle_damage.rs | 21 +++--- components/style/matching.rs | 75 ++++++++++--------- .../style/properties/computed_value_flags.rs | 5 +- .../style/properties/properties.mako.rs | 4 + components/style/servo/restyle_damage.rs | 9 ++- components/style/traversal.rs | 56 +++++++++----- 6 files changed, 101 insertions(+), 69 deletions(-) diff --git a/components/style/gecko/restyle_damage.rs b/components/style/gecko/restyle_damage.rs index caea907eea6..f325e7916ed 100644 --- a/components/style/gecko/restyle_damage.rs +++ b/components/style/gecko/restyle_damage.rs @@ -42,27 +42,26 @@ impl GeckoRestyleDamage { } /// Computes the `StyleDifference` (including the appropriate change hint) - /// given an old style (in the form of a `nsStyleContext`, and a new style - /// (in the form of `ComputedValues`). - /// - /// Note that we could in theory just get two `ComputedValues` here and diff - /// them, but Gecko has an interesting optimization when they mark accessed - /// structs, so they effectively only diff structs that have ever been - /// accessed from layout. + /// given an old and a new style. pub fn compute_style_difference( old_style: &ComputedValues, new_style: &ComputedValues, ) -> StyleDifference { - let mut any_style_changed: bool = false; + let mut any_style_changed = false; + let mut reset_only = false; let hint = unsafe { bindings::Gecko_CalcStyleDifference( old_style, new_style, - structs::NS_STYLE_INHERIT_MASK as u64, - &mut any_style_changed + &mut any_style_changed, + &mut reset_only, ) }; - let change = if any_style_changed { StyleChange::Changed } else { StyleChange::Unchanged }; + let change = if any_style_changed { + StyleChange::Changed { reset_only } + } else { + StyleChange::Unchanged + }; StyleDifference::new(GeckoRestyleDamage(nsChangeHint(hint)), change) } diff --git a/components/style/matching.rs b/components/style/matching.rs index 6bc55eee0d6..dd198aba9f1 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -21,6 +21,7 @@ use servo_arc::{Arc, ArcBorrow}; use traversal_flags; /// Represents the result of comparing an element's old and new style. +#[derive(Debug)] pub struct StyleDifference { /// The resulting damage. pub damage: RestyleDamage, @@ -40,12 +41,15 @@ impl StyleDifference { } /// Represents whether or not the style of an element has changed. -#[derive(Clone, Copy)] +#[derive(Clone, Copy, Debug)] pub enum StyleChange { /// The style hasn't changed. Unchanged, /// The style has changed. - Changed, + Changed { + /// Whether only reset structs changed. + reset_only: bool, + }, } /// Whether or not newly computed values for an element need to be cascade @@ -56,19 +60,23 @@ pub enum ChildCascadeRequirement { /// we won't bother recomputing style for children, so we can skip cascading /// the new values into child elements. CanSkipCascade = 0, + /// The same as `MustCascadeChildren`, but we only need to actually + /// recascade if the child inherits any explicit reset style. + MustCascadeChildrenIfInheritResetStyle = 1, /// Old and new computed values were different, so we must cascade the /// new values to children. - /// - /// FIXME(heycam) Although this is "must" cascade, in the future we should - /// track whether child elements rely specifically on inheriting particular - /// property values. When we do that, we can treat `MustCascadeChildren` as - /// "must cascade unless we know that changes to these properties can be - /// ignored". - MustCascadeChildren = 1, + MustCascadeChildren = 2, /// The same as `MustCascadeChildren`, but for the entire subtree. This is /// used to handle root font-size updates needing to recascade the whole /// document. - MustCascadeDescendants = 2, + MustCascadeDescendants = 3, +} + +impl ChildCascadeRequirement { + /// Whether we can unconditionally skip the cascade. + pub fn can_skip_cascade(&self) -> bool { + matches!(*self, ChildCascadeRequirement::CanSkipCascade) + } } bitflags! { @@ -341,16 +349,19 @@ trait PrivateMatchMethods: TElement { /// Computes and applies non-redundant damage. - #[cfg(feature = "gecko")] - fn accumulate_damage_for(&self, - shared_context: &SharedStyleContext, - restyle: &mut RestyleData, - old_values: &ComputedValues, - new_values: &ComputedValues, - pseudo: Option<&PseudoElement>) - -> ChildCascadeRequirement { + fn accumulate_damage_for( + &self, + shared_context: &SharedStyleContext, + restyle: &mut RestyleData, + old_values: &ComputedValues, + new_values: &ComputedValues, + pseudo: Option<&PseudoElement> + ) -> ChildCascadeRequirement { + debug!("accumulate_damage_for: {:?}", self); + // Don't accumulate damage if we're in a forgetful traversal. if shared_context.traversal_flags.contains(traversal_flags::Forgetful) { + debug!(" > forgetful traversal"); return ChildCascadeRequirement::MustCascadeChildren; } @@ -371,6 +382,8 @@ trait PrivateMatchMethods: TElement { restyle.damage |= difference.damage; } + debug!(" > style difference: {:?}", difference); + // We need to cascade the children in order to ensure the correct // propagation of computed value flags. // @@ -379,29 +392,19 @@ trait PrivateMatchMethods: TElement { // to handle justify-items: auto correctly when there's a legacy // justify-items. if old_values.flags != new_values.flags { + debug!(" > flags changed: {:?} != {:?}", old_values.flags, new_values.flags); return ChildCascadeRequirement::MustCascadeChildren; } match difference.change { StyleChange::Unchanged => ChildCascadeRequirement::CanSkipCascade, - StyleChange::Changed => ChildCascadeRequirement::MustCascadeChildren, - } - } - - /// Computes and applies restyle damage unless we've already maxed it out. - #[cfg(feature = "servo")] - fn accumulate_damage_for(&self, - _shared_context: &SharedStyleContext, - restyle: &mut RestyleData, - old_values: &ComputedValues, - new_values: &ComputedValues, - pseudo: Option<&PseudoElement>) - -> ChildCascadeRequirement { - let difference = self.compute_style_difference(old_values, new_values, pseudo); - restyle.damage |= difference.damage; - match difference.change { - StyleChange::Changed => ChildCascadeRequirement::MustCascadeChildren, - StyleChange::Unchanged => ChildCascadeRequirement::CanSkipCascade, + StyleChange::Changed { reset_only } => { + if reset_only { + ChildCascadeRequirement::MustCascadeChildrenIfInheritResetStyle + } else { + ChildCascadeRequirement::MustCascadeChildren + } + } } } diff --git a/components/style/properties/computed_value_flags.rs b/components/style/properties/computed_value_flags.rs index 83a12618872..3ee32cd89de 100644 --- a/components/style/properties/computed_value_flags.rs +++ b/components/style/properties/computed_value_flags.rs @@ -11,7 +11,7 @@ bitflags! { /// 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. - pub flags ComputedValueFlags: u8 { + pub flags ComputedValueFlags: u16 { /// Whether the style or any of the ancestors has a text-decoration-line /// property that should get propagated to descendants. /// @@ -56,5 +56,8 @@ bitflags! { /// /// Important because of the same reason. const INHERITS_CONTENT = 1 << 7, + + /// Whether the child explicitly inherits any reset property. + const INHERITS_RESET_STYLE = 1 << 8, } } diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index cfb7e04c1f3..7565353653a 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -2661,6 +2661,10 @@ impl<'a> StyleBuilder<'a> { self.inherited_style_ignoring_first_line.get_${property.style_struct.name_lower}(); % endif + % if not property.style_struct.inherited: + self.flags.insert(::properties::computed_value_flags::INHERITS_RESET_STYLE); + % endif + % if property.ident == "content": self.flags.insert(::properties::computed_value_flags::INHERITS_CONTENT); % endif diff --git a/components/style/servo/restyle_damage.rs b/components/style/servo/restyle_damage.rs index fcec01bbe64..fd62a146ef7 100644 --- a/components/style/servo/restyle_damage.rs +++ b/components/style/servo/restyle_damage.rs @@ -65,7 +65,14 @@ impl ServoRestyleDamage { new: &ComputedValues, ) -> StyleDifference { let damage = compute_damage(old, new); - let change = if damage.is_empty() { StyleChange::Unchanged } else { StyleChange::Changed }; + let change = if damage.is_empty() { + StyleChange::Unchanged + } else { + // FIXME(emilio): Differentiate between reset and inherited + // properties here, and set `reset_only` appropriately so the + // optimization to skip the cascade in those cases applies. + StyleChange::Changed { reset_only: false } + }; StyleDifference::new(damage, change) } diff --git a/components/style/traversal.rs b/components/style/traversal.rs index 0fac4d22117..4c066f87684 100644 --- a/components/style/traversal.rs +++ b/components/style/traversal.rs @@ -453,7 +453,9 @@ where D: DomTraversal, F: FnMut(E::ConcreteNode), { + use std::cmp; use traversal_flags::*; + let flags = context.shared.traversal_flags; context.thread_local.begin_element(element, data); context.thread_local.statistics.elements_traversed += 1; @@ -462,28 +464,25 @@ where "Should've handled snapshots here already"); let compute_self = !element.has_current_styles_for_traversal(data, flags); - let mut hint = RestyleHint::empty(); debug!("recalc_style_at: {:?} (compute_self={:?}, \ dirty_descendants={:?}, data={:?})", element, compute_self, element.has_dirty_descendants(), data); + let mut child_cascade_requirement = ChildCascadeRequirement::CanSkipCascade; + // Compute style for this element if necessary. if compute_self { - match compute_style(traversal_data, context, element, data) { - ChildCascadeRequirement::MustCascadeChildren => { - hint |= RECASCADE_SELF; - } - ChildCascadeRequirement::MustCascadeDescendants => { - hint |= RECASCADE_SELF | RECASCADE_DESCENDANTS; - } - ChildCascadeRequirement::CanSkipCascade => {} - }; + child_cascade_requirement = + compute_style(traversal_data, context, element, data); - // We must always cascade native anonymous subtrees, since they inherit - // styles from their first non-NAC ancestor. if element.is_native_anonymous() { - hint |= RECASCADE_SELF; + // We must always cascade native anonymous subtrees, since they inherit + // styles from their first non-NAC ancestor. + child_cascade_requirement = cmp::max( + child_cascade_requirement, + ChildCascadeRequirement::MustCascadeChildren, + ); } // If we're restyling this element to display:none, throw away all style @@ -507,7 +506,7 @@ where // those operations and compute the propagated restyle hint (unless we're // not processing invalidations, in which case don't need to propagate it // and must avoid clearing it). - let mut propagated_hint = if flags.contains(UnstyledOnly) { + let propagated_hint = if flags.contains(UnstyledOnly) { RestyleHint::empty() } else { debug_assert!(flags.for_animation_only() || @@ -517,13 +516,10 @@ where data.restyle.hint.propagate(&flags) }; - // FIXME(bholley): Need to handle explicitly-inherited reset properties - // somewhere. - propagated_hint.insert(hint); - - trace!("propagated_hint={:?} \ + trace!("propagated_hint={:?}, cascade_requirement={:?}, \ is_display_none={:?}, implementing_pseudo={:?}", propagated_hint, + child_cascade_requirement, data.styles.is_display_none(), element.implemented_pseudo_element()); debug_assert!(element.has_current_styles_for_traversal(data, flags), @@ -553,6 +549,7 @@ where // enumerated in should_cull_subtree(). let mut traverse_children = has_dirty_descendants_for_this_restyle || !propagated_hint.is_empty() || + !child_cascade_requirement.can_skip_cascade() || context.thread_local.is_initial_style() || data.restyle.reconstructed_self() || is_servo_nonincremental_layout(); @@ -567,6 +564,7 @@ where element, data, propagated_hint, + child_cascade_requirement, data.restyle.reconstructed_self_or_ancestor(), note_child ); @@ -778,6 +776,7 @@ fn note_children( element: E, data: &ElementData, propagated_hint: RestyleHint, + cascade_requirement: ChildCascadeRequirement, reconstructed_ancestor: bool, mut note_child: F, ) @@ -816,7 +815,24 @@ where // subtree. child_data.restyle.set_reconstructed_ancestor(reconstructed_ancestor); - child_data.restyle.hint.insert(propagated_hint); + let mut child_hint = propagated_hint; + match cascade_requirement { + ChildCascadeRequirement::CanSkipCascade => {} + ChildCascadeRequirement::MustCascadeDescendants => { + child_hint |= RECASCADE_SELF | RECASCADE_DESCENDANTS; + } + ChildCascadeRequirement::MustCascadeChildrenIfInheritResetStyle => { + use properties::computed_value_flags::INHERITS_RESET_STYLE; + if child_data.styles.primary().flags.contains(INHERITS_RESET_STYLE) { + child_hint |= RECASCADE_SELF; + } + } + ChildCascadeRequirement::MustCascadeChildren => { + child_hint |= RECASCADE_SELF; + } + } + + child_data.restyle.hint.insert(child_hint); // Handle element snapshots and invalidation of descendants and siblings // as needed. From 35504c1bb71f494ff9d2d9d4d8b9a4875bb3de6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Mon, 4 Sep 2017 16:12:23 +0200 Subject: [PATCH 2/7] style: Fix the legacy value of justify-items propagation. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit That property is pretty sad :( MozReview-Commit-ID: GaKYvqR19M4 Signed-off-by: Emilio Cobos Álvarez --- components/style/matching.rs | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/components/style/matching.rs b/components/style/matching.rs index dd198aba9f1..b15594f29ef 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -386,11 +386,6 @@ trait PrivateMatchMethods: TElement { // We need to cascade the children in order to ensure the correct // propagation of computed value flags. - // - // FIXME(emilio): If we start optimizing changes to reset-only - // properties that aren't explicitly inherited, we'd need to add a flag - // to handle justify-items: auto correctly when there's a legacy - // justify-items. if old_values.flags != new_values.flags { debug!(" > flags changed: {:?} != {:?}", old_values.flags, new_values.flags); return ChildCascadeRequirement::MustCascadeChildren; @@ -400,6 +395,37 @@ trait PrivateMatchMethods: TElement { StyleChange::Unchanged => ChildCascadeRequirement::CanSkipCascade, StyleChange::Changed { reset_only } => { if reset_only { + #[cfg(feature = "gecko")] + { + use values::specified::align; + + // Children with justify-items: legacy may depend on our + // property value. + // + // TODO(emilio): We could special-case this even more + // creating a new `ChildCascadeRequirement` variant, but + // it's unclear it matters. + let old_justify_items = + old_values.get_position().clone_justify_items(); + let new_justify_items = + new_values.get_position().clone_justify_items(); + + let was_legacy_justify_items = + old_justify_items.computed.0.contains(align::ALIGN_LEGACY); + + let is_legacy_justify_items = + new_justify_items.computed.0.contains(align::ALIGN_LEGACY); + + if is_legacy_justify_items != was_legacy_justify_items { + return ChildCascadeRequirement::MustCascadeChildren; + } + + if was_legacy_justify_items && + old_justify_items.computed != new_justify_items.computed { + return ChildCascadeRequirement::MustCascadeChildren; + } + } + ChildCascadeRequirement::MustCascadeChildrenIfInheritResetStyle } else { ChildCascadeRequirement::MustCascadeChildren From 05371b56eb4ac19889c744b96263c9a58e305796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Mon, 4 Sep 2017 22:04:18 +0200 Subject: [PATCH 3/7] style: Fix recascading when child blockification depends on our display value. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All other browsers get it right because they basically throw away all the styles in a subtree after a display change. We do better, but need to do this check. MozReview-Commit-ID: BODx0gnSzwI Signed-off-by: Emilio Cobos Álvarez --- components/style/matching.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/components/style/matching.rs b/components/style/matching.rs index b15594f29ef..cb9295c47af 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -395,6 +395,15 @@ trait PrivateMatchMethods: TElement { StyleChange::Unchanged => ChildCascadeRequirement::CanSkipCascade, StyleChange::Changed { reset_only } => { if reset_only { + let old_display = old_values.get_box().clone_display(); + let new_display = new_values.get_box().clone_display(); + + if old_display.is_item_container() != new_display.is_item_container() { + // Blockification of children may depend on our display + // value, so we need to actually do the recascade. + return ChildCascadeRequirement::MustCascadeChildren + } + #[cfg(feature = "gecko")] { use values::specified::align; From deefacc9de41b0f7ca320a7cc31f57970caf8988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Mon, 4 Sep 2017 22:13:05 +0200 Subject: [PATCH 4/7] style: Reindent some code. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MozReview-Commit-ID: H2qucldbBkc Signed-off-by: Emilio Cobos Álvarez --- components/style/matching.rs | 92 +++++++++++++++-------------- components/style/style_adjuster.rs | 95 +++++++++++++++++++----------- 2 files changed, 108 insertions(+), 79 deletions(-) diff --git a/components/style/matching.rs b/components/style/matching.rs index cb9295c47af..c3c5e37c165 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -394,51 +394,55 @@ trait PrivateMatchMethods: TElement { match difference.change { StyleChange::Unchanged => ChildCascadeRequirement::CanSkipCascade, StyleChange::Changed { reset_only } => { - if reset_only { - let old_display = old_values.get_box().clone_display(); - let new_display = new_values.get_box().clone_display(); - - if old_display.is_item_container() != new_display.is_item_container() { - // Blockification of children may depend on our display - // value, so we need to actually do the recascade. - return ChildCascadeRequirement::MustCascadeChildren - } - - #[cfg(feature = "gecko")] - { - use values::specified::align; - - // Children with justify-items: legacy may depend on our - // property value. - // - // TODO(emilio): We could special-case this even more - // creating a new `ChildCascadeRequirement` variant, but - // it's unclear it matters. - let old_justify_items = - old_values.get_position().clone_justify_items(); - let new_justify_items = - new_values.get_position().clone_justify_items(); - - let was_legacy_justify_items = - old_justify_items.computed.0.contains(align::ALIGN_LEGACY); - - let is_legacy_justify_items = - new_justify_items.computed.0.contains(align::ALIGN_LEGACY); - - if is_legacy_justify_items != was_legacy_justify_items { - return ChildCascadeRequirement::MustCascadeChildren; - } - - if was_legacy_justify_items && - old_justify_items.computed != new_justify_items.computed { - return ChildCascadeRequirement::MustCascadeChildren; - } - } - - ChildCascadeRequirement::MustCascadeChildrenIfInheritResetStyle - } else { - ChildCascadeRequirement::MustCascadeChildren + // If inherited properties changed, the best we can do is + // cascade the children. + if !reset_only { + return ChildCascadeRequirement::MustCascadeChildren } + + let old_display = old_values.get_box().clone_display(); + let new_display = new_values.get_box().clone_display(); + + // Blockification of children may depend on our display value, + // so we need to actually do the recascade. We could potentially + // do better, but it doesn't seem worth it. + if old_display.is_item_container() != new_display.is_item_container() { + return ChildCascadeRequirement::MustCascadeChildren + } + + // Children with justify-items: auto may depend on our + // justify-items property value. + // + // Similarly, we could potentially do better, but this really + // seems not common enough to care about. + #[cfg(feature = "gecko")] + { + use values::specified::align; + + let old_justify_items = + old_values.get_position().clone_justify_items(); + let new_justify_items = + new_values.get_position().clone_justify_items(); + + let was_legacy_justify_items = + old_justify_items.computed.0.contains(align::ALIGN_LEGACY); + + let is_legacy_justify_items = + new_justify_items.computed.0.contains(align::ALIGN_LEGACY); + + if is_legacy_justify_items != was_legacy_justify_items { + return ChildCascadeRequirement::MustCascadeChildren; + } + + if was_legacy_justify_items && + old_justify_items.computed != new_justify_items.computed { + return ChildCascadeRequirement::MustCascadeChildren; + } + } + + // We could prove that, if our children don't inherit reset + // properties, we can stop the cascade. + ChildCascadeRequirement::MustCascadeChildrenIfInheritResetStyle } } } diff --git a/components/style/style_adjuster.rs b/components/style/style_adjuster.rs index 9e0a0e9b409..c2044c143b5 100644 --- a/components/style/style_adjuster.rs +++ b/components/style/style_adjuster.rs @@ -50,9 +50,11 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { /// Apply the blockification rules based on the table in CSS 2.2 section 9.7. /// https://drafts.csswg.org/css2/visuren.html#dis-pos-flo - fn blockify_if_necessary(&mut self, - layout_parent_style: &ComputedValues, - flags: CascadeFlags) { + fn blockify_if_necessary( + &mut self, + layout_parent_style: &ComputedValues, + flags: CascadeFlags, + ) { let mut blockify = false; macro_rules! blockify_if { ($if_what:expr) => { @@ -80,8 +82,10 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { let blockified_display = display.equivalent_block_display(flags.contains(IS_ROOT_ELEMENT)); if display != blockified_display { - self.style.mutate_box().set_adjusted_display(blockified_display, - is_item_or_root); + self.style.mutate_box().set_adjusted_display( + blockified_display, + is_item_or_root, + ); } } @@ -165,10 +169,14 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { /// /// https://lists.w3.org/Archives/Public/www-style/2017Mar/0045.html /// https://github.com/servo/servo/issues/15754 - fn adjust_for_writing_mode(&mut self, - layout_parent_style: &ComputedValues) { - let our_writing_mode = self.style.get_inheritedbox().clone_writing_mode(); - let parent_writing_mode = layout_parent_style.get_inheritedbox().clone_writing_mode(); + fn adjust_for_writing_mode( + &mut self, + layout_parent_style: &ComputedValues, + ) { + let our_writing_mode = + self.style.get_inheritedbox().clone_writing_mode(); + let parent_writing_mode = + layout_parent_style.get_inheritedbox().clone_writing_mode(); if our_writing_mode != parent_writing_mode && self.style.get_box().clone_display() == display::inline { @@ -324,9 +332,11 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { /// If a
has grid/flex display type, we need to inherit /// this type into its ::-moz-fieldset-content anonymous box. #[cfg(feature = "gecko")] - fn adjust_for_fieldset_content(&mut self, - layout_parent_style: &ComputedValues, - flags: CascadeFlags) { + fn adjust_for_fieldset_content( + &mut self, + layout_parent_style: &ComputedValues, + flags: CascadeFlags, + ) { use properties::IS_FIELDSET_CONTENT; if !flags.contains(IS_FIELDSET_CONTENT) { return; @@ -337,8 +347,10 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { // when
has "display: contents". let parent_display = layout_parent_style.get_box().clone_display(); let new_display = match parent_display { - display::flex | display::inline_flex => Some(display::flex), - display::grid | display::inline_grid => Some(display::grid), + display::flex | + display::inline_flex => Some(display::flex), + display::grid | + display::inline_grid => Some(display::grid), _ => None, }; if let Some(new_display) = new_display { @@ -355,22 +367,25 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { #[cfg(feature = "gecko")] fn adjust_for_table_text_align(&mut self) { use properties::longhands::text_align::computed_value::T as text_align; - if self.style.get_box().clone_display() != display::table { - return; - } + if self.style.get_box().clone_display() != display::table { + return; + } - match self.style.get_inheritedtext().clone_text_align() { - text_align::_moz_left | - text_align::_moz_center | - text_align::_moz_right => {} - _ => return, - } + match self.style.get_inheritedtext().clone_text_align() { + text_align::_moz_left | + text_align::_moz_center | + text_align::_moz_right => {}, + _ => return, + } - self.style.mutate_inheritedtext().set_text_align(text_align::start); + self.style.mutate_inheritedtext().set_text_align(text_align::start) } /// Set the HAS_TEXT_DECORATION_LINES flag based on parent style. - fn adjust_for_text_decoration_lines(&mut self, layout_parent_style: &ComputedValues) { + fn adjust_for_text_decoration_lines( + &mut self, + layout_parent_style: &ComputedValues, + ) { use properties::computed_value_flags::HAS_TEXT_DECORATION_LINES; if layout_parent_style.flags.contains(HAS_TEXT_DECORATION_LINES) || !self.style.get_text().clone_text_decoration_line().is_empty() { @@ -379,7 +394,10 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { } #[cfg(feature = "gecko")] - fn should_suppress_linebreak(&self, layout_parent_style: &ComputedValues) -> bool { + fn should_suppress_linebreak( + &self, + layout_parent_style: &ComputedValues, + ) -> bool { use properties::computed_value_flags::SHOULD_SUPPRESS_LINEBREAK; // Line break suppression should only be propagated to in-flow children. if self.style.floated() || self.style.out_of_flow_positioned() { @@ -395,13 +413,15 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { } match self.style.get_box().clone_display() { // Ruby base and text are always non-breakable. - display::ruby_base | display::ruby_text => true, + display::ruby_base | + display::ruby_text => true, // Ruby base container and text container are breakable. // Note that, when certain HTML tags, e.g. form controls, have ruby // level container display type, they could also escape from the // line break suppression flag while they shouldn't. However, it is // generally fine since they themselves are non-breakable. - display::ruby_base_container | display::ruby_text_container => false, + display::ruby_base_container | + display::ruby_text_container => false, // Anything else is non-breakable if and only if its layout parent // has a ruby display type, because any of the ruby boxes can be // anonymous. @@ -415,9 +435,11 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { /// * suppress border and padding for ruby level containers, /// * correct unicode-bidi. #[cfg(feature = "gecko")] - fn adjust_for_ruby(&mut self, - layout_parent_style: &ComputedValues, - flags: CascadeFlags) { + fn adjust_for_ruby( + &mut self, + layout_parent_style: &ComputedValues, + flags: CascadeFlags, + ) { use properties::SKIP_ROOT_AND_ITEM_BASED_DISPLAY_FIXUP; use properties::computed_value_flags::SHOULD_SUPPRESS_LINEBREAK; use properties::longhands::unicode_bidi::computed_value::T as unicode_bidi; @@ -447,7 +469,8 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { // per spec https://drafts.csswg.org/css-ruby-1/#bidi if self_display.is_ruby_type() { let new_value = match self.style.get_text().clone_unicode_bidi() { - unicode_bidi::normal | unicode_bidi::embed => Some(unicode_bidi::isolate), + unicode_bidi::normal | + unicode_bidi::embed => Some(unicode_bidi::isolate), unicode_bidi::bidi_override => Some(unicode_bidi::isolate_override), _ => None, }; @@ -521,9 +544,11 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { /// When comparing to Gecko, this is similar to the work done by /// `nsStyleContext::ApplyStyleFixups`, plus some parts of /// `nsStyleSet::GetContext`. - pub fn adjust(&mut self, - layout_parent_style: &ComputedValues, - flags: CascadeFlags) { + pub fn adjust( + &mut self, + layout_parent_style: &ComputedValues, + flags: CascadeFlags, + ) { self.adjust_for_visited(flags); #[cfg(feature = "gecko")] { From 7d2e2e25d6dc8515bcdd3f65e093aa7382a27191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Wed, 6 Sep 2017 12:47:18 +0200 Subject: [PATCH 5/7] style: Handle correctly display changes from ruby to non-ruby in some edge cases. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit And add comments to the reset-property-dependent adjustments. MozReview-Commit-ID: Li6Epx8k5x8 Signed-off-by: Emilio Cobos Álvarez --- components/style/matching.rs | 9 +++++++++ components/style/style_adjuster.rs | 10 +++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/components/style/matching.rs b/components/style/matching.rs index c3c5e37c165..2b95f2ba611 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -410,6 +410,15 @@ trait PrivateMatchMethods: TElement { return ChildCascadeRequirement::MustCascadeChildren } + // Line break suppression may also be affected if the display + // type changes from ruby to non-ruby. + #[cfg(feature = "gecko")] + { + if old_display.is_ruby_type() != new_display.is_ruby_type() { + return ChildCascadeRequirement::MustCascadeChildren + } + } + // Children with justify-items: auto may depend on our // justify-items property value. // diff --git a/components/style/style_adjuster.rs b/components/style/style_adjuster.rs index c2044c143b5..a4d9f5acd00 100644 --- a/components/style/style_adjuster.rs +++ b/components/style/style_adjuster.rs @@ -13,7 +13,11 @@ use properties::longhands::float::computed_value::T as float; use properties::longhands::overflow_x::computed_value::T as overflow; use properties::longhands::position::computed_value::T as position; -/// An unsized struct that implements all the adjustment methods. +/// A struct that implements all the adjustment methods. +/// +/// NOTE(emilio): If new adjustments are introduced that depend on reset +/// properties of the parent, you may need tweaking the +/// `ChildCascadeRequirement` code in `matching.rs`. pub struct StyleAdjuster<'a, 'b: 'a> { style: &'a mut StyleBuilder<'b>, } @@ -331,6 +335,10 @@ impl<'a, 'b: 'a> StyleAdjuster<'a, 'b> { /// If a
has grid/flex display type, we need to inherit /// this type into its ::-moz-fieldset-content anonymous box. + /// + /// NOTE(emilio): We don't need to handle the display change for this case + /// in matching.rs because anonymous box restyling works separately to the + /// normal cascading process. #[cfg(feature = "gecko")] fn adjust_for_fieldset_content( &mut self, From d8234fef8291947d1990667d88c6a55125eea9e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Wed, 6 Sep 2017 12:50:41 +0200 Subject: [PATCH 6/7] style: update bindings. --- .../style/gecko/generated/atom_macro.rs | 40 ++ components/style/gecko/generated/bindings.rs | 9 +- .../style/gecko/generated/structs_debug.rs | 587 +++++++++++------- .../style/gecko/generated/structs_release.rs | 585 ++++++++++------- 4 files changed, 744 insertions(+), 477 deletions(-) diff --git a/components/style/gecko/generated/atom_macro.rs b/components/style/gecko/generated/atom_macro.rs index c3da2f4bab7..d552f27671b 100644 --- a/components/style/gecko/generated/atom_macro.rs +++ b/components/style/gecko/generated/atom_macro.rs @@ -4058,6 +4058,16 @@ cfg_if! { pub static nsGkAtoms_moz_extension: *mut nsIAtom; #[link_name = "_ZN9nsGkAtoms18all_urlsPermissionE"] pub static nsGkAtoms_all_urlsPermission: *mut nsIAtom; + #[link_name = "_ZN9nsGkAtoms13clipboardReadE"] + pub static nsGkAtoms_clipboardRead: *mut nsIAtom; + #[link_name = "_ZN9nsGkAtoms14clipboardWriteE"] + pub static nsGkAtoms_clipboardWrite: *mut nsIAtom; + #[link_name = "_ZN9nsGkAtoms8debuggerE"] + pub static nsGkAtoms_debugger: *mut nsIAtom; + #[link_name = "_ZN9nsGkAtoms4tabsE"] + pub static nsGkAtoms_tabs: *mut nsIAtom; + #[link_name = "_ZN9nsGkAtoms18webRequestBlockingE"] + pub static nsGkAtoms_webRequestBlocking: *mut nsIAtom; #[link_name = "_ZN9nsGkAtoms4httpE"] pub static nsGkAtoms_http: *mut nsIAtom; #[link_name = "_ZN9nsGkAtoms5httpsE"] @@ -9211,6 +9221,16 @@ cfg_if! { pub static nsGkAtoms_moz_extension: *mut nsIAtom; #[link_name = "?all_urlsPermission@nsGkAtoms@@2PEAVnsIAtom@@EA"] pub static nsGkAtoms_all_urlsPermission: *mut nsIAtom; + #[link_name = "?clipboardRead@nsGkAtoms@@2PEAVnsIAtom@@EA"] + pub static nsGkAtoms_clipboardRead: *mut nsIAtom; + #[link_name = "?clipboardWrite@nsGkAtoms@@2PEAVnsIAtom@@EA"] + pub static nsGkAtoms_clipboardWrite: *mut nsIAtom; + #[link_name = "?debugger@nsGkAtoms@@2PEAVnsIAtom@@EA"] + pub static nsGkAtoms_debugger: *mut nsIAtom; + #[link_name = "?tabs@nsGkAtoms@@2PEAVnsIAtom@@EA"] + pub static nsGkAtoms_tabs: *mut nsIAtom; + #[link_name = "?webRequestBlocking@nsGkAtoms@@2PEAVnsIAtom@@EA"] + pub static nsGkAtoms_webRequestBlocking: *mut nsIAtom; #[link_name = "?http@nsGkAtoms@@2PEAVnsIAtom@@EA"] pub static nsGkAtoms_http: *mut nsIAtom; #[link_name = "?https@nsGkAtoms@@2PEAVnsIAtom@@EA"] @@ -14364,6 +14384,16 @@ cfg_if! { pub static nsGkAtoms_moz_extension: *mut nsIAtom; #[link_name = "\x01?all_urlsPermission@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_all_urlsPermission: *mut nsIAtom; + #[link_name = "\x01?clipboardRead@nsGkAtoms@@2PAVnsIAtom@@A"] + pub static nsGkAtoms_clipboardRead: *mut nsIAtom; + #[link_name = "\x01?clipboardWrite@nsGkAtoms@@2PAVnsIAtom@@A"] + pub static nsGkAtoms_clipboardWrite: *mut nsIAtom; + #[link_name = "\x01?debugger@nsGkAtoms@@2PAVnsIAtom@@A"] + pub static nsGkAtoms_debugger: *mut nsIAtom; + #[link_name = "\x01?tabs@nsGkAtoms@@2PAVnsIAtom@@A"] + pub static nsGkAtoms_tabs: *mut nsIAtom; + #[link_name = "\x01?webRequestBlocking@nsGkAtoms@@2PAVnsIAtom@@A"] + pub static nsGkAtoms_webRequestBlocking: *mut nsIAtom; #[link_name = "\x01?http@nsGkAtoms@@2PAVnsIAtom@@A"] pub static nsGkAtoms_http: *mut nsIAtom; #[link_name = "\x01?https@nsGkAtoms@@2PAVnsIAtom@@A"] @@ -19520,6 +19550,16 @@ macro_rules! atom { { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_moz_extension as *mut _) } }; ("") => { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_all_urlsPermission as *mut _) } }; +("clipboardRead") => + { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_clipboardRead as *mut _) } }; +("clipboardWrite") => + { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_clipboardWrite as *mut _) } }; +("debugger") => + { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_debugger as *mut _) } }; +("tabs") => + { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_tabs as *mut _) } }; +("webRequestBlocking") => + { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_webRequestBlocking as *mut _) } }; ("http") => { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_http as *mut _) } }; ("https") => diff --git a/components/style/gecko/generated/bindings.rs b/components/style/gecko/generated/bindings.rs index 1b1ad6a6249..5893669015e 100644 --- a/components/style/gecko/generated/bindings.rs +++ b/components/style/gecko/generated/bindings.rs @@ -1087,8 +1087,8 @@ extern "C" { extern "C" { pub fn Gecko_CalcStyleDifference(old_style: ServoStyleContextBorrowed, new_style: ServoStyleContextBorrowed, - old_style_bits: u64, - any_style_changed: *mut bool) -> u32; + any_style_changed: *mut bool, + reset_only_changed: *mut bool) -> u32; } extern "C" { pub fn Gecko_GetElementSnapshot(table: *const ServoElementSnapshotTable, @@ -1969,6 +1969,11 @@ extern "C" { RawServoStyleSheetContentsBorrowed) -> usize; } +extern "C" { + pub fn Servo_StyleSheet_GetSourceMapURL(sheet: + RawServoStyleSheetContentsBorrowed, + result: *mut nsAString); +} extern "C" { pub fn Servo_StyleSheet_GetOrigin(sheet: RawServoStyleSheetContentsBorrowed) diff --git a/components/style/gecko/generated/structs_debug.rs b/components/style/gecko/generated/structs_debug.rs index c3baa55eee7..982722b5ef5 100644 --- a/components/style/gecko/generated/structs_debug.rs +++ b/components/style/gecko/generated/structs_debug.rs @@ -1045,20 +1045,8 @@ pub mod root { } pub type pair_first_type<_T1> = _T1; pub type pair_second_type<_T2> = _T2; - pub type pair__EnableB = u8; - #[repr(C)] - #[derive(Debug, Copy, Clone)] - pub struct pair__CheckArgs { - pub _address: u8, - } - pub type pair__CheckArgsDep = u8; - #[repr(C)] - #[derive(Debug, Copy, Clone)] - pub struct pair__CheckTupleLikeConstructor { - pub _address: u8, - } - pub type pair__CheckTLC = u8; - pub type conditional_type<_If> = _If; + pub type pair__PCCP = u8; + pub type pair__PCCFP = u8; #[repr(C)] #[derive(Debug, Copy)] pub struct input_iterator_tag { @@ -1078,118 +1066,37 @@ pub mod root { fn clone(&self) -> Self { *self } } #[repr(C)] - #[derive(Debug, Copy)] - pub struct forward_iterator_tag { - pub _address: u8, - } - #[test] - fn bindgen_test_layout_forward_iterator_tag() { - assert_eq!(::std::mem::size_of::() , 1usize - , concat ! ( - "Size of: " , stringify ! ( forward_iterator_tag ) )); - assert_eq! (::std::mem::align_of::() , - 1usize , concat ! ( - "Alignment of " , stringify ! ( forward_iterator_tag ) - )); - } - impl Clone for forward_iterator_tag { - fn clone(&self) -> Self { *self } - } - #[repr(C)] - #[derive(Debug, Copy)] - pub struct bidirectional_iterator_tag { - pub _address: u8, - } - #[test] - fn bindgen_test_layout_bidirectional_iterator_tag() { - assert_eq!(::std::mem::size_of::() , - 1usize , concat ! ( - "Size of: " , stringify ! ( bidirectional_iterator_tag - ) )); - assert_eq! (::std::mem::align_of::() , - 1usize , concat ! ( - "Alignment of " , stringify ! ( - bidirectional_iterator_tag ) )); - } - impl Clone for bidirectional_iterator_tag { - fn clone(&self) -> Self { *self } - } - #[repr(C)] - #[derive(Debug, Copy)] - pub struct random_access_iterator_tag { - pub _address: u8, - } - #[test] - fn bindgen_test_layout_random_access_iterator_tag() { - assert_eq!(::std::mem::size_of::() , - 1usize , concat ! ( - "Size of: " , stringify ! ( random_access_iterator_tag - ) )); - assert_eq! (::std::mem::align_of::() , - 1usize , concat ! ( - "Alignment of " , stringify ! ( - random_access_iterator_tag ) )); - } - impl Clone for random_access_iterator_tag { - fn clone(&self) -> Self { *self } - } - #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct iterator { pub _address: u8, } + pub type iterator_iterator_category<_Category> = _Category; pub type iterator_value_type<_Tp> = _Tp; pub type iterator_difference_type<_Distance> = _Distance; pub type iterator_pointer<_Pointer> = _Pointer; pub type iterator_reference<_Reference> = _Reference; - pub type iterator_iterator_category<_Category> = _Category; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct atomic { } - pub type atomic___base = u8; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct function { pub _address: u8, } - pub type __bit_iterator_difference_type = [u8; 0usize]; - pub type __bit_iterator_value_type = bool; - pub type __bit_iterator_pointer = u8; - pub type __bit_iterator_reference = u8; - pub type __bit_iterator_iterator_category = - root::std::random_access_iterator_tag; - pub type __bit_iterator___storage_type = [u8; 0usize]; - pub type __bit_iterator___storage_pointer = [u8; 0usize]; + pub type _Base_bitset__WordT = ::std::os::raw::c_ulong; + pub type bitset__Base = u8; + pub type bitset__WordT = ::std::os::raw::c_ulong; #[repr(C)] - pub struct __bit_const_reference { - pub __seg_: root::std::__bit_const_reference___storage_pointer, - pub __mask_: root::std::__bit_const_reference___storage_type, + #[derive(Debug)] + pub struct bitset_reference { + pub _M_wp: *mut root::std::bitset__WordT, + pub _M_bpos: usize, } - pub type __bit_const_reference___storage_type = [u8; 0usize]; - pub type __bit_const_reference___storage_pointer = [u8; 0usize]; - pub type __bit_reference___storage_type = [u8; 0usize]; - pub type __bit_reference___storage_pointer = [u8; 0usize]; - pub type __bitset_difference_type = isize; - pub type __bitset_size_type = usize; - pub type __bitset___storage_type = root::std::__bitset_size_type; - pub type __bitset___self = u8; - pub type __bitset___storage_pointer = - *mut root::std::__bitset___storage_type; - pub type __bitset___const_storage_pointer = - *const root::std::__bitset___storage_type; - pub const __bitset___bits_per_word: ::std::os::raw::c_uint = 64; - pub type __bitset_reference = u8; - pub type __bitset_const_reference = root::std::__bit_const_reference; - pub type __bitset_iterator = u8; - pub type __bitset_const_iterator = u8; - extern "C" { - #[link_name = "__n_words"] - pub static bitset___n_words: ::std::os::raw::c_uint; - } - pub type bitset_base = u8; - pub type bitset_reference = root::std::bitset_base; - pub type bitset_const_reference = root::std::bitset_base; + } + pub mod __gnu_cxx { + #[allow(unused_imports)] + use self::super::super::root; } pub mod mozilla { #[allow(unused_imports)] @@ -2330,7 +2237,7 @@ pub mod root { } } #[repr(C)] - #[derive(Debug, Copy)] + #[derive(Debug)] pub struct ThreadSafeAutoRefCnt { pub mValue: u64, } @@ -2351,9 +2258,6 @@ pub mod root { ThreadSafeAutoRefCnt ) , "::" , stringify ! ( mValue ) )); } - impl Clone for ThreadSafeAutoRefCnt { - fn clone(&self) -> Self { *self } - } #[repr(C)] #[derive(Debug)] pub struct OwningNonNull { @@ -6161,13 +6065,14 @@ pub mod root { pub mFirstChild: root::RefPtr, pub mSheets: [u64; 10usize], pub mSourceMapURL: ::nsstring::nsStringRepr, + pub mSourceMapURLFromComment: ::nsstring::nsStringRepr, pub mPrincipalSet: bool, } pub use self::super::super::root::mozilla::net::ReferrerPolicy as StyleSheetInfo_ReferrerPolicy; #[test] fn bindgen_test_layout_StyleSheetInfo() { - assert_eq!(::std::mem::size_of::() , 216usize , + assert_eq!(::std::mem::size_of::() , 232usize , concat ! ( "Size of: " , stringify ! ( StyleSheetInfo ) )); assert_eq! (::std::mem::align_of::() , 8usize , @@ -6233,7 +6138,14 @@ pub mod root { ) , "::" , stringify ! ( mSourceMapURL ) )); assert_eq! (unsafe { & ( * ( 0 as * const StyleSheetInfo ) ) . - mPrincipalSet as * const _ as usize } , 208usize , + mSourceMapURLFromComment as * const _ as usize } , + 208usize , concat ! ( + "Alignment of field: " , stringify ! ( StyleSheetInfo + ) , "::" , stringify ! ( mSourceMapURLFromComment ) + )); + assert_eq! (unsafe { + & ( * ( 0 as * const StyleSheetInfo ) ) . + mPrincipalSet as * const _ as usize } , 224usize , concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mPrincipalSet ) )); @@ -6284,6 +6196,128 @@ pub mod root { NotPseudo = 28, MAX = 29, } + /// The set of style sheets that apply to a document, backed by a Servo + /// Stylist. A ServoStyleSet contains ServoStyleSheets. + #[repr(C)] + #[derive(Debug)] + pub struct ServoStyleSet { + pub mKind: root::mozilla::ServoStyleSet_Kind, + pub mPresContext: *mut root::nsPresContext, + pub mLastPresContextUsesXBLStyleSet: *mut ::std::os::raw::c_void, + pub mRawSet: root::mozilla::UniquePtr, + pub mSheets: [u64; 9usize], + pub mAuthorStyleDisabled: bool, + pub mStylistState: root::mozilla::StylistState, + pub mUserFontSetUpdateGeneration: u64, + pub mUserFontCacheUpdateGeneration: u32, + pub mNeedsRestyleAfterEnsureUniqueInner: bool, + pub mNonInheritingStyleContexts: [u64; 7usize], + pub mPostTraversalTasks: root::nsTArray, + pub mStyleRuleMap: root::RefPtr, + pub mBindingManager: root::RefPtr, + } + pub type ServoStyleSet_SnapshotTable = + root::mozilla::ServoElementSnapshotTable; + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum ServoStyleSet_Kind { Master = 0, ForXBL = 1, } + extern "C" { + #[link_name = "_ZN7mozilla13ServoStyleSet17sInServoTraversalE"] + pub static mut ServoStyleSet_sInServoTraversal: + *mut root::mozilla::ServoStyleSet; + } + #[test] + fn bindgen_test_layout_ServoStyleSet() { + assert_eq!(::std::mem::size_of::() , 208usize , + concat ! ( "Size of: " , stringify ! ( ServoStyleSet ) + )); + assert_eq! (::std::mem::align_of::() , 8usize , + concat ! ( + "Alignment of " , stringify ! ( ServoStyleSet ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . mKind as * + const _ as usize } , 0usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mKind ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . mPresContext + as * const _ as usize } , 8usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mPresContext ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mLastPresContextUsesXBLStyleSet as * const _ as usize + } , 16usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mLastPresContextUsesXBLStyleSet + ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . mRawSet as * + const _ as usize } , 24usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mRawSet ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . mSheets as * + const _ as usize } , 32usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mSheets ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mAuthorStyleDisabled as * const _ as usize } , + 104usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mAuthorStyleDisabled ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . mStylistState + as * const _ as usize } , 105usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mStylistState ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mUserFontSetUpdateGeneration as * const _ as usize } , + 112usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mUserFontSetUpdateGeneration ) + )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mUserFontCacheUpdateGeneration as * const _ as usize } + , 120usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mUserFontCacheUpdateGeneration + ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mNeedsRestyleAfterEnsureUniqueInner as * const _ as + usize } , 124usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( + mNeedsRestyleAfterEnsureUniqueInner ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mNonInheritingStyleContexts as * const _ as usize } , + 128usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mNonInheritingStyleContexts ) + )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mPostTraversalTasks as * const _ as usize } , 184usize + , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mPostTraversalTasks ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . mStyleRuleMap + as * const _ as usize } , 192usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mStyleRuleMap ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mBindingManager as * const _ as usize } , 200usize , + concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mBindingManager ) )); + } #[repr(C)] #[derive(Debug, Copy)] pub struct SeenPtrs { @@ -9030,7 +9064,7 @@ pub mod root { #[test] fn bindgen_test_layout_ServoStyleSheetInner() { assert_eq!(::std::mem::size_of::() , - 232usize , concat ! ( + 248usize , concat ! ( "Size of: " , stringify ! ( ServoStyleSheetInner ) )); assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( @@ -9038,14 +9072,14 @@ pub mod root { )); assert_eq! (unsafe { & ( * ( 0 as * const ServoStyleSheetInner ) ) . - mContents as * const _ as usize } , 216usize , concat + mContents as * const _ as usize } , 232usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSheetInner ) , "::" , stringify ! ( mContents ) )); assert_eq! (unsafe { & ( * ( 0 as * const ServoStyleSheetInner ) ) . - mURLData as * const _ as usize } , 224usize , concat ! + mURLData as * const _ as usize } , 240usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSheetInner ) , "::" , stringify ! ( mURLData @@ -9880,6 +9914,18 @@ pub mod root { fn clone(&self) -> Self { *self } } #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ServoStyleRuleMap { + _unused: [u8; 0], + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StylistState { + NotDirty = 0, + StyleSheetsDirty = 1, + XBLStyleSheetsDirty = 2, + } + #[repr(C)] #[derive(Debug)] pub struct CSSFontFaceDescriptors { pub mFamily: root::nsCSSValue, @@ -11114,6 +11160,7 @@ pub mod root { pub mRecording: bool, pub mSeenBadToken: bool, pub mSeenVariableReference: bool, + pub mSourceMapURL: ::nsstring::nsStringRepr, } #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] @@ -11129,7 +11176,7 @@ pub mod root { } #[test] fn bindgen_test_layout_nsCSSScanner() { - assert_eq!(::std::mem::size_of::() , 64usize , concat ! + assert_eq!(::std::mem::size_of::() , 80usize , concat ! ( "Size of: " , stringify ! ( nsCSSScanner ) )); assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSScanner ) )); @@ -11204,6 +11251,11 @@ pub mod root { concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mSeenVariableReference ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const nsCSSScanner ) ) . mSourceMapURL as * + const _ as usize } , 64usize , concat ! ( + "Alignment of field: " , stringify ! ( nsCSSScanner ) , + "::" , stringify ! ( mSourceMapURL ) )); } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -13578,8 +13630,11 @@ pub mod root { pub const nsChangeHint_nsChangeHint_UpdateWidgetProperties: root::nsChangeHint = nsChangeHint(536870912); + pub const nsChangeHint_nsChangeHint_UpdateTableCellSpans: + root::nsChangeHint = + nsChangeHint(1073741824); pub const nsChangeHint_nsChangeHint_AllHints: root::nsChangeHint = - nsChangeHint(1073741823); + nsChangeHint(2147483647); impl ::std::ops::BitOr for root::nsChangeHint { type Output @@ -15993,7 +16048,7 @@ pub mod root { , "::" , stringify ! ( writing_mode ) )); assert_eq! (unsafe { & ( * ( 0 as * const ServoComputedData ) ) . flags as * - const _ as usize } , 193usize , concat ! ( + const _ as usize } , 194usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( flags ) )); assert_eq! (unsafe { @@ -16057,7 +16112,7 @@ pub mod root { /// tracking. NOTE: A string buffer can be modified only if its reference /// count is 1. #[repr(C)] - #[derive(Debug, Copy)] + #[derive(Debug)] pub struct nsStringBuffer { pub mRefCount: u32, pub mStorageSize: u32, @@ -16079,9 +16134,6 @@ pub mod root { "Alignment of field: " , stringify ! ( nsStringBuffer ) , "::" , stringify ! ( mStorageSize ) )); } - impl Clone for nsStringBuffer { - fn clone(&self) -> Self { *self } - } #[repr(C)] #[derive(Debug, Copy)] pub struct nsIAtom { @@ -25809,57 +25861,57 @@ pub mod root { pub struct nsRange { _unused: [u8; 0], } - pub const NODE_HAS_LISTENERMANAGER: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_LISTENERMANAGER; - pub const NODE_HAS_PROPERTIES: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_PROPERTIES; - pub const NODE_IS_ANONYMOUS_ROOT: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_ANONYMOUS_ROOT; - pub const NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE; - pub const NODE_IS_NATIVE_ANONYMOUS_ROOT: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_NATIVE_ANONYMOUS_ROOT; - pub const NODE_FORCE_XBL_BINDINGS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_FORCE_XBL_BINDINGS; - pub const NODE_MAY_BE_IN_BINDING_MNGR: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_MAY_BE_IN_BINDING_MNGR; - pub const NODE_IS_EDITABLE: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_EDITABLE; - pub const NODE_IS_NATIVE_ANONYMOUS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_NATIVE_ANONYMOUS; - pub const NODE_IS_IN_SHADOW_TREE: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_IN_SHADOW_TREE; - pub const NODE_HAS_EMPTY_SELECTOR: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_EMPTY_SELECTOR; - pub const NODE_HAS_SLOW_SELECTOR: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_SLOW_SELECTOR; - pub const NODE_HAS_EDGE_CHILD_SELECTOR: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_EDGE_CHILD_SELECTOR; - pub const NODE_HAS_SLOW_SELECTOR_LATER_SIBLINGS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_SLOW_SELECTOR_LATER_SIBLINGS; - pub const NODE_ALL_SELECTOR_FLAGS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_ALL_SELECTOR_FLAGS; - pub const NODE_NEEDS_FRAME: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_NEEDS_FRAME; - pub const NODE_DESCENDANTS_NEED_FRAMES: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_DESCENDANTS_NEED_FRAMES; - pub const NODE_HAS_ACCESSKEY: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_ACCESSKEY; - pub const NODE_HAS_DIRECTION_RTL: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_DIRECTION_RTL; - pub const NODE_HAS_DIRECTION_LTR: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_DIRECTION_LTR; - pub const NODE_ALL_DIRECTION_FLAGS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_ALL_DIRECTION_FLAGS; - pub const NODE_CHROME_ONLY_ACCESS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_CHROME_ONLY_ACCESS; - pub const NODE_IS_ROOT_OF_CHROME_ONLY_ACCESS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_ROOT_OF_CHROME_ONLY_ACCESS; - pub const NODE_TYPE_SPECIFIC_BITS_OFFSET: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_TYPE_SPECIFIC_BITS_OFFSET; + pub const NODE_HAS_LISTENERMANAGER: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_LISTENERMANAGER; + pub const NODE_HAS_PROPERTIES: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_PROPERTIES; + pub const NODE_IS_ANONYMOUS_ROOT: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_ANONYMOUS_ROOT; + pub const NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE; + pub const NODE_IS_NATIVE_ANONYMOUS_ROOT: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_NATIVE_ANONYMOUS_ROOT; + pub const NODE_FORCE_XBL_BINDINGS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_FORCE_XBL_BINDINGS; + pub const NODE_MAY_BE_IN_BINDING_MNGR: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_MAY_BE_IN_BINDING_MNGR; + pub const NODE_IS_EDITABLE: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_EDITABLE; + pub const NODE_IS_NATIVE_ANONYMOUS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_NATIVE_ANONYMOUS; + pub const NODE_IS_IN_SHADOW_TREE: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_IN_SHADOW_TREE; + pub const NODE_HAS_EMPTY_SELECTOR: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_EMPTY_SELECTOR; + pub const NODE_HAS_SLOW_SELECTOR: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_SLOW_SELECTOR; + pub const NODE_HAS_EDGE_CHILD_SELECTOR: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_EDGE_CHILD_SELECTOR; + pub const NODE_HAS_SLOW_SELECTOR_LATER_SIBLINGS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_SLOW_SELECTOR_LATER_SIBLINGS; + pub const NODE_ALL_SELECTOR_FLAGS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_ALL_SELECTOR_FLAGS; + pub const NODE_NEEDS_FRAME: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_NEEDS_FRAME; + pub const NODE_DESCENDANTS_NEED_FRAMES: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_DESCENDANTS_NEED_FRAMES; + pub const NODE_HAS_ACCESSKEY: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_ACCESSKEY; + pub const NODE_HAS_DIRECTION_RTL: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_DIRECTION_RTL; + pub const NODE_HAS_DIRECTION_LTR: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_DIRECTION_LTR; + pub const NODE_ALL_DIRECTION_FLAGS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_ALL_DIRECTION_FLAGS; + pub const NODE_CHROME_ONLY_ACCESS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_CHROME_ONLY_ACCESS; + pub const NODE_IS_ROOT_OF_CHROME_ONLY_ACCESS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_ROOT_OF_CHROME_ONLY_ACCESS; + pub const NODE_TYPE_SPECIFIC_BITS_OFFSET: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_TYPE_SPECIFIC_BITS_OFFSET; #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] - pub enum _bindgen_ty_18 { + pub enum _bindgen_ty_77 { NODE_HAS_LISTENERMANAGER = 4, NODE_HAS_PROPERTIES = 8, NODE_IS_ANONYMOUS_ROOT = 16, @@ -33485,46 +33537,46 @@ pub mod root { assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( "Alignment of " , stringify ! ( nsISMILAttr ) )); } - pub const ELEMENT_SHARED_RESTYLE_BIT_1: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_1; - pub const ELEMENT_SHARED_RESTYLE_BIT_2: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_2; - pub const ELEMENT_SHARED_RESTYLE_BIT_3: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_3; - pub const ELEMENT_SHARED_RESTYLE_BIT_4: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_4; - pub const ELEMENT_HAS_DIRTY_DESCENDANTS_FOR_SERVO: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_1; + pub const ELEMENT_SHARED_RESTYLE_BIT_1: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_1; + pub const ELEMENT_SHARED_RESTYLE_BIT_2: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_2; + pub const ELEMENT_SHARED_RESTYLE_BIT_3: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_3; + pub const ELEMENT_SHARED_RESTYLE_BIT_4: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_4; + pub const ELEMENT_HAS_DIRTY_DESCENDANTS_FOR_SERVO: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_1; pub const ELEMENT_HAS_ANIMATION_ONLY_DIRTY_DESCENDANTS_FOR_SERVO: - root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_2; - pub const ELEMENT_HAS_SNAPSHOT: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_3; - pub const ELEMENT_HANDLED_SNAPSHOT: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_4; - pub const ELEMENT_HAS_PENDING_RESTYLE: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_1; - pub const ELEMENT_IS_POTENTIAL_RESTYLE_ROOT: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_2; - pub const ELEMENT_HAS_PENDING_ANIMATION_ONLY_RESTYLE: root::_bindgen_ty_20 + root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_2; + pub const ELEMENT_HAS_SNAPSHOT: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_3; + pub const ELEMENT_HANDLED_SNAPSHOT: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_4; + pub const ELEMENT_HAS_PENDING_RESTYLE: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_1; + pub const ELEMENT_IS_POTENTIAL_RESTYLE_ROOT: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_2; + pub const ELEMENT_HAS_PENDING_ANIMATION_ONLY_RESTYLE: root::_bindgen_ty_79 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_3; + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_3; pub const ELEMENT_IS_POTENTIAL_ANIMATION_ONLY_RESTYLE_ROOT: - root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_4; - pub const ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR; - pub const ELEMENT_PENDING_RESTYLE_FLAGS: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_PENDING_RESTYLE_FLAGS; - pub const ELEMENT_POTENTIAL_RESTYLE_ROOT_FLAGS: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_POTENTIAL_RESTYLE_ROOT_FLAGS; - pub const ELEMENT_ALL_RESTYLE_FLAGS: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_ALL_RESTYLE_FLAGS; - pub const ELEMENT_TYPE_SPECIFIC_BITS_OFFSET: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_TYPE_SPECIFIC_BITS_OFFSET; + root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_4; + pub const ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR; + pub const ELEMENT_PENDING_RESTYLE_FLAGS: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_PENDING_RESTYLE_FLAGS; + pub const ELEMENT_POTENTIAL_RESTYLE_ROOT_FLAGS: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_POTENTIAL_RESTYLE_ROOT_FLAGS; + pub const ELEMENT_ALL_RESTYLE_FLAGS: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_ALL_RESTYLE_FLAGS; + pub const ELEMENT_TYPE_SPECIFIC_BITS_OFFSET: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_TYPE_SPECIFIC_BITS_OFFSET; #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] - pub enum _bindgen_ty_20 { + pub enum _bindgen_ty_79 { ELEMENT_SHARED_RESTYLE_BIT_1 = 8388608, ELEMENT_SHARED_RESTYLE_BIT_2 = 16777216, ELEMENT_SHARED_RESTYLE_BIT_3 = 33554432, @@ -33912,6 +33964,19 @@ pub mod root { pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozPlaceholder: u32 = 8; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_placeholder: u32 = 8; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozColorSwatch: u32 = 12; + pub type nsCSSAnonBoxes_NonInheritingBase = u8; + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsCSSAnonBoxes_NonInheriting { + oofPlaceholder = 0, + horizontalFramesetBorder = 1, + verticalFramesetBorder = 2, + framesetBlank = 3, + tableColGroup = 4, + tableCol = 5, + pageBreak = 6, + _Count = 7, + } pub type nsBindingList = root::nsTArray>; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -34414,7 +34479,7 @@ pub mod root { root::nsTArray ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_212850_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_205354_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -34770,7 +34835,7 @@ pub mod root { root::mozilla::binding_danger::TErrorResult ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_214679_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_207182_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -34935,7 +35000,7 @@ pub mod root { root::JS::DeletePolicy ) )); } #[test] - fn __bindgen_test_layout_iterator_open0_input_iterator_tag_UniquePtr_open1_JSErrorNotes_Note_DeletePolicy_open2_JSErrorNotes_Note_close2_close1_long__bindgen_ty_id_220268__bindgen_ty_id_220275_close0_instantiation() { + fn __bindgen_test_layout_iterator_open0_input_iterator_tag_UniquePtr_open1_JSErrorNotes_Note_DeletePolicy_open2_JSErrorNotes_Note_close2_close1_long__bindgen_ty_id_212773__bindgen_ty_id_212780_close0_instantiation() { assert_eq!(::std::mem::size_of::() , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35183,7 +35248,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_222771_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_215281_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35251,7 +35316,7 @@ pub mod root { root::nsCOMPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_223076_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_215586_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35363,7 +35428,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_NotNull_open0__bindgen_ty_id_223625_close0_instantiation() { + fn __bindgen_test_layout_NotNull_open0__bindgen_ty_id_216135_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35765,7 +35830,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_224047_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_216557_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35855,7 +35920,20 @@ pub mod root { ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_224455_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_ServoStyleSheet_close1_close0_instantiation_1() { + assert_eq!(::std::mem::size_of::>>() + , 8usize , concat ! ( + "Size of template specialization: " , stringify ! ( + root::nsTArray> + ) )); + assert_eq!(::std::mem::align_of::>>() + , 8usize , concat ! ( + "Alignment of template specialization: " , stringify ! ( + root::nsTArray> + ) )); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_216977_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35899,7 +35977,7 @@ pub mod root { root::mozilla::DefaultDelete ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_ServoStyleSheet_close1_close0_instantiation_1() { + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_ServoStyleSheet_close1_close0_instantiation_2() { assert_eq!(::std::mem::size_of::>>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35912,6 +35990,17 @@ pub mod root { ) )); } #[test] + fn __bindgen_test_layout_RefPtr_open0_ServoStyleContext_close0_instantiation_2() { + assert_eq!(::std::mem::size_of::>() + , 8usize , concat ! ( + "Size of template specialization: " , stringify ! ( + root::RefPtr ) )); + assert_eq!(::std::mem::align_of::>() + , 8usize , concat ! ( + "Alignment of template specialization: " , stringify ! ( + root::RefPtr ) )); + } + #[test] fn __bindgen_test_layout_nsTArray_open0_PostTraversalTask_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( @@ -35923,6 +36012,28 @@ pub mod root { root::nsTArray ) )); } #[test] + fn __bindgen_test_layout_RefPtr_open0_ServoStyleRuleMap_close0_instantiation() { + assert_eq!(::std::mem::size_of::>() + , 8usize , concat ! ( + "Size of template specialization: " , stringify ! ( + root::RefPtr ) )); + assert_eq!(::std::mem::align_of::>() + , 8usize , concat ! ( + "Alignment of template specialization: " , stringify ! ( + root::RefPtr ) )); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsBindingManager_close0_instantiation() { + assert_eq!(::std::mem::size_of::>() + , 8usize , concat ! ( + "Size of template specialization: " , stringify ! ( + root::RefPtr ) )); + assert_eq!(::std::mem::align_of::>() + , 8usize , concat ! ( + "Alignment of template specialization: " , stringify ! ( + root::RefPtr ) )); + } + #[test] fn __bindgen_test_layout_UniquePtr_open0_nsISMILAttr_DefaultDelete_open1_nsISMILAttr_close1_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( @@ -35956,7 +36067,7 @@ pub mod root { root::nsTArray<::nsstring::nsStringRepr> ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_225430_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_217952_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36049,7 +36160,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_225739_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_218261_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36060,7 +36171,7 @@ pub mod root { root::nsTArray<*mut root::nsIContent> ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_225744_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_218266_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36117,7 +36228,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_226237_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_218759_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36462,7 +36573,7 @@ pub mod root { root::nsCOMPtr ) )); } #[test] - fn __bindgen_test_layout_RefPtr_open0_nsBindingManager_close0_instantiation() { + fn __bindgen_test_layout_RefPtr_open0_nsBindingManager_close0_instantiation_1() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36776,7 +36887,7 @@ pub mod root { root::nsCOMPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_229067_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_221602_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36855,7 +36966,7 @@ pub mod root { root::mozilla::DefaultDelete ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_235293_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_227828_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36888,7 +36999,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_Heap_open0__bindgen_ty_id_236462_close0_instantiation() { + fn __bindgen_test_layout_Heap_open0__bindgen_ty_id_228997_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36899,7 +37010,7 @@ pub mod root { root::JS::Heap<*mut root::JSObject> ) )); } #[test] - fn __bindgen_test_layout_Heap_open0__bindgen_ty_id_236466_close0_instantiation() { + fn __bindgen_test_layout_Heap_open0__bindgen_ty_id_229001_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36921,7 +37032,7 @@ pub mod root { root::nsCOMPtr ) )); } #[test] - fn __bindgen_test_layout_TenuredHeap_open0__bindgen_ty_id_236473_close0_instantiation() { + fn __bindgen_test_layout_TenuredHeap_open0__bindgen_ty_id_229008_close0_instantiation() { assert_eq!(::std::mem::size_of::() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -37000,7 +37111,7 @@ pub mod root { ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_237926_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_230187_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -37195,7 +37306,7 @@ pub mod root { root::nsTArray ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_239297_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_231631_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -37300,7 +37411,7 @@ pub mod root { root::nsRefPtrHashKey ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_241701_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_234035_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38067,7 +38178,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_244267_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_236601_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38304,7 +38415,7 @@ pub mod root { root::nsCOMPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_251963_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_244297_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38315,7 +38426,7 @@ pub mod root { root::nsTArray<*mut root::nsIContent> ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_251968_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_244302_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38403,7 +38514,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_252081_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_244415_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38690,7 +38801,7 @@ pub mod root { ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_253688_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_246012_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38712,7 +38823,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_253848_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_246172_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38723,7 +38834,7 @@ pub mod root { root::nsTArray<*mut root::nsIContent> ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_253853_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_246177_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38855,7 +38966,7 @@ pub mod root { root::nsTArray ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_256860_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_248457_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38866,7 +38977,7 @@ pub mod root { root::nsTArray<*mut root::mozilla::css::DocumentRule> ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_256868_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_248465_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( diff --git a/components/style/gecko/generated/structs_release.rs b/components/style/gecko/generated/structs_release.rs index 8c218d12d99..eb0379fca12 100644 --- a/components/style/gecko/generated/structs_release.rs +++ b/components/style/gecko/generated/structs_release.rs @@ -1045,20 +1045,8 @@ pub mod root { } pub type pair_first_type<_T1> = _T1; pub type pair_second_type<_T2> = _T2; - pub type pair__EnableB = u8; - #[repr(C)] - #[derive(Debug, Copy, Clone)] - pub struct pair__CheckArgs { - pub _address: u8, - } - pub type pair__CheckArgsDep = u8; - #[repr(C)] - #[derive(Debug, Copy, Clone)] - pub struct pair__CheckTupleLikeConstructor { - pub _address: u8, - } - pub type pair__CheckTLC = u8; - pub type conditional_type<_If> = _If; + pub type pair__PCCP = u8; + pub type pair__PCCFP = u8; #[repr(C)] #[derive(Debug, Copy)] pub struct input_iterator_tag { @@ -1078,118 +1066,37 @@ pub mod root { fn clone(&self) -> Self { *self } } #[repr(C)] - #[derive(Debug, Copy)] - pub struct forward_iterator_tag { - pub _address: u8, - } - #[test] - fn bindgen_test_layout_forward_iterator_tag() { - assert_eq!(::std::mem::size_of::() , 1usize - , concat ! ( - "Size of: " , stringify ! ( forward_iterator_tag ) )); - assert_eq! (::std::mem::align_of::() , - 1usize , concat ! ( - "Alignment of " , stringify ! ( forward_iterator_tag ) - )); - } - impl Clone for forward_iterator_tag { - fn clone(&self) -> Self { *self } - } - #[repr(C)] - #[derive(Debug, Copy)] - pub struct bidirectional_iterator_tag { - pub _address: u8, - } - #[test] - fn bindgen_test_layout_bidirectional_iterator_tag() { - assert_eq!(::std::mem::size_of::() , - 1usize , concat ! ( - "Size of: " , stringify ! ( bidirectional_iterator_tag - ) )); - assert_eq! (::std::mem::align_of::() , - 1usize , concat ! ( - "Alignment of " , stringify ! ( - bidirectional_iterator_tag ) )); - } - impl Clone for bidirectional_iterator_tag { - fn clone(&self) -> Self { *self } - } - #[repr(C)] - #[derive(Debug, Copy)] - pub struct random_access_iterator_tag { - pub _address: u8, - } - #[test] - fn bindgen_test_layout_random_access_iterator_tag() { - assert_eq!(::std::mem::size_of::() , - 1usize , concat ! ( - "Size of: " , stringify ! ( random_access_iterator_tag - ) )); - assert_eq! (::std::mem::align_of::() , - 1usize , concat ! ( - "Alignment of " , stringify ! ( - random_access_iterator_tag ) )); - } - impl Clone for random_access_iterator_tag { - fn clone(&self) -> Self { *self } - } - #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct iterator { pub _address: u8, } + pub type iterator_iterator_category<_Category> = _Category; pub type iterator_value_type<_Tp> = _Tp; pub type iterator_difference_type<_Distance> = _Distance; pub type iterator_pointer<_Pointer> = _Pointer; pub type iterator_reference<_Reference> = _Reference; - pub type iterator_iterator_category<_Category> = _Category; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct atomic { } - pub type atomic___base = u8; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct function { pub _address: u8, } - pub type __bit_iterator_difference_type = [u8; 0usize]; - pub type __bit_iterator_value_type = bool; - pub type __bit_iterator_pointer = u8; - pub type __bit_iterator_reference = u8; - pub type __bit_iterator_iterator_category = - root::std::random_access_iterator_tag; - pub type __bit_iterator___storage_type = [u8; 0usize]; - pub type __bit_iterator___storage_pointer = [u8; 0usize]; + pub type _Base_bitset__WordT = ::std::os::raw::c_ulong; + pub type bitset__Base = u8; + pub type bitset__WordT = ::std::os::raw::c_ulong; #[repr(C)] - pub struct __bit_const_reference { - pub __seg_: root::std::__bit_const_reference___storage_pointer, - pub __mask_: root::std::__bit_const_reference___storage_type, + #[derive(Debug)] + pub struct bitset_reference { + pub _M_wp: *mut root::std::bitset__WordT, + pub _M_bpos: usize, } - pub type __bit_const_reference___storage_type = [u8; 0usize]; - pub type __bit_const_reference___storage_pointer = [u8; 0usize]; - pub type __bit_reference___storage_type = [u8; 0usize]; - pub type __bit_reference___storage_pointer = [u8; 0usize]; - pub type __bitset_difference_type = isize; - pub type __bitset_size_type = usize; - pub type __bitset___storage_type = root::std::__bitset_size_type; - pub type __bitset___self = u8; - pub type __bitset___storage_pointer = - *mut root::std::__bitset___storage_type; - pub type __bitset___const_storage_pointer = - *const root::std::__bitset___storage_type; - pub const __bitset___bits_per_word: ::std::os::raw::c_uint = 64; - pub type __bitset_reference = u8; - pub type __bitset_const_reference = root::std::__bit_const_reference; - pub type __bitset_iterator = u8; - pub type __bitset_const_iterator = u8; - extern "C" { - #[link_name = "__n_words"] - pub static bitset___n_words: ::std::os::raw::c_uint; - } - pub type bitset_base = u8; - pub type bitset_reference = root::std::bitset_base; - pub type bitset_const_reference = root::std::bitset_base; + } + pub mod __gnu_cxx { + #[allow(unused_imports)] + use self::super::super::root; } pub mod mozilla { #[allow(unused_imports)] @@ -2254,7 +2161,7 @@ pub mod root { } } #[repr(C)] - #[derive(Debug, Copy)] + #[derive(Debug)] pub struct ThreadSafeAutoRefCnt { pub mValue: u64, } @@ -2275,9 +2182,6 @@ pub mod root { ThreadSafeAutoRefCnt ) , "::" , stringify ! ( mValue ) )); } - impl Clone for ThreadSafeAutoRefCnt { - fn clone(&self) -> Self { *self } - } #[repr(C)] #[derive(Debug)] pub struct OwningNonNull { @@ -6050,12 +5954,13 @@ pub mod root { pub mFirstChild: root::RefPtr, pub mSheets: [u64; 10usize], pub mSourceMapURL: ::nsstring::nsStringRepr, + pub mSourceMapURLFromComment: ::nsstring::nsStringRepr, } pub use self::super::super::root::mozilla::net::ReferrerPolicy as StyleSheetInfo_ReferrerPolicy; #[test] fn bindgen_test_layout_StyleSheetInfo() { - assert_eq!(::std::mem::size_of::() , 208usize , + assert_eq!(::std::mem::size_of::() , 224usize , concat ! ( "Size of: " , stringify ! ( StyleSheetInfo ) )); assert_eq! (::std::mem::align_of::() , 8usize , @@ -6119,6 +6024,13 @@ pub mod root { concat ! ( "Alignment of field: " , stringify ! ( StyleSheetInfo ) , "::" , stringify ! ( mSourceMapURL ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const StyleSheetInfo ) ) . + mSourceMapURLFromComment as * const _ as usize } , + 208usize , concat ! ( + "Alignment of field: " , stringify ! ( StyleSheetInfo + ) , "::" , stringify ! ( mSourceMapURLFromComment ) + )); } #[repr(i32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] @@ -6166,6 +6078,128 @@ pub mod root { NotPseudo = 28, MAX = 29, } + /// The set of style sheets that apply to a document, backed by a Servo + /// Stylist. A ServoStyleSet contains ServoStyleSheets. + #[repr(C)] + #[derive(Debug)] + pub struct ServoStyleSet { + pub mKind: root::mozilla::ServoStyleSet_Kind, + pub mPresContext: *mut root::nsPresContext, + pub mLastPresContextUsesXBLStyleSet: *mut ::std::os::raw::c_void, + pub mRawSet: root::mozilla::UniquePtr, + pub mSheets: [u64; 9usize], + pub mAuthorStyleDisabled: bool, + pub mStylistState: root::mozilla::StylistState, + pub mUserFontSetUpdateGeneration: u64, + pub mUserFontCacheUpdateGeneration: u32, + pub mNeedsRestyleAfterEnsureUniqueInner: bool, + pub mNonInheritingStyleContexts: [u64; 7usize], + pub mPostTraversalTasks: root::nsTArray, + pub mStyleRuleMap: root::RefPtr, + pub mBindingManager: root::RefPtr, + } + pub type ServoStyleSet_SnapshotTable = + root::mozilla::ServoElementSnapshotTable; + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum ServoStyleSet_Kind { Master = 0, ForXBL = 1, } + extern "C" { + #[link_name = "_ZN7mozilla13ServoStyleSet17sInServoTraversalE"] + pub static mut ServoStyleSet_sInServoTraversal: + *mut root::mozilla::ServoStyleSet; + } + #[test] + fn bindgen_test_layout_ServoStyleSet() { + assert_eq!(::std::mem::size_of::() , 208usize , + concat ! ( "Size of: " , stringify ! ( ServoStyleSet ) + )); + assert_eq! (::std::mem::align_of::() , 8usize , + concat ! ( + "Alignment of " , stringify ! ( ServoStyleSet ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . mKind as * + const _ as usize } , 0usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mKind ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . mPresContext + as * const _ as usize } , 8usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mPresContext ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mLastPresContextUsesXBLStyleSet as * const _ as usize + } , 16usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mLastPresContextUsesXBLStyleSet + ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . mRawSet as * + const _ as usize } , 24usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mRawSet ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . mSheets as * + const _ as usize } , 32usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mSheets ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mAuthorStyleDisabled as * const _ as usize } , + 104usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mAuthorStyleDisabled ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . mStylistState + as * const _ as usize } , 105usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mStylistState ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mUserFontSetUpdateGeneration as * const _ as usize } , + 112usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mUserFontSetUpdateGeneration ) + )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mUserFontCacheUpdateGeneration as * const _ as usize } + , 120usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mUserFontCacheUpdateGeneration + ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mNeedsRestyleAfterEnsureUniqueInner as * const _ as + usize } , 124usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( + mNeedsRestyleAfterEnsureUniqueInner ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mNonInheritingStyleContexts as * const _ as usize } , + 128usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mNonInheritingStyleContexts ) + )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mPostTraversalTasks as * const _ as usize } , 184usize + , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mPostTraversalTasks ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . mStyleRuleMap + as * const _ as usize } , 192usize , concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mStyleRuleMap ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const ServoStyleSet ) ) . + mBindingManager as * const _ as usize } , 200usize , + concat ! ( + "Alignment of field: " , stringify ! ( ServoStyleSet ) + , "::" , stringify ! ( mBindingManager ) )); + } #[repr(C)] #[derive(Debug, Copy)] pub struct SeenPtrs { @@ -8876,7 +8910,7 @@ pub mod root { #[test] fn bindgen_test_layout_ServoStyleSheetInner() { assert_eq!(::std::mem::size_of::() , - 224usize , concat ! ( + 240usize , concat ! ( "Size of: " , stringify ! ( ServoStyleSheetInner ) )); assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( @@ -8884,14 +8918,14 @@ pub mod root { )); assert_eq! (unsafe { & ( * ( 0 as * const ServoStyleSheetInner ) ) . - mContents as * const _ as usize } , 208usize , concat + mContents as * const _ as usize } , 224usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSheetInner ) , "::" , stringify ! ( mContents ) )); assert_eq! (unsafe { & ( * ( 0 as * const ServoStyleSheetInner ) ) . - mURLData as * const _ as usize } , 216usize , concat ! + mURLData as * const _ as usize } , 232usize , concat ! ( "Alignment of field: " , stringify ! ( ServoStyleSheetInner ) , "::" , stringify ! ( mURLData @@ -9726,6 +9760,18 @@ pub mod root { fn clone(&self) -> Self { *self } } #[repr(C)] + #[derive(Debug, Copy, Clone)] + pub struct ServoStyleRuleMap { + _unused: [u8; 0], + } + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum StylistState { + NotDirty = 0, + StyleSheetsDirty = 1, + XBLStyleSheetsDirty = 2, + } + #[repr(C)] #[derive(Debug)] pub struct CSSFontFaceDescriptors { pub mFamily: root::nsCSSValue, @@ -10960,6 +11006,7 @@ pub mod root { pub mRecording: bool, pub mSeenBadToken: bool, pub mSeenVariableReference: bool, + pub mSourceMapURL: ::nsstring::nsStringRepr, } #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] @@ -10975,7 +11022,7 @@ pub mod root { } #[test] fn bindgen_test_layout_nsCSSScanner() { - assert_eq!(::std::mem::size_of::() , 64usize , concat ! + assert_eq!(::std::mem::size_of::() , 80usize , concat ! ( "Size of: " , stringify ! ( nsCSSScanner ) )); assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( "Alignment of " , stringify ! ( nsCSSScanner ) )); @@ -11050,6 +11097,11 @@ pub mod root { concat ! ( "Alignment of field: " , stringify ! ( nsCSSScanner ) , "::" , stringify ! ( mSeenVariableReference ) )); + assert_eq! (unsafe { + & ( * ( 0 as * const nsCSSScanner ) ) . mSourceMapURL as * + const _ as usize } , 64usize , concat ! ( + "Alignment of field: " , stringify ! ( nsCSSScanner ) , + "::" , stringify ! ( mSourceMapURL ) )); } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -13370,8 +13422,11 @@ pub mod root { pub const nsChangeHint_nsChangeHint_UpdateWidgetProperties: root::nsChangeHint = nsChangeHint(536870912); + pub const nsChangeHint_nsChangeHint_UpdateTableCellSpans: + root::nsChangeHint = + nsChangeHint(1073741824); pub const nsChangeHint_nsChangeHint_AllHints: root::nsChangeHint = - nsChangeHint(1073741823); + nsChangeHint(2147483647); impl ::std::ops::BitOr for root::nsChangeHint { type Output @@ -15785,7 +15840,7 @@ pub mod root { , "::" , stringify ! ( writing_mode ) )); assert_eq! (unsafe { & ( * ( 0 as * const ServoComputedData ) ) . flags as * - const _ as usize } , 193usize , concat ! ( + const _ as usize } , 194usize , concat ! ( "Alignment of field: " , stringify ! ( ServoComputedData ) , "::" , stringify ! ( flags ) )); assert_eq! (unsafe { @@ -15849,7 +15904,7 @@ pub mod root { /// tracking. NOTE: A string buffer can be modified only if its reference /// count is 1. #[repr(C)] - #[derive(Debug, Copy)] + #[derive(Debug)] pub struct nsStringBuffer { pub mRefCount: u32, pub mStorageSize: u32, @@ -15871,9 +15926,6 @@ pub mod root { "Alignment of field: " , stringify ! ( nsStringBuffer ) , "::" , stringify ! ( mStorageSize ) )); } - impl Clone for nsStringBuffer { - fn clone(&self) -> Self { *self } - } #[repr(C)] #[derive(Debug, Copy)] pub struct nsIAtom { @@ -25414,57 +25466,57 @@ pub mod root { pub struct nsRange { _unused: [u8; 0], } - pub const NODE_HAS_LISTENERMANAGER: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_LISTENERMANAGER; - pub const NODE_HAS_PROPERTIES: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_PROPERTIES; - pub const NODE_IS_ANONYMOUS_ROOT: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_ANONYMOUS_ROOT; - pub const NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE; - pub const NODE_IS_NATIVE_ANONYMOUS_ROOT: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_NATIVE_ANONYMOUS_ROOT; - pub const NODE_FORCE_XBL_BINDINGS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_FORCE_XBL_BINDINGS; - pub const NODE_MAY_BE_IN_BINDING_MNGR: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_MAY_BE_IN_BINDING_MNGR; - pub const NODE_IS_EDITABLE: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_EDITABLE; - pub const NODE_IS_NATIVE_ANONYMOUS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_NATIVE_ANONYMOUS; - pub const NODE_IS_IN_SHADOW_TREE: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_IN_SHADOW_TREE; - pub const NODE_HAS_EMPTY_SELECTOR: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_EMPTY_SELECTOR; - pub const NODE_HAS_SLOW_SELECTOR: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_SLOW_SELECTOR; - pub const NODE_HAS_EDGE_CHILD_SELECTOR: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_EDGE_CHILD_SELECTOR; - pub const NODE_HAS_SLOW_SELECTOR_LATER_SIBLINGS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_SLOW_SELECTOR_LATER_SIBLINGS; - pub const NODE_ALL_SELECTOR_FLAGS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_ALL_SELECTOR_FLAGS; - pub const NODE_NEEDS_FRAME: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_NEEDS_FRAME; - pub const NODE_DESCENDANTS_NEED_FRAMES: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_DESCENDANTS_NEED_FRAMES; - pub const NODE_HAS_ACCESSKEY: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_ACCESSKEY; - pub const NODE_HAS_DIRECTION_RTL: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_DIRECTION_RTL; - pub const NODE_HAS_DIRECTION_LTR: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_HAS_DIRECTION_LTR; - pub const NODE_ALL_DIRECTION_FLAGS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_ALL_DIRECTION_FLAGS; - pub const NODE_CHROME_ONLY_ACCESS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_CHROME_ONLY_ACCESS; - pub const NODE_IS_ROOT_OF_CHROME_ONLY_ACCESS: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_IS_ROOT_OF_CHROME_ONLY_ACCESS; - pub const NODE_TYPE_SPECIFIC_BITS_OFFSET: root::_bindgen_ty_18 = - _bindgen_ty_18::NODE_TYPE_SPECIFIC_BITS_OFFSET; + pub const NODE_HAS_LISTENERMANAGER: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_LISTENERMANAGER; + pub const NODE_HAS_PROPERTIES: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_PROPERTIES; + pub const NODE_IS_ANONYMOUS_ROOT: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_ANONYMOUS_ROOT; + pub const NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE; + pub const NODE_IS_NATIVE_ANONYMOUS_ROOT: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_NATIVE_ANONYMOUS_ROOT; + pub const NODE_FORCE_XBL_BINDINGS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_FORCE_XBL_BINDINGS; + pub const NODE_MAY_BE_IN_BINDING_MNGR: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_MAY_BE_IN_BINDING_MNGR; + pub const NODE_IS_EDITABLE: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_EDITABLE; + pub const NODE_IS_NATIVE_ANONYMOUS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_NATIVE_ANONYMOUS; + pub const NODE_IS_IN_SHADOW_TREE: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_IN_SHADOW_TREE; + pub const NODE_HAS_EMPTY_SELECTOR: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_EMPTY_SELECTOR; + pub const NODE_HAS_SLOW_SELECTOR: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_SLOW_SELECTOR; + pub const NODE_HAS_EDGE_CHILD_SELECTOR: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_EDGE_CHILD_SELECTOR; + pub const NODE_HAS_SLOW_SELECTOR_LATER_SIBLINGS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_SLOW_SELECTOR_LATER_SIBLINGS; + pub const NODE_ALL_SELECTOR_FLAGS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_ALL_SELECTOR_FLAGS; + pub const NODE_NEEDS_FRAME: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_NEEDS_FRAME; + pub const NODE_DESCENDANTS_NEED_FRAMES: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_DESCENDANTS_NEED_FRAMES; + pub const NODE_HAS_ACCESSKEY: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_ACCESSKEY; + pub const NODE_HAS_DIRECTION_RTL: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_DIRECTION_RTL; + pub const NODE_HAS_DIRECTION_LTR: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_HAS_DIRECTION_LTR; + pub const NODE_ALL_DIRECTION_FLAGS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_ALL_DIRECTION_FLAGS; + pub const NODE_CHROME_ONLY_ACCESS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_CHROME_ONLY_ACCESS; + pub const NODE_IS_ROOT_OF_CHROME_ONLY_ACCESS: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_IS_ROOT_OF_CHROME_ONLY_ACCESS; + pub const NODE_TYPE_SPECIFIC_BITS_OFFSET: root::_bindgen_ty_77 = + _bindgen_ty_77::NODE_TYPE_SPECIFIC_BITS_OFFSET; #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] - pub enum _bindgen_ty_18 { + pub enum _bindgen_ty_77 { NODE_HAS_LISTENERMANAGER = 4, NODE_HAS_PROPERTIES = 8, NODE_IS_ANONYMOUS_ROOT = 16, @@ -32994,46 +33046,46 @@ pub mod root { assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( "Alignment of " , stringify ! ( nsISMILAttr ) )); } - pub const ELEMENT_SHARED_RESTYLE_BIT_1: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_1; - pub const ELEMENT_SHARED_RESTYLE_BIT_2: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_2; - pub const ELEMENT_SHARED_RESTYLE_BIT_3: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_3; - pub const ELEMENT_SHARED_RESTYLE_BIT_4: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_4; - pub const ELEMENT_HAS_DIRTY_DESCENDANTS_FOR_SERVO: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_1; + pub const ELEMENT_SHARED_RESTYLE_BIT_1: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_1; + pub const ELEMENT_SHARED_RESTYLE_BIT_2: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_2; + pub const ELEMENT_SHARED_RESTYLE_BIT_3: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_3; + pub const ELEMENT_SHARED_RESTYLE_BIT_4: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_4; + pub const ELEMENT_HAS_DIRTY_DESCENDANTS_FOR_SERVO: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_1; pub const ELEMENT_HAS_ANIMATION_ONLY_DIRTY_DESCENDANTS_FOR_SERVO: - root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_2; - pub const ELEMENT_HAS_SNAPSHOT: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_3; - pub const ELEMENT_HANDLED_SNAPSHOT: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_4; - pub const ELEMENT_HAS_PENDING_RESTYLE: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_1; - pub const ELEMENT_IS_POTENTIAL_RESTYLE_ROOT: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_2; - pub const ELEMENT_HAS_PENDING_ANIMATION_ONLY_RESTYLE: root::_bindgen_ty_20 + root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_2; + pub const ELEMENT_HAS_SNAPSHOT: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_3; + pub const ELEMENT_HANDLED_SNAPSHOT: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_4; + pub const ELEMENT_HAS_PENDING_RESTYLE: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_1; + pub const ELEMENT_IS_POTENTIAL_RESTYLE_ROOT: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_2; + pub const ELEMENT_HAS_PENDING_ANIMATION_ONLY_RESTYLE: root::_bindgen_ty_79 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_3; + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_3; pub const ELEMENT_IS_POTENTIAL_ANIMATION_ONLY_RESTYLE_ROOT: - root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_SHARED_RESTYLE_BIT_4; - pub const ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR; - pub const ELEMENT_PENDING_RESTYLE_FLAGS: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_PENDING_RESTYLE_FLAGS; - pub const ELEMENT_POTENTIAL_RESTYLE_ROOT_FLAGS: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_POTENTIAL_RESTYLE_ROOT_FLAGS; - pub const ELEMENT_ALL_RESTYLE_FLAGS: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_ALL_RESTYLE_FLAGS; - pub const ELEMENT_TYPE_SPECIFIC_BITS_OFFSET: root::_bindgen_ty_20 = - _bindgen_ty_20::ELEMENT_TYPE_SPECIFIC_BITS_OFFSET; + root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_SHARED_RESTYLE_BIT_4; + pub const ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR; + pub const ELEMENT_PENDING_RESTYLE_FLAGS: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_PENDING_RESTYLE_FLAGS; + pub const ELEMENT_POTENTIAL_RESTYLE_ROOT_FLAGS: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_POTENTIAL_RESTYLE_ROOT_FLAGS; + pub const ELEMENT_ALL_RESTYLE_FLAGS: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_ALL_RESTYLE_FLAGS; + pub const ELEMENT_TYPE_SPECIFIC_BITS_OFFSET: root::_bindgen_ty_79 = + _bindgen_ty_79::ELEMENT_TYPE_SPECIFIC_BITS_OFFSET; #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] - pub enum _bindgen_ty_20 { + pub enum _bindgen_ty_79 { ELEMENT_SHARED_RESTYLE_BIT_1 = 8388608, ELEMENT_SHARED_RESTYLE_BIT_2 = 16777216, ELEMENT_SHARED_RESTYLE_BIT_3 = 33554432, @@ -33421,6 +33473,19 @@ pub mod root { pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozPlaceholder: u32 = 8; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_placeholder: u32 = 8; pub const SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozColorSwatch: u32 = 12; + pub type nsCSSAnonBoxes_NonInheritingBase = u8; + #[repr(u8)] + #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] + pub enum nsCSSAnonBoxes_NonInheriting { + oofPlaceholder = 0, + horizontalFramesetBorder = 1, + verticalFramesetBorder = 2, + framesetBlank = 3, + tableColGroup = 4, + tableCol = 5, + pageBreak = 6, + _Count = 7, + } pub type nsBindingList = root::nsTArray>; #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -33923,7 +33988,7 @@ pub mod root { root::nsTArray ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_210478_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_202983_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -34279,7 +34344,7 @@ pub mod root { root::mozilla::binding_danger::TErrorResult ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_212273_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_204777_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -34444,7 +34509,7 @@ pub mod root { root::JS::DeletePolicy ) )); } #[test] - fn __bindgen_test_layout_iterator_open0_input_iterator_tag_UniquePtr_open1_JSErrorNotes_Note_DeletePolicy_open2_JSErrorNotes_Note_close2_close1_long__bindgen_ty_id_217834__bindgen_ty_id_217841_close0_instantiation() { + fn __bindgen_test_layout_iterator_open0_input_iterator_tag_UniquePtr_open1_JSErrorNotes_Note_DeletePolicy_open2_JSErrorNotes_Note_close2_close1_long__bindgen_ty_id_210340__bindgen_ty_id_210347_close0_instantiation() { assert_eq!(::std::mem::size_of::() , 1usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -34692,7 +34757,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_220335_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_212846_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -34760,7 +34825,7 @@ pub mod root { root::nsCOMPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_220640_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_213151_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -34872,7 +34937,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_NotNull_open0__bindgen_ty_id_221189_close0_instantiation() { + fn __bindgen_test_layout_NotNull_open0__bindgen_ty_id_213700_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35274,7 +35339,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_221609_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_214120_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35364,7 +35429,20 @@ pub mod root { ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_222015_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_ServoStyleSheet_close1_close0_instantiation_1() { + assert_eq!(::std::mem::size_of::>>() + , 8usize , concat ! ( + "Size of template specialization: " , stringify ! ( + root::nsTArray> + ) )); + assert_eq!(::std::mem::align_of::>>() + , 8usize , concat ! ( + "Alignment of template specialization: " , stringify ! ( + root::nsTArray> + ) )); + } + #[test] + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_214538_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35408,7 +35486,7 @@ pub mod root { root::mozilla::DefaultDelete ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_ServoStyleSheet_close1_close0_instantiation_1() { + fn __bindgen_test_layout_nsTArray_open0_RefPtr_open1_ServoStyleSheet_close1_close0_instantiation_2() { assert_eq!(::std::mem::size_of::>>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35421,6 +35499,17 @@ pub mod root { ) )); } #[test] + fn __bindgen_test_layout_RefPtr_open0_ServoStyleContext_close0_instantiation_2() { + assert_eq!(::std::mem::size_of::>() + , 8usize , concat ! ( + "Size of template specialization: " , stringify ! ( + root::RefPtr ) )); + assert_eq!(::std::mem::align_of::>() + , 8usize , concat ! ( + "Alignment of template specialization: " , stringify ! ( + root::RefPtr ) )); + } + #[test] fn __bindgen_test_layout_nsTArray_open0_PostTraversalTask_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( @@ -35432,6 +35521,28 @@ pub mod root { root::nsTArray ) )); } #[test] + fn __bindgen_test_layout_RefPtr_open0_ServoStyleRuleMap_close0_instantiation() { + assert_eq!(::std::mem::size_of::>() + , 8usize , concat ! ( + "Size of template specialization: " , stringify ! ( + root::RefPtr ) )); + assert_eq!(::std::mem::align_of::>() + , 8usize , concat ! ( + "Alignment of template specialization: " , stringify ! ( + root::RefPtr ) )); + } + #[test] + fn __bindgen_test_layout_RefPtr_open0_nsBindingManager_close0_instantiation() { + assert_eq!(::std::mem::size_of::>() + , 8usize , concat ! ( + "Size of template specialization: " , stringify ! ( + root::RefPtr ) )); + assert_eq!(::std::mem::align_of::>() + , 8usize , concat ! ( + "Alignment of template specialization: " , stringify ! ( + root::RefPtr ) )); + } + #[test] fn __bindgen_test_layout_UniquePtr_open0_nsISMILAttr_DefaultDelete_open1_nsISMILAttr_close1_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( @@ -35465,7 +35576,7 @@ pub mod root { root::nsTArray<::nsstring::nsStringRepr> ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_222980_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_215503_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35558,7 +35669,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_223287_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_215810_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35569,7 +35680,7 @@ pub mod root { root::nsTArray<*mut root::nsIContent> ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_223292_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_215815_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35626,7 +35737,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_223769_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_216292_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -35969,7 +36080,7 @@ pub mod root { root::nsCOMPtr ) )); } #[test] - fn __bindgen_test_layout_RefPtr_open0_nsBindingManager_close0_instantiation() { + fn __bindgen_test_layout_RefPtr_open0_nsBindingManager_close0_instantiation_1() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36272,7 +36383,7 @@ pub mod root { root::nsCOMPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_226569_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_219105_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36351,7 +36462,7 @@ pub mod root { root::mozilla::DefaultDelete ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_232778_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_225314_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36384,7 +36495,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_Heap_open0__bindgen_ty_id_233947_close0_instantiation() { + fn __bindgen_test_layout_Heap_open0__bindgen_ty_id_226483_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36395,7 +36506,7 @@ pub mod root { root::JS::Heap<*mut root::JSObject> ) )); } #[test] - fn __bindgen_test_layout_Heap_open0__bindgen_ty_id_233951_close0_instantiation() { + fn __bindgen_test_layout_Heap_open0__bindgen_ty_id_226487_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36417,7 +36528,7 @@ pub mod root { root::nsCOMPtr ) )); } #[test] - fn __bindgen_test_layout_TenuredHeap_open0__bindgen_ty_id_233958_close0_instantiation() { + fn __bindgen_test_layout_TenuredHeap_open0__bindgen_ty_id_226494_close0_instantiation() { assert_eq!(::std::mem::size_of::() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36496,7 +36607,7 @@ pub mod root { ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_235411_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_227673_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36691,7 +36802,7 @@ pub mod root { root::nsTArray ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_236782_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_229117_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -36796,7 +36907,7 @@ pub mod root { root::nsRefPtrHashKey ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_239151_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_231486_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -37563,7 +37674,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_241641_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_233976_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -37800,7 +37911,7 @@ pub mod root { root::nsCOMPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_249337_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_241672_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -37811,7 +37922,7 @@ pub mod root { root::nsTArray<*mut root::nsIContent> ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_249342_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_241677_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -37899,7 +38010,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_249455_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_241790_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38186,7 +38297,7 @@ pub mod root { ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_251056_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_243381_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38208,7 +38319,7 @@ pub mod root { root::RefPtr ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_251212_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_243537_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38219,7 +38330,7 @@ pub mod root { root::nsTArray<*mut root::nsIContent> ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_251217_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_243542_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38351,7 +38462,7 @@ pub mod root { root::nsTArray ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_254214_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_245812_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( @@ -38362,7 +38473,7 @@ pub mod root { root::nsTArray<*mut root::mozilla::css::DocumentRule> ) )); } #[test] - fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_254220_close0_instantiation() { + fn __bindgen_test_layout_nsTArray_open0__bindgen_ty_id_245818_close0_instantiation() { assert_eq!(::std::mem::size_of::>() , 8usize , concat ! ( "Size of template specialization: " , stringify ! ( From ac2be544709ac024e72e855b618f5bb64427ea91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Wed, 6 Sep 2017 14:54:20 +0200 Subject: [PATCH 7/7] style: Make the skip-applying-damage stuff Gecko-only. --- components/style/matching.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/style/matching.rs b/components/style/matching.rs index 2b95f2ba611..bb5f468c05e 100644 --- a/components/style/matching.rs +++ b/components/style/matching.rs @@ -373,7 +373,7 @@ trait PrivateMatchMethods: TElement { // for followup work to make the optimization here more optimal by considering // each bit individually. let skip_applying_damage = - restyle.reconstructed_self_or_ancestor(); + cfg!(feature = "gecko") && restyle.reconstructed_self_or_ancestor(); let difference = self.compute_style_difference(old_values, new_values, pseudo);