servo: Merge #20541 - Use Servo data to back @counter-style rule in Gecko (from upsuper:counter-style); r=emilio
authorXidorn Quan <me@upsuper.org>
Wed, 04 Apr 2018 19:34:06 -0400
changeset 777801 7bbc96753148a7377f31ed83eced4ca8bf36c7b9
parent 777800 4b833df6ec8996f13751fdacfdebdb359d691b65
child 777802 3511b66ee3355f9ffa6ae263f9b85e8e64a208ac
push id105296
push userpaolo.mozmail@amadzone.org
push dateThu, 05 Apr 2018 10:49:16 +0000
reviewersemilio
bugs1449068
milestone61.0a1
servo: Merge #20541 - Use Servo data to back @counter-style rule in Gecko (from upsuper:counter-style); r=emilio This is the Servo side changes of [bug 1449068](https://bugzilla.mozilla.org/show_bug.cgi?id=1449068). Source-Repo: https://github.com/servo/servo Source-Revision: 8c35be94c2910a50bbb7106449bab4e231697aea
servo/components/style/counter_style/mod.rs
servo/components/style/gecko/arc_types.rs
servo/components/style/gecko/generated/atom_macro.rs
servo/components/style/gecko/generated/bindings.rs
servo/components/style/gecko/generated/pseudo_element_definition.rs
servo/components/style/gecko/generated/structs.rs
servo/components/style/gecko/rules.rs
servo/components/style/gecko_bindings/sugar/refptr.rs
servo/components/style/stylesheets/counter_style_rule.rs
servo/components/style/stylesheets/mod.rs
servo/components/style/stylesheets/rule_parser.rs
servo/components/style/stylist.rs
servo/ports/geckolib/glue.rs
--- a/servo/components/style/counter_style/mod.rs
+++ b/servo/components/style/counter_style/mod.rs
@@ -3,25 +3,24 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 //! The [`@counter-style`][counter-style] at-rule.
 //!
 //! [counter-style]: https://drafts.csswg.org/css-counter-styles/
 
 use Atom;
 use cssparser::{AtRuleParser, DeclarationListParser, DeclarationParser};
-use cssparser::{Parser, Token, CowRcStr};
+use cssparser::{Parser, Token, CowRcStr, SourceLocation};
 use error_reporting::{ContextualParseError, ParseErrorReporter};
-#[cfg(feature = "gecko")] use gecko::rules::CounterStyleDescriptors;
-#[cfg(feature = "gecko")] use gecko_bindings::structs::{ nsCSSCounterDesc, nsCSSValue };
 use parser::{ParserContext, ParserErrorContext, Parse};
 use selectors::parser::SelectorParseErrorKind;
 use shared_lock::{SharedRwLockReadGuard, ToCssWithGuard};
-use std::borrow::Cow;
 use std::fmt::{self, Write};
+use std::mem;
+use std::num::Wrapping;
 use std::ops::Range;
 use str::CssStringWriter;
 use style_traits::{Comma, CssWriter, OneOrMoreSeparated, ParseError};
 use style_traits::{StyleParseErrorKind, ToCss};
 use values::CustomIdent;
 use values::specified::Integer;
 
 /// Parse a counter style name reference.
@@ -51,55 +50,61 @@ pub fn parse_counter_style_name<'i, 't>(
                     CustomIdent::from_ident(location, ident, &["none"])
                 }
             }
         }
     }
     include!("predefined.rs")
 }
 
+fn is_valid_name_definition(ident: &CustomIdent) -> bool {
+    ident.0 != atom!("decimal") && ident.0 != atom!("disc")
+}
+
 /// Parse the prelude of an @counter-style rule
 pub fn parse_counter_style_name_definition<'i, 't>(
     input: &mut Parser<'i, 't>
 ) -> Result<CustomIdent, ParseError<'i>> {
     parse_counter_style_name(input)
         .and_then(|ident| {
-            if ident.0 == atom!("decimal") || ident.0 == atom!("disc") {
+            if !is_valid_name_definition(&ident) {
                 Err(input.new_custom_error(StyleParseErrorKind::UnspecifiedError))
             } else {
                 Ok(ident)
             }
         })
 }
 
 /// Parse the body (inside `{}`) of an @counter-style rule
-pub fn parse_counter_style_body<'i, 't, R>(name: CustomIdent,
-                                           context: &ParserContext,
-                                           error_context: &ParserErrorContext<R>,
-                                           input: &mut Parser<'i, 't>)
-                                           -> Result<CounterStyleRuleData, ParseError<'i>>
+pub fn parse_counter_style_body<'i, 't, R>(
+    name: CustomIdent,
+    context: &ParserContext,
+    error_context: &ParserErrorContext<R>,
+    input: &mut Parser<'i, 't>,
+    location: SourceLocation,
+) -> Result<CounterStyleRuleData, ParseError<'i>>
     where R: ParseErrorReporter
 {
     let start = input.current_source_location();
-    let mut rule = CounterStyleRuleData::empty(name);
+    let mut rule = CounterStyleRuleData::empty(name, location);
     {
         let parser = CounterStyleRuleParser {
             context: context,
             rule: &mut rule,
         };
         let mut iter = DeclarationListParser::new(input, parser);
         while let Some(declaration) = iter.next() {
             if let Err((error, slice)) = declaration {
                 let location = error.location;
                 let error = ContextualParseError::UnsupportedCounterStyleDescriptorDeclaration(slice, error);
                 context.log_css_error(error_context, location, error)
             }
         }
     }
-    let error = match *rule.system() {
+    let error = match *rule.resolved_system() {
         ref system @ System::Cyclic |
         ref system @ System::Fixed { .. } |
         ref system @ System::Symbolic |
         ref system @ System::Alphabetic |
         ref system @ System::Numeric
         if rule.symbols.is_none() => {
             let system = system.to_css_string();
             Some(ContextualParseError::InvalidCounterStyleWithoutSymbols(system))
@@ -137,78 +142,70 @@ struct CounterStyleRuleParser<'a, 'b: 'a
 /// Default methods reject all at rules.
 impl<'a, 'b, 'i> AtRuleParser<'i> for CounterStyleRuleParser<'a, 'b> {
     type PreludeNoBlock = ();
     type PreludeBlock = ();
     type AtRule = ();
     type Error = StyleParseErrorKind<'i>;
 }
 
-macro_rules! accessor {
-    (#[$doc: meta] $name: tt $ident: ident: $ty: ty = !) => {
-        #[$doc]
-        pub fn $ident(&self) -> Option<&$ty> {
-            self.$ident.as_ref()
+macro_rules! checker {
+    ($self:ident._($value:ident)) => {};
+    ($self:ident.$checker:ident($value:ident)) => {
+        if !$self.$checker(&$value) {
+            return false;
         }
     };
-
-    (#[$doc: meta] $name: tt $ident: ident: $ty: ty = $initial: expr) => {
-        #[$doc]
-        pub fn $ident(&self) -> Cow<$ty> {
-            if let Some(ref value) = self.$ident {
-                Cow::Borrowed(value)
-            } else {
-                Cow::Owned($initial)
-            }
-        }
-    }
 }
 
 macro_rules! counter_style_descriptors {
     (
-        $( #[$doc: meta] $name: tt $ident: ident / $gecko_ident: ident: $ty: ty = $initial: tt )+
+        $( #[$doc: meta] $name: tt $ident: ident / $setter: ident [$checker: tt]: $ty: ty, )+
     ) => {
         /// An @counter-style rule
         #[derive(Clone, Debug)]
         pub struct CounterStyleRuleData {
             name: CustomIdent,
+            generation: Wrapping<u32>,
             $(
                 #[$doc]
                 $ident: Option<$ty>,
             )+
+            /// Line and column of the @counter-style rule source code.
+            pub source_location: SourceLocation,
         }
 
         impl CounterStyleRuleData {
-            fn empty(name: CustomIdent) -> Self {
+            fn empty(name: CustomIdent, source_location: SourceLocation) -> Self {
                 CounterStyleRuleData {
                     name: name,
+                    generation: Wrapping(0),
                     $(
                         $ident: None,
                     )+
+                    source_location,
                 }
             }
 
-            /// Get the name of the counter style rule.
-            pub fn name(&self) -> &CustomIdent {
-                &self.name
-            }
-
             $(
-                accessor!(#[$doc] $name $ident: $ty = $initial);
+                #[$doc]
+                pub fn $ident(&self) -> Option<&$ty> {
+                    self.$ident.as_ref()
+                }
             )+
 
-            /// Convert to Gecko types
-            #[cfg(feature = "gecko")]
-            pub fn set_descriptors(self, descriptors: &mut CounterStyleDescriptors) {
-                $(
-                    if let Some(value) = self.$ident {
-                        descriptors[nsCSSCounterDesc::$gecko_ident as usize].set_from(value)
-                    }
-                )*
-            }
+            $(
+                #[$doc]
+                pub fn $setter(&mut self, value: $ty) -> bool {
+                    checker!(self.$checker(value));
+                    self.$ident = Some(value);
+                    self.generation += Wrapping(1);
+                    true
+                }
+            )+
         }
 
         impl<'a, 'b, 'i> DeclarationParser<'i> for CounterStyleRuleParser<'a, 'b> {
             type Declaration = ();
             type Error = StyleParseErrorKind<'i>;
 
             fn parse_value<'t>(&mut self, name: CowRcStr<'i>, input: &mut Parser<'i, 't>)
                                -> Result<(), ParseError<'i>> {
@@ -239,89 +236,105 @@ macro_rules! counter_style_descriptors {
                         dest.write_str(concat!("  ", $name, ": "))?;
                         ToCss::to_css(value, &mut CssWriter::new(dest))?;
                         dest.write_str(";\n")?;
                     }
                 )+
                 dest.write_str("}")
             }
         }
-
-        /// Parse a descriptor into an `nsCSSValue`.
-        #[cfg(feature = "gecko")]
-        pub fn parse_counter_style_descriptor<'i, 't>(
-            context: &ParserContext,
-            input: &mut Parser<'i, 't>,
-            descriptor: nsCSSCounterDesc,
-            value: &mut nsCSSValue
-        ) -> Result<(), ParseError<'i>> {
-            match descriptor {
-                $(
-                    nsCSSCounterDesc::$gecko_ident => {
-                        let v: $ty =
-                            input.parse_entirely(|i| Parse::parse(context, i))?;
-                        value.set_from(v);
-                    }
-                )*
-                nsCSSCounterDesc::eCSSCounterDesc_COUNT |
-                nsCSSCounterDesc::eCSSCounterDesc_UNKNOWN => {
-                    panic!("invalid counter descriptor");
-                }
-            }
-            Ok(())
-        }
     }
 }
 
 counter_style_descriptors! {
     /// <https://drafts.csswg.org/css-counter-styles/#counter-style-system>
-    "system" system / eCSSCounterDesc_System: System = {
-        System::Symbolic
-    }
+    "system" system / set_system [check_system]: System,
 
     /// <https://drafts.csswg.org/css-counter-styles/#counter-style-negative>
-    "negative" negative / eCSSCounterDesc_Negative: Negative = {
-        Negative(Symbol::String("-".to_owned()), None)
-    }
+    "negative" negative / set_negative [_]: Negative,
 
     /// <https://drafts.csswg.org/css-counter-styles/#counter-style-prefix>
-    "prefix" prefix / eCSSCounterDesc_Prefix: Symbol = {
-        Symbol::String("".to_owned())
-    }
+    "prefix" prefix / set_prefix [_]: Symbol,
 
     /// <https://drafts.csswg.org/css-counter-styles/#counter-style-suffix>
-    "suffix" suffix / eCSSCounterDesc_Suffix: Symbol = {
-        Symbol::String(". ".to_owned())
-    }
+    "suffix" suffix / set_suffix [_]: Symbol,
 
     /// <https://drafts.csswg.org/css-counter-styles/#counter-style-range>
-    "range" range / eCSSCounterDesc_Range: Ranges = {
-        Ranges(Vec::new())  // Empty Vec represents 'auto'
-    }
+    "range" range / set_range [_]: Ranges,
 
     /// <https://drafts.csswg.org/css-counter-styles/#counter-style-pad>
-    "pad" pad / eCSSCounterDesc_Pad: Pad = {
-        Pad(Integer::new(0), Symbol::String("".to_owned()))
-    }
+    "pad" pad / set_pad [_]: Pad,
 
     /// <https://drafts.csswg.org/css-counter-styles/#counter-style-fallback>
-    "fallback" fallback / eCSSCounterDesc_Fallback: Fallback = {
-        // FIXME https://bugzilla.mozilla.org/show_bug.cgi?id=1359323 use atom!()
-        Fallback(CustomIdent(Atom::from("decimal")))
-    }
+    "fallback" fallback / set_fallback [_]: Fallback,
 
     /// <https://drafts.csswg.org/css-counter-styles/#descdef-counter-style-symbols>
-    "symbols" symbols / eCSSCounterDesc_Symbols: Symbols = !
+    "symbols" symbols / set_symbols [check_symbols]: Symbols,
 
     /// <https://drafts.csswg.org/css-counter-styles/#descdef-counter-style-additive-symbols>
-    "additive-symbols" additive_symbols / eCSSCounterDesc_AdditiveSymbols: AdditiveSymbols = !
+    "additive-symbols" additive_symbols /
+        set_additive_symbols [check_additive_symbols]: AdditiveSymbols,
 
     /// <https://drafts.csswg.org/css-counter-styles/#counter-style-speak-as>
-    "speak-as" speak_as / eCSSCounterDesc_SpeakAs: SpeakAs = {
-        SpeakAs::Auto
+    "speak-as" speak_as / set_speak_as [_]: SpeakAs,
+}
+
+// Implements the special checkers for some setters.
+// See <https://drafts.csswg.org/css-counter-styles/#the-csscounterstylerule-interface>
+impl CounterStyleRuleData {
+    /// Check that the system is effectively not changed. Only params
+    /// of system descriptor is changeable.
+    fn check_system(&self, value: &System) -> bool {
+        mem::discriminant(self.resolved_system()) == mem::discriminant(value)
+    }
+
+    fn check_symbols(&self, value: &Symbols) -> bool {
+        match *self.resolved_system() {
+            // These two systems require at least two symbols.
+            System::Numeric | System::Alphabetic => value.0.len() >= 2,
+            // No symbols should be set for extends system.
+            System::Extends(_) => false,
+            _ => true,
+        }
+    }
+
+    fn check_additive_symbols(&self, _value: &AdditiveSymbols) -> bool {
+        match *self.resolved_system() {
+            // No additive symbols should be set for extends system.
+            System::Extends(_) => false,
+            _ => true,
+        }
+    }
+}
+
+impl CounterStyleRuleData {
+    /// Get the name of the counter style rule.
+    pub fn name(&self) -> &CustomIdent {
+        &self.name
+    }
+
+    /// Set the name of the counter style rule. Caller must ensure that
+    /// the name is valid.
+    pub fn set_name(&mut self, name: CustomIdent) {
+        debug_assert!(is_valid_name_definition(&name));
+        self.name = name;
+    }
+
+    /// Get the current generation of the counter style rule.
+    pub fn generation(&self) -> u32 {
+        self.generation.0
+    }
+
+    /// Get the system of this counter style rule, default to
+    /// `symbolic` if not specified.
+    pub fn resolved_system(&self) -> &System {
+        match self.system {
+            Some(ref system) => system,
+            None => &System::Symbolic,
+        }
     }
 }
 
 /// <https://drafts.csswg.org/css-counter-styles/#counter-style-system>
 #[derive(Clone, Debug)]
 pub enum System {
     /// 'cyclic'
     Cyclic,
--- a/servo/components/style/gecko/arc_types.rs
+++ b/servo/components/style/gecko/arc_types.rs
@@ -3,33 +3,34 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 //! This file lists all arc FFI types and defines corresponding addref
 //! and release functions. This list corresponds to ServoArcTypeList.h
 //! file in Gecko.
 
 #![allow(non_snake_case, missing_docs)]
 
-use gecko_bindings::bindings::{RawServoFontFeatureValuesRule, RawServoImportRule};
+use gecko_bindings::bindings::{RawServoCounterStyleRule, RawServoFontFeatureValuesRule, RawServoImportRule};
 use gecko_bindings::bindings::{RawServoKeyframe, RawServoKeyframesRule, RawServoSupportsRule};
 use gecko_bindings::bindings::{RawServoMediaRule, RawServoNamespaceRule, RawServoPageRule};
 use gecko_bindings::bindings::{RawServoRuleNode, RawServoRuleNodeStrong, RawServoDocumentRule};
 use gecko_bindings::bindings::ServoCssRules;
 use gecko_bindings::structs::{RawServoAnimationValue, RawServoDeclarationBlock, RawServoFontFaceRule};
 use gecko_bindings::structs::{RawServoMediaList, RawServoStyleRule, RawServoStyleSheetContents};
 use gecko_bindings::sugar::ownership::{HasArcFFI, HasFFI, Strong};
 use media_queries::MediaList;
 use properties::{ComputedValues, PropertyDeclarationBlock};
 use properties::animated_properties::AnimationValue;
 use rule_tree::StrongRuleNode;
 use servo_arc::{Arc, ArcBorrow};
 use shared_lock::Locked;
 use std::{mem, ptr};
-use stylesheets::{CssRules, StylesheetContents, StyleRule, ImportRule, KeyframesRule, MediaRule};
-use stylesheets::{FontFaceRule, FontFeatureValuesRule, NamespaceRule, PageRule, SupportsRule, DocumentRule};
+use stylesheets::{CssRules, CounterStyleRule, FontFaceRule, FontFeatureValuesRule};
+use stylesheets::{ImportRule, KeyframesRule, MediaRule, StylesheetContents, StyleRule};
+use stylesheets::{NamespaceRule, PageRule, SupportsRule, DocumentRule};
 use stylesheets::keyframes_rule::Keyframe;
 
 macro_rules! impl_arc_ffi {
     ($servo_type:ty => $gecko_type:ty [$addref:ident, $release:ident]) => {
         unsafe impl HasFFI for $servo_type {
             type FFIType = $gecko_type;
         }
         unsafe impl HasArcFFI for $servo_type {}
@@ -89,16 +90,19 @@ impl_arc_ffi!(Locked<DocumentRule> => Ra
               [Servo_DocumentRule_AddRef, Servo_DocumentRule_Release]);
 
 impl_arc_ffi!(Locked<FontFeatureValuesRule> => RawServoFontFeatureValuesRule
               [Servo_FontFeatureValuesRule_AddRef, Servo_FontFeatureValuesRule_Release]);
 
 impl_arc_ffi!(Locked<FontFaceRule> => RawServoFontFaceRule
               [Servo_FontFaceRule_AddRef, Servo_FontFaceRule_Release]);
 
+impl_arc_ffi!(Locked<CounterStyleRule> => RawServoCounterStyleRule
+              [Servo_CounterStyleRule_AddRef, Servo_CounterStyleRule_Release]);
+
 // RuleNode is a Arc-like type but it does not use Arc.
 
 impl StrongRuleNode {
     pub fn into_strong(self) -> RawServoRuleNodeStrong {
         let ptr = self.ptr();
         mem::forget(self);
         unsafe { mem::transmute(ptr) }
     }
--- a/servo/components/style/gecko/generated/atom_macro.rs
+++ b/servo/components/style/gecko/generated/atom_macro.rs
@@ -85,18 +85,16 @@ cfg_if! {
             #[link_name = "_ZN9nsGkAtoms9accesskeyE"]
             pub static nsGkAtoms_accesskey: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms7acronymE"]
             pub static nsGkAtoms_acronym: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms6actionE"]
             pub static nsGkAtoms_action: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms6activeE"]
             pub static nsGkAtoms_active: *mut nsStaticAtom;
-            #[link_name = "_ZN9nsGkAtoms19activetitlebarcolorE"]
-            pub static nsGkAtoms_activetitlebarcolor: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms13activateontabE"]
             pub static nsGkAtoms_activateontab: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms7actuateE"]
             pub static nsGkAtoms_actuate: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms7addressE"]
             pub static nsGkAtoms_address: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms5afterE"]
             pub static nsGkAtoms_after: *mut nsStaticAtom;
@@ -1083,18 +1081,16 @@ cfg_if! {
             #[link_name = "_ZN9nsGkAtoms3imgE"]
             pub static nsGkAtoms_img: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms14implementationE"]
             pub static nsGkAtoms_implementation: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms10implementsE"]
             pub static nsGkAtoms_implements: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms6importE"]
             pub static nsGkAtoms_import: *mut nsStaticAtom;
-            #[link_name = "_ZN9nsGkAtoms21inactivetitlebarcolorE"]
-            pub static nsGkAtoms_inactivetitlebarcolor: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms7includeE"]
             pub static nsGkAtoms_include: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms8includesE"]
             pub static nsGkAtoms_includes: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms9incrementE"]
             pub static nsGkAtoms_increment: *mut nsStaticAtom;
             #[link_name = "_ZN9nsGkAtoms6indentE"]
             pub static nsGkAtoms_indent: *mut nsStaticAtom;
@@ -5123,68 +5119,68 @@ cfg_if! {
             #[link_name = "_ZN19nsCSSPseudoElements11mozMeterBarE"]
             pub static nsCSSPseudoElements_mozMeterBar: *mut nsICSSPseudoElement;
             #[link_name = "_ZN19nsCSSPseudoElements14mozPlaceholderE"]
             pub static nsCSSPseudoElements_mozPlaceholder: *mut nsICSSPseudoElement;
             #[link_name = "_ZN19nsCSSPseudoElements11placeholderE"]
             pub static nsCSSPseudoElements_placeholder: *mut nsICSSPseudoElement;
             #[link_name = "_ZN19nsCSSPseudoElements14mozColorSwatchE"]
             pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement;
+            #[link_name = "_ZN14nsCSSAnonBoxes14oofPlaceholderE"]
+            pub static nsCSSAnonBoxes_oofPlaceholder: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "_ZN14nsCSSAnonBoxes24horizontalFramesetBorderE"]
+            pub static nsCSSAnonBoxes_horizontalFramesetBorder: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "_ZN14nsCSSAnonBoxes22verticalFramesetBorderE"]
+            pub static nsCSSAnonBoxes_verticalFramesetBorder: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "_ZN14nsCSSAnonBoxes13framesetBlankE"]
+            pub static nsCSSAnonBoxes_framesetBlank: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "_ZN14nsCSSAnonBoxes13tableColGroupE"]
+            pub static nsCSSAnonBoxes_tableColGroup: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "_ZN14nsCSSAnonBoxes8tableColE"]
+            pub static nsCSSAnonBoxes_tableCol: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "_ZN14nsCSSAnonBoxes9pageBreakE"]
+            pub static nsCSSAnonBoxes_pageBreak: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes7mozTextE"]
             pub static nsCSSAnonBoxes_mozText: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "_ZN14nsCSSAnonBoxes14oofPlaceholderE"]
-            pub static nsCSSAnonBoxes_oofPlaceholder: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes23firstLetterContinuationE"]
             pub static nsCSSAnonBoxes_firstLetterContinuation: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes27mozBlockInsideInlineWrapperE"]
             pub static nsCSSAnonBoxes_mozBlockInsideInlineWrapper: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes23mozMathMLAnonymousBlockE"]
             pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes20mozXULAnonymousBlockE"]
             pub static nsCSSAnonBoxes_mozXULAnonymousBlock: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "_ZN14nsCSSAnonBoxes24horizontalFramesetBorderE"]
-            pub static nsCSSAnonBoxes_horizontalFramesetBorder: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "_ZN14nsCSSAnonBoxes22verticalFramesetBorderE"]
-            pub static nsCSSAnonBoxes_verticalFramesetBorder: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes12mozLineFrameE"]
             pub static nsCSSAnonBoxes_mozLineFrame: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes13buttonContentE"]
             pub static nsCSSAnonBoxes_buttonContent: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes11cellContentE"]
             pub static nsCSSAnonBoxes_cellContent: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes12dropDownListE"]
             pub static nsCSSAnonBoxes_dropDownList: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes15fieldsetContentE"]
             pub static nsCSSAnonBoxes_fieldsetContent: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "_ZN14nsCSSAnonBoxes13framesetBlankE"]
-            pub static nsCSSAnonBoxes_framesetBlank: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes30mozDisplayComboboxControlFrameE"]
             pub static nsCSSAnonBoxes_mozDisplayComboboxControlFrame: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes17htmlCanvasContentE"]
             pub static nsCSSAnonBoxes_htmlCanvasContent: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes11inlineTableE"]
             pub static nsCSSAnonBoxes_inlineTable: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes5tableE"]
             pub static nsCSSAnonBoxes_table: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes9tableCellE"]
             pub static nsCSSAnonBoxes_tableCell: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "_ZN14nsCSSAnonBoxes13tableColGroupE"]
-            pub static nsCSSAnonBoxes_tableColGroup: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "_ZN14nsCSSAnonBoxes8tableColE"]
-            pub static nsCSSAnonBoxes_tableCol: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes12tableWrapperE"]
             pub static nsCSSAnonBoxes_tableWrapper: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes13tableRowGroupE"]
             pub static nsCSSAnonBoxes_tableRowGroup: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes8tableRowE"]
             pub static nsCSSAnonBoxes_tableRow: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes6canvasE"]
             pub static nsCSSAnonBoxes_canvas: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "_ZN14nsCSSAnonBoxes9pageBreakE"]
-            pub static nsCSSAnonBoxes_pageBreak: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes4pageE"]
             pub static nsCSSAnonBoxes_page: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes11pageContentE"]
             pub static nsCSSAnonBoxes_pageContent: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes12pageSequenceE"]
             pub static nsCSSAnonBoxes_pageSequence: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes15scrolledContentE"]
             pub static nsCSSAnonBoxes_scrolledContent: *mut nsICSSAnonBoxPseudo;
@@ -5310,18 +5306,16 @@ cfg_if! {
             #[link_name = "?accesskey@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_accesskey: *mut nsStaticAtom;
             #[link_name = "?acronym@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_acronym: *mut nsStaticAtom;
             #[link_name = "?action@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_action: *mut nsStaticAtom;
             #[link_name = "?active@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_active: *mut nsStaticAtom;
-            #[link_name = "?activetitlebarcolor@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
-            pub static nsGkAtoms_activetitlebarcolor: *mut nsStaticAtom;
             #[link_name = "?activateontab@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_activateontab: *mut nsStaticAtom;
             #[link_name = "?actuate@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_actuate: *mut nsStaticAtom;
             #[link_name = "?address@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_address: *mut nsStaticAtom;
             #[link_name = "?after@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_after: *mut nsStaticAtom;
@@ -6308,18 +6302,16 @@ cfg_if! {
             #[link_name = "?img@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_img: *mut nsStaticAtom;
             #[link_name = "?implementation@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_implementation: *mut nsStaticAtom;
             #[link_name = "?implements@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_implements: *mut nsStaticAtom;
             #[link_name = "?import@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_import: *mut nsStaticAtom;
-            #[link_name = "?inactivetitlebarcolor@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
-            pub static nsGkAtoms_inactivetitlebarcolor: *mut nsStaticAtom;
             #[link_name = "?include@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_include: *mut nsStaticAtom;
             #[link_name = "?includes@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_includes: *mut nsStaticAtom;
             #[link_name = "?increment@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_increment: *mut nsStaticAtom;
             #[link_name = "?indent@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
             pub static nsGkAtoms_indent: *mut nsStaticAtom;
@@ -10348,68 +10340,68 @@ cfg_if! {
             #[link_name = "?mozMeterBar@nsCSSPseudoElements@@2PEAVnsICSSPseudoElement@@EA"]
             pub static nsCSSPseudoElements_mozMeterBar: *mut nsICSSPseudoElement;
             #[link_name = "?mozPlaceholder@nsCSSPseudoElements@@2PEAVnsICSSPseudoElement@@EA"]
             pub static nsCSSPseudoElements_mozPlaceholder: *mut nsICSSPseudoElement;
             #[link_name = "?placeholder@nsCSSPseudoElements@@2PEAVnsICSSPseudoElement@@EA"]
             pub static nsCSSPseudoElements_placeholder: *mut nsICSSPseudoElement;
             #[link_name = "?mozColorSwatch@nsCSSPseudoElements@@2PEAVnsICSSPseudoElement@@EA"]
             pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement;
+            #[link_name = "?oofPlaceholder@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
+            pub static nsCSSAnonBoxes_oofPlaceholder: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "?horizontalFramesetBorder@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
+            pub static nsCSSAnonBoxes_horizontalFramesetBorder: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "?verticalFramesetBorder@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
+            pub static nsCSSAnonBoxes_verticalFramesetBorder: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "?framesetBlank@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
+            pub static nsCSSAnonBoxes_framesetBlank: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "?tableColGroup@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
+            pub static nsCSSAnonBoxes_tableColGroup: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "?tableCol@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
+            pub static nsCSSAnonBoxes_tableCol: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "?pageBreak@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
+            pub static nsCSSAnonBoxes_pageBreak: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?mozText@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_mozText: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "?oofPlaceholder@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
-            pub static nsCSSAnonBoxes_oofPlaceholder: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?firstLetterContinuation@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_firstLetterContinuation: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?mozBlockInsideInlineWrapper@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_mozBlockInsideInlineWrapper: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?mozMathMLAnonymousBlock@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?mozXULAnonymousBlock@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_mozXULAnonymousBlock: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "?horizontalFramesetBorder@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
-            pub static nsCSSAnonBoxes_horizontalFramesetBorder: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "?verticalFramesetBorder@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
-            pub static nsCSSAnonBoxes_verticalFramesetBorder: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?mozLineFrame@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_mozLineFrame: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?buttonContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_buttonContent: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?cellContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_cellContent: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?dropDownList@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_dropDownList: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?fieldsetContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_fieldsetContent: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "?framesetBlank@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
-            pub static nsCSSAnonBoxes_framesetBlank: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?mozDisplayComboboxControlFrame@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_mozDisplayComboboxControlFrame: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?htmlCanvasContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_htmlCanvasContent: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?inlineTable@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_inlineTable: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?table@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_table: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?tableCell@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_tableCell: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "?tableColGroup@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
-            pub static nsCSSAnonBoxes_tableColGroup: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "?tableCol@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
-            pub static nsCSSAnonBoxes_tableCol: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?tableWrapper@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_tableWrapper: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?tableRowGroup@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_tableRowGroup: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?tableRow@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_tableRow: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?canvas@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_canvas: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "?pageBreak@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
-            pub static nsCSSAnonBoxes_pageBreak: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?page@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_page: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?pageContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_pageContent: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?pageSequence@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_pageSequence: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?scrolledContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_scrolledContent: *mut nsICSSAnonBoxPseudo;
@@ -10535,18 +10527,16 @@ cfg_if! {
             #[link_name = "\x01?accesskey@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_accesskey: *mut nsStaticAtom;
             #[link_name = "\x01?acronym@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_acronym: *mut nsStaticAtom;
             #[link_name = "\x01?action@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_action: *mut nsStaticAtom;
             #[link_name = "\x01?active@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_active: *mut nsStaticAtom;
-            #[link_name = "\x01?activetitlebarcolor@nsGkAtoms@@2PAVnsStaticAtom@@A"]
-            pub static nsGkAtoms_activetitlebarcolor: *mut nsStaticAtom;
             #[link_name = "\x01?activateontab@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_activateontab: *mut nsStaticAtom;
             #[link_name = "\x01?actuate@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_actuate: *mut nsStaticAtom;
             #[link_name = "\x01?address@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_address: *mut nsStaticAtom;
             #[link_name = "\x01?after@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_after: *mut nsStaticAtom;
@@ -11533,18 +11523,16 @@ cfg_if! {
             #[link_name = "\x01?img@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_img: *mut nsStaticAtom;
             #[link_name = "\x01?implementation@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_implementation: *mut nsStaticAtom;
             #[link_name = "\x01?implements@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_implements: *mut nsStaticAtom;
             #[link_name = "\x01?import@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_import: *mut nsStaticAtom;
-            #[link_name = "\x01?inactivetitlebarcolor@nsGkAtoms@@2PAVnsStaticAtom@@A"]
-            pub static nsGkAtoms_inactivetitlebarcolor: *mut nsStaticAtom;
             #[link_name = "\x01?include@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_include: *mut nsStaticAtom;
             #[link_name = "\x01?includes@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_includes: *mut nsStaticAtom;
             #[link_name = "\x01?increment@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_increment: *mut nsStaticAtom;
             #[link_name = "\x01?indent@nsGkAtoms@@2PAVnsStaticAtom@@A"]
             pub static nsGkAtoms_indent: *mut nsStaticAtom;
@@ -15573,68 +15561,68 @@ cfg_if! {
             #[link_name = "\x01?mozMeterBar@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"]
             pub static nsCSSPseudoElements_mozMeterBar: *mut nsICSSPseudoElement;
             #[link_name = "\x01?mozPlaceholder@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"]
             pub static nsCSSPseudoElements_mozPlaceholder: *mut nsICSSPseudoElement;
             #[link_name = "\x01?placeholder@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"]
             pub static nsCSSPseudoElements_placeholder: *mut nsICSSPseudoElement;
             #[link_name = "\x01?mozColorSwatch@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"]
             pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement;
+            #[link_name = "\x01?oofPlaceholder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
+            pub static nsCSSAnonBoxes_oofPlaceholder: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "\x01?horizontalFramesetBorder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
+            pub static nsCSSAnonBoxes_horizontalFramesetBorder: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "\x01?verticalFramesetBorder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
+            pub static nsCSSAnonBoxes_verticalFramesetBorder: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "\x01?framesetBlank@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
+            pub static nsCSSAnonBoxes_framesetBlank: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "\x01?tableColGroup@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
+            pub static nsCSSAnonBoxes_tableColGroup: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "\x01?tableCol@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
+            pub static nsCSSAnonBoxes_tableCol: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "\x01?pageBreak@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
+            pub static nsCSSAnonBoxes_pageBreak: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?mozText@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_mozText: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "\x01?oofPlaceholder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
-            pub static nsCSSAnonBoxes_oofPlaceholder: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?firstLetterContinuation@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_firstLetterContinuation: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?mozBlockInsideInlineWrapper@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_mozBlockInsideInlineWrapper: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?mozMathMLAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?mozXULAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_mozXULAnonymousBlock: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "\x01?horizontalFramesetBorder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
-            pub static nsCSSAnonBoxes_horizontalFramesetBorder: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "\x01?verticalFramesetBorder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
-            pub static nsCSSAnonBoxes_verticalFramesetBorder: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?mozLineFrame@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_mozLineFrame: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?buttonContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_buttonContent: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?cellContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_cellContent: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?dropDownList@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_dropDownList: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?fieldsetContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_fieldsetContent: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "\x01?framesetBlank@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
-            pub static nsCSSAnonBoxes_framesetBlank: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?mozDisplayComboboxControlFrame@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_mozDisplayComboboxControlFrame: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?htmlCanvasContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_htmlCanvasContent: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?inlineTable@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_inlineTable: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?table@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_table: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?tableCell@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_tableCell: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "\x01?tableColGroup@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
-            pub static nsCSSAnonBoxes_tableColGroup: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "\x01?tableCol@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
-            pub static nsCSSAnonBoxes_tableCol: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?tableWrapper@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_tableWrapper: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?tableRowGroup@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_tableRowGroup: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?tableRow@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_tableRow: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?canvas@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_canvas: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "\x01?pageBreak@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
-            pub static nsCSSAnonBoxes_pageBreak: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?page@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_page: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?pageContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_pageContent: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?pageSequence@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_pageSequence: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?scrolledContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_scrolledContent: *mut nsICSSAnonBoxPseudo;
@@ -15763,18 +15751,16 @@ macro_rules! atom {
 ("accesskey") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_accesskey as *mut _) } }};
 ("acronym") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_acronym as *mut _) } }};
 ("action") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_action as *mut _) } }};
 ("active") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_active as *mut _) } }};
-("activetitlebarcolor") =>
-  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_activetitlebarcolor as *mut _) } }};
 ("activateontab") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_activateontab as *mut _) } }};
 ("actuate") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_actuate as *mut _) } }};
 ("address") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_address as *mut _) } }};
 ("after") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_after as *mut _) } }};
@@ -16761,18 +16747,16 @@ macro_rules! atom {
 ("img") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_img as *mut _) } }};
 ("implementation") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_implementation as *mut _) } }};
 ("implements") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_implements as *mut _) } }};
 ("import") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_import as *mut _) } }};
-("inactivetitlebarcolor") =>
-  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_inactivetitlebarcolor as *mut _) } }};
 ("include") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_include as *mut _) } }};
 ("includes") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_includes as *mut _) } }};
 ("increment") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_increment as *mut _) } }};
 ("indent") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_indent as *mut _) } }};
@@ -20801,68 +20785,68 @@ macro_rules! atom {
 (":-moz-meter-bar") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSPseudoElements_mozMeterBar as *mut _) } }};
 (":-moz-placeholder") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSPseudoElements_mozPlaceholder as *mut _) } }};
 (":placeholder") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSPseudoElements_placeholder as *mut _) } }};
 (":-moz-color-swatch") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSPseudoElements_mozColorSwatch as *mut _) } }};
+(":-moz-oof-placeholder") =>
+  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_oofPlaceholder as *mut _) } }};
+(":-moz-hframeset-border") =>
+  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_horizontalFramesetBorder as *mut _) } }};
+(":-moz-vframeset-border") =>
+  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_verticalFramesetBorder as *mut _) } }};
+(":-moz-frameset-blank") =>
+  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_framesetBlank as *mut _) } }};
+(":-moz-table-column-group") =>
+  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_tableColGroup as *mut _) } }};
+(":-moz-table-column") =>
+  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_tableCol as *mut _) } }};
+(":-moz-pagebreak") =>
+  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_pageBreak as *mut _) } }};
 (":-moz-text") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozText as *mut _) } }};
-(":-moz-oof-placeholder") =>
-  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_oofPlaceholder as *mut _) } }};
 (":-moz-first-letter-continuation") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_firstLetterContinuation as *mut _) } }};
 (":-moz-block-inside-inline-wrapper") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozBlockInsideInlineWrapper as *mut _) } }};
 (":-moz-mathml-anonymous-block") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozMathMLAnonymousBlock as *mut _) } }};
 (":-moz-xul-anonymous-block") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozXULAnonymousBlock as *mut _) } }};
-(":-moz-hframeset-border") =>
-  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_horizontalFramesetBorder as *mut _) } }};
-(":-moz-vframeset-border") =>
-  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_verticalFramesetBorder as *mut _) } }};
 (":-moz-line-frame") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozLineFrame as *mut _) } }};
 (":-moz-button-content") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_buttonContent as *mut _) } }};
 (":-moz-cell-content") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_cellContent as *mut _) } }};
 (":-moz-dropdown-list") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_dropDownList as *mut _) } }};
 (":-moz-fieldset-content") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_fieldsetContent as *mut _) } }};
-(":-moz-frameset-blank") =>
-  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_framesetBlank as *mut _) } }};
 (":-moz-display-comboboxcontrol-frame") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozDisplayComboboxControlFrame as *mut _) } }};
 (":-moz-html-canvas-content") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_htmlCanvasContent as *mut _) } }};
 (":-moz-inline-table") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_inlineTable as *mut _) } }};
 (":-moz-table") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_table as *mut _) } }};
 (":-moz-table-cell") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_tableCell as *mut _) } }};
-(":-moz-table-column-group") =>
-  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_tableColGroup as *mut _) } }};
-(":-moz-table-column") =>
-  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_tableCol as *mut _) } }};
 (":-moz-table-wrapper") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_tableWrapper as *mut _) } }};
 (":-moz-table-row-group") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_tableRowGroup as *mut _) } }};
 (":-moz-table-row") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_tableRow as *mut _) } }};
 (":-moz-canvas") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_canvas as *mut _) } }};
-(":-moz-pagebreak") =>
-  {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_pageBreak as *mut _) } }};
 (":-moz-page") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_page as *mut _) } }};
 (":-moz-pagecontent") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_pageContent as *mut _) } }};
 (":-moz-page-sequence") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_pageSequence as *mut _) } }};
 (":-moz-scrolled-content") =>
   {{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_scrolledContent as *mut _) } }};
--- a/servo/components/style/gecko/generated/bindings.rs
+++ b/servo/components/style/gecko/generated/bindings.rs
@@ -71,17 +71,16 @@ use gecko_bindings::structs::ServoElemen
 use gecko_bindings::structs::ServoElementSnapshotTable;
 use gecko_bindings::structs::ServoStyleSetSizes;
 use gecko_bindings::structs::SheetParsingMode;
 use gecko_bindings::structs::StyleBasicShapeType;
 use gecko_bindings::structs::StyleShapeSource;
 use gecko_bindings::structs::StyleTransition;
 use gecko_bindings::structs::gfxFontFeatureValueSet;
 use gecko_bindings::structs::nsCSSCounterDesc;
-use gecko_bindings::structs::nsCSSCounterStyleRule;
 use gecko_bindings::structs::nsCSSFontDesc;
 use gecko_bindings::structs::nsCSSKeyword;
 use gecko_bindings::structs::nsCSSPropertyID;
 use gecko_bindings::structs::nsCSSPropertyIDSet;
 use gecko_bindings::structs::nsCSSRect;
 use gecko_bindings::structs::nsCSSShadowArray;
 use gecko_bindings::structs::nsCSSUnit;
 use gecko_bindings::structs::nsCSSValue;
@@ -428,16 +427,21 @@ pub struct RawServoFontFeatureValuesRule
 pub type RawServoRuleNodeStrong = ::gecko_bindings::sugar::ownership::Strong<RawServoRuleNode>;
 pub type RawServoRuleNodeBorrowed<'a> = &'a RawServoRuleNode;
 pub type RawServoRuleNodeBorrowedOrNull<'a> = Option<&'a RawServoRuleNode>;
 enum RawServoRuleNodeVoid { }
 pub struct RawServoRuleNode(RawServoRuleNodeVoid);
 pub type RawServoFontFaceRuleStrong = ::gecko_bindings::sugar::ownership::Strong<RawServoFontFaceRule>;
 pub type RawServoFontFaceRuleBorrowed<'a> = &'a RawServoFontFaceRule;
 pub type RawServoFontFaceRuleBorrowedOrNull<'a> = Option<&'a RawServoFontFaceRule>;
+pub type RawServoCounterStyleRuleStrong = ::gecko_bindings::sugar::ownership::Strong<RawServoCounterStyleRule>;
+pub type RawServoCounterStyleRuleBorrowed<'a> = &'a RawServoCounterStyleRule;
+pub type RawServoCounterStyleRuleBorrowedOrNull<'a> = Option<&'a RawServoCounterStyleRule>;
+enum RawServoCounterStyleRuleVoid { }
+pub struct RawServoCounterStyleRule(RawServoCounterStyleRuleVoid);
 
 extern "C" {
     pub fn Gecko_EnsureTArrayCapacity(
         aArray: *mut ::std::os::raw::c_void,
         aCapacity: usize,
         aElementSize: usize,
     );
 }
@@ -546,16 +550,22 @@ extern "C" {
 }
 extern "C" {
     pub fn Servo_FontFaceRule_AddRef(ptr: RawServoFontFaceRuleBorrowed);
 }
 extern "C" {
     pub fn Servo_FontFaceRule_Release(ptr: RawServoFontFaceRuleBorrowed);
 }
 extern "C" {
+    pub fn Servo_CounterStyleRule_AddRef(ptr: RawServoCounterStyleRuleBorrowed);
+}
+extern "C" {
+    pub fn Servo_CounterStyleRule_Release(ptr: RawServoCounterStyleRuleBorrowed);
+}
+extern "C" {
     pub fn Servo_StyleSet_Drop(ptr: RawServoStyleSetOwned);
 }
 extern "C" {
     pub fn Servo_AuthorStyles_Drop(ptr: RawServoAuthorStylesOwned);
 }
 extern "C" {
     pub fn Servo_SelectorList_Drop(ptr: RawServoSelectorListOwned);
 }
@@ -1568,36 +1578,16 @@ extern "C" {
 }
 extern "C" {
     pub fn Gecko_CSSKeywordString(
         keyword: nsCSSKeyword,
         len: *mut u32,
     ) -> *const ::std::os::raw::c_char;
 }
 extern "C" {
-    pub fn Gecko_CSSCounterStyle_Create(name: *mut nsAtom) -> *mut nsCSSCounterStyleRule;
-}
-extern "C" {
-    pub fn Gecko_CSSCounterStyle_Clone(
-        rule: *const nsCSSCounterStyleRule,
-    ) -> *mut nsCSSCounterStyleRule;
-}
-extern "C" {
-    pub fn Gecko_CSSCounterStyle_GetCssText(
-        rule: *const nsCSSCounterStyleRule,
-        result: *mut nsAString,
-    );
-}
-extern "C" {
-    pub fn Gecko_CSSCounterStyleRule_AddRef(aPtr: *mut nsCSSCounterStyleRule);
-}
-extern "C" {
-    pub fn Gecko_CSSCounterStyleRule_Release(aPtr: *mut nsCSSCounterStyleRule);
-}
-extern "C" {
     pub fn Gecko_IsDocumentBody(element: RawGeckoElementBorrowed) -> bool;
 }
 extern "C" {
     pub fn Gecko_GetLookAndFeelSystemColor(
         color_id: i32,
         pres_context: RawGeckoPresContextBorrowed,
     ) -> nscolor;
 }
@@ -2135,17 +2125,17 @@ extern "C" {
         set: RawServoStyleSetBorrowed,
         list: RawGeckoFontFaceRuleListBorrowedMut,
     );
 }
 extern "C" {
     pub fn Servo_StyleSet_GetCounterStyleRule(
         set: RawServoStyleSetBorrowed,
         name: *mut nsAtom,
-    ) -> *mut nsCSSCounterStyleRule;
+    ) -> *const RawServoCounterStyleRule;
 }
 extern "C" {
     pub fn Servo_StyleSet_BuildFontFeatureValueSet(
         set: RawServoStyleSetBorrowed,
     ) -> *mut gfxFontFeatureValueSet;
 }
 extern "C" {
     pub fn Servo_StyleSet_ResolveForDeclarations(
@@ -2468,17 +2458,31 @@ extern "C" {
         rule: RawServoFontFaceRuleBorrowed,
         result: *mut nsAString,
     );
 }
 extern "C" {
     pub fn Servo_CssRules_GetCounterStyleRuleAt(
         rules: ServoCssRulesBorrowed,
         index: u32,
-    ) -> *mut nsCSSCounterStyleRule;
+        line: *mut u32,
+        column: *mut u32,
+    ) -> RawServoCounterStyleRuleStrong;
+}
+extern "C" {
+    pub fn Servo_CounterStyleRule_Debug(
+        rule: RawServoCounterStyleRuleBorrowed,
+        result: *mut nsACString,
+    );
+}
+extern "C" {
+    pub fn Servo_CounterStyleRule_GetCssText(
+        rule: RawServoCounterStyleRuleBorrowed,
+        result: *mut nsAString,
+    );
 }
 extern "C" {
     pub fn Servo_StyleRule_GetStyle(
         rule: RawServoStyleRuleBorrowed,
     ) -> RawServoDeclarationBlockStrong;
 }
 extern "C" {
     pub fn Servo_StyleRule_SetStyle(
@@ -2671,16 +2675,66 @@ extern "C" {
 }
 extern "C" {
     pub fn Servo_FontFaceRule_ResetDescriptor(
         rule: RawServoFontFaceRuleBorrowed,
         desc: nsCSSFontDesc,
     );
 }
 extern "C" {
+    pub fn Servo_CounterStyleRule_GetName(rule: RawServoCounterStyleRuleBorrowed) -> *mut nsAtom;
+}
+extern "C" {
+    pub fn Servo_CounterStyleRule_SetName(
+        rule: RawServoCounterStyleRuleBorrowed,
+        name: *const nsACString,
+    ) -> bool;
+}
+extern "C" {
+    pub fn Servo_CounterStyleRule_GetGeneration(rule: RawServoCounterStyleRuleBorrowed) -> u32;
+}
+extern "C" {
+    pub fn Servo_CounterStyleRule_GetSystem(rule: RawServoCounterStyleRuleBorrowed) -> u8;
+}
+extern "C" {
+    pub fn Servo_CounterStyleRule_GetExtended(
+        rule: RawServoCounterStyleRuleBorrowed,
+    ) -> *mut nsAtom;
+}
+extern "C" {
+    pub fn Servo_CounterStyleRule_GetFixedFirstValue(rule: RawServoCounterStyleRuleBorrowed)
+        -> i32;
+}
+extern "C" {
+    pub fn Servo_CounterStyleRule_GetFallback(
+        rule: RawServoCounterStyleRuleBorrowed,
+    ) -> *mut nsAtom;
+}
+extern "C" {
+    pub fn Servo_CounterStyleRule_GetDescriptor(
+        rule: RawServoCounterStyleRuleBorrowed,
+        desc: nsCSSCounterDesc,
+        result: nsCSSValueBorrowedMut,
+    );
+}
+extern "C" {
+    pub fn Servo_CounterStyleRule_GetDescriptorCssText(
+        rule: RawServoCounterStyleRuleBorrowed,
+        desc: nsCSSCounterDesc,
+        result: *mut nsAString,
+    );
+}
+extern "C" {
+    pub fn Servo_CounterStyleRule_SetDescriptor(
+        rule: RawServoCounterStyleRuleBorrowed,
+        desc: nsCSSCounterDesc,
+        value: *const nsACString,
+    ) -> bool;
+}
+extern "C" {
     pub fn Servo_ParseProperty(
         property: nsCSSPropertyID,
         value: *const nsACString,
         data: *mut RawGeckoURLExtraData,
         parsing_mode: ParsingMode,
         quirks_mode: nsCompatibility,
         loader: *mut Loader,
     ) -> RawServoDeclarationBlockStrong;
@@ -3313,40 +3367,32 @@ extern "C" {
 extern "C" {
     pub fn Servo_ParseTransformIntoMatrix(
         value: *const nsAString,
         contains_3d_transform: *mut bool,
         result: *mut RawGeckoGfxMatrix4x4,
     ) -> bool;
 }
 extern "C" {
-    pub fn Servo_ParseCounterStyleName(value: *const nsACString) -> *mut nsAtom;
-}
-extern "C" {
-    pub fn Servo_ParseCounterStyleDescriptor(
-        aDescriptor: nsCSSCounterDesc,
-        aValue: *const nsACString,
-        aURLExtraData: *mut RawGeckoURLExtraData,
-        aResult: *mut nsCSSValue,
-    ) -> bool;
-}
-extern "C" {
     pub fn Servo_ParseFontShorthandForMatching(
         value: *const nsAString,
         data: *mut RawGeckoURLExtraData,
         family: *mut RefPtr<SharedFontList>,
         style: nsCSSValueBorrowedMut,
         stretch: nsCSSValueBorrowedMut,
         weight: nsCSSValueBorrowedMut,
     ) -> bool;
 }
 extern "C" {
     pub fn Servo_Property_IsShorthand(name: *const nsACString, found: *mut bool) -> bool;
 }
 extern "C" {
+    pub fn Servo_PseudoClass_GetStates(name: *const nsACString) -> u64;
+}
+extern "C" {
     pub fn Gecko_CreateCSSErrorReporter(
         sheet: *mut ServoStyleSheet,
         loader: *mut Loader,
         uri: *mut nsIURI,
     ) -> *mut ErrorReporter;
 }
 extern "C" {
     pub fn Gecko_DestroyCSSErrorReporter(reporter: *mut ErrorReporter);
--- a/servo/components/style/gecko/generated/pseudo_element_definition.rs
+++ b/servo/components/style/gecko/generated/pseudo_element_definition.rs
@@ -50,68 +50,68 @@ pub enum PseudoElement {
         /// :-moz-meter-bar
         MozMeterBar,
         /// :-moz-placeholder
         MozPlaceholder,
         /// :placeholder
         Placeholder,
         /// :-moz-color-swatch
         MozColorSwatch,
+        /// :-moz-oof-placeholder
+        OofPlaceholder,
+        /// :-moz-hframeset-border
+        HorizontalFramesetBorder,
+        /// :-moz-vframeset-border
+        VerticalFramesetBorder,
+        /// :-moz-frameset-blank
+        FramesetBlank,
+        /// :-moz-table-column-group
+        TableColGroup,
+        /// :-moz-table-column
+        TableCol,
+        /// :-moz-pagebreak
+        PageBreak,
         /// :-moz-text
         MozText,
-        /// :-moz-oof-placeholder
-        OofPlaceholder,
         /// :-moz-first-letter-continuation
         FirstLetterContinuation,
         /// :-moz-block-inside-inline-wrapper
         MozBlockInsideInlineWrapper,
         /// :-moz-mathml-anonymous-block
         MozMathMLAnonymousBlock,
         /// :-moz-xul-anonymous-block
         MozXULAnonymousBlock,
-        /// :-moz-hframeset-border
-        HorizontalFramesetBorder,
-        /// :-moz-vframeset-border
-        VerticalFramesetBorder,
         /// :-moz-line-frame
         MozLineFrame,
         /// :-moz-button-content
         ButtonContent,
         /// :-moz-cell-content
         CellContent,
         /// :-moz-dropdown-list
         DropDownList,
         /// :-moz-fieldset-content
         FieldsetContent,
-        /// :-moz-frameset-blank
-        FramesetBlank,
         /// :-moz-display-comboboxcontrol-frame
         MozDisplayComboboxControlFrame,
         /// :-moz-html-canvas-content
         HtmlCanvasContent,
         /// :-moz-inline-table
         InlineTable,
         /// :-moz-table
         Table,
         /// :-moz-table-cell
         TableCell,
-        /// :-moz-table-column-group
-        TableColGroup,
-        /// :-moz-table-column
-        TableCol,
         /// :-moz-table-wrapper
         TableWrapper,
         /// :-moz-table-row-group
         TableRowGroup,
         /// :-moz-table-row
         TableRow,
         /// :-moz-canvas
         Canvas,
-        /// :-moz-pagebreak
-        PageBreak,
         /// :-moz-page
         Page,
         /// :-moz-pagecontent
         PageContent,
         /// :-moz-page-sequence
         PageSequence,
         /// :-moz-scrolled-content
         ScrolledContent,
@@ -224,42 +224,42 @@ impl PseudoElement {
                 PseudoElement::MozProgressBar => atom!(":-moz-progress-bar"),
                 PseudoElement::MozRangeTrack => atom!(":-moz-range-track"),
                 PseudoElement::MozRangeProgress => atom!(":-moz-range-progress"),
                 PseudoElement::MozRangeThumb => atom!(":-moz-range-thumb"),
                 PseudoElement::MozMeterBar => atom!(":-moz-meter-bar"),
                 PseudoElement::MozPlaceholder => atom!(":-moz-placeholder"),
                 PseudoElement::Placeholder => atom!(":placeholder"),
                 PseudoElement::MozColorSwatch => atom!(":-moz-color-swatch"),
+                PseudoElement::OofPlaceholder => atom!(":-moz-oof-placeholder"),
+                PseudoElement::HorizontalFramesetBorder => atom!(":-moz-hframeset-border"),
+                PseudoElement::VerticalFramesetBorder => atom!(":-moz-vframeset-border"),
+                PseudoElement::FramesetBlank => atom!(":-moz-frameset-blank"),
+                PseudoElement::TableColGroup => atom!(":-moz-table-column-group"),
+                PseudoElement::TableCol => atom!(":-moz-table-column"),
+                PseudoElement::PageBreak => atom!(":-moz-pagebreak"),
                 PseudoElement::MozText => atom!(":-moz-text"),
-                PseudoElement::OofPlaceholder => atom!(":-moz-oof-placeholder"),
                 PseudoElement::FirstLetterContinuation => atom!(":-moz-first-letter-continuation"),
                 PseudoElement::MozBlockInsideInlineWrapper => atom!(":-moz-block-inside-inline-wrapper"),
                 PseudoElement::MozMathMLAnonymousBlock => atom!(":-moz-mathml-anonymous-block"),
                 PseudoElement::MozXULAnonymousBlock => atom!(":-moz-xul-anonymous-block"),
-                PseudoElement::HorizontalFramesetBorder => atom!(":-moz-hframeset-border"),
-                PseudoElement::VerticalFramesetBorder => atom!(":-moz-vframeset-border"),
                 PseudoElement::MozLineFrame => atom!(":-moz-line-frame"),
                 PseudoElement::ButtonContent => atom!(":-moz-button-content"),
                 PseudoElement::CellContent => atom!(":-moz-cell-content"),
                 PseudoElement::DropDownList => atom!(":-moz-dropdown-list"),
                 PseudoElement::FieldsetContent => atom!(":-moz-fieldset-content"),
-                PseudoElement::FramesetBlank => atom!(":-moz-frameset-blank"),
                 PseudoElement::MozDisplayComboboxControlFrame => atom!(":-moz-display-comboboxcontrol-frame"),
                 PseudoElement::HtmlCanvasContent => atom!(":-moz-html-canvas-content"),
                 PseudoElement::InlineTable => atom!(":-moz-inline-table"),
                 PseudoElement::Table => atom!(":-moz-table"),
                 PseudoElement::TableCell => atom!(":-moz-table-cell"),
-                PseudoElement::TableColGroup => atom!(":-moz-table-column-group"),
-                PseudoElement::TableCol => atom!(":-moz-table-column"),
                 PseudoElement::TableWrapper => atom!(":-moz-table-wrapper"),
                 PseudoElement::TableRowGroup => atom!(":-moz-table-row-group"),
                 PseudoElement::TableRow => atom!(":-moz-table-row"),
                 PseudoElement::Canvas => atom!(":-moz-canvas"),
-                PseudoElement::PageBreak => atom!(":-moz-pagebreak"),
                 PseudoElement::Page => atom!(":-moz-page"),
                 PseudoElement::PageContent => atom!(":-moz-pagecontent"),
                 PseudoElement::PageSequence => atom!(":-moz-page-sequence"),
                 PseudoElement::ScrolledContent => atom!(":-moz-scrolled-content"),
                 PseudoElement::ScrolledCanvas => atom!(":-moz-scrolled-canvas"),
                 PseudoElement::ScrolledPageSequence => atom!(":-moz-scrolled-page-sequence"),
                 PseudoElement::ColumnContent => atom!(":-moz-column-content"),
                 PseudoElement::Viewport => atom!(":-moz-viewport"),
@@ -313,42 +313,42 @@ impl PseudoElement {
             PseudoElement::MozProgressBar => 17,
             PseudoElement::MozRangeTrack => 18,
             PseudoElement::MozRangeProgress => 19,
             PseudoElement::MozRangeThumb => 20,
             PseudoElement::MozMeterBar => 21,
             PseudoElement::MozPlaceholder => 22,
             PseudoElement::Placeholder => 23,
             PseudoElement::MozColorSwatch => 24,
-            PseudoElement::MozText => 25,
-            PseudoElement::OofPlaceholder => 26,
-            PseudoElement::FirstLetterContinuation => 27,
-            PseudoElement::MozBlockInsideInlineWrapper => 28,
-            PseudoElement::MozMathMLAnonymousBlock => 29,
-            PseudoElement::MozXULAnonymousBlock => 30,
-            PseudoElement::HorizontalFramesetBorder => 31,
-            PseudoElement::VerticalFramesetBorder => 32,
-            PseudoElement::MozLineFrame => 33,
-            PseudoElement::ButtonContent => 34,
-            PseudoElement::CellContent => 35,
-            PseudoElement::DropDownList => 36,
-            PseudoElement::FieldsetContent => 37,
-            PseudoElement::FramesetBlank => 38,
-            PseudoElement::MozDisplayComboboxControlFrame => 39,
-            PseudoElement::HtmlCanvasContent => 40,
-            PseudoElement::InlineTable => 41,
-            PseudoElement::Table => 42,
-            PseudoElement::TableCell => 43,
-            PseudoElement::TableColGroup => 44,
-            PseudoElement::TableCol => 45,
-            PseudoElement::TableWrapper => 46,
-            PseudoElement::TableRowGroup => 47,
-            PseudoElement::TableRow => 48,
-            PseudoElement::Canvas => 49,
-            PseudoElement::PageBreak => 50,
+            PseudoElement::OofPlaceholder => 25,
+            PseudoElement::HorizontalFramesetBorder => 26,
+            PseudoElement::VerticalFramesetBorder => 27,
+            PseudoElement::FramesetBlank => 28,
+            PseudoElement::TableColGroup => 29,
+            PseudoElement::TableCol => 30,
+            PseudoElement::PageBreak => 31,
+            PseudoElement::MozText => 32,
+            PseudoElement::FirstLetterContinuation => 33,
+            PseudoElement::MozBlockInsideInlineWrapper => 34,
+            PseudoElement::MozMathMLAnonymousBlock => 35,
+            PseudoElement::MozXULAnonymousBlock => 36,
+            PseudoElement::MozLineFrame => 37,
+            PseudoElement::ButtonContent => 38,
+            PseudoElement::CellContent => 39,
+            PseudoElement::DropDownList => 40,
+            PseudoElement::FieldsetContent => 41,
+            PseudoElement::MozDisplayComboboxControlFrame => 42,
+            PseudoElement::HtmlCanvasContent => 43,
+            PseudoElement::InlineTable => 44,
+            PseudoElement::Table => 45,
+            PseudoElement::TableCell => 46,
+            PseudoElement::TableWrapper => 47,
+            PseudoElement::TableRowGroup => 48,
+            PseudoElement::TableRow => 49,
+            PseudoElement::Canvas => 50,
             PseudoElement::Page => 51,
             PseudoElement::PageContent => 52,
             PseudoElement::PageSequence => 53,
             PseudoElement::ScrolledContent => 54,
             PseudoElement::ScrolledCanvas => 55,
             PseudoElement::ScrolledPageSequence => 56,
             PseudoElement::ColumnContent => 57,
             PseudoElement::Viewport => 58,
@@ -467,42 +467,42 @@ impl PseudoElement {
             None
         ]
     }
 
     /// Whether this pseudo-element is an anonymous box.
     #[inline]
     pub fn is_anon_box(&self) -> bool {
         match *self {
+                    PseudoElement::OofPlaceholder => true,
+                    PseudoElement::HorizontalFramesetBorder => true,
+                    PseudoElement::VerticalFramesetBorder => true,
+                    PseudoElement::FramesetBlank => true,
+                    PseudoElement::TableColGroup => true,
+                    PseudoElement::TableCol => true,
+                    PseudoElement::PageBreak => true,
                     PseudoElement::MozText => true,
-                    PseudoElement::OofPlaceholder => true,
                     PseudoElement::FirstLetterContinuation => true,
                     PseudoElement::MozBlockInsideInlineWrapper => true,
                     PseudoElement::MozMathMLAnonymousBlock => true,
                     PseudoElement::MozXULAnonymousBlock => true,
-                    PseudoElement::HorizontalFramesetBorder => true,
-                    PseudoElement::VerticalFramesetBorder => true,
                     PseudoElement::MozLineFrame => true,
                     PseudoElement::ButtonContent => true,
                     PseudoElement::CellContent => true,
                     PseudoElement::DropDownList => true,
                     PseudoElement::FieldsetContent => true,
-                    PseudoElement::FramesetBlank => true,
                     PseudoElement::MozDisplayComboboxControlFrame => true,
                     PseudoElement::HtmlCanvasContent => true,
                     PseudoElement::InlineTable => true,
                     PseudoElement::Table => true,
                     PseudoElement::TableCell => true,
-                    PseudoElement::TableColGroup => true,
-                    PseudoElement::TableCol => true,
                     PseudoElement::TableWrapper => true,
                     PseudoElement::TableRowGroup => true,
                     PseudoElement::TableRow => true,
                     PseudoElement::Canvas => true,
-                    PseudoElement::PageBreak => true,
                     PseudoElement::Page => true,
                     PseudoElement::PageContent => true,
                     PseudoElement::PageSequence => true,
                     PseudoElement::ScrolledContent => true,
                     PseudoElement::ScrolledCanvas => true,
                     PseudoElement::ScrolledPageSequence => true,
                     PseudoElement::ColumnContent => true,
                     PseudoElement::Viewport => true,
@@ -608,68 +608,68 @@ impl PseudoElement {
                 PseudoElement::MozMeterBar =>
                     structs::SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozMeterBar,
                 PseudoElement::MozPlaceholder =>
                     structs::SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozPlaceholder,
                 PseudoElement::Placeholder =>
                     structs::SERVO_CSS_PSEUDO_ELEMENT_FLAGS_placeholder,
                 PseudoElement::MozColorSwatch =>
                     structs::SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozColorSwatch,
-                PseudoElement::MozText =>
+                PseudoElement::OofPlaceholder =>
+                    structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
+                PseudoElement::HorizontalFramesetBorder =>
+                    structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
+                PseudoElement::VerticalFramesetBorder =>
+                    structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
+                PseudoElement::FramesetBlank =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
-                PseudoElement::OofPlaceholder =>
+                PseudoElement::TableColGroup =>
+                    structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
+                PseudoElement::TableCol =>
+                    structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
+                PseudoElement::PageBreak =>
+                    structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
+                PseudoElement::MozText =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::FirstLetterContinuation =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::MozBlockInsideInlineWrapper =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::MozMathMLAnonymousBlock =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::MozXULAnonymousBlock =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
-                PseudoElement::HorizontalFramesetBorder =>
-                    structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
-                PseudoElement::VerticalFramesetBorder =>
-                    structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::MozLineFrame =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::ButtonContent =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::CellContent =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::DropDownList =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::FieldsetContent =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
-                PseudoElement::FramesetBlank =>
-                    structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::MozDisplayComboboxControlFrame =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::HtmlCanvasContent =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::InlineTable =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::Table =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::TableCell =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
-                PseudoElement::TableColGroup =>
-                    structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
-                PseudoElement::TableCol =>
-                    structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::TableWrapper =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::TableRowGroup =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::TableRow =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::Canvas =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
-                PseudoElement::PageBreak =>
-                    structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::Page =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::PageContent =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::PageSequence =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
                 PseudoElement::ScrolledContent =>
                     structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
@@ -839,42 +839,42 @@ impl PseudoElement {
                     PseudoElement::MozProgressBar => CSSPseudoElementType::mozProgressBar,
                     PseudoElement::MozRangeTrack => CSSPseudoElementType::mozRangeTrack,
                     PseudoElement::MozRangeProgress => CSSPseudoElementType::mozRangeProgress,
                     PseudoElement::MozRangeThumb => CSSPseudoElementType::mozRangeThumb,
                     PseudoElement::MozMeterBar => CSSPseudoElementType::mozMeterBar,
                     PseudoElement::MozPlaceholder => CSSPseudoElementType::mozPlaceholder,
                     PseudoElement::Placeholder => CSSPseudoElementType::placeholder,
                     PseudoElement::MozColorSwatch => CSSPseudoElementType::mozColorSwatch,
+                    PseudoElement::OofPlaceholder => CSSPseudoElementType::NonInheritingAnonBox,
+                    PseudoElement::HorizontalFramesetBorder => CSSPseudoElementType::NonInheritingAnonBox,
+                    PseudoElement::VerticalFramesetBorder => CSSPseudoElementType::NonInheritingAnonBox,
+                    PseudoElement::FramesetBlank => CSSPseudoElementType::NonInheritingAnonBox,
+                    PseudoElement::TableColGroup => CSSPseudoElementType::NonInheritingAnonBox,
+                    PseudoElement::TableCol => CSSPseudoElementType::NonInheritingAnonBox,
+                    PseudoElement::PageBreak => CSSPseudoElementType::NonInheritingAnonBox,
                     PseudoElement::MozText => CSSPseudoElementType_InheritingAnonBox,
-                    PseudoElement::OofPlaceholder => CSSPseudoElementType::NonInheritingAnonBox,
                     PseudoElement::FirstLetterContinuation => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::MozBlockInsideInlineWrapper => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::MozMathMLAnonymousBlock => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::MozXULAnonymousBlock => CSSPseudoElementType_InheritingAnonBox,
-                    PseudoElement::HorizontalFramesetBorder => CSSPseudoElementType::NonInheritingAnonBox,
-                    PseudoElement::VerticalFramesetBorder => CSSPseudoElementType::NonInheritingAnonBox,
                     PseudoElement::MozLineFrame => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::ButtonContent => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::CellContent => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::DropDownList => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::FieldsetContent => CSSPseudoElementType_InheritingAnonBox,
-                    PseudoElement::FramesetBlank => CSSPseudoElementType::NonInheritingAnonBox,
                     PseudoElement::MozDisplayComboboxControlFrame => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::HtmlCanvasContent => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::InlineTable => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::Table => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::TableCell => CSSPseudoElementType_InheritingAnonBox,
-                    PseudoElement::TableColGroup => CSSPseudoElementType::NonInheritingAnonBox,
-                    PseudoElement::TableCol => CSSPseudoElementType::NonInheritingAnonBox,
                     PseudoElement::TableWrapper => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::TableRowGroup => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::TableRow => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::Canvas => CSSPseudoElementType_InheritingAnonBox,
-                    PseudoElement::PageBreak => CSSPseudoElementType::NonInheritingAnonBox,
                     PseudoElement::Page => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::PageContent => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::PageSequence => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::ScrolledContent => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::ScrolledCanvas => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::ScrolledPageSequence => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::ColumnContent => CSSPseudoElementType_InheritingAnonBox,
                     PseudoElement::Viewport => CSSPseudoElementType_InheritingAnonBox,
@@ -1001,94 +1001,94 @@ impl PseudoElement {
                     return Some(PseudoElement::MozPlaceholder);
                 }
                 if atom == &atom!(":placeholder") {
                     return Some(PseudoElement::Placeholder);
                 }
                 if atom == &atom!(":-moz-color-swatch") {
                     return Some(PseudoElement::MozColorSwatch);
                 }
+                if atom == &atom!(":-moz-oof-placeholder") {
+                    return Some(PseudoElement::OofPlaceholder);
+                }
+                if atom == &atom!(":-moz-hframeset-border") {
+                    return Some(PseudoElement::HorizontalFramesetBorder);
+                }
+                if atom == &atom!(":-moz-vframeset-border") {
+                    return Some(PseudoElement::VerticalFramesetBorder);
+                }
+                if atom == &atom!(":-moz-frameset-blank") {
+                    return Some(PseudoElement::FramesetBlank);
+                }
+                if atom == &atom!(":-moz-table-column-group") {
+                    return Some(PseudoElement::TableColGroup);
+                }
+                if atom == &atom!(":-moz-table-column") {
+                    return Some(PseudoElement::TableCol);
+                }
+                if atom == &atom!(":-moz-pagebreak") {
+                    return Some(PseudoElement::PageBreak);
+                }
                 if atom == &atom!(":-moz-text") {
                     return Some(PseudoElement::MozText);
                 }
-                if atom == &atom!(":-moz-oof-placeholder") {
-                    return Some(PseudoElement::OofPlaceholder);
-                }
                 if atom == &atom!(":-moz-first-letter-continuation") {
                     return Some(PseudoElement::FirstLetterContinuation);
                 }
                 if atom == &atom!(":-moz-block-inside-inline-wrapper") {
                     return Some(PseudoElement::MozBlockInsideInlineWrapper);
                 }
                 if atom == &atom!(":-moz-mathml-anonymous-block") {
                     return Some(PseudoElement::MozMathMLAnonymousBlock);
                 }
                 if atom == &atom!(":-moz-xul-anonymous-block") {
                     return Some(PseudoElement::MozXULAnonymousBlock);
                 }
-                if atom == &atom!(":-moz-hframeset-border") {
-                    return Some(PseudoElement::HorizontalFramesetBorder);
-                }
-                if atom == &atom!(":-moz-vframeset-border") {
-                    return Some(PseudoElement::VerticalFramesetBorder);
-                }
                 if atom == &atom!(":-moz-line-frame") {
                     return Some(PseudoElement::MozLineFrame);
                 }
                 if atom == &atom!(":-moz-button-content") {
                     return Some(PseudoElement::ButtonContent);
                 }
                 if atom == &atom!(":-moz-cell-content") {
                     return Some(PseudoElement::CellContent);
                 }
                 if atom == &atom!(":-moz-dropdown-list") {
                     return Some(PseudoElement::DropDownList);
                 }
                 if atom == &atom!(":-moz-fieldset-content") {
                     return Some(PseudoElement::FieldsetContent);
                 }
-                if atom == &atom!(":-moz-frameset-blank") {
-                    return Some(PseudoElement::FramesetBlank);
-                }
                 if atom == &atom!(":-moz-display-comboboxcontrol-frame") {
                     return Some(PseudoElement::MozDisplayComboboxControlFrame);
                 }
                 if atom == &atom!(":-moz-html-canvas-content") {
                     return Some(PseudoElement::HtmlCanvasContent);
                 }
                 if atom == &atom!(":-moz-inline-table") {
                     return Some(PseudoElement::InlineTable);
                 }
                 if atom == &atom!(":-moz-table") {
                     return Some(PseudoElement::Table);
                 }
                 if atom == &atom!(":-moz-table-cell") {
                     return Some(PseudoElement::TableCell);
                 }
-                if atom == &atom!(":-moz-table-column-group") {
-                    return Some(PseudoElement::TableColGroup);
-                }
-                if atom == &atom!(":-moz-table-column") {
-                    return Some(PseudoElement::TableCol);
-                }
                 if atom == &atom!(":-moz-table-wrapper") {
                     return Some(PseudoElement::TableWrapper);
                 }
                 if atom == &atom!(":-moz-table-row-group") {
                     return Some(PseudoElement::TableRowGroup);
                 }
                 if atom == &atom!(":-moz-table-row") {
                     return Some(PseudoElement::TableRow);
                 }
                 if atom == &atom!(":-moz-canvas") {
                     return Some(PseudoElement::Canvas);
                 }
-                if atom == &atom!(":-moz-pagebreak") {
-                    return Some(PseudoElement::PageBreak);
-                }
                 if atom == &atom!(":-moz-page") {
                     return Some(PseudoElement::Page);
                 }
                 if atom == &atom!(":-moz-pagecontent") {
                     return Some(PseudoElement::PageContent);
                 }
                 if atom == &atom!(":-moz-page-sequence") {
                     return Some(PseudoElement::PageSequence);
@@ -1156,94 +1156,94 @@ impl PseudoElement {
                     return Some(PseudoElement::MozSVGText);
                 }
         None
     }
 
     /// Construct a pseudo-element from an anonymous box `Atom`.
     #[inline]
     pub fn from_anon_box_atom(atom: &Atom) -> Option<Self> {
+                if atom == &atom!(":-moz-oof-placeholder") {
+                    return Some(PseudoElement::OofPlaceholder);
+                }
+                if atom == &atom!(":-moz-hframeset-border") {
+                    return Some(PseudoElement::HorizontalFramesetBorder);
+                }
+                if atom == &atom!(":-moz-vframeset-border") {
+                    return Some(PseudoElement::VerticalFramesetBorder);
+                }
+                if atom == &atom!(":-moz-frameset-blank") {
+                    return Some(PseudoElement::FramesetBlank);
+                }
+                if atom == &atom!(":-moz-table-column-group") {
+                    return Some(PseudoElement::TableColGroup);
+                }
+                if atom == &atom!(":-moz-table-column") {
+                    return Some(PseudoElement::TableCol);
+                }
+                if atom == &atom!(":-moz-pagebreak") {
+                    return Some(PseudoElement::PageBreak);
+                }
                 if atom == &atom!(":-moz-text") {
                     return Some(PseudoElement::MozText);
                 }
-                if atom == &atom!(":-moz-oof-placeholder") {
-                    return Some(PseudoElement::OofPlaceholder);
-                }
                 if atom == &atom!(":-moz-first-letter-continuation") {
                     return Some(PseudoElement::FirstLetterContinuation);
                 }
                 if atom == &atom!(":-moz-block-inside-inline-wrapper") {
                     return Some(PseudoElement::MozBlockInsideInlineWrapper);
                 }
                 if atom == &atom!(":-moz-mathml-anonymous-block") {
                     return Some(PseudoElement::MozMathMLAnonymousBlock);
                 }
                 if atom == &atom!(":-moz-xul-anonymous-block") {
                     return Some(PseudoElement::MozXULAnonymousBlock);
                 }
-                if atom == &atom!(":-moz-hframeset-border") {
-                    return Some(PseudoElement::HorizontalFramesetBorder);
-                }
-                if atom == &atom!(":-moz-vframeset-border") {
-                    return Some(PseudoElement::VerticalFramesetBorder);
-                }
                 if atom == &atom!(":-moz-line-frame") {
                     return Some(PseudoElement::MozLineFrame);
                 }
                 if atom == &atom!(":-moz-button-content") {
                     return Some(PseudoElement::ButtonContent);
                 }
                 if atom == &atom!(":-moz-cell-content") {
                     return Some(PseudoElement::CellContent);
                 }
                 if atom == &atom!(":-moz-dropdown-list") {
                     return Some(PseudoElement::DropDownList);
                 }
                 if atom == &atom!(":-moz-fieldset-content") {
                     return Some(PseudoElement::FieldsetContent);
                 }
-                if atom == &atom!(":-moz-frameset-blank") {
-                    return Some(PseudoElement::FramesetBlank);
-                }
                 if atom == &atom!(":-moz-display-comboboxcontrol-frame") {
                     return Some(PseudoElement::MozDisplayComboboxControlFrame);
                 }
                 if atom == &atom!(":-moz-html-canvas-content") {
                     return Some(PseudoElement::HtmlCanvasContent);
                 }
                 if atom == &atom!(":-moz-inline-table") {
                     return Some(PseudoElement::InlineTable);
                 }
                 if atom == &atom!(":-moz-table") {
                     return Some(PseudoElement::Table);
                 }
                 if atom == &atom!(":-moz-table-cell") {
                     return Some(PseudoElement::TableCell);
                 }
-                if atom == &atom!(":-moz-table-column-group") {
-                    return Some(PseudoElement::TableColGroup);
-                }
-                if atom == &atom!(":-moz-table-column") {
-                    return Some(PseudoElement::TableCol);
-                }
                 if atom == &atom!(":-moz-table-wrapper") {
                     return Some(PseudoElement::TableWrapper);
                 }
                 if atom == &atom!(":-moz-table-row-group") {
                     return Some(PseudoElement::TableRowGroup);
                 }
                 if atom == &atom!(":-moz-table-row") {
                     return Some(PseudoElement::TableRow);
                 }
                 if atom == &atom!(":-moz-canvas") {
                     return Some(PseudoElement::Canvas);
                 }
-                if atom == &atom!(":-moz-pagebreak") {
-                    return Some(PseudoElement::PageBreak);
-                }
                 if atom == &atom!(":-moz-page") {
                     return Some(PseudoElement::Page);
                 }
                 if atom == &atom!(":-moz-pagecontent") {
                     return Some(PseudoElement::PageContent);
                 }
                 if atom == &atom!(":-moz-page-sequence") {
                     return Some(PseudoElement::PageSequence);
@@ -1435,94 +1435,94 @@ impl PseudoElement {
                 return Some(PseudoElement::MozPlaceholder)
             }
             "placeholder" => {
                 return Some(PseudoElement::Placeholder)
             }
             "-moz-color-swatch" => {
                 return Some(PseudoElement::MozColorSwatch)
             }
+            "-moz-oof-placeholder" => {
+                return Some(PseudoElement::OofPlaceholder)
+            }
+            "-moz-hframeset-border" => {
+                return Some(PseudoElement::HorizontalFramesetBorder)
+            }
+            "-moz-vframeset-border" => {
+                return Some(PseudoElement::VerticalFramesetBorder)
+            }
+            "-moz-frameset-blank" => {
+                return Some(PseudoElement::FramesetBlank)
+            }
+            "-moz-table-column-group" => {
+                return Some(PseudoElement::TableColGroup)
+            }
+            "-moz-table-column" => {
+                return Some(PseudoElement::TableCol)
+            }
+            "-moz-pagebreak" => {
+                return Some(PseudoElement::PageBreak)
+            }
             "-moz-text" => {
                 return Some(PseudoElement::MozText)
             }
-            "-moz-oof-placeholder" => {
-                return Some(PseudoElement::OofPlaceholder)
-            }
             "-moz-first-letter-continuation" => {
                 return Some(PseudoElement::FirstLetterContinuation)
             }
             "-moz-block-inside-inline-wrapper" => {
                 return Some(PseudoElement::MozBlockInsideInlineWrapper)
             }
             "-moz-mathml-anonymous-block" => {
                 return Some(PseudoElement::MozMathMLAnonymousBlock)
             }
             "-moz-xul-anonymous-block" => {
                 return Some(PseudoElement::MozXULAnonymousBlock)
             }
-            "-moz-hframeset-border" => {
-                return Some(PseudoElement::HorizontalFramesetBorder)
-            }
-            "-moz-vframeset-border" => {
-                return Some(PseudoElement::VerticalFramesetBorder)
-            }
             "-moz-line-frame" => {
                 return Some(PseudoElement::MozLineFrame)
             }
             "-moz-button-content" => {
                 return Some(PseudoElement::ButtonContent)
             }
             "-moz-cell-content" => {
                 return Some(PseudoElement::CellContent)
             }
             "-moz-dropdown-list" => {
                 return Some(PseudoElement::DropDownList)
             }
             "-moz-fieldset-content" => {
                 return Some(PseudoElement::FieldsetContent)
             }
-            "-moz-frameset-blank" => {
-                return Some(PseudoElement::FramesetBlank)
-            }
             "-moz-display-comboboxcontrol-frame" => {
                 return Some(PseudoElement::MozDisplayComboboxControlFrame)
             }
             "-moz-html-canvas-content" => {
                 return Some(PseudoElement::HtmlCanvasContent)
             }
             "-moz-inline-table" => {
                 return Some(PseudoElement::InlineTable)
             }
             "-moz-table" => {
                 return Some(PseudoElement::Table)
             }
             "-moz-table-cell" => {
                 return Some(PseudoElement::TableCell)
             }
-            "-moz-table-column-group" => {
-                return Some(PseudoElement::TableColGroup)
-            }
-            "-moz-table-column" => {
-                return Some(PseudoElement::TableCol)
-            }
             "-moz-table-wrapper" => {
                 return Some(PseudoElement::TableWrapper)
             }
             "-moz-table-row-group" => {
                 return Some(PseudoElement::TableRowGroup)
             }
             "-moz-table-row" => {
                 return Some(PseudoElement::TableRow)
             }
             "-moz-canvas" => {
                 return Some(PseudoElement::Canvas)
             }
-            "-moz-pagebreak" => {
-                return Some(PseudoElement::PageBreak)
-            }
             "-moz-page" => {
                 return Some(PseudoElement::Page)
             }
             "-moz-pagecontent" => {
                 return Some(PseudoElement::PageContent)
             }
             "-moz-page-sequence" => {
                 return Some(PseudoElement::PageSequence)
@@ -1659,42 +1659,42 @@ impl ToCss for PseudoElement {
                 PseudoElement::MozProgressBar => dest.write_str(":-moz-progress-bar")?,
                 PseudoElement::MozRangeTrack => dest.write_str(":-moz-range-track")?,
                 PseudoElement::MozRangeProgress => dest.write_str(":-moz-range-progress")?,
                 PseudoElement::MozRangeThumb => dest.write_str(":-moz-range-thumb")?,
                 PseudoElement::MozMeterBar => dest.write_str(":-moz-meter-bar")?,
                 PseudoElement::MozPlaceholder => dest.write_str(":-moz-placeholder")?,
                 PseudoElement::Placeholder => dest.write_str(":placeholder")?,
                 PseudoElement::MozColorSwatch => dest.write_str(":-moz-color-swatch")?,
+                PseudoElement::OofPlaceholder => dest.write_str(":-moz-oof-placeholder")?,
+                PseudoElement::HorizontalFramesetBorder => dest.write_str(":-moz-hframeset-border")?,
+                PseudoElement::VerticalFramesetBorder => dest.write_str(":-moz-vframeset-border")?,
+                PseudoElement::FramesetBlank => dest.write_str(":-moz-frameset-blank")?,
+                PseudoElement::TableColGroup => dest.write_str(":-moz-table-column-group")?,
+                PseudoElement::TableCol => dest.write_str(":-moz-table-column")?,
+                PseudoElement::PageBreak => dest.write_str(":-moz-pagebreak")?,
                 PseudoElement::MozText => dest.write_str(":-moz-text")?,
-                PseudoElement::OofPlaceholder => dest.write_str(":-moz-oof-placeholder")?,
                 PseudoElement::FirstLetterContinuation => dest.write_str(":-moz-first-letter-continuation")?,
                 PseudoElement::MozBlockInsideInlineWrapper => dest.write_str(":-moz-block-inside-inline-wrapper")?,
                 PseudoElement::MozMathMLAnonymousBlock => dest.write_str(":-moz-mathml-anonymous-block")?,
                 PseudoElement::MozXULAnonymousBlock => dest.write_str(":-moz-xul-anonymous-block")?,
-                PseudoElement::HorizontalFramesetBorder => dest.write_str(":-moz-hframeset-border")?,
-                PseudoElement::VerticalFramesetBorder => dest.write_str(":-moz-vframeset-border")?,
                 PseudoElement::MozLineFrame => dest.write_str(":-moz-line-frame")?,
                 PseudoElement::ButtonContent => dest.write_str(":-moz-button-content")?,
                 PseudoElement::CellContent => dest.write_str(":-moz-cell-content")?,
                 PseudoElement::DropDownList => dest.write_str(":-moz-dropdown-list")?,
                 PseudoElement::FieldsetContent => dest.write_str(":-moz-fieldset-content")?,
-                PseudoElement::FramesetBlank => dest.write_str(":-moz-frameset-blank")?,
                 PseudoElement::MozDisplayComboboxControlFrame => dest.write_str(":-moz-display-comboboxcontrol-frame")?,
                 PseudoElement::HtmlCanvasContent => dest.write_str(":-moz-html-canvas-content")?,
                 PseudoElement::InlineTable => dest.write_str(":-moz-inline-table")?,
                 PseudoElement::Table => dest.write_str(":-moz-table")?,
                 PseudoElement::TableCell => dest.write_str(":-moz-table-cell")?,
-                PseudoElement::TableColGroup => dest.write_str(":-moz-table-column-group")?,
-                PseudoElement::TableCol => dest.write_str(":-moz-table-column")?,
                 PseudoElement::TableWrapper => dest.write_str(":-moz-table-wrapper")?,
                 PseudoElement::TableRowGroup => dest.write_str(":-moz-table-row-group")?,
                 PseudoElement::TableRow => dest.write_str(":-moz-table-row")?,
                 PseudoElement::Canvas => dest.write_str(":-moz-canvas")?,
-                PseudoElement::PageBreak => dest.write_str(":-moz-pagebreak")?,
                 PseudoElement::Page => dest.write_str(":-moz-page")?,
                 PseudoElement::PageContent => dest.write_str(":-moz-pagecontent")?,
                 PseudoElement::PageSequence => dest.write_str(":-moz-page-sequence")?,
                 PseudoElement::ScrolledContent => dest.write_str(":-moz-scrolled-content")?,
                 PseudoElement::ScrolledCanvas => dest.write_str(":-moz-scrolled-canvas")?,
                 PseudoElement::ScrolledPageSequence => dest.write_str(":-moz-scrolled-page-sequence")?,
                 PseudoElement::ColumnContent => dest.write_str(":-moz-column-content")?,
                 PseudoElement::Viewport => dest.write_str(":-moz-viewport")?,
--- a/servo/components/style/gecko/generated/structs.rs
+++ b/servo/components/style/gecko/generated/structs.rs
@@ -821,39 +821,39 @@ pub mod root {
     pub const NS_STYLE_COUNTER_SPEAKAS_WORDS: u32 = 2;
     pub const NS_STYLE_COUNTER_SPEAKAS_SPELL_OUT: u32 = 3;
     pub const NS_STYLE_COUNTER_SPEAKAS_OTHER: u32 = 255;
     pub const NS_STYLE_SCROLL_BEHAVIOR_AUTO: u32 = 0;
     pub const NS_STYLE_SCROLL_BEHAVIOR_SMOOTH: u32 = 1;
     pub const NS_STYLE_SCROLL_SNAP_TYPE_NONE: u32 = 0;
     pub const NS_STYLE_SCROLL_SNAP_TYPE_MANDATORY: u32 = 1;
     pub const NS_STYLE_SCROLL_SNAP_TYPE_PROXIMITY: u32 = 2;
-    pub const CSS_PSEUDO_ELEMENT_IS_CSS2: u32 = 1;
-    pub const CSS_PSEUDO_ELEMENT_CONTAINS_ELEMENTS: u32 = 2;
-    pub const CSS_PSEUDO_ELEMENT_SUPPORTS_STYLE_ATTRIBUTE: u32 = 4;
-    pub const CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE: u32 = 8;
-    pub const CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS: u32 = 16;
-    pub const CSS_PSEUDO_ELEMENT_ENABLED_IN_CHROME: u32 = 32;
-    pub const CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS_AND_CHROME: u32 = 48;
-    pub const CSS_PSEUDO_ELEMENT_IS_JS_CREATED_NAC: u32 = 64;
-    pub const CSS_PSEUDO_ELEMENT_IS_FLEX_OR_GRID_ITEM: u32 = 128;
     pub const kNameSpaceID_Unknown: i32 = -1;
     pub const kNameSpaceID_XMLNS: u32 = 1;
     pub const kNameSpaceID_XML: u32 = 2;
     pub const kNameSpaceID_XHTML: u32 = 3;
     pub const kNameSpaceID_XLink: u32 = 4;
     pub const kNameSpaceID_XSLT: u32 = 5;
     pub const kNameSpaceID_XBL: u32 = 6;
     pub const kNameSpaceID_MathML: u32 = 7;
     pub const kNameSpaceID_RDF: u32 = 8;
     pub const kNameSpaceID_XUL: u32 = 9;
     pub const kNameSpaceID_SVG: u32 = 10;
     pub const kNameSpaceID_disabled_MathML: u32 = 11;
     pub const kNameSpaceID_disabled_SVG: u32 = 12;
     pub const kNameSpaceID_LastBuiltin: u32 = 12;
+    pub const CSS_PSEUDO_ELEMENT_IS_CSS2: u32 = 1;
+    pub const CSS_PSEUDO_ELEMENT_CONTAINS_ELEMENTS: u32 = 2;
+    pub const CSS_PSEUDO_ELEMENT_SUPPORTS_STYLE_ATTRIBUTE: u32 = 4;
+    pub const CSS_PSEUDO_ELEMENT_SUPPORTS_USER_ACTION_STATE: u32 = 8;
+    pub const CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS: u32 = 16;
+    pub const CSS_PSEUDO_ELEMENT_ENABLED_IN_CHROME: u32 = 32;
+    pub const CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS_AND_CHROME: u32 = 48;
+    pub const CSS_PSEUDO_ELEMENT_IS_JS_CREATED_NAC: u32 = 64;
+    pub const CSS_PSEUDO_ELEMENT_IS_FLEX_OR_GRID_ITEM: u32 = 128;
     pub const kNameSpaceID_Wildcard: i32 = -2147483648;
     pub const NS_AUTHOR_SPECIFIED_BACKGROUND: u32 = 1;
     pub const NS_AUTHOR_SPECIFIED_BORDER: u32 = 2;
     pub const NS_AUTHOR_SPECIFIED_PADDING: u32 = 4;
     pub const NS_STYLE_INHERIT_MASK: u32 = 16777215;
     pub const NS_STYLE_HAS_TEXT_DECORATION_LINES: u32 = 16777216;
     pub const NS_STYLE_HAS_PSEUDO_ELEMENT_DATA: u32 = 33554432;
     pub const NS_STYLE_RELEVANT_LINK_VISITED: u32 = 67108864;
@@ -899,18 +899,16 @@ pub mod root {
         pub struct pair<_T1, _T2> {
             pub first: _T1,
             pub second: _T2,
             pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<_T1>>,
             pub _phantom_1: ::std::marker::PhantomData<::std::cell::UnsafeCell<_T2>>,
         }
         pub type pair_first_type<_T1> = _T1;
         pub type pair_second_type<_T2> = _T2;
-        pub type pair__PCCP = u8;
-        pub type pair__PCCFP = u8;
         #[repr(C)]
         #[derive(Debug, Copy)]
         pub struct input_iterator_tag {
             pub _address: u8,
         }
         #[test]
         fn bindgen_test_layout_input_iterator_tag() {
             assert_eq!(
@@ -949,43 +947,25 @@ pub mod root {
         pub type bitset__WordT = ::std::os::raw::c_ulong;
         #[repr(C)]
         #[derive(Debug)]
         pub struct bitset_reference {
             pub _M_wp: *mut root::std::bitset__WordT,
             pub _M_bpos: usize,
         }
     }
-    pub mod __gnu_cxx {
-        #[allow(unused_imports)]
-        use self::super::super::root;
-    }
-    pub type __int8_t = ::std::os::raw::c_schar;
-    pub type __uint8_t = ::std::os::raw::c_uchar;
-    pub type __int16_t = ::std::os::raw::c_short;
-    pub type __uint16_t = ::std::os::raw::c_ushort;
-    pub type __int32_t = ::std::os::raw::c_int;
-    pub type __uint32_t = ::std::os::raw::c_uint;
-    pub type __int64_t = ::std::os::raw::c_long;
-    pub type __uint64_t = ::std::os::raw::c_ulong;
     pub mod mozilla {
         #[allow(unused_imports)]
         use self::super::super::root;
-        pub type fallible_t = root::std::nothrow_t;
-        pub type IntegralConstant_ValueType<T> = T;
-        pub type IntegralConstant_Type = u8;
-        /// Convenient aliases.
-        pub type TrueType = u8;
-        pub type FalseType = u8;
         pub mod detail {
             #[allow(unused_imports)]
             use self::super::super::super::root;
             pub const StringDataFlags_TERMINATED: root::mozilla::detail::StringDataFlags = 1;
             pub const StringDataFlags_VOIDED: root::mozilla::detail::StringDataFlags = 2;
-            pub const StringDataFlags_SHARED: root::mozilla::detail::StringDataFlags = 4;
+            pub const StringDataFlags_REFCOUNTED: root::mozilla::detail::StringDataFlags = 4;
             pub const StringDataFlags_OWNED: root::mozilla::detail::StringDataFlags = 8;
             pub const StringDataFlags_INLINE: root::mozilla::detail::StringDataFlags = 16;
             pub const StringDataFlags_LITERAL: root::mozilla::detail::StringDataFlags = 32;
             pub type StringDataFlags = u16;
             pub const StringClassFlags_INLINE: root::mozilla::detail::StringClassFlags = 1;
             pub const StringClassFlags_NULL_TERMINATED: root::mozilla::detail::StringClassFlags = 2;
             pub type StringClassFlags = u16;
             #[repr(C)]
@@ -1039,21 +1019,16 @@ pub mod root {
             #[repr(C)]
             #[derive(Debug, Copy, Clone)]
             pub struct VariantTag {
                 pub _address: u8,
             }
             pub type VariantTag_Type = u8;
             #[repr(C)]
             #[derive(Debug, Copy, Clone)]
-            pub struct WeakReference {
-                pub _address: u8,
-            }
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
             pub struct FreePolicy {
                 pub _address: u8,
             }
             #[repr(C)]
             #[derive(Debug)]
             pub struct MutexImpl {
                 pub platformData_: [*mut ::std::os::raw::c_void; 5usize],
             }
@@ -1088,16 +1063,21 @@ pub mod root {
                         "Offset of field: ",
                         stringify!(MutexImpl),
                         "::",
                         stringify!(platformData_)
                     )
                 );
             }
             #[repr(C)]
+            #[derive(Debug, Copy, Clone)]
+            pub struct WeakReference {
+                pub _address: u8,
+            }
+            #[repr(C)]
             #[derive(Debug)]
             pub struct ConditionVariableImpl {
                 pub platformData_: [*mut ::std::os::raw::c_void; 6usize],
             }
             #[repr(C)]
             #[derive(Debug, Copy)]
             pub struct ConditionVariableImpl_PlatformData {
                 _unused: [u8; 0],
@@ -1129,72 +1109,23 @@ pub mod root {
                         "Offset of field: ",
                         stringify!(ConditionVariableImpl),
                         "::",
                         stringify!(platformData_)
                     )
                 );
             }
         }
+        pub type fallible_t = root::std::nothrow_t;
+        pub type IntegralConstant_ValueType<T> = T;
+        pub type IntegralConstant_Type = u8;
+        /// Convenient aliases.
+        pub type TrueType = u8;
+        pub type FalseType = u8;
         pub type Conditional_Type<A> = A;
-        pub const ArenaObjectID_eArenaObjectID_DummyBeforeFirstObjectID:
-            root::mozilla::ArenaObjectID = 171;
-        pub const ArenaObjectID_eArenaObjectID_GeckoComputedStyle: root::mozilla::ArenaObjectID =
-            172;
-        pub const ArenaObjectID_eArenaObjectID_nsLineBox: root::mozilla::ArenaObjectID = 173;
-        pub const ArenaObjectID_eArenaObjectID_nsRuleNode: root::mozilla::ArenaObjectID = 174;
-        pub const ArenaObjectID_eArenaObjectID_DisplayItemData: root::mozilla::ArenaObjectID = 175;
-        pub const ArenaObjectID_eArenaObjectID_nsInheritedStyleData: root::mozilla::ArenaObjectID =
-            176;
-        pub const ArenaObjectID_eArenaObjectID_nsResetStyleData: root::mozilla::ArenaObjectID = 177;
-        pub const ArenaObjectID_eArenaObjectID_nsConditionalResetStyleData:
-            root::mozilla::ArenaObjectID = 178;
-        pub const ArenaObjectID_eArenaObjectID_nsConditionalResetStyleDataEntry:
-            root::mozilla::ArenaObjectID = 179;
-        pub const ArenaObjectID_eArenaObjectID_nsFrameList: root::mozilla::ArenaObjectID = 180;
-        pub const ArenaObjectID_eArenaObjectID_CustomCounterStyle: root::mozilla::ArenaObjectID =
-            181;
-        pub const ArenaObjectID_eArenaObjectID_DependentBuiltinCounterStyle:
-            root::mozilla::ArenaObjectID = 182;
-        pub const ArenaObjectID_eArenaObjectID_nsCallbackEventRequest:
-            root::mozilla::ArenaObjectID = 183;
-        pub const ArenaObjectID_eArenaObjectID_nsIntervalSet_Interval:
-            root::mozilla::ArenaObjectID = 184;
-        pub const ArenaObjectID_eArenaObjectID_CellData: root::mozilla::ArenaObjectID = 185;
-        pub const ArenaObjectID_eArenaObjectID_BCCellData: root::mozilla::ArenaObjectID = 186;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleFont: root::mozilla::ArenaObjectID = 187;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleColor: root::mozilla::ArenaObjectID = 188;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleList: root::mozilla::ArenaObjectID = 189;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleText: root::mozilla::ArenaObjectID = 190;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleVisibility: root::mozilla::ArenaObjectID =
-            191;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleUserInterface: root::mozilla::ArenaObjectID =
-            192;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleTableBorder: root::mozilla::ArenaObjectID =
-            193;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleSVG: root::mozilla::ArenaObjectID = 194;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleVariables: root::mozilla::ArenaObjectID = 195;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleBackground: root::mozilla::ArenaObjectID =
-            196;
-        pub const ArenaObjectID_eArenaObjectID_nsStylePosition: root::mozilla::ArenaObjectID = 197;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleTextReset: root::mozilla::ArenaObjectID = 198;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleDisplay: root::mozilla::ArenaObjectID = 199;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleContent: root::mozilla::ArenaObjectID = 200;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleUIReset: root::mozilla::ArenaObjectID = 201;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleTable: root::mozilla::ArenaObjectID = 202;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleMargin: root::mozilla::ArenaObjectID = 203;
-        pub const ArenaObjectID_eArenaObjectID_nsStylePadding: root::mozilla::ArenaObjectID = 204;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleBorder: root::mozilla::ArenaObjectID = 205;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleOutline: root::mozilla::ArenaObjectID = 206;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleXUL: root::mozilla::ArenaObjectID = 207;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleSVGReset: root::mozilla::ArenaObjectID = 208;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleColumn: root::mozilla::ArenaObjectID = 209;
-        pub const ArenaObjectID_eArenaObjectID_nsStyleEffects: root::mozilla::ArenaObjectID = 210;
-        pub const ArenaObjectID_eArenaObjectID_COUNT: root::mozilla::ArenaObjectID = 211;
-        pub type ArenaObjectID = u32;
         /// This class is designed to cause crashes when various kinds of memory
         /// corruption are observed. For instance, let's say we have a class C where we
         /// suspect out-of-bounds writes to some members.  We can insert a member of type
         /// Poison near the members we suspect are being corrupted by out-of-bounds
         /// writes.  Or perhaps we have a class K we suspect is subject to use-after-free
         /// violations, in which case it doesn't particularly matter where in the class
         /// we add the member of type Poison.
         ///
@@ -1888,16 +1819,130 @@ pub mod root {
             }
             #[repr(u32)]
             #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
             pub enum CallerType {
                 System = 0,
                 NonSystem = 1,
             }
             #[repr(C)]
+            pub struct URLParams {
+                pub mParams: root::nsTArray<root::mozilla::dom::URLParams_Param>,
+            }
+            #[repr(C)]
+            pub struct URLParams_ForEachIterator__bindgen_vtable(::std::os::raw::c_void);
+            #[repr(C)]
+            #[derive(Debug, Copy)]
+            pub struct URLParams_ForEachIterator {
+                pub vtable_: *const URLParams_ForEachIterator__bindgen_vtable,
+            }
+            #[test]
+            fn bindgen_test_layout_URLParams_ForEachIterator() {
+                assert_eq!(
+                    ::std::mem::size_of::<URLParams_ForEachIterator>(),
+                    8usize,
+                    concat!("Size of: ", stringify!(URLParams_ForEachIterator))
+                );
+                assert_eq!(
+                    ::std::mem::align_of::<URLParams_ForEachIterator>(),
+                    8usize,
+                    concat!("Alignment of ", stringify!(URLParams_ForEachIterator))
+                );
+            }
+            impl Clone for URLParams_ForEachIterator {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            pub struct URLParams_Param {
+                pub mKey: ::nsstring::nsStringRepr,
+                pub mValue: ::nsstring::nsStringRepr,
+            }
+            #[test]
+            fn bindgen_test_layout_URLParams_Param() {
+                assert_eq!(
+                    ::std::mem::size_of::<URLParams_Param>(),
+                    32usize,
+                    concat!("Size of: ", stringify!(URLParams_Param))
+                );
+                assert_eq!(
+                    ::std::mem::align_of::<URLParams_Param>(),
+                    8usize,
+                    concat!("Alignment of ", stringify!(URLParams_Param))
+                );
+                assert_eq!(
+                    unsafe {
+                        &(*(::std::ptr::null::<URLParams_Param>())).mKey as *const _ as usize
+                    },
+                    0usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(URLParams_Param),
+                        "::",
+                        stringify!(mKey)
+                    )
+                );
+                assert_eq!(
+                    unsafe {
+                        &(*(::std::ptr::null::<URLParams_Param>())).mValue as *const _ as usize
+                    },
+                    16usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(URLParams_Param),
+                        "::",
+                        stringify!(mValue)
+                    )
+                );
+            }
+            #[test]
+            fn bindgen_test_layout_URLParams() {
+                assert_eq!(
+                    ::std::mem::size_of::<URLParams>(),
+                    8usize,
+                    concat!("Size of: ", stringify!(URLParams))
+                );
+                assert_eq!(
+                    ::std::mem::align_of::<URLParams>(),
+                    8usize,
+                    concat!("Alignment of ", stringify!(URLParams))
+                );
+                assert_eq!(
+                    unsafe { &(*(::std::ptr::null::<URLParams>())).mParams as *const _ as usize },
+                    0usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(URLParams),
+                        "::",
+                        stringify!(mParams)
+                    )
+                );
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
+            pub struct DocGroup {
+                _unused: [u8; 0],
+            }
+            impl Clone for DocGroup {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
+            pub struct TabGroup {
+                _unused: [u8; 0],
+            }
+            impl Clone for TabGroup {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
             #[derive(Debug, Copy, Clone)]
             pub struct Nullable {
                 pub _address: u8,
             }
             pub mod prototypes {
                 #[allow(unused_imports)]
                 use self::super::super::super::super::root;
             }
@@ -1926,78 +1971,114 @@ pub mod root {
             }
             impl Clone for ClientSource {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
             #[repr(C)]
             #[derive(Debug, Copy)]
+            pub struct ImageTracker {
+                _unused: [u8; 0],
+            }
+            impl Clone for ImageTracker {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            pub struct SRIMetadata {
+                pub mHashes: root::nsTArray<root::nsCString>,
+                pub mIntegrityString: ::nsstring::nsStringRepr,
+                pub mAlgorithm: root::nsCString,
+                pub mAlgorithmType: i8,
+                pub mEmpty: bool,
+            }
+            pub const SRIMetadata_MAX_ALTERNATE_HASHES: u32 = 256;
+            pub const SRIMetadata_UNKNOWN_ALGORITHM: i8 = -1;
+            #[test]
+            fn bindgen_test_layout_SRIMetadata() {
+                assert_eq!(
+                    ::std::mem::size_of::<SRIMetadata>(),
+                    48usize,
+                    concat!("Size of: ", stringify!(SRIMetadata))
+                );
+                assert_eq!(
+                    ::std::mem::align_of::<SRIMetadata>(),
+                    8usize,
+                    concat!("Alignment of ", stringify!(SRIMetadata))
+                );
+                assert_eq!(
+                    unsafe { &(*(::std::ptr::null::<SRIMetadata>())).mHashes as *const _ as usize },
+                    0usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(SRIMetadata),
+                        "::",
+                        stringify!(mHashes)
+                    )
+                );
+                assert_eq!(
+                    unsafe {
+                        &(*(::std::ptr::null::<SRIMetadata>())).mIntegrityString as *const _
+                            as usize
+                    },
+                    8usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(SRIMetadata),
+                        "::",
+                        stringify!(mIntegrityString)
+                    )
+                );
+                assert_eq!(
+                    unsafe {
+                        &(*(::std::ptr::null::<SRIMetadata>())).mAlgorithm as *const _ as usize
+                    },
+                    24usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(SRIMetadata),
+                        "::",
+                        stringify!(mAlgorithm)
+                    )
+                );
+                assert_eq!(
+                    unsafe {
+                        &(*(::std::ptr::null::<SRIMetadata>())).mAlgorithmType as *const _ as usize
+                    },
+                    40usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(SRIMetadata),
+                        "::",
+                        stringify!(mAlgorithmType)
+                    )
+                );
+                assert_eq!(
+                    unsafe { &(*(::std::ptr::null::<SRIMetadata>())).mEmpty as *const _ as usize },
+                    41usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(SRIMetadata),
+                        "::",
+                        stringify!(mEmpty)
+                    )
+                );
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
             pub struct CSSImportRule {
                 _unused: [u8; 0],
             }
             impl Clone for CSSImportRule {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
-            /// Struct that stores info on an attribute. The name and value must either both
-            /// be null or both be non-null.
-            ///
-            /// Note that, just as the pointers returned by GetAttrNameAt, the pointers that
-            /// this struct hold are only valid until the element or its attributes are
-            /// mutated (directly or via script).
-            #[repr(C)]
-            #[derive(Debug, Copy)]
-            pub struct BorrowedAttrInfo {
-                pub mName: *const root::nsAttrName,
-                pub mValue: *const root::nsAttrValue,
-            }
-            #[test]
-            fn bindgen_test_layout_BorrowedAttrInfo() {
-                assert_eq!(
-                    ::std::mem::size_of::<BorrowedAttrInfo>(),
-                    16usize,
-                    concat!("Size of: ", stringify!(BorrowedAttrInfo))
-                );
-                assert_eq!(
-                    ::std::mem::align_of::<BorrowedAttrInfo>(),
-                    8usize,
-                    concat!("Alignment of ", stringify!(BorrowedAttrInfo))
-                );
-                assert_eq!(
-                    unsafe {
-                        &(*(::std::ptr::null::<BorrowedAttrInfo>())).mName as *const _ as usize
-                    },
-                    0usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(BorrowedAttrInfo),
-                        "::",
-                        stringify!(mName)
-                    )
-                );
-                assert_eq!(
-                    unsafe {
-                        &(*(::std::ptr::null::<BorrowedAttrInfo>())).mValue as *const _ as usize
-                    },
-                    8usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(BorrowedAttrInfo),
-                        "::",
-                        stringify!(mValue)
-                    )
-                );
-            }
-            impl Clone for BorrowedAttrInfo {
-                fn clone(&self) -> Self {
-                    *self
-                }
-            }
             #[repr(C)]
             pub struct NodeInfo {
                 pub mRefCnt: root::nsCycleCollectingAutoRefCnt,
                 pub mDocument: *mut root::nsIDocument,
                 pub mInner: root::mozilla::dom::NodeInfo_NodeInfoInner,
                 pub mOwnerManager: root::RefPtr<root::nsNodeInfoManager>,
                 pub mQualifiedName: ::nsstring::nsStringRepr,
                 pub mNodeName: ::nsstring::nsStringRepr,
@@ -2275,26 +2356,16 @@ pub mod root {
             }
             impl Clone for ConvertCoordinateOptions {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
             #[repr(C)]
             #[derive(Debug, Copy)]
-            pub struct DocGroup {
-                _unused: [u8; 0],
-            }
-            impl Clone for DocGroup {
-                fn clone(&self) -> Self {
-                    *self
-                }
-            }
-            #[repr(C)]
-            #[derive(Debug, Copy)]
             pub struct DOMPoint {
                 _unused: [u8; 0],
             }
             impl Clone for DOMPoint {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
@@ -2344,26 +2415,16 @@ pub mod root {
                 _unused: [u8; 0],
             }
             impl Clone for IPCClientInfo {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
             #[repr(C)]
-            #[derive(Debug, Copy)]
-            pub struct TabGroup {
-                _unused: [u8; 0],
-            }
-            impl Clone for TabGroup {
-                fn clone(&self) -> Self {
-                    *self
-                }
-            }
-            #[repr(C)]
             pub struct DispatcherTrait__bindgen_vtable(::std::os::raw::c_void);
             #[repr(C)]
             #[derive(Debug, Copy)]
             pub struct DispatcherTrait {
                 pub vtable_: *const DispatcherTrait__bindgen_vtable,
             }
             #[test]
             fn bindgen_test_layout_DispatcherTrait() {
@@ -2436,16 +2497,80 @@ pub mod root {
             pub const LargeAllocStatus_NONE: root::mozilla::dom::LargeAllocStatus = 0;
             pub const LargeAllocStatus_SUCCESS: root::mozilla::dom::LargeAllocStatus = 1;
             pub const LargeAllocStatus_NON_GET: root::mozilla::dom::LargeAllocStatus = 2;
             pub const LargeAllocStatus_NON_E10S: root::mozilla::dom::LargeAllocStatus = 3;
             pub const LargeAllocStatus_NOT_ONLY_TOPLEVEL_IN_TABGROUP:
                 root::mozilla::dom::LargeAllocStatus = 4;
             pub const LargeAllocStatus_NON_WIN32: root::mozilla::dom::LargeAllocStatus = 5;
             pub type LargeAllocStatus = u8;
+            /// Struct that stores info on an attribute. The name and value must either both
+            /// be null or both be non-null.
+            ///
+            /// Note that, just as the pointers returned by GetAttrNameAt, the pointers that
+            /// this struct hold are only valid until the element or its attributes are
+            /// mutated (directly or via script).
+            #[repr(C)]
+            #[derive(Debug, Copy)]
+            pub struct BorrowedAttrInfo {
+                pub mName: *const root::nsAttrName,
+                pub mValue: *const root::nsAttrValue,
+            }
+            #[test]
+            fn bindgen_test_layout_BorrowedAttrInfo() {
+                assert_eq!(
+                    ::std::mem::size_of::<BorrowedAttrInfo>(),
+                    16usize,
+                    concat!("Size of: ", stringify!(BorrowedAttrInfo))
+                );
+                assert_eq!(
+                    ::std::mem::align_of::<BorrowedAttrInfo>(),
+                    8usize,
+                    concat!("Alignment of ", stringify!(BorrowedAttrInfo))
+                );
+                assert_eq!(
+                    unsafe {
+                        &(*(::std::ptr::null::<BorrowedAttrInfo>())).mName as *const _ as usize
+                    },
+                    0usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(BorrowedAttrInfo),
+                        "::",
+                        stringify!(mName)
+                    )
+                );
+                assert_eq!(
+                    unsafe {
+                        &(*(::std::ptr::null::<BorrowedAttrInfo>())).mValue as *const _ as usize
+                    },
+                    8usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(BorrowedAttrInfo),
+                        "::",
+                        stringify!(mValue)
+                    )
+                );
+            }
+            impl Clone for BorrowedAttrInfo {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
+            #[derive(Debug, Copy)]
+            pub struct FontFaceSet {
+                _unused: [u8; 0],
+            }
+            impl Clone for FontFaceSet {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
             #[repr(C)]
             #[derive(Debug, Copy)]
             pub struct StyleSheetList {
                 _unused: [u8; 0],
             }
             impl Clone for StyleSheetList {
                 fn clone(&self) -> Self {
                     *self
@@ -2600,46 +2725,26 @@ pub mod root {
             }
             impl Clone for DOMImplementation {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
             #[repr(C)]
             #[derive(Debug, Copy)]
-            pub struct FontFaceSet {
-                _unused: [u8; 0],
-            }
-            impl Clone for FontFaceSet {
-                fn clone(&self) -> Self {
-                    *self
-                }
-            }
-            #[repr(C)]
-            #[derive(Debug, Copy)]
             pub struct FullscreenRequest {
                 _unused: [u8; 0],
             }
             impl Clone for FullscreenRequest {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
             #[repr(C)]
             #[derive(Debug, Copy)]
-            pub struct ImageTracker {
-                _unused: [u8; 0],
-            }
-            impl Clone for ImageTracker {
-                fn clone(&self) -> Self {
-                    *self
-                }
-            }
-            #[repr(C)]
-            #[derive(Debug, Copy)]
             pub struct HTMLImageElement {
                 _unused: [u8; 0],
             }
             impl Clone for HTMLImageElement {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
@@ -2680,213 +2785,16 @@ pub mod root {
                 _unused: [u8; 0],
             }
             impl Clone for XPathEvaluator {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
             #[repr(C)]
-            #[derive(Debug, Copy)]
-            pub struct FrameRequestCallback {
-                pub _bindgen_opaque_blob: [u64; 6usize],
-            }
-            #[test]
-            fn bindgen_test_layout_FrameRequestCallback() {
-                assert_eq!(
-                    ::std::mem::size_of::<FrameRequestCallback>(),
-                    48usize,
-                    concat!("Size of: ", stringify!(FrameRequestCallback))
-                );
-                assert_eq!(
-                    ::std::mem::align_of::<FrameRequestCallback>(),
-                    8usize,
-                    concat!("Alignment of ", stringify!(FrameRequestCallback))
-                );
-            }
-            impl Clone for FrameRequestCallback {
-                fn clone(&self) -> Self {
-                    *self
-                }
-            }
-            #[repr(C)]
-            pub struct URLParams {
-                pub mParams: root::nsTArray<root::mozilla::dom::URLParams_Param>,
-            }
-            #[repr(C)]
-            pub struct URLParams_ForEachIterator__bindgen_vtable(::std::os::raw::c_void);
-            #[repr(C)]
-            #[derive(Debug, Copy)]
-            pub struct URLParams_ForEachIterator {
-                pub vtable_: *const URLParams_ForEachIterator__bindgen_vtable,
-            }
-            #[test]
-            fn bindgen_test_layout_URLParams_ForEachIterator() {
-                assert_eq!(
-                    ::std::mem::size_of::<URLParams_ForEachIterator>(),
-                    8usize,
-                    concat!("Size of: ", stringify!(URLParams_ForEachIterator))
-                );
-                assert_eq!(
-                    ::std::mem::align_of::<URLParams_ForEachIterator>(),
-                    8usize,
-                    concat!("Alignment of ", stringify!(URLParams_ForEachIterator))
-                );
-            }
-            impl Clone for URLParams_ForEachIterator {
-                fn clone(&self) -> Self {
-                    *self
-                }
-            }
-            #[repr(C)]
-            pub struct URLParams_Param {
-                pub mKey: ::nsstring::nsStringRepr,
-                pub mValue: ::nsstring::nsStringRepr,
-            }
-            #[test]
-            fn bindgen_test_layout_URLParams_Param() {
-                assert_eq!(
-                    ::std::mem::size_of::<URLParams_Param>(),
-                    32usize,
-                    concat!("Size of: ", stringify!(URLParams_Param))
-                );
-                assert_eq!(
-                    ::std::mem::align_of::<URLParams_Param>(),
-                    8usize,
-                    concat!("Alignment of ", stringify!(URLParams_Param))
-                );
-                assert_eq!(
-                    unsafe {
-                        &(*(::std::ptr::null::<URLParams_Param>())).mKey as *const _ as usize
-                    },
-                    0usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(URLParams_Param),
-                        "::",
-                        stringify!(mKey)
-                    )
-                );
-                assert_eq!(
-                    unsafe {
-                        &(*(::std::ptr::null::<URLParams_Param>())).mValue as *const _ as usize
-                    },
-                    16usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(URLParams_Param),
-                        "::",
-                        stringify!(mValue)
-                    )
-                );
-            }
-            #[test]
-            fn bindgen_test_layout_URLParams() {
-                assert_eq!(
-                    ::std::mem::size_of::<URLParams>(),
-                    8usize,
-                    concat!("Size of: ", stringify!(URLParams))
-                );
-                assert_eq!(
-                    ::std::mem::align_of::<URLParams>(),
-                    8usize,
-                    concat!("Alignment of ", stringify!(URLParams))
-                );
-                assert_eq!(
-                    unsafe { &(*(::std::ptr::null::<URLParams>())).mParams as *const _ as usize },
-                    0usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(URLParams),
-                        "::",
-                        stringify!(mParams)
-                    )
-                );
-            }
-            #[repr(C)]
-            pub struct SRIMetadata {
-                pub mHashes: root::nsTArray<root::nsCString>,
-                pub mIntegrityString: ::nsstring::nsStringRepr,
-                pub mAlgorithm: root::nsCString,
-                pub mAlgorithmType: i8,
-                pub mEmpty: bool,
-            }
-            pub const SRIMetadata_MAX_ALTERNATE_HASHES: u32 = 256;
-            pub const SRIMetadata_UNKNOWN_ALGORITHM: i8 = -1;
-            #[test]
-            fn bindgen_test_layout_SRIMetadata() {
-                assert_eq!(
-                    ::std::mem::size_of::<SRIMetadata>(),
-                    48usize,
-                    concat!("Size of: ", stringify!(SRIMetadata))
-                );
-                assert_eq!(
-                    ::std::mem::align_of::<SRIMetadata>(),
-                    8usize,
-                    concat!("Alignment of ", stringify!(SRIMetadata))
-                );
-                assert_eq!(
-                    unsafe { &(*(::std::ptr::null::<SRIMetadata>())).mHashes as *const _ as usize },
-                    0usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(SRIMetadata),
-                        "::",
-                        stringify!(mHashes)
-                    )
-                );
-                assert_eq!(
-                    unsafe {
-                        &(*(::std::ptr::null::<SRIMetadata>())).mIntegrityString as *const _
-                            as usize
-                    },
-                    8usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(SRIMetadata),
-                        "::",
-                        stringify!(mIntegrityString)
-                    )
-                );
-                assert_eq!(
-                    unsafe {
-                        &(*(::std::ptr::null::<SRIMetadata>())).mAlgorithm as *const _ as usize
-                    },
-                    24usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(SRIMetadata),
-                        "::",
-                        stringify!(mAlgorithm)
-                    )
-                );
-                assert_eq!(
-                    unsafe {
-                        &(*(::std::ptr::null::<SRIMetadata>())).mAlgorithmType as *const _ as usize
-                    },
-                    40usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(SRIMetadata),
-                        "::",
-                        stringify!(mAlgorithmType)
-                    )
-                );
-                assert_eq!(
-                    unsafe { &(*(::std::ptr::null::<SRIMetadata>())).mEmpty as *const _ as usize },
-                    41usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(SRIMetadata),
-                        "::",
-                        stringify!(mEmpty)
-                    )
-                );
-            }
-            #[repr(C)]
             #[derive(Debug)]
             pub struct OwningNodeOrString {
                 pub mType: root::mozilla::dom::OwningNodeOrString_Type,
                 pub mValue: root::mozilla::dom::OwningNodeOrString_Value,
             }
             pub const OwningNodeOrString_Type_eUninitialized:
                 root::mozilla::dom::OwningNodeOrString_Type = 0;
             pub const OwningNodeOrString_Type_eNode: root::mozilla::dom::OwningNodeOrString_Type =
@@ -2991,25 +2899,23 @@ pub mod root {
             impl Clone for CustomElementData {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
             #[repr(C)]
             pub struct FragmentOrElement {
                 pub _base: root::nsIContent,
-                pub mRefCnt: root::nsCycleCollectingAutoRefCnt,
                 /// Array containing all attributes and children for this element
                 pub mAttrsAndChildren: root::nsAttrAndChildArray,
             }
-            pub type FragmentOrElement_HasThreadSafeRefCnt = root::mozilla::FalseType;
             #[repr(C)]
             #[derive(Debug, Copy)]
             pub struct FragmentOrElement_cycleCollection {
-                pub _base: root::nsXPCOMCycleCollectionParticipant,
+                pub _base: root::nsIContent_cycleCollection,
             }
             #[test]
             fn bindgen_test_layout_FragmentOrElement_cycleCollection() {
                 assert_eq!(
                     ::std::mem::size_of::<FragmentOrElement_cycleCollection>(),
                     16usize,
                     concat!("Size of: ", stringify!(FragmentOrElement_cycleCollection))
                 );
@@ -3287,28 +3193,16 @@ pub mod root {
                 );
                 assert_eq!(
                     ::std::mem::align_of::<FragmentOrElement>(),
                     8usize,
                     concat!("Alignment of ", stringify!(FragmentOrElement))
                 );
                 assert_eq!(
                     unsafe {
-                        &(*(::std::ptr::null::<FragmentOrElement>())).mRefCnt as *const _ as usize
-                    },
-                    88usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(FragmentOrElement),
-                        "::",
-                        stringify!(mRefCnt)
-                    )
-                );
-                assert_eq!(
-                    unsafe {
                         &(*(::std::ptr::null::<FragmentOrElement>())).mAttrsAndChildren as *const _
                             as usize
                     },
                     96usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(FragmentOrElement),
                         "::",
@@ -3364,16 +3258,39 @@ pub mod root {
                 );
                 assert_eq!(
                     ::std::mem::align_of::<Attr>(),
                     8usize,
                     concat!("Alignment of ", stringify!(Attr))
                 );
             }
             #[repr(C)]
+            #[derive(Debug, Copy)]
+            pub struct FrameRequestCallback {
+                pub _bindgen_opaque_blob: [u64; 6usize],
+            }
+            #[test]
+            fn bindgen_test_layout_FrameRequestCallback() {
+                assert_eq!(
+                    ::std::mem::size_of::<FrameRequestCallback>(),
+                    48usize,
+                    concat!("Size of: ", stringify!(FrameRequestCallback))
+                );
+                assert_eq!(
+                    ::std::mem::align_of::<FrameRequestCallback>(),
+                    8usize,
+                    concat!("Alignment of ", stringify!(FrameRequestCallback))
+                );
+            }
+            impl Clone for FrameRequestCallback {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
             #[derive(Debug)]
             pub struct DOMRectReadOnly {
                 pub _base: root::nsISupports,
                 pub _base_1: root::nsWrapperCache,
                 pub mRefCnt: root::nsCycleCollectingAutoRefCnt,
                 pub mParent: root::nsCOMPtr,
             }
             pub type DOMRectReadOnly_HasThreadSafeRefCnt = root::mozilla::FalseType;
@@ -4790,452 +4707,25 @@ pub mod root {
         }
         #[repr(u8)]
         #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
         pub enum StyleOverscrollBehavior {
             Auto = 0,
             Contain = 1,
             None = 2,
         }
-        pub const MediaFeatureChangeReason_ViewportChange: root::mozilla::MediaFeatureChangeReason =
-            1;
-        pub const MediaFeatureChangeReason_ZoomChange: root::mozilla::MediaFeatureChangeReason = 2;
-        pub const MediaFeatureChangeReason_MinFontSizeChange:
-            root::mozilla::MediaFeatureChangeReason = 4;
-        pub const MediaFeatureChangeReason_ResolutionChange:
-            root::mozilla::MediaFeatureChangeReason = 8;
-        pub const MediaFeatureChangeReason_MediumChange: root::mozilla::MediaFeatureChangeReason =
-            16;
-        pub const MediaFeatureChangeReason_SizeModeChange: root::mozilla::MediaFeatureChangeReason =
-            32;
-        pub const MediaFeatureChangeReason_SystemMetricsChange:
-            root::mozilla::MediaFeatureChangeReason = 64;
-        pub const MediaFeatureChangeReason_DeviceSizeIsPageSizeChange:
-            root::mozilla::MediaFeatureChangeReason = 128;
-        pub const MediaFeatureChangeReason_DisplayModeChange:
-            root::mozilla::MediaFeatureChangeReason = 256;
-        pub type MediaFeatureChangeReason = i32;
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct MediaFeatureChange {
-            pub mRestyleHint: root::nsRestyleHint,
-            pub mChangeHint: root::nsChangeHint,
-            pub mReason: root::mozilla::MediaFeatureChangeReason,
-        }
-        #[test]
-        fn bindgen_test_layout_MediaFeatureChange() {
-            assert_eq!(
-                ::std::mem::size_of::<MediaFeatureChange>(),
-                12usize,
-                concat!("Size of: ", stringify!(MediaFeatureChange))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<MediaFeatureChange>(),
-                4usize,
-                concat!("Alignment of ", stringify!(MediaFeatureChange))
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<MediaFeatureChange>())).mRestyleHint as *const _ as usize
-                },
-                0usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(MediaFeatureChange),
-                    "::",
-                    stringify!(mRestyleHint)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<MediaFeatureChange>())).mChangeHint as *const _ as usize
-                },
-                4usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(MediaFeatureChange),
-                    "::",
-                    stringify!(mChangeHint)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<MediaFeatureChange>())).mReason as *const _ as usize
-                },
-                8usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(MediaFeatureChange),
-                    "::",
-                    stringify!(mReason)
-                )
-            );
-        }
-        impl Clone for MediaFeatureChange {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        pub mod external {
-            #[allow(unused_imports)]
-            use self::super::super::super::root;
-            /// AtomicRefCounted<T> is like RefCounted<T>, with an atomically updated
-            /// reference counter.
-            ///
-            /// NOTE: Please do not use this class, use NS_INLINE_DECL_THREADSAFE_REFCOUNTING
-            /// instead.
-            #[repr(C)]
-            #[derive(Debug, Copy, Clone)]
-            pub struct AtomicRefCounted {
-                pub _address: u8,
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
-        pub struct SupportsWeakPtr {
-            pub _address: u8,
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
-        pub struct WeakPtr {
-            pub _address: u8,
-        }
-        pub type WeakPtr_WeakReference = u8;
-        /// Event messages
-        pub type EventMessageType = u16;
-        pub const EventMessage_eVoidEvent: root::mozilla::EventMessage = 0;
-        pub const EventMessage_eAllEvents: root::mozilla::EventMessage = 1;
-        pub const EventMessage_eWindowClose: root::mozilla::EventMessage = 2;
-        pub const EventMessage_eKeyPress: root::mozilla::EventMessage = 3;
-        pub const EventMessage_eKeyUp: root::mozilla::EventMessage = 4;
-        pub const EventMessage_eKeyDown: root::mozilla::EventMessage = 5;
-        pub const EventMessage_eKeyDownOnPlugin: root::mozilla::EventMessage = 6;
-        pub const EventMessage_eKeyUpOnPlugin: root::mozilla::EventMessage = 7;
-        pub const EventMessage_eAccessKeyNotFound: root::mozilla::EventMessage = 8;
-        pub const EventMessage_eResize: root::mozilla::EventMessage = 9;
-        pub const EventMessage_eScroll: root::mozilla::EventMessage = 10;
-        pub const EventMessage_eInstall: root::mozilla::EventMessage = 11;
-        pub const EventMessage_eAppInstalled: root::mozilla::EventMessage = 12;
-        pub const EventMessage_ePluginActivate: root::mozilla::EventMessage = 13;
-        pub const EventMessage_ePluginFocus: root::mozilla::EventMessage = 14;
-        pub const EventMessage_eOffline: root::mozilla::EventMessage = 15;
-        pub const EventMessage_eOnline: root::mozilla::EventMessage = 16;
-        pub const EventMessage_eLanguageChange: root::mozilla::EventMessage = 17;
-        pub const EventMessage_eMouseMove: root::mozilla::EventMessage = 18;
-        pub const EventMessage_eMouseUp: root::mozilla::EventMessage = 19;
-        pub const EventMessage_eMouseDown: root::mozilla::EventMessage = 20;
-        pub const EventMessage_eMouseEnterIntoWidget: root::mozilla::EventMessage = 21;
-        pub const EventMessage_eMouseExitFromWidget: root::mozilla::EventMessage = 22;
-        pub const EventMessage_eMouseDoubleClick: root::mozilla::EventMessage = 23;
-        pub const EventMessage_eMouseClick: root::mozilla::EventMessage = 24;
-        pub const EventMessage_eMouseAuxClick: root::mozilla::EventMessage = 25;
-        pub const EventMessage_eMouseActivate: root::mozilla::EventMessage = 26;
-        pub const EventMessage_eMouseOver: root::mozilla::EventMessage = 27;
-        pub const EventMessage_eMouseOut: root::mozilla::EventMessage = 28;
-        pub const EventMessage_eMouseHitTest: root::mozilla::EventMessage = 29;
-        pub const EventMessage_eMouseEnter: root::mozilla::EventMessage = 30;
-        pub const EventMessage_eMouseLeave: root::mozilla::EventMessage = 31;
-        pub const EventMessage_eMouseTouchDrag: root::mozilla::EventMessage = 32;
-        pub const EventMessage_eMouseLongTap: root::mozilla::EventMessage = 33;
-        pub const EventMessage_eMouseEventFirst: root::mozilla::EventMessage = 18;
-        pub const EventMessage_eMouseEventLast: root::mozilla::EventMessage = 33;
-        pub const EventMessage_ePointerMove: root::mozilla::EventMessage = 34;
-        pub const EventMessage_ePointerUp: root::mozilla::EventMessage = 35;
-        pub const EventMessage_ePointerDown: root::mozilla::EventMessage = 36;
-        pub const EventMessage_ePointerOver: root::mozilla::EventMessage = 37;
-        pub const EventMessage_ePointerOut: root::mozilla::EventMessage = 38;
-        pub const EventMessage_ePointerEnter: root::mozilla::EventMessage = 39;
-        pub const EventMessage_ePointerLeave: root::mozilla::EventMessage = 40;
-        pub const EventMessage_ePointerCancel: root::mozilla::EventMessage = 41;
-        pub const EventMessage_ePointerGotCapture: root::mozilla::EventMessage = 42;
-        pub const EventMessage_ePointerLostCapture: root::mozilla::EventMessage = 43;
-        pub const EventMessage_ePointerEventFirst: root::mozilla::EventMessage = 34;
-        pub const EventMessage_ePointerEventLast: root::mozilla::EventMessage = 43;
-        pub const EventMessage_eContextMenu: root::mozilla::EventMessage = 44;
-        pub const EventMessage_eLoad: root::mozilla::EventMessage = 45;
-        pub const EventMessage_eUnload: root::mozilla::EventMessage = 46;
-        pub const EventMessage_eHashChange: root::mozilla::EventMessage = 47;
-        pub const EventMessage_eImageAbort: root::mozilla::EventMessage = 48;
-        pub const EventMessage_eLoadError: root::mozilla::EventMessage = 49;
-        pub const EventMessage_eLoadEnd: root::mozilla::EventMessage = 50;
-        pub const EventMessage_ePopState: root::mozilla::EventMessage = 51;
-        pub const EventMessage_eStorage: root::mozilla::EventMessage = 52;
-        pub const EventMessage_eBeforeUnload: root::mozilla::EventMessage = 53;
-        pub const EventMessage_eReadyStateChange: root::mozilla::EventMessage = 54;
-        pub const EventMessage_eFormSubmit: root::mozilla::EventMessage = 55;
-        pub const EventMessage_eFormReset: root::mozilla::EventMessage = 56;
-        pub const EventMessage_eFormChange: root::mozilla::EventMessage = 57;
-        pub const EventMessage_eFormSelect: root::mozilla::EventMessage = 58;
-        pub const EventMessage_eFormInvalid: root::mozilla::EventMessage = 59;
-        pub const EventMessage_eFormCheckboxStateChange: root::mozilla::EventMessage = 60;
-        pub const EventMessage_eFormRadioStateChange: root::mozilla::EventMessage = 61;
-        pub const EventMessage_eFocus: root::mozilla::EventMessage = 62;
-        pub const EventMessage_eBlur: root::mozilla::EventMessage = 63;
-        pub const EventMessage_eFocusIn: root::mozilla::EventMessage = 64;
-        pub const EventMessage_eFocusOut: root::mozilla::EventMessage = 65;
-        pub const EventMessage_eDragEnter: root::mozilla::EventMessage = 66;
-        pub const EventMessage_eDragOver: root::mozilla::EventMessage = 67;
-        pub const EventMessage_eDragExit: root::mozilla::EventMessage = 68;
-        pub const EventMessage_eDrag: root::mozilla::EventMessage = 69;
-        pub const EventMessage_eDragEnd: root::mozilla::EventMessage = 70;
-        pub const EventMessage_eDragStart: root::mozilla::EventMessage = 71;
-        pub const EventMessage_eDrop: root::mozilla::EventMessage = 72;
-        pub const EventMessage_eDragLeave: root::mozilla::EventMessage = 73;
-        pub const EventMessage_eDragDropEventFirst: root::mozilla::EventMessage = 66;
-        pub const EventMessage_eDragDropEventLast: root::mozilla::EventMessage = 73;
-        pub const EventMessage_eXULPopupShowing: root::mozilla::EventMessage = 74;
-        pub const EventMessage_eXULPopupShown: root::mozilla::EventMessage = 75;
-        pub const EventMessage_eXULPopupPositioned: root::mozilla::EventMessage = 76;
-        pub const EventMessage_eXULPopupHiding: root::mozilla::EventMessage = 77;
-        pub const EventMessage_eXULPopupHidden: root::mozilla::EventMessage = 78;
-        pub const EventMessage_eXULBroadcast: root::mozilla::EventMessage = 79;
-        pub const EventMessage_eXULCommandUpdate: root::mozilla::EventMessage = 80;
-        pub const EventMessage_eLegacyMouseLineOrPageScroll: root::mozilla::EventMessage = 81;
-        pub const EventMessage_eLegacyMousePixelScroll: root::mozilla::EventMessage = 82;
-        pub const EventMessage_eScrollPortUnderflow: root::mozilla::EventMessage = 83;
-        pub const EventMessage_eScrollPortOverflow: root::mozilla::EventMessage = 84;
-        pub const EventMessage_eLegacySubtreeModified: root::mozilla::EventMessage = 85;
-        pub const EventMessage_eLegacyNodeInserted: root::mozilla::EventMessage = 86;
-        pub const EventMessage_eLegacyNodeRemoved: root::mozilla::EventMessage = 87;
-        pub const EventMessage_eLegacyNodeRemovedFromDocument: root::mozilla::EventMessage = 88;
-        pub const EventMessage_eLegacyNodeInsertedIntoDocument: root::mozilla::EventMessage = 89;
-        pub const EventMessage_eLegacyAttrModified: root::mozilla::EventMessage = 90;
-        pub const EventMessage_eLegacyCharacterDataModified: root::mozilla::EventMessage = 91;
-        pub const EventMessage_eLegacyMutationEventFirst: root::mozilla::EventMessage = 85;
-        pub const EventMessage_eLegacyMutationEventLast: root::mozilla::EventMessage = 91;
-        pub const EventMessage_eUnidentifiedEvent: root::mozilla::EventMessage = 92;
-        pub const EventMessage_eCompositionStart: root::mozilla::EventMessage = 93;
-        pub const EventMessage_eCompositionEnd: root::mozilla::EventMessage = 94;
-        pub const EventMessage_eCompositionUpdate: root::mozilla::EventMessage = 95;
-        pub const EventMessage_eCompositionChange: root::mozilla::EventMessage = 96;
-        pub const EventMessage_eCompositionCommitAsIs: root::mozilla::EventMessage = 97;
-        pub const EventMessage_eCompositionCommit: root::mozilla::EventMessage = 98;
-        pub const EventMessage_eCompositionCommitRequestHandled: root::mozilla::EventMessage = 99;
-        pub const EventMessage_eLegacyDOMActivate: root::mozilla::EventMessage = 100;
-        pub const EventMessage_eLegacyDOMFocusIn: root::mozilla::EventMessage = 101;
-        pub const EventMessage_eLegacyDOMFocusOut: root::mozilla::EventMessage = 102;
-        pub const EventMessage_ePageShow: root::mozilla::EventMessage = 103;
-        pub const EventMessage_ePageHide: root::mozilla::EventMessage = 104;
-        pub const EventMessage_eSVGLoad: root::mozilla::EventMessage = 105;
-        pub const EventMessage_eSVGUnload: root::mozilla::EventMessage = 106;
-        pub const EventMessage_eSVGResize: root::mozilla::EventMessage = 107;
-        pub const EventMessage_eSVGScroll: root::mozilla::EventMessage = 108;
-        pub const EventMessage_eSVGZoom: root::mozilla::EventMessage = 109;
-        pub const EventMessage_eXULCommand: root::mozilla::EventMessage = 110;
-        pub const EventMessage_eCopy: root::mozilla::EventMessage = 111;
-        pub const EventMessage_eCut: root::mozilla::EventMessage = 112;
-        pub const EventMessage_ePaste: root::mozilla::EventMessage = 113;
-        pub const EventMessage_ePasteNoFormatting: root::mozilla::EventMessage = 114;
-        pub const EventMessage_eQuerySelectedText: root::mozilla::EventMessage = 115;
-        pub const EventMessage_eQueryTextContent: root::mozilla::EventMessage = 116;
-        pub const EventMessage_eQueryCaretRect: root::mozilla::EventMessage = 117;
-        pub const EventMessage_eQueryTextRect: root::mozilla::EventMessage = 118;
-        pub const EventMessage_eQueryTextRectArray: root::mozilla::EventMessage = 119;
-        pub const EventMessage_eQueryEditorRect: root::mozilla::EventMessage = 120;
-        pub const EventMessage_eQueryContentState: root::mozilla::EventMessage = 121;
-        pub const EventMessage_eQuerySelectionAsTransferable: root::mozilla::EventMessage = 122;
-        pub const EventMessage_eQueryCharacterAtPoint: root::mozilla::EventMessage = 123;
-        pub const EventMessage_eQueryDOMWidgetHittest: root::mozilla::EventMessage = 124;
-        pub const EventMessage_eLoadStart: root::mozilla::EventMessage = 125;
-        pub const EventMessage_eProgress: root::mozilla::EventMessage = 126;
-        pub const EventMessage_eSuspend: root::mozilla::EventMessage = 127;
-        pub const EventMessage_eEmptied: root::mozilla::EventMessage = 128;
-        pub const EventMessage_eStalled: root::mozilla::EventMessage = 129;
-        pub const EventMessage_ePlay: root::mozilla::EventMessage = 130;
-        pub const EventMessage_ePause: root::mozilla::EventMessage = 131;
-        pub const EventMessage_eLoadedMetaData: root::mozilla::EventMessage = 132;
-        pub const EventMessage_eLoadedData: root::mozilla::EventMessage = 133;
-        pub const EventMessage_eWaiting: root::mozilla::EventMessage = 134;
-        pub const EventMessage_ePlaying: root::mozilla::EventMessage = 135;
-        pub const EventMessage_eCanPlay: root::mozilla::EventMessage = 136;
-        pub const EventMessage_eCanPlayThrough: root::mozilla::EventMessage = 137;
-        pub const EventMessage_eSeeking: root::mozilla::EventMessage = 138;
-        pub const EventMessage_eSeeked: root::mozilla::EventMessage = 139;
-        pub const EventMessage_eTimeUpdate: root::mozilla::EventMessage = 140;
-        pub const EventMessage_eEnded: root::mozilla::EventMessage = 141;
-        pub const EventMessage_eRateChange: root::mozilla::EventMessage = 142;
-        pub const EventMessage_eDurationChange: root::mozilla::EventMessage = 143;
-        pub const EventMessage_eVolumeChange: root::mozilla::EventMessage = 144;
-        pub const EventMessage_eAfterPaint: root::mozilla::EventMessage = 145;
-        pub const EventMessage_eSwipeGestureMayStart: root::mozilla::EventMessage = 146;
-        pub const EventMessage_eSwipeGestureStart: root::mozilla::EventMessage = 147;
-        pub const EventMessage_eSwipeGestureUpdate: root::mozilla::EventMessage = 148;
-        pub const EventMessage_eSwipeGestureEnd: root::mozilla::EventMessage = 149;
-        pub const EventMessage_eSwipeGesture: root::mozilla::EventMessage = 150;
-        pub const EventMessage_eMagnifyGestureStart: root::mozilla::EventMessage = 151;
-        pub const EventMessage_eMagnifyGestureUpdate: root::mozilla::EventMessage = 152;
-        pub const EventMessage_eMagnifyGesture: root::mozilla::EventMessage = 153;
-        pub const EventMessage_eRotateGestureStart: root::mozilla::EventMessage = 154;
-        pub const EventMessage_eRotateGestureUpdate: root::mozilla::EventMessage = 155;
-        pub const EventMessage_eRotateGesture: root::mozilla::EventMessage = 156;
-        pub const EventMessage_eTapGesture: root::mozilla::EventMessage = 157;
-        pub const EventMessage_ePressTapGesture: root::mozilla::EventMessage = 158;
-        pub const EventMessage_eEdgeUIStarted: root::mozilla::EventMessage = 159;
-        pub const EventMessage_eEdgeUICanceled: root::mozilla::EventMessage = 160;
-        pub const EventMessage_eEdgeUICompleted: root::mozilla::EventMessage = 161;
-        pub const EventMessage_ePluginInputEvent: root::mozilla::EventMessage = 162;
-        pub const EventMessage_eSetSelection: root::mozilla::EventMessage = 163;
-        pub const EventMessage_eContentCommandCut: root::mozilla::EventMessage = 164;
-        pub const EventMessage_eContentCommandCopy: root::mozilla::EventMessage = 165;
-        pub const EventMessage_eContentCommandPaste: root::mozilla::EventMessage = 166;
-        pub const EventMessage_eContentCommandDelete: root::mozilla::EventMessage = 167;
-        pub const EventMessage_eContentCommandUndo: root::mozilla::EventMessage = 168;
-        pub const EventMessage_eContentCommandRedo: root::mozilla::EventMessage = 169;
-        pub const EventMessage_eContentCommandPasteTransferable: root::mozilla::EventMessage = 170;
-        pub const EventMessage_eContentCommandLookUpDictionary: root::mozilla::EventMessage = 171;
-        pub const EventMessage_eContentCommandScroll: root::mozilla::EventMessage = 172;
-        pub const EventMessage_eGestureNotify: root::mozilla::EventMessage = 173;
-        pub const EventMessage_eScrolledAreaChanged: root::mozilla::EventMessage = 174;
-        pub const EventMessage_eTransitionStart: root::mozilla::EventMessage = 175;
-        pub const EventMessage_eTransitionRun: root::mozilla::EventMessage = 176;
-        pub const EventMessage_eTransitionEnd: root::mozilla::EventMessage = 177;
-        pub const EventMessage_eTransitionCancel: root::mozilla::EventMessage = 178;
-        pub const EventMessage_eAnimationStart: root::mozilla::EventMessage = 179;
-        pub const EventMessage_eAnimationEnd: root::mozilla::EventMessage = 180;
-        pub const EventMessage_eAnimationIteration: root::mozilla::EventMessage = 181;
-        pub const EventMessage_eAnimationCancel: root::mozilla::EventMessage = 182;
-        pub const EventMessage_eWebkitTransitionEnd: root::mozilla::EventMessage = 183;
-        pub const EventMessage_eWebkitAnimationStart: root::mozilla::EventMessage = 184;
-        pub const EventMessage_eWebkitAnimationEnd: root::mozilla::EventMessage = 185;
-        pub const EventMessage_eWebkitAnimationIteration: root::mozilla::EventMessage = 186;
-        pub const EventMessage_eSMILBeginEvent: root::mozilla::EventMessage = 187;
-        pub const EventMessage_eSMILEndEvent: root::mozilla::EventMessage = 188;
-        pub const EventMessage_eSMILRepeatEvent: root::mozilla::EventMessage = 189;
-        pub const EventMessage_eAudioProcess: root::mozilla::EventMessage = 190;
-        pub const EventMessage_eAudioComplete: root::mozilla::EventMessage = 191;
-        pub const EventMessage_eBeforeScriptExecute: root::mozilla::EventMessage = 192;
-        pub const EventMessage_eAfterScriptExecute: root::mozilla::EventMessage = 193;
-        pub const EventMessage_eBeforePrint: root::mozilla::EventMessage = 194;
-        pub const EventMessage_eAfterPrint: root::mozilla::EventMessage = 195;
-        pub const EventMessage_eMessage: root::mozilla::EventMessage = 196;
-        pub const EventMessage_eMessageError: root::mozilla::EventMessage = 197;
-        pub const EventMessage_eOpen: root::mozilla::EventMessage = 198;
-        pub const EventMessage_eDeviceOrientation: root::mozilla::EventMessage = 199;
-        pub const EventMessage_eAbsoluteDeviceOrientation: root::mozilla::EventMessage = 200;
-        pub const EventMessage_eDeviceMotion: root::mozilla::EventMessage = 201;
-        pub const EventMessage_eDeviceProximity: root::mozilla::EventMessage = 202;
-        pub const EventMessage_eUserProximity: root::mozilla::EventMessage = 203;
-        pub const EventMessage_eDeviceLight: root::mozilla::EventMessage = 204;
-        pub const EventMessage_eVRDisplayActivate: root::mozilla::EventMessage = 205;
-        pub const EventMessage_eVRDisplayDeactivate: root::mozilla::EventMessage = 206;
-        pub const EventMessage_eVRDisplayConnect: root::mozilla::EventMessage = 207;
-        pub const EventMessage_eVRDisplayDisconnect: root::mozilla::EventMessage = 208;
-        pub const EventMessage_eVRDisplayPresentChange: root::mozilla::EventMessage = 209;
-        pub const EventMessage_eShow: root::mozilla::EventMessage = 210;
-        pub const EventMessage_eFullscreenChange: root::mozilla::EventMessage = 211;
-        pub const EventMessage_eFullscreenError: root::mozilla::EventMessage = 212;
-        pub const EventMessage_eMozFullscreenChange: root::mozilla::EventMessage = 213;
-        pub const EventMessage_eMozFullscreenError: root::mozilla::EventMessage = 214;
-        pub const EventMessage_eTouchStart: root::mozilla::EventMessage = 215;
-        pub const EventMessage_eTouchMove: root::mozilla::EventMessage = 216;
-        pub const EventMessage_eTouchEnd: root::mozilla::EventMessage = 217;
-        pub const EventMessage_eTouchCancel: root::mozilla::EventMessage = 218;
-        pub const EventMessage_eTouchPointerCancel: root::mozilla::EventMessage = 219;
-        pub const EventMessage_ePointerLockChange: root::mozilla::EventMessage = 220;
-        pub const EventMessage_ePointerLockError: root::mozilla::EventMessage = 221;
-        pub const EventMessage_eMozPointerLockChange: root::mozilla::EventMessage = 222;
-        pub const EventMessage_eMozPointerLockError: root::mozilla::EventMessage = 223;
-        pub const EventMessage_eWheel: root::mozilla::EventMessage = 224;
-        pub const EventMessage_eWheelOperationStart: root::mozilla::EventMessage = 225;
-        pub const EventMessage_eWheelOperationEnd: root::mozilla::EventMessage = 226;
-        pub const EventMessage_eTimeChange: root::mozilla::EventMessage = 227;
-        pub const EventMessage_eNetworkUpload: root::mozilla::EventMessage = 228;
-        pub const EventMessage_eNetworkDownload: root::mozilla::EventMessage = 229;
-        pub const EventMessage_eMediaRecorderDataAvailable: root::mozilla::EventMessage = 230;
-        pub const EventMessage_eMediaRecorderWarning: root::mozilla::EventMessage = 231;
-        pub const EventMessage_eMediaRecorderStop: root::mozilla::EventMessage = 232;
-        pub const EventMessage_eGamepadButtonDown: root::mozilla::EventMessage = 233;
-        pub const EventMessage_eGamepadButtonUp: root::mozilla::EventMessage = 234;
-        pub const EventMessage_eGamepadAxisMove: root::mozilla::EventMessage = 235;
-        pub const EventMessage_eGamepadConnected: root::mozilla::EventMessage = 236;
-        pub const EventMessage_eGamepadDisconnected: root::mozilla::EventMessage = 237;
-        pub const EventMessage_eGamepadEventFirst: root::mozilla::EventMessage = 233;
-        pub const EventMessage_eGamepadEventLast: root::mozilla::EventMessage = 237;
-        pub const EventMessage_eEditorInput: root::mozilla::EventMessage = 238;
-        pub const EventMessage_eSelectStart: root::mozilla::EventMessage = 239;
-        pub const EventMessage_eSelectionChange: root::mozilla::EventMessage = 240;
-        pub const EventMessage_eVisibilityChange: root::mozilla::EventMessage = 241;
-        pub const EventMessage_eToggle: root::mozilla::EventMessage = 242;
-        pub const EventMessage_eClose: root::mozilla::EventMessage = 243;
-        pub const EventMessage_eEventMessage_MaxValue: root::mozilla::EventMessage = 244;
-        pub type EventMessage = u16;
-        /// Event class IDs
-        pub type EventClassIDType = u8;
-        pub const EventClassID_eBasicEventClass: root::mozilla::EventClassID = 0;
-        pub const EventClassID_eGUIEventClass: root::mozilla::EventClassID = 1;
-        pub const EventClassID_eInputEventClass: root::mozilla::EventClassID = 2;
-        pub const EventClassID_eUIEventClass: root::mozilla::EventClassID = 3;
-        pub const EventClassID_eKeyboardEventClass: root::mozilla::EventClassID = 4;
-        pub const EventClassID_eCompositionEventClass: root::mozilla::EventClassID = 5;
-        pub const EventClassID_eQueryContentEventClass: root::mozilla::EventClassID = 6;
-        pub const EventClassID_eSelectionEventClass: root::mozilla::EventClassID = 7;
-        pub const EventClassID_eEditorInputEventClass: root::mozilla::EventClassID = 8;
-        pub const EventClassID_eMouseEventBaseClass: root::mozilla::EventClassID = 9;
-        pub const EventClassID_eMouseEventClass: root::mozilla::EventClassID = 10;
-        pub const EventClassID_eDragEventClass: root::mozilla::EventClassID = 11;
-        pub const EventClassID_eMouseScrollEventClass: root::mozilla::EventClassID = 12;
-        pub const EventClassID_eWheelEventClass: root::mozilla::EventClassID = 13;
-        pub const EventClassID_ePointerEventClass: root::mozilla::EventClassID = 14;
-        pub const EventClassID_eGestureNotifyEventClass: root::mozilla::EventClassID = 15;
-        pub const EventClassID_eSimpleGestureEventClass: root::mozilla::EventClassID = 16;
-        pub const EventClassID_eTouchEventClass: root::mozilla::EventClassID = 17;
-        pub const EventClassID_eScrollPortEventClass: root::mozilla::EventClassID = 18;
-        pub const EventClassID_eScrollAreaEventClass: root::mozilla::EventClassID = 19;
-        pub const EventClassID_eFormEventClass: root::mozilla::EventClassID = 20;
-        pub const EventClassID_eClipboardEventClass: root::mozilla::EventClassID = 21;
-        pub const EventClassID_eFocusEventClass: root::mozilla::EventClassID = 22;
-        pub const EventClassID_eTransitionEventClass: root::mozilla::EventClassID = 23;
-        pub const EventClassID_eAnimationEventClass: root::mozilla::EventClassID = 24;
-        pub const EventClassID_eSMILTimeEventClass: root::mozilla::EventClassID = 25;
-        pub const EventClassID_eCommandEventClass: root::mozilla::EventClassID = 26;
-        pub const EventClassID_eContentCommandEventClass: root::mozilla::EventClassID = 27;
-        pub const EventClassID_ePluginEventClass: root::mozilla::EventClassID = 28;
-        pub const EventClassID_eMutationEventClass: root::mozilla::EventClassID = 29;
-        pub type EventClassID = u8;
-        pub type AtomArray = root::nsTArray<root::RefPtr<root::nsAtom>>;
-        /// EventStates is the class used to represent the event states of nsIContent
-        /// instances. These states are calculated by IntrinsicState() and
-        /// ContentStatesChanged() has to be called when one of them changes thus
-        /// informing the layout/style engine of the change.
-        /// Event states are associated with pseudo-classes.
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct EventStates {
-            pub mStates: root::mozilla::EventStates_InternalType,
-        }
-        pub type EventStates_InternalType = u64;
-        pub type EventStates_ServoType = u64;
-        #[test]
-        fn bindgen_test_layout_EventStates() {
-            assert_eq!(
-                ::std::mem::size_of::<EventStates>(),
-                8usize,
-                concat!("Size of: ", stringify!(EventStates))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<EventStates>(),
-                8usize,
-                concat!("Alignment of ", stringify!(EventStates))
-            );
-            assert_eq!(
-                unsafe { &(*(::std::ptr::null::<EventStates>())).mStates as *const _ as usize },
-                0usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(EventStates),
-                    "::",
-                    stringify!(mStates)
-                )
-            );
-        }
-        impl Clone for EventStates {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
+        /// The default of not using CORS to validate cross-origin loads.
+        pub const CORSMode_CORS_NONE: root::mozilla::CORSMode = 0;
+        /// Validate cross-site loads using CORS, but do not send any credentials
+        /// (cookies, HTTP auth logins, etc) along with the request.
+        pub const CORSMode_CORS_ANONYMOUS: root::mozilla::CORSMode = 1;
+        /// Validate cross-site loads using CORS, and send credentials such as cookies
+        /// and HTTP auth logins along with the request.
+        pub const CORSMode_CORS_USE_CREDENTIALS: root::mozilla::CORSMode = 2;
+        pub type CORSMode = u8;
         pub const ServoTraversalFlags_Empty: root::mozilla::ServoTraversalFlags = 0;
         pub const ServoTraversalFlags_AnimationOnly: root::mozilla::ServoTraversalFlags = 1;
         pub const ServoTraversalFlags_ForCSSRuleChanges: root::mozilla::ServoTraversalFlags = 2;
         pub const ServoTraversalFlags_Forgetful: root::mozilla::ServoTraversalFlags = 8;
         pub const ServoTraversalFlags_ClearDirtyBits: root::mozilla::ServoTraversalFlags = 32;
         pub const ServoTraversalFlags_ClearAnimationOnlyDirtyDescendants:
             root::mozilla::ServoTraversalFlags = 64;
         pub const ServoTraversalFlags_ParallelTraversal: root::mozilla::ServoTraversalFlags = 128;
@@ -5365,80 +4855,698 @@ pub mod root {
                 )
             );
         }
         impl Clone for ServoStyleSetSizes {
             fn clone(&self) -> Self {
                 *self
             }
         }
-        pub const StyleBackendType_None: root::mozilla::StyleBackendType = 0;
-        pub const StyleBackendType_Gecko: root::mozilla::StyleBackendType = 1;
-        pub const StyleBackendType_Servo: root::mozilla::StyleBackendType = 2;
-        /// Enumeration that represents one of the two supported style system backends.
-        pub type StyleBackendType = u8;
+        pub type TimeStampValue = u64;
+        /// Instances of this class represent the length of an interval of time.
+        /// Negative durations are allowed, meaning the end is before the start.
+        ///
+        /// Internally the duration is stored as a int64_t in units of
+        /// PR_TicksPerSecond() when building with NSPR interval timers, or a
+        /// system-dependent unit when building with system clocks.  The
+        /// system-dependent unit must be constant, otherwise the semantics of
+        /// this class would be broken.
+        ///
+        /// The ValueCalculator template parameter determines how arithmetic
+        /// operations are performed on the integer count of ticks (mValue).
+        #[repr(C)]
+        #[derive(Debug, Copy, Clone)]
+        pub struct BaseTimeDuration {
+            pub mValue: i64,
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy, Clone)]
+        pub struct BaseTimeDuration__SomethingVeryRandomHere {
+            _unused: [u8; 0],
+        }
+        /// Perform arithmetic operations on the value of a BaseTimeDuration without
+        /// doing strict checks on the range of values.
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct TimeDurationValueCalculator {
+            pub _address: u8,
+        }
+        #[test]
+        fn bindgen_test_layout_TimeDurationValueCalculator() {
+            assert_eq!(
+                ::std::mem::size_of::<TimeDurationValueCalculator>(),
+                1usize,
+                concat!("Size of: ", stringify!(TimeDurationValueCalculator))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<TimeDurationValueCalculator>(),
+                1usize,
+                concat!("Alignment of ", stringify!(TimeDurationValueCalculator))
+            );
+        }
+        impl Clone for TimeDurationValueCalculator {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        /// Specialization of BaseTimeDuration that uses TimeDurationValueCalculator for
+        /// arithmetic on the mValue member.
+        ///
+        /// Use this class for time durations that are *not* expected to hold values of
+        /// Forever (or the negative equivalent) or when such time duration are *not*
+        /// expected to be used in arithmetic operations.
+        pub type TimeDuration = root::mozilla::BaseTimeDuration;
+        /// Instances of this class represent moments in time, or a special
+        /// "null" moment. We do not use the non-monotonic system clock or
+        /// local time, since they can be reset, causing apparent backward
+        /// travel in time, which can confuse algorithms. Instead we measure
+        /// elapsed time according to the system.  This time can never go
+        /// backwards (i.e. it never wraps around, at least not in less than
+        /// five million years of system elapsed time). It might not advance
+        /// while the system is sleeping. If TimeStamp::SetNow() is not called
+        /// at all for hours or days, we might not notice the passage of some
+        /// of that time.
+        ///
+        /// We deliberately do not expose a way to convert TimeStamps to some
+        /// particular unit. All you can do is compute a difference between two
+        /// TimeStamps to get a TimeDuration. You can also add a TimeDuration
+        /// to a TimeStamp to get a new TimeStamp. You can't do something
+        /// meaningless like add two TimeStamps.
+        ///
+        /// Internally this is implemented as either a wrapper around
+        /// - high-resolution, monotonic, system clocks if they exist on this
+        /// platform
+        /// - PRIntervalTime otherwise.  We detect wraparounds of
+        /// PRIntervalTime and work around them.
+        ///
+        /// This class is similar to C++11's time_point, however it is
+        /// explicitly nullable and provides an IsNull() method. time_point
+        /// is initialized to the clock's epoch and provides a
+        /// time_since_epoch() method that functions similiarly. i.e.
+        /// t.IsNull() is equivalent to t.time_since_epoch() == decltype(t)::duration::zero();
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct TimeStamp {
+            /// When built with PRIntervalTime, a value of 0 means this instance
+            /// is "null". Otherwise, the low 32 bits represent a PRIntervalTime,
+            /// and the high 32 bits represent a counter of the number of
+            /// rollovers of PRIntervalTime that we've seen. This counter starts
+            /// at 1 to avoid a real time colliding with the "null" value.
+            ///
+            /// PR_INTERVAL_MAX is set at 100,000 ticks per second. So the minimum
+            /// time to wrap around is about 2^64/100000 seconds, i.e. about
+            /// 5,849,424 years.
+            ///
+            /// When using a system clock, a value is system dependent.
+            pub mValue: root::mozilla::TimeStampValue,
+        }
+        #[test]
+        fn bindgen_test_layout_TimeStamp() {
+            assert_eq!(
+                ::std::mem::size_of::<TimeStamp>(),
+                8usize,
+                concat!("Size of: ", stringify!(TimeStamp))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<TimeStamp>(),
+                8usize,
+                concat!("Alignment of ", stringify!(TimeStamp))
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<TimeStamp>())).mValue as *const _ as usize },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(TimeStamp),
+                    "::",
+                    stringify!(mValue)
+                )
+            );
+        }
+        impl Clone for TimeStamp {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct MallocAllocPolicy {
+            pub _address: u8,
+        }
+        #[test]
+        fn bindgen_test_layout_MallocAllocPolicy() {
+            assert_eq!(
+                ::std::mem::size_of::<MallocAllocPolicy>(),
+                1usize,
+                concat!("Size of: ", stringify!(MallocAllocPolicy))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<MallocAllocPolicy>(),
+                1usize,
+                concat!("Alignment of ", stringify!(MallocAllocPolicy))
+            );
+        }
+        impl Clone for MallocAllocPolicy {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        pub type Vector_Impl = u8;
+        #[repr(C)]
+        #[derive(Debug, Copy, Clone)]
+        pub struct Vector_CapacityAndReserved {
+            pub mCapacity: usize,
+        }
+        pub type Vector_ElementType<T> = T;
+        pub const Vector_InlineLength: root::mozilla::Vector__bindgen_ty_1 = 0;
+        pub type Vector__bindgen_ty_1 = i32;
+        #[repr(C)]
+        #[derive(Debug, Copy, Clone)]
+        pub struct Vector_Range<T> {
+            pub mCur: *mut T,
+            pub mEnd: *mut T,
+            pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>,
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy, Clone)]
+        pub struct Vector_ConstRange<T> {
+            pub mCur: *mut T,
+            pub mEnd: *mut T,
+            pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>,
+        }
+        pub mod binding_danger {
+            #[allow(unused_imports)]
+            use self::super::super::super::root;
+            #[repr(C)]
+            #[derive(Debug, Copy)]
+            pub struct AssertAndSuppressCleanupPolicy {
+                pub _address: u8,
+            }
+            pub const AssertAndSuppressCleanupPolicy_assertHandled: bool = true;
+            pub const AssertAndSuppressCleanupPolicy_suppress: bool = true;
+            #[test]
+            fn bindgen_test_layout_AssertAndSuppressCleanupPolicy() {
+                assert_eq!(
+                    ::std::mem::size_of::<AssertAndSuppressCleanupPolicy>(),
+                    1usize,
+                    concat!("Size of: ", stringify!(AssertAndSuppressCleanupPolicy))
+                );
+                assert_eq!(
+                    ::std::mem::align_of::<AssertAndSuppressCleanupPolicy>(),
+                    1usize,
+                    concat!("Alignment of ", stringify!(AssertAndSuppressCleanupPolicy))
+                );
+            }
+            impl Clone for AssertAndSuppressCleanupPolicy {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct URLExtraData {
+            pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt,
+            pub mBaseURI: root::nsCOMPtr,
+            pub mReferrer: root::nsCOMPtr,
+            pub mPrincipal: root::nsCOMPtr,
+            pub mIsChrome: bool,
+        }
+        pub type URLExtraData_HasThreadSafeRefCnt = root::mozilla::TrueType;
+        extern "C" {
+            #[link_name = "\u{1}_ZN7mozilla12URLExtraData6sDummyE"]
+            pub static mut URLExtraData_sDummy:
+                root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>;
+        }
+        #[test]
+        fn bindgen_test_layout_URLExtraData() {
+            assert_eq!(
+                ::std::mem::size_of::<URLExtraData>(),
+                40usize,
+                concat!("Size of: ", stringify!(URLExtraData))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<URLExtraData>(),
+                8usize,
+                concat!("Alignment of ", stringify!(URLExtraData))
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<URLExtraData>())).mRefCnt as *const _ as usize },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(URLExtraData),
+                    "::",
+                    stringify!(mRefCnt)
+                )
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<URLExtraData>())).mBaseURI as *const _ as usize },
+                8usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(URLExtraData),
+                    "::",
+                    stringify!(mBaseURI)
+                )
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<URLExtraData>())).mReferrer as *const _ as usize },
+                16usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(URLExtraData),
+                    "::",
+                    stringify!(mReferrer)
+                )
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<URLExtraData>())).mPrincipal as *const _ as usize },
+                24usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(URLExtraData),
+                    "::",
+                    stringify!(mPrincipal)
+                )
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<URLExtraData>())).mIsChrome as *const _ as usize },
+                32usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(URLExtraData),
+                    "::",
+                    stringify!(mIsChrome)
+                )
+            );
+        }
+        #[test]
+        fn __bindgen_test_layout_StaticRefPtr_open0_URLExtraData_close0_instantiation() {
+            assert_eq!(
+                ::std::mem::size_of::<root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>>(),
+                8usize,
+                concat!(
+                    "Size of template specialization: ",
+                    stringify!(root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>)
+                )
+            );
+            assert_eq!(
+                ::std::mem::align_of::<root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>>(),
+                8usize,
+                concat!(
+                    "Alignment of template specialization: ",
+                    stringify!(root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>)
+                )
+            );
+        }
+        pub const CSSEnabledState_eForAllContent: root::mozilla::CSSEnabledState = 0;
+        pub const CSSEnabledState_eInUASheets: root::mozilla::CSSEnabledState = 1;
+        pub const CSSEnabledState_eInChrome: root::mozilla::CSSEnabledState = 2;
+        pub const CSSEnabledState_eIgnoreEnabledState: root::mozilla::CSSEnabledState = 255;
+        pub type CSSEnabledState = i32;
+        pub const UseCounter_eUseCounter_UNKNOWN: root::mozilla::UseCounter = -1;
+        pub const UseCounter_eUseCounter_SVGSVGElement_getElementById: root::mozilla::UseCounter =
+            0;
+        pub const UseCounter_eUseCounter_SVGSVGElement_currentScale_getter:
+            root::mozilla::UseCounter = 1;
+        pub const UseCounter_eUseCounter_SVGSVGElement_currentScale_setter:
+            root::mozilla::UseCounter = 2;
+        pub const UseCounter_eUseCounter_property_Fill: root::mozilla::UseCounter = 3;
+        pub const UseCounter_eUseCounter_property_FillOpacity: root::mozilla::UseCounter = 4;
+        pub const UseCounter_eUseCounter_XMLDocument_async_getter: root::mozilla::UseCounter = 5;
+        pub const UseCounter_eUseCounter_XMLDocument_async_setter: root::mozilla::UseCounter = 6;
+        pub const UseCounter_eUseCounter_DOMError_name_getter: root::mozilla::UseCounter = 7;
+        pub const UseCounter_eUseCounter_DOMError_name_setter: root::mozilla::UseCounter = 8;
+        pub const UseCounter_eUseCounter_DOMError_message_getter: root::mozilla::UseCounter = 9;
+        pub const UseCounter_eUseCounter_DOMError_message_setter: root::mozilla::UseCounter = 10;
+        pub const UseCounter_eUseCounter_custom_DOMErrorConstructor: root::mozilla::UseCounter = 11;
+        pub const UseCounter_eUseCounter_PushManager_subscribe: root::mozilla::UseCounter = 12;
+        pub const UseCounter_eUseCounter_PushSubscription_unsubscribe: root::mozilla::UseCounter =
+            13;
+        pub const UseCounter_eUseCounter_Window_sidebar_getter: root::mozilla::UseCounter = 14;
+        pub const UseCounter_eUseCounter_Window_sidebar_setter: root::mozilla::UseCounter = 15;
+        pub const UseCounter_eUseCounter_OfflineResourceList_swapCache: root::mozilla::UseCounter =
+            16;
+        pub const UseCounter_eUseCounter_OfflineResourceList_update: root::mozilla::UseCounter = 17;
+        pub const UseCounter_eUseCounter_OfflineResourceList_status_getter:
+            root::mozilla::UseCounter = 18;
+        pub const UseCounter_eUseCounter_OfflineResourceList_status_setter:
+            root::mozilla::UseCounter = 19;
+        pub const UseCounter_eUseCounter_OfflineResourceList_onchecking_getter:
+            root::mozilla::UseCounter = 20;
+        pub const UseCounter_eUseCounter_OfflineResourceList_onchecking_setter:
+            root::mozilla::UseCounter = 21;
+        pub const UseCounter_eUseCounter_OfflineResourceList_onerror_getter:
+            root::mozilla::UseCounter = 22;
+        pub const UseCounter_eUseCounter_OfflineResourceList_onerror_setter:
+            root::mozilla::UseCounter = 23;
+        pub const UseCounter_eUseCounter_OfflineResourceList_onnoupdate_getter:
+            root::mozilla::UseCounter = 24;
+        pub const UseCounter_eUseCounter_OfflineResourceList_onnoupdate_setter:
+            root::mozilla::UseCounter = 25;
+        pub const UseCounter_eUseCounter_OfflineResourceList_ondownloading_getter:
+            root::mozilla::UseCounter = 26;
+        pub const UseCounter_eUseCounter_OfflineResourceList_ondownloading_setter:
+            root::mozilla::UseCounter = 27;
+        pub const UseCounter_eUseCounter_OfflineResourceList_onprogress_getter:
+            root::mozilla::UseCounter = 28;
+        pub const UseCounter_eUseCounter_OfflineResourceList_onprogress_setter:
+            root::mozilla::UseCounter = 29;
+        pub const UseCounter_eUseCounter_OfflineResourceList_onupdateready_getter:
+            root::mozilla::UseCounter = 30;
+        pub const UseCounter_eUseCounter_OfflineResourceList_onupdateready_setter:
+            root::mozilla::UseCounter = 31;
+        pub const UseCounter_eUseCounter_OfflineResourceList_oncached_getter:
+            root::mozilla::UseCounter = 32;
+        pub const UseCounter_eUseCounter_OfflineResourceList_oncached_setter:
+            root::mozilla::UseCounter = 33;
+        pub const UseCounter_eUseCounter_OfflineResourceList_onobsolete_getter:
+            root::mozilla::UseCounter = 34;
+        pub const UseCounter_eUseCounter_OfflineResourceList_onobsolete_setter:
+            root::mozilla::UseCounter = 35;
+        pub const UseCounter_eUseCounter_IDBDatabase_createMutableFile: root::mozilla::UseCounter =
+            36;
+        pub const UseCounter_eUseCounter_IDBDatabase_mozCreateFileHandle:
+            root::mozilla::UseCounter = 37;
+        pub const UseCounter_eUseCounter_IDBMutableFile_open: root::mozilla::UseCounter = 38;
+        pub const UseCounter_eUseCounter_IDBMutableFile_getFile: root::mozilla::UseCounter = 39;
+        pub const UseCounter_eUseCounter_DataTransfer_addElement: root::mozilla::UseCounter = 40;
+        pub const UseCounter_eUseCounter_DataTransfer_mozItemCount_getter:
+            root::mozilla::UseCounter = 41;
+        pub const UseCounter_eUseCounter_DataTransfer_mozItemCount_setter:
+            root::mozilla::UseCounter = 42;
+        pub const UseCounter_eUseCounter_DataTransfer_mozCursor_getter: root::mozilla::UseCounter =
+            43;
+        pub const UseCounter_eUseCounter_DataTransfer_mozCursor_setter: root::mozilla::UseCounter =
+            44;
+        pub const UseCounter_eUseCounter_DataTransfer_mozTypesAt: root::mozilla::UseCounter = 45;
+        pub const UseCounter_eUseCounter_DataTransfer_mozClearDataAt: root::mozilla::UseCounter =
+            46;
+        pub const UseCounter_eUseCounter_DataTransfer_mozSetDataAt: root::mozilla::UseCounter = 47;
+        pub const UseCounter_eUseCounter_DataTransfer_mozGetDataAt: root::mozilla::UseCounter = 48;
+        pub const UseCounter_eUseCounter_DataTransfer_mozUserCancelled_getter:
+            root::mozilla::UseCounter = 49;
+        pub const UseCounter_eUseCounter_DataTransfer_mozUserCancelled_setter:
+            root::mozilla::UseCounter = 50;
+        pub const UseCounter_eUseCounter_DataTransfer_mozSourceNode_getter:
+            root::mozilla::UseCounter = 51;
+        pub const UseCounter_eUseCounter_DataTransfer_mozSourceNode_setter:
+            root::mozilla::UseCounter = 52;
+        pub const UseCounter_eUseCounter_custom_JS_asmjs: root::mozilla::UseCounter = 53;
+        pub const UseCounter_eUseCounter_custom_JS_wasm: root::mozilla::UseCounter = 54;
+        pub const UseCounter_eUseCounter_console_assert: root::mozilla::UseCounter = 55;
+        pub const UseCounter_eUseCounter_console_clear: root::mozilla::UseCounter = 56;
+        pub const UseCounter_eUseCounter_console_count: root::mozilla::UseCounter = 57;
+        pub const UseCounter_eUseCounter_console_debug: root::mozilla::UseCounter = 58;
+        pub const UseCounter_eUseCounter_console_error: root::mozilla::UseCounter = 59;
+        pub const UseCounter_eUseCounter_console_info: root::mozilla::UseCounter = 60;
+        pub const UseCounter_eUseCounter_console_log: root::mozilla::UseCounter = 61;
+        pub const UseCounter_eUseCounter_console_table: root::mozilla::UseCounter = 62;
+        pub const UseCounter_eUseCounter_console_trace: root::mozilla::UseCounter = 63;
+        pub const UseCounter_eUseCounter_console_warn: root::mozilla::UseCounter = 64;
+        pub const UseCounter_eUseCounter_console_dir: root::mozilla::UseCounter = 65;
+        pub const UseCounter_eUseCounter_console_dirxml: root::mozilla::UseCounter = 66;
+        pub const UseCounter_eUseCounter_console_group: root::mozilla::UseCounter = 67;
+        pub const UseCounter_eUseCounter_console_groupCollapsed: root::mozilla::UseCounter = 68;
+        pub const UseCounter_eUseCounter_console_groupEnd: root::mozilla::UseCounter = 69;
+        pub const UseCounter_eUseCounter_console_time: root::mozilla::UseCounter = 70;
+        pub const UseCounter_eUseCounter_console_timeEnd: root::mozilla::UseCounter = 71;
+        pub const UseCounter_eUseCounter_console_exception: root::mozilla::UseCounter = 72;
+        pub const UseCounter_eUseCounter_console_timeStamp: root::mozilla::UseCounter = 73;
+        pub const UseCounter_eUseCounter_console_profile: root::mozilla::UseCounter = 74;
+        pub const UseCounter_eUseCounter_console_profileEnd: root::mozilla::UseCounter = 75;
+        pub const UseCounter_eUseCounter_EnablePrivilege: root::mozilla::UseCounter = 76;
+        pub const UseCounter_eUseCounter_DOMExceptionCode: root::mozilla::UseCounter = 77;
+        pub const UseCounter_eUseCounter_MutationEvent: root::mozilla::UseCounter = 78;
+        pub const UseCounter_eUseCounter_Components: root::mozilla::UseCounter = 79;
+        pub const UseCounter_eUseCounter_PrefixedVisibilityAPI: root::mozilla::UseCounter = 80;
+        pub const UseCounter_eUseCounter_NodeIteratorDetach: root::mozilla::UseCounter = 81;
+        pub const UseCounter_eUseCounter_LenientThis: root::mozilla::UseCounter = 82;
+        pub const UseCounter_eUseCounter_MozGetAsFile: root::mozilla::UseCounter = 83;
+        pub const UseCounter_eUseCounter_UseOfCaptureEvents: root::mozilla::UseCounter = 84;
+        pub const UseCounter_eUseCounter_UseOfReleaseEvents: root::mozilla::UseCounter = 85;
+        pub const UseCounter_eUseCounter_UseOfDOM3LoadMethod: root::mozilla::UseCounter = 86;
+        pub const UseCounter_eUseCounter_ChromeUseOfDOM3LoadMethod: root::mozilla::UseCounter = 87;
+        pub const UseCounter_eUseCounter_ShowModalDialog: root::mozilla::UseCounter = 88;
+        pub const UseCounter_eUseCounter_SyncXMLHttpRequest: root::mozilla::UseCounter = 89;
+        pub const UseCounter_eUseCounter_Window_Cc_ontrollers: root::mozilla::UseCounter = 90;
+        pub const UseCounter_eUseCounter_ImportXULIntoContent: root::mozilla::UseCounter = 91;
+        pub const UseCounter_eUseCounter_PannerNodeDoppler: root::mozilla::UseCounter = 92;
+        pub const UseCounter_eUseCounter_NavigatorGetUserMedia: root::mozilla::UseCounter = 93;
+        pub const UseCounter_eUseCounter_WebrtcDeprecatedPrefix: root::mozilla::UseCounter = 94;
+        pub const UseCounter_eUseCounter_RTCPeerConnectionGetStreams: root::mozilla::UseCounter =
+            95;
+        pub const UseCounter_eUseCounter_AppCache: root::mozilla::UseCounter = 96;
+        pub const UseCounter_eUseCounter_AppCacheInsecure: root::mozilla::UseCounter = 97;
+        pub const UseCounter_eUseCounter_PrefixedImageSmoothingEnabled: root::mozilla::UseCounter =
+            98;
+        pub const UseCounter_eUseCounter_PrefixedFullscreenAPI: root::mozilla::UseCounter = 99;
+        pub const UseCounter_eUseCounter_LenientSetter: root::mozilla::UseCounter = 100;
+        pub const UseCounter_eUseCounter_FileLastModifiedDate: root::mozilla::UseCounter = 101;
+        pub const UseCounter_eUseCounter_ImageBitmapRenderingContext_TransferImageBitmap:
+            root::mozilla::UseCounter = 102;
+        pub const UseCounter_eUseCounter_URLCreateObjectURL_MediaStream: root::mozilla::UseCounter =
+            103;
+        pub const UseCounter_eUseCounter_XMLBaseAttribute: root::mozilla::UseCounter = 104;
+        pub const UseCounter_eUseCounter_WindowContentUntrusted: root::mozilla::UseCounter = 105;
+        pub const UseCounter_eUseCounter_RegisterProtocolHandlerInsecure:
+            root::mozilla::UseCounter = 106;
+        pub const UseCounter_eUseCounter_MixedDisplayObjectSubrequest: root::mozilla::UseCounter =
+            107;
+        pub const UseCounter_eUseCounter_MotionEvent: root::mozilla::UseCounter = 108;
+        pub const UseCounter_eUseCounter_OrientationEvent: root::mozilla::UseCounter = 109;
+        pub const UseCounter_eUseCounter_ProximityEvent: root::mozilla::UseCounter = 110;
+        pub const UseCounter_eUseCounter_AmbientLightEvent: root::mozilla::UseCounter = 111;
+        pub const UseCounter_eUseCounter_IDBOpenDBOptions_StorageType: root::mozilla::UseCounter =
+            112;
+        pub const UseCounter_eUseCounter_GetPropertyCSSValue: root::mozilla::UseCounter = 113;
+        pub const UseCounter_eUseCounter_Count: root::mozilla::UseCounter = 114;
+        pub type UseCounter = i16;
+        pub const LogLevel_Disabled: root::mozilla::LogLevel = 0;
+        pub const LogLevel_Error: root::mozilla::LogLevel = 1;
+        pub const LogLevel_Warning: root::mozilla::LogLevel = 2;
+        pub const LogLevel_Info: root::mozilla::LogLevel = 3;
+        pub const LogLevel_Debug: root::mozilla::LogLevel = 4;
+        pub const LogLevel_Verbose: root::mozilla::LogLevel = 5;
+        pub type LogLevel = i32;
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct LogModule {
+            pub mName: *mut ::std::os::raw::c_char,
+            pub mLevel: u32,
+        }
+        #[test]
+        fn bindgen_test_layout_LogModule() {
+            assert_eq!(
+                ::std::mem::size_of::<LogModule>(),
+                16usize,
+                concat!("Size of: ", stringify!(LogModule))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<LogModule>(),
+                8usize,
+                concat!("Alignment of ", stringify!(LogModule))
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<LogModule>())).mName as *const _ as usize },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LogModule),
+                    "::",
+                    stringify!(mName)
+                )
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<LogModule>())).mLevel as *const _ as usize },
+                8usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LogModule),
+                    "::",
+                    stringify!(mLevel)
+                )
+            );
+        }
+        /// Helper class that lazy loads the given log module. This is safe to use for
+        /// declaring static references to log modules and can be used as a replacement
+        /// for accessing a LogModule directly.
+        ///
+        /// Example usage:
+        /// static LazyLogModule sLayoutLog("layout");
+        ///
+        /// void Foo() {
+        /// MOZ_LOG(sLayoutLog, LogLevel::Verbose, ("Entering foo"));
+        /// }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct LazyLogModule {
+            pub mLogName: *const ::std::os::raw::c_char,
+            pub mLog: u64,
+        }
+        #[test]
+        fn bindgen_test_layout_LazyLogModule() {
+            assert_eq!(
+                ::std::mem::size_of::<LazyLogModule>(),
+                16usize,
+                concat!("Size of: ", stringify!(LazyLogModule))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<LazyLogModule>(),
+                8usize,
+                concat!("Alignment of ", stringify!(LazyLogModule))
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<LazyLogModule>())).mLogName as *const _ as usize },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LazyLogModule),
+                    "::",
+                    stringify!(mLogName)
+                )
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<LazyLogModule>())).mLog as *const _ as usize },
+                8usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LazyLogModule),
+                    "::",
+                    stringify!(mLog)
+                )
+            );
+        }
+        impl Clone for LazyLogModule {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct Runnable {
+            pub _base: root::nsIRunnable,
+            pub _base_1: root::nsINamed,
+            pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt,
+            pub mName: *const ::std::os::raw::c_char,
+        }
+        pub type Runnable_HasThreadSafeRefCnt = root::mozilla::TrueType;
+        #[test]
+        fn bindgen_test_layout_Runnable() {
+            assert_eq!(
+                ::std::mem::size_of::<Runnable>(),
+                32usize,
+                concat!("Size of: ", stringify!(Runnable))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<Runnable>(),
+                8usize,
+                concat!("Alignment of ", stringify!(Runnable))
+            );
+        }
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct CancelableRunnable {
+            pub _base: root::mozilla::Runnable,
+            pub _base_1: root::nsICancelableRunnable,
+        }
+        #[test]
+        fn bindgen_test_layout_CancelableRunnable() {
+            assert_eq!(
+                ::std::mem::size_of::<CancelableRunnable>(),
+                40usize,
+                concat!("Size of: ", stringify!(CancelableRunnable))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<CancelableRunnable>(),
+                8usize,
+                concat!("Alignment of ", stringify!(CancelableRunnable))
+            );
+        }
+        /// BlockingResourceBase
+        /// Base class of resources that might block clients trying to acquire them.
+        /// Does debugging and deadlock detection in DEBUG builds.
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct BlockingResourceBase {
+            pub _address: u8,
+        }
+        pub const BlockingResourceBase_BlockingResourceType_eMutex:
+            root::mozilla::BlockingResourceBase_BlockingResourceType = 0;
+        pub const BlockingResourceBase_BlockingResourceType_eReentrantMonitor:
+            root::mozilla::BlockingResourceBase_BlockingResourceType = 1;
+        pub const BlockingResourceBase_BlockingResourceType_eCondVar:
+            root::mozilla::BlockingResourceBase_BlockingResourceType = 2;
+        pub const BlockingResourceBase_BlockingResourceType_eRecursiveMutex:
+            root::mozilla::BlockingResourceBase_BlockingResourceType = 3;
+        pub type BlockingResourceBase_BlockingResourceType = u32;
+        extern "C" {
+            #[link_name = "\u{1}_ZN7mozilla20BlockingResourceBase17kResourceTypeNameE"]
+            pub static mut BlockingResourceBase_kResourceTypeName:
+                [*const ::std::os::raw::c_char; 0usize];
+        }
+        #[test]
+        fn bindgen_test_layout_BlockingResourceBase() {
+            assert_eq!(
+                ::std::mem::size_of::<BlockingResourceBase>(),
+                1usize,
+                concat!("Size of: ", stringify!(BlockingResourceBase))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<BlockingResourceBase>(),
+                1usize,
+                concat!("Alignment of ", stringify!(BlockingResourceBase))
+            );
+        }
+        /// OffTheBooksMutex is identical to Mutex, except that OffTheBooksMutex doesn't
+        /// include leak checking.  Sometimes you want to intentionally "leak" a mutex
+        /// until shutdown; in these cases, OffTheBooksMutex is for you.
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct OffTheBooksMutex {
+            pub _base: root::mozilla::detail::MutexImpl,
+        }
+        #[test]
+        fn bindgen_test_layout_OffTheBooksMutex() {
+            assert_eq!(
+                ::std::mem::size_of::<OffTheBooksMutex>(),
+                40usize,
+                concat!("Size of: ", stringify!(OffTheBooksMutex))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<OffTheBooksMutex>(),
+                8usize,
+                concat!("Alignment of ", stringify!(OffTheBooksMutex))
+            );
+        }
+        /// Mutex
+        /// When possible, use MutexAutoLock/MutexAutoUnlock to lock/unlock this
+        /// mutex within a scope, instead of calling Lock/Unlock directly.
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct Mutex {
+            pub _base: root::mozilla::OffTheBooksMutex,
+        }
+        #[test]
+        fn bindgen_test_layout_Mutex() {
+            assert_eq!(
+                ::std::mem::size_of::<Mutex>(),
+                40usize,
+                concat!("Size of: ", stringify!(Mutex))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<Mutex>(),
+                8usize,
+                concat!("Alignment of ", stringify!(Mutex))
+            );
+        }
         pub mod css {
             #[allow(unused_imports)]
             use self::super::super::super::root;
-            #[repr(u8)]
-            /// Enum defining the mode in which a sheet is to be parsed.  This is
-            /// usually, but not always, the same as the cascade level at which the
-            /// sheet will apply (see nsStyleSet.h).  Most of the Loader APIs only
-            /// support loading of author sheets.
-            ///
-            /// Author sheets are the normal case: styles embedded in or linked
-            /// from HTML pages.  They are also the most restricted.
-            ///
-            /// User sheets can do anything author sheets can do, and also get
-            /// access to a few CSS extensions that are not yet suitable for
-            /// exposure on the public Web, but are very useful for expressing
-            /// user style overrides, such as @-moz-document rules.
-            ///
-            /// XXX: eUserSheetFeatures was added in bug 1035091, but some patches in
-            /// that bug never landed to use this enum value. Currently, all the features
-            /// in user sheet are also available in author sheet.
-            ///
-            /// Agent sheets have access to all author- and user-sheet features
-            /// plus more extensions that are necessary for internal use but,
-            /// again, not yet suitable for exposure on the public Web.  Some of
-            /// these are outright unsafe to expose; in particular, incorrect
-            /// styling of anonymous box pseudo-elements can violate layout
-            /// invariants.
-            ///
-            /// Agent sheets that do not use any unsafe rules could use
-            /// eSafeAgentSheetFeatures when creating the sheet. This enum value allows
-            /// Servo backend to recognize the sheets as the agent level, but Gecko
-            /// backend will parse it under _author_ level.
-            #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
-            pub enum SheetParsingMode {
-                eAuthorSheetFeatures = 0,
-                eUserSheetFeatures = 1,
-                eAgentSheetFeatures = 2,
-                eSafeAgentSheetFeatures = 3,
-            }
-            #[repr(C)]
-            #[derive(Debug, Copy)]
-            pub struct GroupRule {
-                _unused: [u8; 0],
-            }
-            impl Clone for GroupRule {
-                fn clone(&self) -> Self {
-                    *self
-                }
-            }
-            #[repr(C)]
-            #[derive(Debug, Copy)]
-            pub struct ImageLoader {
-                _unused: [u8; 0],
-            }
-            impl Clone for ImageLoader {
-                fn clone(&self) -> Self {
-                    *self
-                }
-            }
             #[repr(C)]
             pub struct URLValueData__bindgen_vtable(::std::os::raw::c_void);
             #[repr(C)]
             #[derive(Debug)]
             pub struct URLValueData {
                 pub vtable_: *const URLValueData__bindgen_vtable,
                 pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt,
                 pub mURI: root::nsMainThreadPtrHandle<root::nsIURI>,
@@ -5974,16 +6082,52 @@ pub mod root {
                     concat!(
                         "Offset of field: ",
                         stringify!(ComplexColorValue),
                         "::",
                         stringify!(mRefCnt)
                     )
                 );
             }
+            #[repr(u8)]
+            /// Enum defining the mode in which a sheet is to be parsed.  This is
+            /// usually, but not always, the same as the cascade level at which the
+            /// sheet will apply (see nsStyleSet.h).  Most of the Loader APIs only
+            /// support loading of author sheets.
+            ///
+            /// Author sheets are the normal case: styles embedded in or linked
+            /// from HTML pages.  They are also the most restricted.
+            ///
+            /// User sheets can do anything author sheets can do, and also get
+            /// access to a few CSS extensions that are not yet suitable for
+            /// exposure on the public Web, but are very useful for expressing
+            /// user style overrides, such as @-moz-document rules.
+            ///
+            /// XXX: eUserSheetFeatures was added in bug 1035091, but some patches in
+            /// that bug never landed to use this enum value. Currently, all the features
+            /// in user sheet are also available in author sheet.
+            ///
+            /// Agent sheets have access to all author- and user-sheet features
+            /// plus more extensions that are necessary for internal use but,
+            /// again, not yet suitable for exposure on the public Web.  Some of
+            /// these are outright unsafe to expose; in particular, incorrect
+            /// styling of anonymous box pseudo-elements can violate layout
+            /// invariants.
+            ///
+            /// Agent sheets that do not use any unsafe rules could use
+            /// eSafeAgentSheetFeatures when creating the sheet. This enum value allows
+            /// Servo backend to recognize the sheets as the agent level, but Gecko
+            /// backend will parse it under _author_ level.
+            #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
+            pub enum SheetParsingMode {
+                eAuthorSheetFeatures = 0,
+                eUserSheetFeatures = 1,
+                eAgentSheetFeatures = 2,
+                eSafeAgentSheetFeatures = 3,
+            }
             /// Style sheet reuse *
             #[repr(C)]
             pub struct LoaderReusableStyleSheets {
                 pub mReusableSheets: root::nsTArray<root::RefPtr<root::mozilla::StyleSheet>>,
             }
             #[test]
             fn bindgen_test_layout_LoaderReusableStyleSheets() {
                 assert_eq!(
@@ -6016,17 +6160,16 @@ pub mod root {
                 pub mSheets: root::nsAutoPtr<root::mozilla::css::Loader_Sheets>,
                 pub mPostedEvents: root::mozilla::css::Loader_LoadDataArray,
                 pub mObservers: [u64; 2usize],
                 pub mDocument: *mut root::nsIDocument,
                 pub mDocGroup: root::RefPtr<root::mozilla::dom::DocGroup>,
                 pub mDatasToNotifyOn: u32,
                 pub mCompatMode: root::nsCompatibility,
                 pub mPreferredSheet: ::nsstring::nsStringRepr,
-                pub mStyleBackendType: [u8; 2usize],
                 pub mEnabled: bool,
                 pub mReporter: root::nsCOMPtr,
             }
             pub use self :: super :: super :: super :: root :: mozilla :: net :: ReferrerPolicy as Loader_ReferrerPolicy;
             pub type Loader_HasThreadSafeRefCnt = root::mozilla::FalseType;
             #[repr(C)]
             #[derive(Debug, Copy)]
             pub struct Loader_cycleCollection {
@@ -6218,34 +6361,22 @@ pub mod root {
                     concat!(
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
                         stringify!(mPreferredSheet)
                     )
                 );
                 assert_eq!(
-                    unsafe {
-                        &(*(::std::ptr::null::<Loader>())).mStyleBackendType as *const _ as usize
-                    },
+                    unsafe { &(*(::std::ptr::null::<Loader>())).mEnabled as *const _ as usize },
                     80usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(Loader),
                         "::",
-                        stringify!(mStyleBackendType)
-                    )
-                );
-                assert_eq!(
-                    unsafe { &(*(::std::ptr::null::<Loader>())).mEnabled as *const _ as usize },
-                    82usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(Loader),
-                        "::",
                         stringify!(mEnabled)
                     )
                 );
                 assert_eq!(
                     unsafe { &(*(::std::ptr::null::<Loader>())).mReporter as *const _ as usize },
                     88usize,
                     concat!(
                         "Offset of field: ",
@@ -6253,18 +6384,17 @@ pub mod root {
                         "::",
                         stringify!(mReporter)
                     )
                 );
             }
             #[repr(C)]
             pub struct SheetLoadData {
                 pub _base: root::nsIRunnable,
-                pub _base_1: root::nsIUnicharStreamLoaderObserver,
-                pub _base_2: root::nsIThreadObserver,
+                pub _base_1: root::nsIThreadObserver,
                 pub mRefCnt: root::nsAutoRefCnt,
                 pub mLoader: root::RefPtr<root::mozilla::css::Loader>,
                 pub mTitle: ::nsstring::nsStringRepr,
                 pub mEncoding: *const root::mozilla::Encoding,
                 pub mURI: root::nsCOMPtr,
                 pub mLineNumber: u32,
                 pub mSheet: root::RefPtr<root::mozilla::StyleSheet>,
                 pub mNext: *mut root::mozilla::css::SheetLoadData,
@@ -6277,17 +6407,17 @@ pub mod root {
                 pub mRequestingNode: root::nsCOMPtr,
                 pub mPreloadEncoding: *const root::mozilla::Encoding,
             }
             pub type SheetLoadData_HasThreadSafeRefCnt = root::mozilla::FalseType;
             #[test]
             fn bindgen_test_layout_SheetLoadData() {
                 assert_eq!(
                     ::std::mem::size_of::<SheetLoadData>(),
-                    152usize,
+                    144usize,
                     concat!("Size of: ", stringify!(SheetLoadData))
                 );
                 assert_eq!(
                     ::std::mem::align_of::<SheetLoadData>(),
                     8usize,
                     concat!("Alignment of ", stringify!(SheetLoadData))
                 );
             }
@@ -6492,23 +6622,33 @@ pub mod root {
                     __bindgen_bitfield_unit.set(11usize, 1u8, {
                         let mLoadFailed: u8 = unsafe { ::std::mem::transmute(mLoadFailed) };
                         mLoadFailed as u64
                     });
                     __bindgen_bitfield_unit
                 }
             }
             #[repr(C)]
+            #[derive(Debug, Copy)]
+            pub struct ImageLoader {
+                _unused: [u8; 0],
+            }
+            impl Clone for ImageLoader {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+            #[repr(C)]
             #[derive(Debug)]
             pub struct Rule {
                 pub _base: root::nsISupports,
                 pub _base_1: root::nsWrapperCache,
                 pub mRefCnt: root::nsCycleCollectingAutoRefCnt,
                 pub mSheet: *mut root::mozilla::StyleSheet,
-                pub mParentRule: *mut root::mozilla::css::GroupRule,
+                pub mParentRule: *mut root::mozilla::css::Rule,
                 pub mLineNumber: u32,
                 pub mColumnNumber: u32,
             }
             pub type Rule_HasThreadSafeRefCnt = root::mozilla::FalseType;
             #[repr(C)]
             #[derive(Debug, Copy)]
             pub struct Rule_cycleCollection {
                 pub _base: root::nsXPCOMCycleCollectionParticipant,
@@ -6526,31 +6666,16 @@ pub mod root {
                     concat!("Alignment of ", stringify!(Rule_cycleCollection))
                 );
             }
             impl Clone for Rule_cycleCollection {
                 fn clone(&self) -> Self {
                     *self
                 }
             }
-            pub const Rule_UNKNOWN_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 0;
-            pub const Rule_CHARSET_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 1;
-            pub const Rule_IMPORT_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 2;
-            pub const Rule_NAMESPACE_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 3;
-            pub const Rule_STYLE_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 4;
-            pub const Rule_MEDIA_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 5;
-            pub const Rule_FONT_FACE_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 6;
-            pub const Rule_PAGE_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 7;
-            pub const Rule_KEYFRAME_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 8;
-            pub const Rule_KEYFRAMES_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 9;
-            pub const Rule_DOCUMENT_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 10;
-            pub const Rule_SUPPORTS_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 11;
-            pub const Rule_FONT_FEATURE_VALUES_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 12;
-            pub const Rule_COUNTER_STYLE_RULE: root::mozilla::css::Rule__bindgen_ty_1 = 13;
-            pub type Rule__bindgen_ty_1 = u32;
             extern "C" {
                 #[link_name = "\u{1}_ZN7mozilla3css4Rule21_cycleCollectorGlobalE"]
                 pub static mut Rule__cycleCollectorGlobal: root::mozilla::css::Rule_cycleCollection;
             }
             #[test]
             fn bindgen_test_layout_Rule() {
                 assert_eq!(
                     ::std::mem::size_of::<Rule>(),
@@ -6563,30 +6688,29 @@ pub mod root {
                     concat!("Alignment of ", stringify!(Rule))
                 );
             }
             #[repr(C)]
             pub struct ErrorReporter {
                 pub mError: root::nsAutoString,
                 pub mErrorLine: ::nsstring::nsStringRepr,
                 pub mFileName: ::nsstring::nsStringRepr,
-                pub mScanner: *const root::nsCSSScanner,
                 pub mSheet: *const root::mozilla::StyleSheet,
                 pub mLoader: *const root::mozilla::css::Loader,
                 pub mURI: *mut root::nsIURI,
                 pub mInnerWindowID: u64,
                 pub mErrorLineNumber: u32,
                 pub mPrevErrorLineNumber: u32,
                 pub mErrorColNumber: u32,
             }
             #[test]
             fn bindgen_test_layout_ErrorReporter() {
                 assert_eq!(
                     ::std::mem::size_of::<ErrorReporter>(),
-                    240usize,
+                    232usize,
                     concat!("Size of: ", stringify!(ErrorReporter))
                 );
                 assert_eq!(
                     ::std::mem::align_of::<ErrorReporter>(),
                     8usize,
                     concat!("Alignment of ", stringify!(ErrorReporter))
                 );
                 assert_eq!(
@@ -6622,105 +6746,93 @@ pub mod root {
                         "Offset of field: ",
                         stringify!(ErrorReporter),
                         "::",
                         stringify!(mFileName)
                     )
                 );
                 assert_eq!(
                     unsafe {
-                        &(*(::std::ptr::null::<ErrorReporter>())).mScanner as *const _ as usize
+                        &(*(::std::ptr::null::<ErrorReporter>())).mSheet as *const _ as usize
                     },
                     184usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(ErrorReporter),
                         "::",
-                        stringify!(mScanner)
-                    )
-                );
-                assert_eq!(
-                    unsafe {
-                        &(*(::std::ptr::null::<ErrorReporter>())).mSheet as *const _ as usize
-                    },
-                    192usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(ErrorReporter),
-                        "::",
                         stringify!(mSheet)
                     )
                 );
                 assert_eq!(
                     unsafe {
                         &(*(::std::ptr::null::<ErrorReporter>())).mLoader as *const _ as usize
                     },
-                    200usize,
+                    192usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(ErrorReporter),
                         "::",
                         stringify!(mLoader)
                     )
                 );
                 assert_eq!(
                     unsafe { &(*(::std::ptr::null::<ErrorReporter>())).mURI as *const _ as usize },
-                    208usize,
+                    200usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(ErrorReporter),
                         "::",
                         stringify!(mURI)
                     )
                 );
                 assert_eq!(
                     unsafe {
                         &(*(::std::ptr::null::<ErrorReporter>())).mInnerWindowID as *const _
                             as usize
                     },
-                    216usize,
+                    208usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(ErrorReporter),
                         "::",
                         stringify!(mInnerWindowID)
                     )
                 );
                 assert_eq!(
                     unsafe {
                         &(*(::std::ptr::null::<ErrorReporter>())).mErrorLineNumber as *const _
                             as usize
                     },
-                    224usize,
+                    216usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(ErrorReporter),
                         "::",
                         stringify!(mErrorLineNumber)
                     )
                 );
                 assert_eq!(
                     unsafe {
                         &(*(::std::ptr::null::<ErrorReporter>())).mPrevErrorLineNumber as *const _
                             as usize
                     },
-                    228usize,
+                    220usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(ErrorReporter),
                         "::",
                         stringify!(mPrevErrorLineNumber)
                     )
                 );
                 assert_eq!(
                     unsafe {
                         &(*(::std::ptr::null::<ErrorReporter>())).mErrorColNumber as *const _
                             as usize
                     },
-                    232usize,
+                    224usize,
                     concat!(
                         "Offset of field: ",
                         stringify!(ErrorReporter),
                         "::",
                         stringify!(mErrorColNumber)
                     )
                 );
             }
@@ -6734,217 +6846,16 @@ pub mod root {
                 eDomain = 2,
                 eRegExp = 3,
             }
         }
         pub mod profiler {
             #[allow(unused_imports)]
             use self::super::super::super::root;
         }
-        pub type TimeStampValue = u64;
-        /// Instances of this class represent the length of an interval of time.
-        /// Negative durations are allowed, meaning the end is before the start.
-        ///
-        /// Internally the duration is stored as a int64_t in units of
-        /// PR_TicksPerSecond() when building with NSPR interval timers, or a
-        /// system-dependent unit when building with system clocks.  The
-        /// system-dependent unit must be constant, otherwise the semantics of
-        /// this class would be broken.
-        ///
-        /// The ValueCalculator template parameter determines how arithmetic
-        /// operations are performed on the integer count of ticks (mValue).
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
-        pub struct BaseTimeDuration {
-            pub mValue: i64,
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
-        pub struct BaseTimeDuration__SomethingVeryRandomHere {
-            _unused: [u8; 0],
-        }
-        /// Perform arithmetic operations on the value of a BaseTimeDuration without
-        /// doing strict checks on the range of values.
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct TimeDurationValueCalculator {
-            pub _address: u8,
-        }
-        #[test]
-        fn bindgen_test_layout_TimeDurationValueCalculator() {
-            assert_eq!(
-                ::std::mem::size_of::<TimeDurationValueCalculator>(),
-                1usize,
-                concat!("Size of: ", stringify!(TimeDurationValueCalculator))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<TimeDurationValueCalculator>(),
-                1usize,
-                concat!("Alignment of ", stringify!(TimeDurationValueCalculator))
-            );
-        }
-        impl Clone for TimeDurationValueCalculator {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        /// Specialization of BaseTimeDuration that uses TimeDurationValueCalculator for
-        /// arithmetic on the mValue member.
-        ///
-        /// Use this class for time durations that are *not* expected to hold values of
-        /// Forever (or the negative equivalent) or when such time duration are *not*
-        /// expected to be used in arithmetic operations.
-        pub type TimeDuration = root::mozilla::BaseTimeDuration;
-        /// Instances of this class represent moments in time, or a special
-        /// "null" moment. We do not use the non-monotonic system clock or
-        /// local time, since they can be reset, causing apparent backward
-        /// travel in time, which can confuse algorithms. Instead we measure
-        /// elapsed time according to the system.  This time can never go
-        /// backwards (i.e. it never wraps around, at least not in less than
-        /// five million years of system elapsed time). It might not advance
-        /// while the system is sleeping. If TimeStamp::SetNow() is not called
-        /// at all for hours or days, we might not notice the passage of some
-        /// of that time.
-        ///
-        /// We deliberately do not expose a way to convert TimeStamps to some
-        /// particular unit. All you can do is compute a difference between two
-        /// TimeStamps to get a TimeDuration. You can also add a TimeDuration
-        /// to a TimeStamp to get a new TimeStamp. You can't do something
-        /// meaningless like add two TimeStamps.
-        ///
-        /// Internally this is implemented as either a wrapper around
-        /// - high-resolution, monotonic, system clocks if they exist on this
-        /// platform
-        /// - PRIntervalTime otherwise.  We detect wraparounds of
-        /// PRIntervalTime and work around them.
-        ///
-        /// This class is similar to C++11's time_point, however it is
-        /// explicitly nullable and provides an IsNull() method. time_point
-        /// is initialized to the clock's epoch and provides a
-        /// time_since_epoch() method that functions similiarly. i.e.
-        /// t.IsNull() is equivalent to t.time_since_epoch() == decltype(t)::duration::zero();
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct TimeStamp {
-            /// When built with PRIntervalTime, a value of 0 means this instance
-            /// is "null". Otherwise, the low 32 bits represent a PRIntervalTime,
-            /// and the high 32 bits represent a counter of the number of
-            /// rollovers of PRIntervalTime that we've seen. This counter starts
-            /// at 1 to avoid a real time colliding with the "null" value.
-            ///
-            /// PR_INTERVAL_MAX is set at 100,000 ticks per second. So the minimum
-            /// time to wrap around is about 2^64/100000 seconds, i.e. about
-            /// 5,849,424 years.
-            ///
-            /// When using a system clock, a value is system dependent.
-            pub mValue: root::mozilla::TimeStampValue,
-        }
-        #[test]
-        fn bindgen_test_layout_TimeStamp() {
-            assert_eq!(
-                ::std::mem::size_of::<TimeStamp>(),
-                8usize,
-                concat!("Size of: ", stringify!(TimeStamp))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<TimeStamp>(),
-                8usize,
-                concat!("Alignment of ", stringify!(TimeStamp))
-            );
-            assert_eq!(
-                unsafe { &(*(::std::ptr::null::<TimeStamp>())).mValue as *const _ as usize },
-                0usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(TimeStamp),
-                    "::",
-                    stringify!(mValue)
-                )
-            );
-        }
-        impl Clone for TimeStamp {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct MallocAllocPolicy {
-            pub _address: u8,
-        }
-        #[test]
-        fn bindgen_test_layout_MallocAllocPolicy() {
-            assert_eq!(
-                ::std::mem::size_of::<MallocAllocPolicy>(),
-                1usize,
-                concat!("Size of: ", stringify!(MallocAllocPolicy))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<MallocAllocPolicy>(),
-                1usize,
-                concat!("Alignment of ", stringify!(MallocAllocPolicy))
-            );
-        }
-        impl Clone for MallocAllocPolicy {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        pub type Vector_Impl = u8;
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
-        pub struct Vector_CapacityAndReserved {
-            pub mCapacity: usize,
-        }
-        pub type Vector_ElementType<T> = T;
-        pub const Vector_InlineLength: root::mozilla::Vector__bindgen_ty_1 = 0;
-        pub type Vector__bindgen_ty_1 = i32;
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
-        pub struct Vector_Range<T> {
-            pub mCur: *mut T,
-            pub mEnd: *mut T,
-            pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>,
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
-        pub struct Vector_ConstRange<T> {
-            pub mCur: *mut T,
-            pub mEnd: *mut T,
-            pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>,
-        }
-        pub mod binding_danger {
-            #[allow(unused_imports)]
-            use self::super::super::super::root;
-            #[repr(C)]
-            #[derive(Debug, Copy)]
-            pub struct AssertAndSuppressCleanupPolicy {
-                pub _address: u8,
-            }
-            pub const AssertAndSuppressCleanupPolicy_assertHandled: bool = true;
-            pub const AssertAndSuppressCleanupPolicy_suppress: bool = true;
-            #[test]
-            fn bindgen_test_layout_AssertAndSuppressCleanupPolicy() {
-                assert_eq!(
-                    ::std::mem::size_of::<AssertAndSuppressCleanupPolicy>(),
-                    1usize,
-                    concat!("Size of: ", stringify!(AssertAndSuppressCleanupPolicy))
-                );
-                assert_eq!(
-                    ::std::mem::align_of::<AssertAndSuppressCleanupPolicy>(),
-                    1usize,
-                    concat!("Alignment of ", stringify!(AssertAndSuppressCleanupPolicy))
-                );
-            }
-            impl Clone for AssertAndSuppressCleanupPolicy {
-                fn clone(&self) -> Self {
-                    *self
-                }
-            }
-        }
         pub mod net {
             #[allow(unused_imports)]
             use self::super::super::super::root;
             pub const ReferrerPolicy_RP_No_Referrer: root::mozilla::net::ReferrerPolicy = 2;
             pub const ReferrerPolicy_RP_Origin: root::mozilla::net::ReferrerPolicy = 3;
             pub const ReferrerPolicy_RP_No_Referrer_When_Downgrade:
                 root::mozilla::net::ReferrerPolicy = 1;
             pub const ReferrerPolicy_RP_Origin_When_Crossorigin:
@@ -6952,1549 +6863,16 @@ pub mod root {
             pub const ReferrerPolicy_RP_Unsafe_URL: root::mozilla::net::ReferrerPolicy = 5;
             pub const ReferrerPolicy_RP_Same_Origin: root::mozilla::net::ReferrerPolicy = 6;
             pub const ReferrerPolicy_RP_Strict_Origin: root::mozilla::net::ReferrerPolicy = 7;
             pub const ReferrerPolicy_RP_Strict_Origin_When_Cross_Origin:
                 root::mozilla::net::ReferrerPolicy = 8;
             pub const ReferrerPolicy_RP_Unset: root::mozilla::net::ReferrerPolicy = 0;
             pub type ReferrerPolicy = u32;
         }
-        /// The default of not using CORS to validate cross-origin loads.
-        pub const CORSMode_CORS_NONE: root::mozilla::CORSMode = 0;
-        /// Validate cross-site loads using CORS, but do not send any credentials
-        /// (cookies, HTTP auth logins, etc) along with the request.
-        pub const CORSMode_CORS_ANONYMOUS: root::mozilla::CORSMode = 1;
-        /// Validate cross-site loads using CORS, and send credentials such as cookies
-        /// and HTTP auth logins along with the request.
-        pub const CORSMode_CORS_USE_CREDENTIALS: root::mozilla::CORSMode = 2;
-        pub type CORSMode = u8;
-        /// Superclass for data common to CSSStyleSheet and ServoStyleSheet.
-        #[repr(C)]
-        pub struct StyleSheet {
-            pub _base: root::nsICSSLoaderObserver,
-            pub _base_1: root::nsWrapperCache,
-            pub mRefCnt: root::nsCycleCollectingAutoRefCnt,
-            pub mParent: *mut root::mozilla::StyleSheet,
-            pub mTitle: ::nsstring::nsStringRepr,
-            pub mDocument: *mut root::nsIDocument,
-            pub mOwningNode: *mut root::nsINode,
-            pub mOwnerRule: *mut root::mozilla::dom::CSSImportRule,
-            pub mMedia: root::RefPtr<root::mozilla::dom::MediaList>,
-            pub mNext: root::RefPtr<root::mozilla::StyleSheet>,
-            pub mParsingMode: root::mozilla::css::SheetParsingMode,
-            pub mType: root::mozilla::StyleBackendType,
-            pub mDisabled: bool,
-            pub mDirtyFlags: u8,
-            pub mDocumentAssociationMode: root::mozilla::StyleSheet_DocumentAssociationMode,
-            pub mInner: *mut root::mozilla::StyleSheetInfo,
-            pub mStyleSets: root::nsTArray<root::mozilla::StyleSetHandle>,
-        }
-        pub type StyleSheet_HasThreadSafeRefCnt = root::mozilla::FalseType;
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct StyleSheet_cycleCollection {
-            pub _base: root::nsXPCOMCycleCollectionParticipant,
-        }
-        #[test]
-        fn bindgen_test_layout_StyleSheet_cycleCollection() {
-            assert_eq!(
-                ::std::mem::size_of::<StyleSheet_cycleCollection>(),
-                16usize,
-                concat!("Size of: ", stringify!(StyleSheet_cycleCollection))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<StyleSheet_cycleCollection>(),
-                8usize,
-                concat!("Alignment of ", stringify!(StyleSheet_cycleCollection))
-            );
-        }
-        impl Clone for StyleSheet_cycleCollection {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        pub const StyleSheet_ChangeType_Added: root::mozilla::StyleSheet_ChangeType = 0;
-        pub const StyleSheet_ChangeType_Removed: root::mozilla::StyleSheet_ChangeType = 1;
-        pub const StyleSheet_ChangeType_ApplicableStateChanged:
-            root::mozilla::StyleSheet_ChangeType = 2;
-        pub const StyleSheet_ChangeType_RuleAdded: root::mozilla::StyleSheet_ChangeType = 3;
-        pub const StyleSheet_ChangeType_RuleRemoved: root::mozilla::StyleSheet_ChangeType = 4;
-        pub const StyleSheet_ChangeType_RuleChanged: root::mozilla::StyleSheet_ChangeType = 5;
-        /// The different changes that a stylesheet may go through.
-        ///
-        /// Used by the StyleSets in order to handle more efficiently some kinds of
-        /// changes.
-        pub type StyleSheet_ChangeType = i32;
-        pub const StyleSheet_DocumentAssociationMode_OwnedByDocument:
-            root::mozilla::StyleSheet_DocumentAssociationMode = 0;
-        pub const StyleSheet_DocumentAssociationMode_NotOwnedByDocument:
-            root::mozilla::StyleSheet_DocumentAssociationMode = 1;
-        pub type StyleSheet_DocumentAssociationMode = u8;
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct StyleSheet_ChildSheetListBuilder {
-            pub sheetSlot: *mut root::RefPtr<root::mozilla::StyleSheet>,
-            pub parent: *mut root::mozilla::StyleSheet,
-        }
-        #[test]
-        fn bindgen_test_layout_StyleSheet_ChildSheetListBuilder() {
-            assert_eq!(
-                ::std::mem::size_of::<StyleSheet_ChildSheetListBuilder>(),
-                16usize,
-                concat!("Size of: ", stringify!(StyleSheet_ChildSheetListBuilder))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<StyleSheet_ChildSheetListBuilder>(),
-                8usize,
-                concat!(
-                    "Alignment of ",
-                    stringify!(StyleSheet_ChildSheetListBuilder)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<StyleSheet_ChildSheetListBuilder>())).sheetSlot
-                        as *const _ as usize
-                },
-                0usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(StyleSheet_ChildSheetListBuilder),
-                    "::",
-                    stringify!(sheetSlot)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<StyleSheet_ChildSheetListBuilder>())).parent as *const _
-                        as usize
-                },
-                8usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(StyleSheet_ChildSheetListBuilder),
-                    "::",
-                    stringify!(parent)
-                )
-            );
-        }
-        impl Clone for StyleSheet_ChildSheetListBuilder {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        pub const StyleSheet_dirtyFlagAttributes_FORCED_UNIQUE_INNER:
-            root::mozilla::StyleSheet_dirtyFlagAttributes = 1;
-        pub const StyleSheet_dirtyFlagAttributes_MODIFIED_RULES:
-            root::mozilla::StyleSheet_dirtyFlagAttributes = 2;
-        pub type StyleSheet_dirtyFlagAttributes = u32;
-        extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla10StyleSheet21_cycleCollectorGlobalE"]
-            pub static mut StyleSheet__cycleCollectorGlobal:
-                root::mozilla::StyleSheet_cycleCollection;
-        }
-        #[test]
-        fn bindgen_test_layout_StyleSheet() {
-            assert_eq!(
-                ::std::mem::size_of::<StyleSheet>(),
-                128usize,
-                concat!("Size of: ", stringify!(StyleSheet))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<StyleSheet>(),
-                8usize,
-                concat!("Alignment of ", stringify!(StyleSheet))
-            );
-        }
-        pub const CSSEnabledState_eForAllContent: root::mozilla::CSSEnabledState = 0;
-        pub const CSSEnabledState_eInUASheets: root::mozilla::CSSEnabledState = 1;
-        pub const CSSEnabledState_eInChrome: root::mozilla::CSSEnabledState = 2;
-        pub const CSSEnabledState_eIgnoreEnabledState: root::mozilla::CSSEnabledState = 255;
-        pub type CSSEnabledState = i32;
-        pub type CSSPseudoElementTypeBase = u8;
-        pub const CSSPseudoElementType_InheritingAnonBox: root::mozilla::CSSPseudoElementType =
-            CSSPseudoElementType::Count;
-        #[repr(u8)]
-        #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
-        pub enum CSSPseudoElementType {
-            after = 0,
-            before = 1,
-            backdrop = 2,
-            cue = 3,
-            firstLetter = 4,
-            firstLine = 5,
-            mozSelection = 6,
-            mozFocusInner = 7,
-            mozFocusOuter = 8,
-            mozListBullet = 9,
-            mozListNumber = 10,
-            mozMathAnonymous = 11,
-            mozNumberWrapper = 12,
-            mozNumberText = 13,
-            mozNumberSpinBox = 14,
-            mozNumberSpinUp = 15,
-            mozNumberSpinDown = 16,
-            mozProgressBar = 17,
-            mozRangeTrack = 18,
-            mozRangeProgress = 19,
-            mozRangeThumb = 20,
-            mozMeterBar = 21,
-            mozPlaceholder = 22,
-            placeholder = 23,
-            mozColorSwatch = 24,
-            Count = 25,
-            NonInheritingAnonBox = 26,
-            XULTree = 27,
-            NotPseudo = 28,
-            MAX = 29,
-        }
-        /// Smart pointer class that can hold a pointer to either an nsStyleSet
-        /// or a ServoStyleSet.
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct StyleSetHandle {
-            pub mPtr: root::mozilla::StyleSetHandle_Ptr,
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct StyleSetHandle_Ptr {
-            pub mValue: usize,
-        }
-        #[test]
-        fn bindgen_test_layout_StyleSetHandle_Ptr() {
-            assert_eq!(
-                ::std::mem::size_of::<StyleSetHandle_Ptr>(),
-                8usize,
-                concat!("Size of: ", stringify!(StyleSetHandle_Ptr))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<StyleSetHandle_Ptr>(),
-                8usize,
-                concat!("Alignment of ", stringify!(StyleSetHandle_Ptr))
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<StyleSetHandle_Ptr>())).mValue as *const _ as usize
-                },
-                0usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(StyleSetHandle_Ptr),
-                    "::",
-                    stringify!(mValue)
-                )
-            );
-        }
-        impl Clone for StyleSetHandle_Ptr {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[test]
-        fn bindgen_test_layout_StyleSetHandle() {
-            assert_eq!(
-                ::std::mem::size_of::<StyleSetHandle>(),
-                8usize,
-                concat!("Size of: ", stringify!(StyleSetHandle))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<StyleSetHandle>(),
-                8usize,
-                concat!("Alignment of ", stringify!(StyleSetHandle))
-            );
-            assert_eq!(
-                unsafe { &(*(::std::ptr::null::<StyleSetHandle>())).mPtr as *const _ as usize },
-                0usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(StyleSetHandle),
-                    "::",
-                    stringify!(mPtr)
-                )
-            );
-        }
-        impl Clone for StyleSetHandle {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct SeenPtrs {
-            pub _bindgen_opaque_blob: [u64; 4usize],
-        }
-        #[test]
-        fn bindgen_test_layout_SeenPtrs() {
-            assert_eq!(
-                ::std::mem::size_of::<SeenPtrs>(),
-                32usize,
-                concat!("Size of: ", stringify!(SeenPtrs))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<SeenPtrs>(),
-                8usize,
-                concat!("Alignment of ", stringify!(SeenPtrs))
-            );
-        }
-        impl Clone for SeenPtrs {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct EventListenerManager {
-            _unused: [u8; 0],
-        }
-        impl Clone for EventListenerManager {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        pub mod widget {
-            #[allow(unused_imports)]
-            use self::super::super::super::root;
-            /// Contains IMEStatus plus information about the current
-            /// input context that the IME can use as hints if desired.
-            #[repr(C)]
-            #[derive(Debug, Copy)]
-            pub struct IMEState {
-                pub mEnabled: root::mozilla::widget::IMEState_Enabled,
-                pub mOpen: root::mozilla::widget::IMEState_Open,
-            }
-            /// 'Disabled' means the user cannot use IME. So, the IME open state should
-            /// be 'closed' during 'disabled'.
-            pub const IMEState_Enabled_DISABLED: root::mozilla::widget::IMEState_Enabled = 0;
-            /// 'Enabled' means the user can use IME.
-            pub const IMEState_Enabled_ENABLED: root::mozilla::widget::IMEState_Enabled = 1;
-            /// 'Password' state is a special case for the password editors.
-            /// E.g., on mac, the password editors should disable the non-Roman
-            /// keyboard layouts at getting focus. Thus, the password editor may have
-            /// special rules on some platforms.
-            pub const IMEState_Enabled_PASSWORD: root::mozilla::widget::IMEState_Enabled = 2;
-            /// This state is used when a plugin is focused.
-            /// When a plug-in is focused content, we should send native events
-            /// directly. Because we don't process some native events, but they may
-            /// be needed by the plug-in.
-            pub const IMEState_Enabled_PLUGIN: root::mozilla::widget::IMEState_Enabled = 3;
-            /// 'Unknown' is useful when you cache this enum.  So, this shouldn't be
-            /// used with nsIWidget::SetInputContext().
-            pub const IMEState_Enabled_UNKNOWN: root::mozilla::widget::IMEState_Enabled = 4;
-            /// IME enabled states, the mEnabled value of
-            /// SetInputContext()/GetInputContext() should be one value of following
-            /// values.
-            ///
-            /// WARNING: If you change these values, you also need to edit:
-            /// nsIDOMWindowUtils.idl
-            /// nsContentUtils::GetWidgetStatusFromIMEStatus
-            pub type IMEState_Enabled = u32;
-            /// 'Unsupported' means the platform cannot return actual IME open state.
-            /// This value is used only by GetInputContext().
-            pub const IMEState_Open_OPEN_STATE_NOT_SUPPORTED: root::mozilla::widget::IMEState_Open =
-                0;
-            /// 'Don't change' means the widget shouldn't change IME open state when
-            /// SetInputContext() is called.
-            pub const IMEState_Open_DONT_CHANGE_OPEN_STATE: root::mozilla::widget::IMEState_Open =
-                0;
-            /// 'Open' means that IME should compose in its primary language (or latest
-            /// input mode except direct ASCII character input mode).  Even if IME is
-            /// opened by this value, users should be able to close IME by theirselves.
-            /// Web contents can specify this value by |ime-mode: active;|.
-            pub const IMEState_Open_OPEN: root::mozilla::widget::IMEState_Open = 1;
-            /// 'Closed' means that IME shouldn't handle key events (or should handle
-            /// as ASCII character inputs on mobile device).  Even if IME is closed by
-            /// this value, users should be able to open IME by theirselves.
-            /// Web contents can specify this value by |ime-mode: inactive;|.
-            pub const IMEState_Open_CLOSED: root::mozilla::widget::IMEState_Open = 2;
-            /// IME open states the mOpen value of SetInputContext() should be one value of
-            /// OPEN, CLOSE or DONT_CHANGE_OPEN_STATE.  GetInputContext() should return
-            /// OPEN, CLOSE or OPEN_STATE_NOT_SUPPORTED.
-            pub type IMEState_Open = u32;
-            #[test]
-            fn bindgen_test_layout_IMEState() {
-                assert_eq!(
-                    ::std::mem::size_of::<IMEState>(),
-                    8usize,
-                    concat!("Size of: ", stringify!(IMEState))
-                );
-                assert_eq!(
-                    ::std::mem::align_of::<IMEState>(),
-                    4usize,
-                    concat!("Alignment of ", stringify!(IMEState))
-                );
-                assert_eq!(
-                    unsafe { &(*(::std::ptr::null::<IMEState>())).mEnabled as *const _ as usize },
-                    0usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(IMEState),
-                        "::",
-                        stringify!(mEnabled)
-                    )
-                );
-                assert_eq!(
-                    unsafe { &(*(::std::ptr::null::<IMEState>())).mOpen as *const _ as usize },
-                    4usize,
-                    concat!(
-                        "Offset of field: ",
-                        stringify!(IMEState),
-                        "::",
-                        stringify!(mOpen)
-                    )
-                );
-            }
-            impl Clone for IMEState {
-                fn clone(&self) -> Self {
-                    *self
-                }
-            }
-        }
-        pub mod layout {
-            #[allow(unused_imports)]
-            use self::super::super::super::root;
-            pub const FrameChildListID_kPrincipalList: root::mozilla::layout::FrameChildListID = 1;
-            pub const FrameChildListID_kPopupList: root::mozilla::layout::FrameChildListID = 2;
-            pub const FrameChildListID_kCaptionList: root::mozilla::layout::FrameChildListID = 4;
-            pub const FrameChildListID_kColGroupList: root::mozilla::layout::FrameChildListID = 8;
-            pub const FrameChildListID_kSelectPopupList: root::mozilla::layout::FrameChildListID =
-                16;
-            pub const FrameChildListID_kAbsoluteList: root::mozilla::layout::FrameChildListID = 32;
-            pub const FrameChildListID_kFixedList: root::mozilla::layout::FrameChildListID = 64;
-            pub const FrameChildListID_kOverflowList: root::mozilla::layout::FrameChildListID = 128;
-            pub const FrameChildListID_kOverflowContainersList:
-                root::mozilla::layout::FrameChildListID = 256;
-            pub const FrameChildListID_kExcessOverflowContainersList:
-                root::mozilla::layout::FrameChildListID = 512;
-            pub const FrameChildListID_kOverflowOutOfFlowList:
-                root::mozilla::layout::FrameChildListID = 1024;
-            pub const FrameChildListID_kFloatList: root::mozilla::layout::FrameChildListID = 2048;
-            pub const FrameChildListID_kBulletList: root::mozilla::layout::FrameChildListID = 4096;
-            pub const FrameChildListID_kPushedFloatsList: root::mozilla::layout::FrameChildListID =
-                8192;
-            pub const FrameChildListID_kBackdropList: root::mozilla::layout::FrameChildListID =
-                16384;
-            pub const FrameChildListID_kNoReflowPrincipalList:
-                root::mozilla::layout::FrameChildListID = 32768;
-            pub type FrameChildListID = u32;
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct UndisplayedNode {
-            _unused: [u8; 0],
-        }
-        impl Clone for UndisplayedNode {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct ArenaAllocator_ArenaHeader {
-            /// The location in memory of the data portion of the arena.
-            pub offset: usize,
-            /// The location in memory of the end of the data portion of the arena.
-            pub tail: usize,
-        }
-        impl Clone for ArenaAllocator_ArenaHeader {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug)]
-        pub struct ArenaAllocator_ArenaChunk {
-            pub canary: root::mozilla::CorruptionCanary,
-            pub header: root::mozilla::ArenaAllocator_ArenaHeader,
-            pub next: *mut root::mozilla::ArenaAllocator_ArenaChunk,
-        }
-        pub type CSSSize = [u32; 2usize];
-        pub type LayoutDeviceIntPoint = [u32; 2usize];
-        pub type CSSToLayoutDeviceScale = u32;
-        pub type LayoutDeviceToScreenScale = u32;
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct CSSPixel {
-            pub _address: u8,
-        }
-        #[test]
-        fn bindgen_test_layout_CSSPixel() {
-            assert_eq!(
-                ::std::mem::size_of::<CSSPixel>(),
-                1usize,
-                concat!("Size of: ", stringify!(CSSPixel))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<CSSPixel>(),
-                1usize,
-                concat!("Alignment of ", stringify!(CSSPixel))
-            );
-        }
-        impl Clone for CSSPixel {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct LayoutDevicePixel {
-            pub _address: u8,
-        }
-        #[test]
-        fn bindgen_test_layout_LayoutDevicePixel() {
-            assert_eq!(
-                ::std::mem::size_of::<LayoutDevicePixel>(),
-                1usize,
-                concat!("Size of: ", stringify!(LayoutDevicePixel))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<LayoutDevicePixel>(),
-                1usize,
-                concat!("Alignment of ", stringify!(LayoutDevicePixel))
-            );
-        }
-        impl Clone for LayoutDevicePixel {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct ScreenPixel {
-            pub _address: u8,
-        }
-        #[test]
-        fn bindgen_test_layout_ScreenPixel() {
-            assert_eq!(
-                ::std::mem::size_of::<ScreenPixel>(),
-                1usize,
-                concat!("Size of: ", stringify!(ScreenPixel))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<ScreenPixel>(),
-                1usize,
-                concat!("Alignment of ", stringify!(ScreenPixel))
-            );
-        }
-        impl Clone for ScreenPixel {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        pub mod a11y {
-            #[allow(unused_imports)]
-            use self::super::super::super::root;
-            #[repr(C)]
-            #[derive(Debug, Copy)]
-            pub struct DocAccessible {
-                _unused: [u8; 0],
-            }
-            impl Clone for DocAccessible {
-                fn clone(&self) -> Self {
-                    *self
-                }
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct DOMEventTargetHelper {
-            _unused: [u8; 0],
-        }
-        impl Clone for DOMEventTargetHelper {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        pub const UseCounter_eUseCounter_UNKNOWN: root::mozilla::UseCounter = -1;
-        pub const UseCounter_eUseCounter_SVGSVGElement_getElementById: root::mozilla::UseCounter =
-            0;
-        pub const UseCounter_eUseCounter_SVGSVGElement_currentScale_getter:
-            root::mozilla::UseCounter = 1;
-        pub const UseCounter_eUseCounter_SVGSVGElement_currentScale_setter:
-            root::mozilla::UseCounter = 2;
-        pub const UseCounter_eUseCounter_property_Fill: root::mozilla::UseCounter = 3;
-        pub const UseCounter_eUseCounter_property_FillOpacity: root::mozilla::UseCounter = 4;
-        pub const UseCounter_eUseCounter_XMLDocument_async_getter: root::mozilla::UseCounter = 5;
-        pub const UseCounter_eUseCounter_XMLDocument_async_setter: root::mozilla::UseCounter = 6;
-        pub const UseCounter_eUseCounter_DOMError_name_getter: root::mozilla::UseCounter = 7;
-        pub const UseCounter_eUseCounter_DOMError_name_setter: root::mozilla::UseCounter = 8;
-        pub const UseCounter_eUseCounter_DOMError_message_getter: root::mozilla::UseCounter = 9;
-        pub const UseCounter_eUseCounter_DOMError_message_setter: root::mozilla::UseCounter = 10;
-        pub const UseCounter_eUseCounter_custom_DOMErrorConstructor: root::mozilla::UseCounter = 11;
-        pub const UseCounter_eUseCounter_PushManager_subscribe: root::mozilla::UseCounter = 12;
-        pub const UseCounter_eUseCounter_PushSubscription_unsubscribe: root::mozilla::UseCounter =
-            13;
-        pub const UseCounter_eUseCounter_Window_sidebar_getter: root::mozilla::UseCounter = 14;
-        pub const UseCounter_eUseCounter_Window_sidebar_setter: root::mozilla::UseCounter = 15;
-        pub const UseCounter_eUseCounter_OfflineResourceList_swapCache: root::mozilla::UseCounter =
-            16;
-        pub const UseCounter_eUseCounter_OfflineResourceList_update: root::mozilla::UseCounter = 17;
-        pub const UseCounter_eUseCounter_OfflineResourceList_status_getter:
-            root::mozilla::UseCounter = 18;
-        pub const UseCounter_eUseCounter_OfflineResourceList_status_setter:
-            root::mozilla::UseCounter = 19;
-        pub const UseCounter_eUseCounter_OfflineResourceList_onchecking_getter:
-            root::mozilla::UseCounter = 20;
-        pub const UseCounter_eUseCounter_OfflineResourceList_onchecking_setter:
-            root::mozilla::UseCounter = 21;
-        pub const UseCounter_eUseCounter_OfflineResourceList_onerror_getter:
-            root::mozilla::UseCounter = 22;
-        pub const UseCounter_eUseCounter_OfflineResourceList_onerror_setter:
-            root::mozilla::UseCounter = 23;
-        pub const UseCounter_eUseCounter_OfflineResourceList_onnoupdate_getter:
-            root::mozilla::UseCounter = 24;
-        pub const UseCounter_eUseCounter_OfflineResourceList_onnoupdate_setter:
-            root::mozilla::UseCounter = 25;
-        pub const UseCounter_eUseCounter_OfflineResourceList_ondownloading_getter:
-            root::mozilla::UseCounter = 26;
-        pub const UseCounter_eUseCounter_OfflineResourceList_ondownloading_setter:
-            root::mozilla::UseCounter = 27;
-        pub const UseCounter_eUseCounter_OfflineResourceList_onprogress_getter:
-            root::mozilla::UseCounter = 28;
-        pub const UseCounter_eUseCounter_OfflineResourceList_onprogress_setter:
-            root::mozilla::UseCounter = 29;
-        pub const UseCounter_eUseCounter_OfflineResourceList_onupdateready_getter:
-            root::mozilla::UseCounter = 30;
-        pub const UseCounter_eUseCounter_OfflineResourceList_onupdateready_setter:
-            root::mozilla::UseCounter = 31;
-        pub const UseCounter_eUseCounter_OfflineResourceList_oncached_getter:
-            root::mozilla::UseCounter = 32;
-        pub const UseCounter_eUseCounter_OfflineResourceList_oncached_setter:
-            root::mozilla::UseCounter = 33;
-        pub const UseCounter_eUseCounter_OfflineResourceList_onobsolete_getter:
-            root::mozilla::UseCounter = 34;
-        pub const UseCounter_eUseCounter_OfflineResourceList_onobsolete_setter:
-            root::mozilla::UseCounter = 35;
-        pub const UseCounter_eUseCounter_IDBDatabase_createMutableFile: root::mozilla::UseCounter =
-            36;
-        pub const UseCounter_eUseCounter_IDBDatabase_mozCreateFileHandle:
-            root::mozilla::UseCounter = 37;
-        pub const UseCounter_eUseCounter_IDBMutableFile_open: root::mozilla::UseCounter = 38;
-        pub const UseCounter_eUseCounter_IDBMutableFile_getFile: root::mozilla::UseCounter = 39;
-        pub const UseCounter_eUseCounter_DataTransfer_addElement: root::mozilla::UseCounter = 40;
-        pub const UseCounter_eUseCounter_DataTransfer_mozItemCount_getter:
-            root::mozilla::UseCounter = 41;
-        pub const UseCounter_eUseCounter_DataTransfer_mozItemCount_setter:
-            root::mozilla::UseCounter = 42;
-        pub const UseCounter_eUseCounter_DataTransfer_mozCursor_getter: root::mozilla::UseCounter =
-            43;
-        pub const UseCounter_eUseCounter_DataTransfer_mozCursor_setter: root::mozilla::UseCounter =
-            44;
-        pub const UseCounter_eUseCounter_DataTransfer_mozTypesAt: root::mozilla::UseCounter = 45;
-        pub const UseCounter_eUseCounter_DataTransfer_mozClearDataAt: root::mozilla::UseCounter =
-            46;
-        pub const UseCounter_eUseCounter_DataTransfer_mozSetDataAt: root::mozilla::UseCounter = 47;
-        pub const UseCounter_eUseCounter_DataTransfer_mozGetDataAt: root::mozilla::UseCounter = 48;
-        pub const UseCounter_eUseCounter_DataTransfer_mozUserCancelled_getter:
-            root::mozilla::UseCounter = 49;
-        pub const UseCounter_eUseCounter_DataTransfer_mozUserCancelled_setter:
-            root::mozilla::UseCounter = 50;
-        pub const UseCounter_eUseCounter_DataTransfer_mozSourceNode_getter:
-            root::mozilla::UseCounter = 51;
-        pub const UseCounter_eUseCounter_DataTransfer_mozSourceNode_setter:
-            root::mozilla::UseCounter = 52;
-        pub const UseCounter_eUseCounter_custom_JS_asmjs: root::mozilla::UseCounter = 53;
-        pub const UseCounter_eUseCounter_custom_JS_wasm: root::mozilla::UseCounter = 54;
-        pub const UseCounter_eUseCounter_console_assert: root::mozilla::UseCounter = 55;
-        pub const UseCounter_eUseCounter_console_clear: root::mozilla::UseCounter = 56;
-        pub const UseCounter_eUseCounter_console_count: root::mozilla::UseCounter = 57;
-        pub const UseCounter_eUseCounter_console_debug: root::mozilla::UseCounter = 58;
-        pub const UseCounter_eUseCounter_console_error: root::mozilla::UseCounter = 59;
-        pub const UseCounter_eUseCounter_console_info: root::mozilla::UseCounter = 60;
-        pub const UseCounter_eUseCounter_console_log: root::mozilla::UseCounter = 61;
-        pub const UseCounter_eUseCounter_console_table: root::mozilla::UseCounter = 62;
-        pub const UseCounter_eUseCounter_console_trace: root::mozilla::UseCounter = 63;
-        pub const UseCounter_eUseCounter_console_warn: root::mozilla::UseCounter = 64;
-        pub const UseCounter_eUseCounter_console_dir: root::mozilla::UseCounter = 65;
-        pub const UseCounter_eUseCounter_console_dirxml: root::mozilla::UseCounter = 66;
-        pub const UseCounter_eUseCounter_console_group: root::mozilla::UseCounter = 67;
-        pub const UseCounter_eUseCounter_console_groupCollapsed: root::mozilla::UseCounter = 68;
-        pub const UseCounter_eUseCounter_console_groupEnd: root::mozilla::UseCounter = 69;
-        pub const UseCounter_eUseCounter_console_time: root::mozilla::UseCounter = 70;
-        pub const UseCounter_eUseCounter_console_timeEnd: root::mozilla::UseCounter = 71;
-        pub const UseCounter_eUseCounter_console_exception: root::mozilla::UseCounter = 72;
-        pub const UseCounter_eUseCounter_console_timeStamp: root::mozilla::UseCounter = 73;
-        pub const UseCounter_eUseCounter_console_profile: root::mozilla::UseCounter = 74;
-        pub const UseCounter_eUseCounter_console_profileEnd: root::mozilla::UseCounter = 75;
-        pub const UseCounter_eUseCounter_EnablePrivilege: root::mozilla::UseCounter = 76;
-        pub const UseCounter_eUseCounter_DOMExceptionCode: root::mozilla::UseCounter = 77;
-        pub const UseCounter_eUseCounter_MutationEvent: root::mozilla::UseCounter = 78;
-        pub const UseCounter_eUseCounter_Components: root::mozilla::UseCounter = 79;
-        pub const UseCounter_eUseCounter_PrefixedVisibilityAPI: root::mozilla::UseCounter = 80;
-        pub const UseCounter_eUseCounter_NodeIteratorDetach: root::mozilla::UseCounter = 81;
-        pub const UseCounter_eUseCounter_LenientThis: root::mozilla::UseCounter = 82;
-        pub const UseCounter_eUseCounter_MozGetAsFile: root::mozilla::UseCounter = 83;
-        pub const UseCounter_eUseCounter_UseOfCaptureEvents: root::mozilla::UseCounter = 84;
-        pub const UseCounter_eUseCounter_UseOfReleaseEvents: root::mozilla::UseCounter = 85;
-        pub const UseCounter_eUseCounter_UseOfDOM3LoadMethod: root::mozilla::UseCounter = 86;
-        pub const UseCounter_eUseCounter_ChromeUseOfDOM3LoadMethod: root::mozilla::UseCounter = 87;
-        pub const UseCounter_eUseCounter_ShowModalDialog: root::mozilla::UseCounter = 88;
-        pub const UseCounter_eUseCounter_SyncXMLHttpRequest: root::mozilla::UseCounter = 89;
-        pub const UseCounter_eUseCounter_Window_Cc_ontrollers: root::mozilla::UseCounter = 90;
-        pub const UseCounter_eUseCounter_ImportXULIntoContent: root::mozilla::UseCounter = 91;
-        pub const UseCounter_eUseCounter_PannerNodeDoppler: root::mozilla::UseCounter = 92;
-        pub const UseCounter_eUseCounter_NavigatorGetUserMedia: root::mozilla::UseCounter = 93;
-        pub const UseCounter_eUseCounter_WebrtcDeprecatedPrefix: root::mozilla::UseCounter = 94;
-        pub const UseCounter_eUseCounter_RTCPeerConnectionGetStreams: root::mozilla::UseCounter =
-            95;
-        pub const UseCounter_eUseCounter_AppCache: root::mozilla::UseCounter = 96;
-        pub const UseCounter_eUseCounter_AppCacheInsecure: root::mozilla::UseCounter = 97;
-        pub const UseCounter_eUseCounter_PrefixedImageSmoothingEnabled: root::mozilla::UseCounter =
-            98;
-        pub const UseCounter_eUseCounter_PrefixedFullscreenAPI: root::mozilla::UseCounter = 99;
-        pub const UseCounter_eUseCounter_LenientSetter: root::mozilla::UseCounter = 100;
-        pub const UseCounter_eUseCounter_FileLastModifiedDate: root::mozilla::UseCounter = 101;
-        pub const UseCounter_eUseCounter_ImageBitmapRenderingContext_TransferImageBitmap:
-            root::mozilla::UseCounter = 102;
-        pub const UseCounter_eUseCounter_URLCreateObjectURL_MediaStream: root::mozilla::UseCounter =
-            103;
-        pub const UseCounter_eUseCounter_XMLBaseAttribute: root::mozilla::UseCounter = 104;
-        pub const UseCounter_eUseCounter_WindowContentUntrusted: root::mozilla::UseCounter = 105;
-        pub const UseCounter_eUseCounter_RegisterProtocolHandlerInsecure:
-            root::mozilla::UseCounter = 106;
-        pub const UseCounter_eUseCounter_MixedDisplayObjectSubrequest: root::mozilla::UseCounter =
-            107;
-        pub const UseCounter_eUseCounter_MotionEvent: root::mozilla::UseCounter = 108;
-        pub const UseCounter_eUseCounter_OrientationEvent: root::mozilla::UseCounter = 109;
-        pub const UseCounter_eUseCounter_ProximityEvent: root::mozilla::UseCounter = 110;
-        pub const UseCounter_eUseCounter_AmbientLightEvent: root::mozilla::UseCounter = 111;
-        pub const UseCounter_eUseCounter_IDBOpenDBOptions_StorageType: root::mozilla::UseCounter =
-            112;
-        pub const UseCounter_eUseCounter_GetPropertyCSSValue: root::mozilla::UseCounter = 113;
-        pub const UseCounter_eUseCounter_Count: root::mozilla::UseCounter = 114;
-        pub type UseCounter = i16;
-        pub const LogLevel_Disabled: root::mozilla::LogLevel = 0;
-        pub const LogLevel_Error: root::mozilla::LogLevel = 1;
-        pub const LogLevel_Warning: root::mozilla::LogLevel = 2;
-        pub const LogLevel_Info: root::mozilla::LogLevel = 3;
-        pub const LogLevel_Debug: root::mozilla::LogLevel = 4;
-        pub const LogLevel_Verbose: root::mozilla::LogLevel = 5;
-        pub type LogLevel = i32;
-        #[repr(C)]
-        #[derive(Debug)]
-        pub struct LogModule {
-            pub mName: *mut ::std::os::raw::c_char,
-            pub mLevel: u32,
-        }
-        #[test]
-        fn bindgen_test_layout_LogModule() {
-            assert_eq!(
-                ::std::mem::size_of::<LogModule>(),
-                16usize,
-                concat!("Size of: ", stringify!(LogModule))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<LogModule>(),
-                8usize,
-                concat!("Alignment of ", stringify!(LogModule))
-            );
-            assert_eq!(
-                unsafe { &(*(::std::ptr::null::<LogModule>())).mName as *const _ as usize },
-                0usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LogModule),
-                    "::",
-                    stringify!(mName)
-                )
-            );
-            assert_eq!(
-                unsafe { &(*(::std::ptr::null::<LogModule>())).mLevel as *const _ as usize },
-                8usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LogModule),
-                    "::",
-                    stringify!(mLevel)
-                )
-            );
-        }
-        /// Helper class that lazy loads the given log module. This is safe to use for
-        /// declaring static references to log modules and can be used as a replacement
-        /// for accessing a LogModule directly.
-        ///
-        /// Example usage:
-        /// static LazyLogModule sLayoutLog("layout");
-        ///
-        /// void Foo() {
-        /// MOZ_LOG(sLayoutLog, LogLevel::Verbose, ("Entering foo"));
-        /// }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct LazyLogModule {
-            pub mLogName: *const ::std::os::raw::c_char,
-            pub mLog: u64,
-        }
-        #[test]
-        fn bindgen_test_layout_LazyLogModule() {
-            assert_eq!(
-                ::std::mem::size_of::<LazyLogModule>(),
-                16usize,
-                concat!("Size of: ", stringify!(LazyLogModule))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<LazyLogModule>(),
-                8usize,
-                concat!("Alignment of ", stringify!(LazyLogModule))
-            );
-            assert_eq!(
-                unsafe { &(*(::std::ptr::null::<LazyLogModule>())).mLogName as *const _ as usize },
-                0usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LazyLogModule),
-                    "::",
-                    stringify!(mLogName)
-                )
-            );
-            assert_eq!(
-                unsafe { &(*(::std::ptr::null::<LazyLogModule>())).mLog as *const _ as usize },
-                8usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LazyLogModule),
-                    "::",
-                    stringify!(mLog)
-                )
-            );
-        }
-        impl Clone for LazyLogModule {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug)]
-        pub struct Runnable {
-            pub _base: root::nsIRunnable,
-            pub _base_1: root::nsINamed,
-            pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt,
-            pub mName: *const ::std::os::raw::c_char,
-        }
-        pub type Runnable_HasThreadSafeRefCnt = root::mozilla::TrueType;
-        #[test]
-        fn bindgen_test_layout_Runnable() {
-            assert_eq!(
-                ::std::mem::size_of::<Runnable>(),
-                32usize,
-                concat!("Size of: ", stringify!(Runnable))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<Runnable>(),
-                8usize,
-                concat!("Alignment of ", stringify!(Runnable))
-            );
-        }
-        #[repr(C)]
-        #[derive(Debug)]
-        pub struct CancelableRunnable {
-            pub _base: root::mozilla::Runnable,
-            pub _base_1: root::nsICancelableRunnable,
-        }
-        #[test]
-        fn bindgen_test_layout_CancelableRunnable() {
-            assert_eq!(
-                ::std::mem::size_of::<CancelableRunnable>(),
-                40usize,
-                concat!("Size of: ", stringify!(CancelableRunnable))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<CancelableRunnable>(),
-                8usize,
-                concat!("Alignment of ", stringify!(CancelableRunnable))
-            );
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
-        pub struct SegmentedVector_SegmentImpl_Storage {
-            pub mBuf: root::__BindgenUnionField<*mut ::std::os::raw::c_char>,
-            pub mAlign: root::__BindgenUnionField<u8>,
-            pub bindgen_union_field: u64,
-        }
-        pub type SegmentedVector_Segment = u8;
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone)]
-        pub struct SegmentedVector_IterImpl {
-            pub mSegment: *mut root::mozilla::SegmentedVector_Segment,
-            pub mIndex: usize,
-        }
-        pub type ComputedKeyframeValues =
-            root::nsTArray<root::mozilla::PropertyStyleAnimationValuePair>;
-        #[test]
-        fn __bindgen_test_layout_DefaultDelete_open0_RawServoStyleSet_close0_instantiation() {
-            assert_eq!(
-                ::std::mem::size_of::<root::mozilla::DefaultDelete>(),
-                1usize,
-                concat!(
-                    "Size of template specialization: ",
-                    stringify!(root::mozilla::DefaultDelete)
-                )
-            );
-            assert_eq!(
-                ::std::mem::align_of::<root::mozilla::DefaultDelete>(),
-                1usize,
-                concat!(
-                    "Alignment of template specialization: ",
-                    stringify!(root::mozilla::DefaultDelete)
-                )
-            );
-        }
-        #[test]
-        fn __bindgen_test_layout_DefaultDelete_open0_RawServoAuthorStyles_close0_instantiation() {
-            assert_eq!(
-                ::std::mem::size_of::<root::mozilla::DefaultDelete>(),
-                1usize,
-                concat!(
-                    "Size of template specialization: ",
-                    stringify!(root::mozilla::DefaultDelete)
-                )
-            );
-            assert_eq!(
-                ::std::mem::align_of::<root::mozilla::DefaultDelete>(),
-                1usize,
-                concat!(
-                    "Alignment of template specialization: ",
-                    stringify!(root::mozilla::DefaultDelete)
-                )
-            );
-        }
-        #[test]
-        fn __bindgen_test_layout_DefaultDelete_open0_RawServoSelectorList_close0_instantiation() {
-            assert_eq!(
-                ::std::mem::size_of::<root::mozilla::DefaultDelete>(),
-                1usize,
-                concat!(
-                    "Size of template specialization: ",
-                    stringify!(root::mozilla::DefaultDelete)
-                )
-            );
-            assert_eq!(
-                ::std::mem::align_of::<root::mozilla::DefaultDelete>(),
-                1usize,
-                concat!(
-                    "Alignment of template specialization: ",
-                    stringify!(root::mozilla::DefaultDelete)
-                )
-            );
-        }
-        #[test]
-        fn __bindgen_test_layout_DefaultDelete_open0_RawServoSourceSizeList_close0_instantiation() {
-            assert_eq!(
-                ::std::mem::size_of::<root::mozilla::DefaultDelete>(),
-                1usize,
-                concat!(
-                    "Size of template specialization: ",
-                    stringify!(root::mozilla::DefaultDelete)
-                )
-            );
-            assert_eq!(
-                ::std::mem::align_of::<root::mozilla::DefaultDelete>(),
-                1usize,
-                concat!(
-                    "Alignment of template specialization: ",
-                    stringify!(root::mozilla::DefaultDelete)
-                )
-            );
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct PendingAnimationTracker {
-            _unused: [u8; 0],
-        }
-        impl Clone for PendingAnimationTracker {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug)]
-        pub struct ScrollbarStyles {
-            pub mHorizontal: u8,
-            pub mVertical: u8,
-            pub mScrollBehavior: u8,
-            pub mOverscrollBehaviorX: root::mozilla::StyleOverscrollBehavior,
-            pub mOverscrollBehaviorY: root::mozilla::StyleOverscrollBehavior,
-            pub mScrollSnapTypeX: u8,
-            pub mScrollSnapTypeY: u8,
-            pub mScrollSnapPointsX: root::nsStyleCoord,
-            pub mScrollSnapPointsY: root::nsStyleCoord,
-            pub mScrollSnapDestinationX: root::nsStyleCoord_CalcValue,
-            pub mScrollSnapDestinationY: root::nsStyleCoord_CalcValue,
-        }
-        #[test]
-        fn bindgen_test_layout_ScrollbarStyles() {
-            assert_eq!(
-                ::std::mem::size_of::<ScrollbarStyles>(),
-                64usize,
-                concat!("Size of: ", stringify!(ScrollbarStyles))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<ScrollbarStyles>(),
-                8usize,
-                concat!("Alignment of ", stringify!(ScrollbarStyles))
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<ScrollbarStyles>())).mHorizontal as *const _ as usize
-                },
-                0usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(ScrollbarStyles),
-                    "::",
-                    stringify!(mHorizontal)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<ScrollbarStyles>())).mVertical as *const _ as usize
-                },
-                1usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(ScrollbarStyles),
-                    "::",
-                    stringify!(mVertical)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollBehavior as *const _ as usize
-                },
-                2usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(ScrollbarStyles),
-                    "::",
-                    stringify!(mScrollBehavior)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<ScrollbarStyles>())).mOverscrollBehaviorX as *const _
-                        as usize
-                },
-                3usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(ScrollbarStyles),
-                    "::",
-                    stringify!(mOverscrollBehaviorX)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<ScrollbarStyles>())).mOverscrollBehaviorY as *const _
-                        as usize
-                },
-                4usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(ScrollbarStyles),
-                    "::",
-                    stringify!(mOverscrollBehaviorY)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapTypeX as *const _
-                        as usize
-                },
-                5usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(ScrollbarStyles),
-                    "::",
-                    stringify!(mScrollSnapTypeX)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapTypeY as *const _
-                        as usize
-                },
-                6usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(ScrollbarStyles),
-                    "::",
-                    stringify!(mScrollSnapTypeY)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapPointsX as *const _
-                        as usize
-                },
-                8usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(ScrollbarStyles),
-                    "::",
-                    stringify!(mScrollSnapPointsX)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapPointsY as *const _
-                        as usize
-                },
-                24usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(ScrollbarStyles),
-                    "::",
-                    stringify!(mScrollSnapPointsY)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapDestinationX as *const _
-                        as usize
-                },
-                40usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(ScrollbarStyles),
-                    "::",
-                    stringify!(mScrollSnapDestinationX)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapDestinationY as *const _
-                        as usize
-                },
-                52usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(ScrollbarStyles),
-                    "::",
-                    stringify!(mScrollSnapDestinationY)
-                )
-            );
-        }
-        #[repr(C)]
-        pub struct LangGroupFontPrefs {
-            pub mLangGroup: root::RefPtr<root::nsAtom>,
-            pub mMinimumFontSize: root::nscoord,
-            pub mDefaultVariableFont: root::nsFont,
-            pub mDefaultFixedFont: root::nsFont,
-            pub mDefaultSerifFont: root::nsFont,
-            pub mDefaultSansSerifFont: root::nsFont,
-            pub mDefaultMonospaceFont: root::nsFont,
-            pub mDefaultCursiveFont: root::nsFont,
-            pub mDefaultFantasyFont: root::nsFont,
-            pub mNext: root::nsAutoPtr<root::mozilla::LangGroupFontPrefs>,
-        }
-        #[test]
-        fn bindgen_test_layout_LangGroupFontPrefs() {
-            assert_eq!(
-                ::std::mem::size_of::<LangGroupFontPrefs>(),
-                696usize,
-                concat!("Size of: ", stringify!(LangGroupFontPrefs))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<LangGroupFontPrefs>(),
-                8usize,
-                concat!("Alignment of ", stringify!(LangGroupFontPrefs))
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mLangGroup as *const _ as usize
-                },
-                0usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LangGroupFontPrefs),
-                    "::",
-                    stringify!(mLangGroup)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mMinimumFontSize as *const _
-                        as usize
-                },
-                8usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LangGroupFontPrefs),
-                    "::",
-                    stringify!(mMinimumFontSize)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultVariableFont as *const _
-                        as usize
-                },
-                16usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LangGroupFontPrefs),
-                    "::",
-                    stringify!(mDefaultVariableFont)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultFixedFont as *const _
-                        as usize
-                },
-                112usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LangGroupFontPrefs),
-                    "::",
-                    stringify!(mDefaultFixedFont)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultSerifFont as *const _
-                        as usize
-                },
-                208usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LangGroupFontPrefs),
-                    "::",
-                    stringify!(mDefaultSerifFont)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultSansSerifFont as *const _
-                        as usize
-                },
-                304usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LangGroupFontPrefs),
-                    "::",
-                    stringify!(mDefaultSansSerifFont)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultMonospaceFont as *const _
-                        as usize
-                },
-                400usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LangGroupFontPrefs),
-                    "::",
-                    stringify!(mDefaultMonospaceFont)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultCursiveFont as *const _
-                        as usize
-                },
-                496usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LangGroupFontPrefs),
-                    "::",
-                    stringify!(mDefaultCursiveFont)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultFantasyFont as *const _
-                        as usize
-                },
-                592usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LangGroupFontPrefs),
-                    "::",
-                    stringify!(mDefaultFantasyFont)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mNext as *const _ as usize
-                },
-                688usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(LangGroupFontPrefs),
-                    "::",
-                    stringify!(mNext)
-                )
-            );
-        }
-        /// Some functionality that has historically lived on nsPresContext does not
-        /// actually need to be per-document. This singleton class serves as a host
-        /// for that functionality. We delegate to it from nsPresContext where
-        /// appropriate, and use it standalone in some cases as well.
-        #[repr(C)]
-        pub struct StaticPresData {
-            pub mLangService: *mut root::nsLanguageAtomService,
-            pub mBorderWidthTable: [root::nscoord; 3usize],
-            pub mStaticLangGroupFontPrefs: root::mozilla::LangGroupFontPrefs,
-        }
-        #[test]
-        fn bindgen_test_layout_StaticPresData() {
-            assert_eq!(
-                ::std::mem::size_of::<StaticPresData>(),
-                720usize,
-                concat!("Size of: ", stringify!(StaticPresData))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<StaticPresData>(),
-                8usize,
-                concat!("Alignment of ", stringify!(StaticPresData))
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<StaticPresData>())).mLangService as *const _ as usize
-                },
-                0usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(StaticPresData),
-                    "::",
-                    stringify!(mLangService)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<StaticPresData>())).mBorderWidthTable as *const _
-                        as usize
-                },
-                8usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(StaticPresData),
-                    "::",
-                    stringify!(mBorderWidthTable)
-                )
-            );
-            assert_eq!(
-                unsafe {
-                    &(*(::std::ptr::null::<StaticPresData>())).mStaticLangGroupFontPrefs as *const _
-                        as usize
-                },
-                24usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(StaticPresData),
-                    "::",
-                    stringify!(mStaticLangGroupFontPrefs)
-                )
-            );
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct AnimationEventDispatcher {
-            _unused: [u8; 0],
-        }
-        impl Clone for AnimationEventDispatcher {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct EventStateManager {
-            _unused: [u8; 0],
-        }
-        impl Clone for EventStateManager {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy)]
-        pub struct RestyleManager {
-            _unused: [u8; 0],
-        }
-        impl Clone for RestyleManager {
-            fn clone(&self) -> Self {
-                *self
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug)]
-        pub struct URLExtraData {
-            pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt,
-            pub mBaseURI: root::nsCOMPtr,
-            pub mReferrer: root::nsCOMPtr,
-            pub mPrincipal: root::nsCOMPtr,
-            pub mIsChrome: bool,
-        }
-        pub type URLExtraData_HasThreadSafeRefCnt = root::mozilla::TrueType;
-        extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla12URLExtraData6sDummyE"]
-            pub static mut URLExtraData_sDummy:
-                root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>;
-        }
-        #[test]
-        fn bindgen_test_layout_URLExtraData() {
-            assert_eq!(
-                ::std::mem::size_of::<URLExtraData>(),
-                40usize,
-                concat!("Size of: ", stringify!(URLExtraData))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<URLExtraData>(),
-                8usize,
-                concat!("Alignment of ", stringify!(URLExtraData))
-            );
-            assert_eq!(
-                unsafe { &(*(::std::ptr::null::<URLExtraData>())).mRefCnt as *const _ as usize },
-                0usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(URLExtraData),
-                    "::",
-                    stringify!(mRefCnt)
-                )
-            );
-            assert_eq!(
-                unsafe { &(*(::std::ptr::null::<URLExtraData>())).mBaseURI as *const _ as usize },
-                8usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(URLExtraData),
-                    "::",
-                    stringify!(mBaseURI)
-                )
-            );
-            assert_eq!(
-                unsafe { &(*(::std::ptr::null::<URLExtraData>())).mReferrer as *const _ as usize },
-                16usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(URLExtraData),
-                    "::",
-                    stringify!(mReferrer)
-                )
-            );
-            assert_eq!(
-                unsafe { &(*(::std::ptr::null::<URLExtraData>())).mPrincipal as *const _ as usize },
-                24usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(URLExtraData),
-                    "::",
-                    stringify!(mPrincipal)
-                )
-            );
-            assert_eq!(
-                unsafe { &(*(::std::ptr::null::<URLExtraData>())).mIsChrome as *const _ as usize },
-                32usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(URLExtraData),
-                    "::",
-                    stringify!(mIsChrome)
-                )
-            );
-        }
-        #[test]
-        fn __bindgen_test_layout_StaticRefPtr_open0_URLExtraData_close0_instantiation() {
-            assert_eq!(
-                ::std::mem::size_of::<root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>>(),
-                8usize,
-                concat!(
-                    "Size of template specialization: ",
-                    stringify!(root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>)
-                )
-            );
-            assert_eq!(
-                ::std::mem::align_of::<root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>>(),
-                8usize,
-                concat!(
-                    "Alignment of template specialization: ",
-                    stringify!(root::mozilla::StaticRefPtr<root::mozilla::URLExtraData>)
-                )
-            );
-        }
-        /// BlockingResourceBase
-        /// Base class of resources that might block clients trying to acquire them.
-        /// Does debugging and deadlock detection in DEBUG builds.
-        #[repr(C)]
-        #[derive(Debug)]
-        pub struct BlockingResourceBase {
-            pub _address: u8,
-        }
-        pub const BlockingResourceBase_BlockingResourceType_eMutex:
-            root::mozilla::BlockingResourceBase_BlockingResourceType = 0;
-        pub const BlockingResourceBase_BlockingResourceType_eReentrantMonitor:
-            root::mozilla::BlockingResourceBase_BlockingResourceType = 1;
-        pub const BlockingResourceBase_BlockingResourceType_eCondVar:
-            root::mozilla::BlockingResourceBase_BlockingResourceType = 2;
-        pub const BlockingResourceBase_BlockingResourceType_eRecursiveMutex:
-            root::mozilla::BlockingResourceBase_BlockingResourceType = 3;
-        pub type BlockingResourceBase_BlockingResourceType = u32;
-        extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla20BlockingResourceBase17kResourceTypeNameE"]
-            pub static mut BlockingResourceBase_kResourceTypeName:
-                [*const ::std::os::raw::c_char; 0usize];
-        }
-        #[test]
-        fn bindgen_test_layout_BlockingResourceBase() {
-            assert_eq!(
-                ::std::mem::size_of::<BlockingResourceBase>(),
-                1usize,
-                concat!("Size of: ", stringify!(BlockingResourceBase))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<BlockingResourceBase>(),
-                1usize,
-                concat!("Alignment of ", stringify!(BlockingResourceBase))
-            );
-        }
-        /// OffTheBooksMutex is identical to Mutex, except that OffTheBooksMutex doesn't
-        /// include leak checking.  Sometimes you want to intentionally "leak" a mutex
-        /// until shutdown; in these cases, OffTheBooksMutex is for you.
-        #[repr(C)]
-        #[derive(Debug)]
-        pub struct OffTheBooksMutex {
-            pub _base: root::mozilla::detail::MutexImpl,
-        }
-        #[test]
-        fn bindgen_test_layout_OffTheBooksMutex() {
-            assert_eq!(
-                ::std::mem::size_of::<OffTheBooksMutex>(),
-                40usize,
-                concat!("Size of: ", stringify!(OffTheBooksMutex))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<OffTheBooksMutex>(),
-                8usize,
-                concat!("Alignment of ", stringify!(OffTheBooksMutex))
-            );
-        }
-        /// Mutex
-        /// When possible, use MutexAutoLock/MutexAutoUnlock to lock/unlock this
-        /// mutex within a scope, instead of calling Lock/Unlock directly.
-        #[repr(C)]
-        #[derive(Debug)]
-        pub struct Mutex {
-            pub _base: root::mozilla::OffTheBooksMutex,
-        }
-        #[test]
-        fn bindgen_test_layout_Mutex() {
-            assert_eq!(
-                ::std::mem::size_of::<Mutex>(),
-                40usize,
-                concat!("Size of: ", stringify!(Mutex))
-            );
-            assert_eq!(
-                ::std::mem::align_of::<Mutex>(),
-                8usize,
-                concat!("Alignment of ", stringify!(Mutex))
-            );
-        }
         pub mod image {
             #[allow(unused_imports)]
             use self::super::super::super::root;
             #[repr(C)]
             #[derive(Debug, Copy)]
             pub struct ImageURL {
                 _unused: [u8; 0],
             }
@@ -8550,16 +6928,41 @@ pub mod root {
                 );
                 assert_eq!(
                     ::std::mem::align_of::<IProgressObserver>(),
                     8usize,
                     concat!("Alignment of ", stringify!(IProgressObserver))
                 );
             }
         }
+        pub mod external {
+            #[allow(unused_imports)]
+            use self::super::super::super::root;
+            /// AtomicRefCounted<T> is like RefCounted<T>, with an atomically updated
+            /// reference counter.
+            ///
+            /// NOTE: Please do not use this class, use NS_INLINE_DECL_THREADSAFE_REFCOUNTING
+            /// instead.
+            #[repr(C)]
+            #[derive(Debug, Copy, Clone)]
+            pub struct AtomicRefCounted {
+                pub _address: u8,
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy, Clone)]
+        pub struct SupportsWeakPtr {
+            pub _address: u8,
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy, Clone)]
+        pub struct WeakPtr {
+            pub _address: u8,
+        }
+        pub type WeakPtr_WeakReference = u8;
         #[repr(C)]
         pub struct CounterStyle__bindgen_vtable(::std::os::raw::c_void);
         #[repr(C)]
         #[derive(Debug, Copy)]
         pub struct CounterStyle {
             pub vtable_: *const CounterStyle__bindgen_vtable,
             pub mStyle: i32,
         }
@@ -9647,16 +8050,94 @@ pub mod root {
         pub const SERVO_PREF_ENABLED__webkit_mask_composite: bool = true;
         pub const SERVO_PREF_ENABLED__webkit_mask_image: bool = true;
         pub const SERVO_PREF_ENABLED__webkit_mask_origin: bool = true;
         pub const SERVO_PREF_ENABLED__webkit_mask_position: bool = true;
         pub const SERVO_PREF_ENABLED__webkit_mask_position_x: bool = true;
         pub const SERVO_PREF_ENABLED__webkit_mask_position_y: bool = true;
         pub const SERVO_PREF_ENABLED__webkit_mask_repeat: bool = true;
         pub const SERVO_PREF_ENABLED__webkit_mask_size: bool = true;
+        pub type ComputedKeyframeValues =
+            root::nsTArray<root::mozilla::PropertyStyleAnimationValuePair>;
+        #[test]
+        fn __bindgen_test_layout_DefaultDelete_open0_RawServoStyleSet_close0_instantiation() {
+            assert_eq!(
+                ::std::mem::size_of::<root::mozilla::DefaultDelete>(),
+                1usize,
+                concat!(
+                    "Size of template specialization: ",
+                    stringify!(root::mozilla::DefaultDelete)
+                )
+            );
+            assert_eq!(
+                ::std::mem::align_of::<root::mozilla::DefaultDelete>(),
+                1usize,
+                concat!(
+                    "Alignment of template specialization: ",
+                    stringify!(root::mozilla::DefaultDelete)
+                )
+            );
+        }
+        #[test]
+        fn __bindgen_test_layout_DefaultDelete_open0_RawServoAuthorStyles_close0_instantiation() {
+            assert_eq!(
+                ::std::mem::size_of::<root::mozilla::DefaultDelete>(),
+                1usize,
+                concat!(
+                    "Size of template specialization: ",
+                    stringify!(root::mozilla::DefaultDelete)
+                )
+            );
+            assert_eq!(
+                ::std::mem::align_of::<root::mozilla::DefaultDelete>(),
+                1usize,
+                concat!(
+                    "Alignment of template specialization: ",
+                    stringify!(root::mozilla::DefaultDelete)
+                )
+            );
+        }
+        #[test]
+        fn __bindgen_test_layout_DefaultDelete_open0_RawServoSelectorList_close0_instantiation() {
+            assert_eq!(
+                ::std::mem::size_of::<root::mozilla::DefaultDelete>(),
+                1usize,
+                concat!(
+                    "Size of template specialization: ",
+                    stringify!(root::mozilla::DefaultDelete)
+                )
+            );
+            assert_eq!(
+                ::std::mem::align_of::<root::mozilla::DefaultDelete>(),
+                1usize,
+                concat!(
+                    "Alignment of template specialization: ",
+                    stringify!(root::mozilla::DefaultDelete)
+                )
+            );
+        }
+        #[test]
+        fn __bindgen_test_layout_DefaultDelete_open0_RawServoSourceSizeList_close0_instantiation() {
+            assert_eq!(
+                ::std::mem::size_of::<root::mozilla::DefaultDelete>(),
+                1usize,
+                concat!(
+                    "Size of template specialization: ",
+                    stringify!(root::mozilla::DefaultDelete)
+                )
+            );
+            assert_eq!(
+                ::std::mem::align_of::<root::mozilla::DefaultDelete>(),
+                1usize,
+                concat!(
+                    "Alignment of template specialization: ",
+                    stringify!(root::mozilla::DefaultDelete)
+                )
+            );
+        }
         #[repr(C)]
         #[derive(Debug)]
         pub struct AnimationValue {
             pub mGecko: usize,
             pub mServo: root::RefPtr<root::RawServoAnimationValue>,
         }
         #[test]
         fn bindgen_test_layout_AnimationValue() {
@@ -10115,16 +8596,153 @@ pub mod root {
         }
         #[repr(C)]
         #[derive(Debug)]
         pub struct MozPromiseHolder<PromiseType> {
             pub mMonitor: *mut root::mozilla::Monitor,
             pub mPromise: root::RefPtr<PromiseType>,
             pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<PromiseType>>,
         }
+        /// Superclass for data common to CSSStyleSheet and ServoStyleSheet.
+        #[repr(C)]
+        pub struct StyleSheet {
+            pub _base: root::nsICSSLoaderObserver,
+            pub _base_1: root::nsWrapperCache,
+            pub mRefCnt: root::nsCycleCollectingAutoRefCnt,
+            pub mParent: *mut root::mozilla::StyleSheet,
+            pub mTitle: ::nsstring::nsStringRepr,
+            pub mDocument: *mut root::nsIDocument,
+            pub mOwningNode: *mut root::nsINode,
+            pub mOwnerRule: *mut root::mozilla::dom::CSSImportRule,
+            pub mMedia: root::RefPtr<root::mozilla::dom::MediaList>,
+            pub mNext: root::RefPtr<root::mozilla::StyleSheet>,
+            pub mParsingMode: root::mozilla::css::SheetParsingMode,
+            pub mDisabled: bool,
+            pub mDirtyFlags: u8,
+            pub mDocumentAssociationMode: root::mozilla::StyleSheet_DocumentAssociationMode,
+            pub mInner: *mut root::mozilla::StyleSheetInfo,
+            pub mStyleSets: root::nsTArray<*mut root::mozilla::ServoStyleSet>,
+        }
+        pub type StyleSheet_HasThreadSafeRefCnt = root::mozilla::FalseType;
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct StyleSheet_cycleCollection {
+            pub _base: root::nsXPCOMCycleCollectionParticipant,
+        }
+        #[test]
+        fn bindgen_test_layout_StyleSheet_cycleCollection() {
+            assert_eq!(
+                ::std::mem::size_of::<StyleSheet_cycleCollection>(),
+                16usize,
+                concat!("Size of: ", stringify!(StyleSheet_cycleCollection))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<StyleSheet_cycleCollection>(),
+                8usize,
+                concat!("Alignment of ", stringify!(StyleSheet_cycleCollection))
+            );
+        }
+        impl Clone for StyleSheet_cycleCollection {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        pub const StyleSheet_ChangeType_Added: root::mozilla::StyleSheet_ChangeType = 0;
+        pub const StyleSheet_ChangeType_Removed: root::mozilla::StyleSheet_ChangeType = 1;
+        pub const StyleSheet_ChangeType_ApplicableStateChanged:
+            root::mozilla::StyleSheet_ChangeType = 2;
+        pub const StyleSheet_ChangeType_RuleAdded: root::mozilla::StyleSheet_ChangeType = 3;
+        pub const StyleSheet_ChangeType_RuleRemoved: root::mozilla::StyleSheet_ChangeType = 4;
+        pub const StyleSheet_ChangeType_RuleChanged: root::mozilla::StyleSheet_ChangeType = 5;
+        /// The different changes that a stylesheet may go through.
+        ///
+        /// Used by the StyleSets in order to handle more efficiently some kinds of
+        /// changes.
+        pub type StyleSheet_ChangeType = i32;
+        pub const StyleSheet_DocumentAssociationMode_OwnedByDocument:
+            root::mozilla::StyleSheet_DocumentAssociationMode = 0;
+        pub const StyleSheet_DocumentAssociationMode_NotOwnedByDocument:
+            root::mozilla::StyleSheet_DocumentAssociationMode = 1;
+        pub type StyleSheet_DocumentAssociationMode = u8;
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct StyleSheet_ChildSheetListBuilder {
+            pub sheetSlot: *mut root::RefPtr<root::mozilla::StyleSheet>,
+            pub parent: *mut root::mozilla::StyleSheet,
+        }
+        #[test]
+        fn bindgen_test_layout_StyleSheet_ChildSheetListBuilder() {
+            assert_eq!(
+                ::std::mem::size_of::<StyleSheet_ChildSheetListBuilder>(),
+                16usize,
+                concat!("Size of: ", stringify!(StyleSheet_ChildSheetListBuilder))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<StyleSheet_ChildSheetListBuilder>(),
+                8usize,
+                concat!(
+                    "Alignment of ",
+                    stringify!(StyleSheet_ChildSheetListBuilder)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<StyleSheet_ChildSheetListBuilder>())).sheetSlot
+                        as *const _ as usize
+                },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(StyleSheet_ChildSheetListBuilder),
+                    "::",
+                    stringify!(sheetSlot)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<StyleSheet_ChildSheetListBuilder>())).parent as *const _
+                        as usize
+                },
+                8usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(StyleSheet_ChildSheetListBuilder),
+                    "::",
+                    stringify!(parent)
+                )
+            );
+        }
+        impl Clone for StyleSheet_ChildSheetListBuilder {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        pub const StyleSheet_dirtyFlagAttributes_FORCED_UNIQUE_INNER:
+            root::mozilla::StyleSheet_dirtyFlagAttributes = 1;
+        pub const StyleSheet_dirtyFlagAttributes_MODIFIED_RULES:
+            root::mozilla::StyleSheet_dirtyFlagAttributes = 2;
+        pub type StyleSheet_dirtyFlagAttributes = u32;
+        extern "C" {
+            #[link_name = "\u{1}_ZN7mozilla10StyleSheet21_cycleCollectorGlobalE"]
+            pub static mut StyleSheet__cycleCollectorGlobal:
+                root::mozilla::StyleSheet_cycleCollection;
+        }
+        #[test]
+        fn bindgen_test_layout_StyleSheet() {
+            assert_eq!(
+                ::std::mem::size_of::<StyleSheet>(),
+                128usize,
+                concat!("Size of: ", stringify!(StyleSheet))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<StyleSheet>(),
+                8usize,
+                concat!("Alignment of ", stringify!(StyleSheet))
+            );
+        }
         #[repr(C)]
         #[derive(Debug, Copy)]
         pub struct ServoCSSRuleList {
             _unused: [u8; 0],
         }
         impl Clone for ServoCSSRuleList {
             fn clone(&self) -> Self {
                 *self
@@ -10246,16 +8864,317 @@ pub mod root {
                 concat!(
                     "Offset of field: ",
                     stringify!(ServoStyleSheet),
                     "::",
                     stringify!(mParsePromise)
                 )
             );
         }
+        /// Event messages
+        pub type EventMessageType = u16;
+        pub const EventMessage_eVoidEvent: root::mozilla::EventMessage = 0;
+        pub const EventMessage_eAllEvents: root::mozilla::EventMessage = 1;
+        pub const EventMessage_eWindowClose: root::mozilla::EventMessage = 2;
+        pub const EventMessage_eKeyPress: root::mozilla::EventMessage = 3;
+        pub const EventMessage_eKeyUp: root::mozilla::EventMessage = 4;
+        pub const EventMessage_eKeyDown: root::mozilla::EventMessage = 5;
+        pub const EventMessage_eKeyDownOnPlugin: root::mozilla::EventMessage = 6;
+        pub const EventMessage_eKeyUpOnPlugin: root::mozilla::EventMessage = 7;
+        pub const EventMessage_eAccessKeyNotFound: root::mozilla::EventMessage = 8;
+        pub const EventMessage_eResize: root::mozilla::EventMessage = 9;
+        pub const EventMessage_eScroll: root::mozilla::EventMessage = 10;
+        pub const EventMessage_eInstall: root::mozilla::EventMessage = 11;
+        pub const EventMessage_eAppInstalled: root::mozilla::EventMessage = 12;
+        pub const EventMessage_ePluginActivate: root::mozilla::EventMessage = 13;
+        pub const EventMessage_ePluginFocus: root::mozilla::EventMessage = 14;
+        pub const EventMessage_eOffline: root::mozilla::EventMessage = 15;
+        pub const EventMessage_eOnline: root::mozilla::EventMessage = 16;
+        pub const EventMessage_eLanguageChange: root::mozilla::EventMessage = 17;
+        pub const EventMessage_eMouseMove: root::mozilla::EventMessage = 18;
+        pub const EventMessage_eMouseUp: root::mozilla::EventMessage = 19;
+        pub const EventMessage_eMouseDown: root::mozilla::EventMessage = 20;
+        pub const EventMessage_eMouseEnterIntoWidget: root::mozilla::EventMessage = 21;
+        pub const EventMessage_eMouseExitFromWidget: root::mozilla::EventMessage = 22;
+        pub const EventMessage_eMouseDoubleClick: root::mozilla::EventMessage = 23;
+        pub const EventMessage_eMouseClick: root::mozilla::EventMessage = 24;
+        pub const EventMessage_eMouseAuxClick: root::mozilla::EventMessage = 25;
+        pub const EventMessage_eMouseActivate: root::mozilla::EventMessage = 26;
+        pub const EventMessage_eMouseOver: root::mozilla::EventMessage = 27;
+        pub const EventMessage_eMouseOut: root::mozilla::EventMessage = 28;
+        pub const EventMessage_eMouseHitTest: root::mozilla::EventMessage = 29;
+        pub const EventMessage_eMouseEnter: root::mozilla::EventMessage = 30;
+        pub const EventMessage_eMouseLeave: root::mozilla::EventMessage = 31;
+        pub const EventMessage_eMouseTouchDrag: root::mozilla::EventMessage = 32;
+        pub const EventMessage_eMouseLongTap: root::mozilla::EventMessage = 33;
+        pub const EventMessage_eMouseEventFirst: root::mozilla::EventMessage = 18;
+        pub const EventMessage_eMouseEventLast: root::mozilla::EventMessage = 33;
+        pub const EventMessage_ePointerMove: root::mozilla::EventMessage = 34;
+        pub const EventMessage_ePointerUp: root::mozilla::EventMessage = 35;
+        pub const EventMessage_ePointerDown: root::mozilla::EventMessage = 36;
+        pub const EventMessage_ePointerOver: root::mozilla::EventMessage = 37;
+        pub const EventMessage_ePointerOut: root::mozilla::EventMessage = 38;
+        pub const EventMessage_ePointerEnter: root::mozilla::EventMessage = 39;
+        pub const EventMessage_ePointerLeave: root::mozilla::EventMessage = 40;
+        pub const EventMessage_ePointerCancel: root::mozilla::EventMessage = 41;
+        pub const EventMessage_ePointerGotCapture: root::mozilla::EventMessage = 42;
+        pub const EventMessage_ePointerLostCapture: root::mozilla::EventMessage = 43;
+        pub const EventMessage_ePointerEventFirst: root::mozilla::EventMessage = 34;
+        pub const EventMessage_ePointerEventLast: root::mozilla::EventMessage = 43;
+        pub const EventMessage_eContextMenu: root::mozilla::EventMessage = 44;
+        pub const EventMessage_eLoad: root::mozilla::EventMessage = 45;
+        pub const EventMessage_eUnload: root::mozilla::EventMessage = 46;
+        pub const EventMessage_eHashChange: root::mozilla::EventMessage = 47;
+        pub const EventMessage_eImageAbort: root::mozilla::EventMessage = 48;
+        pub const EventMessage_eLoadError: root::mozilla::EventMessage = 49;
+        pub const EventMessage_eLoadEnd: root::mozilla::EventMessage = 50;
+        pub const EventMessage_ePopState: root::mozilla::EventMessage = 51;
+        pub const EventMessage_eStorage: root::mozilla::EventMessage = 52;
+        pub const EventMessage_eBeforeUnload: root::mozilla::EventMessage = 53;
+        pub const EventMessage_eReadyStateChange: root::mozilla::EventMessage = 54;
+        pub const EventMessage_eFormSubmit: root::mozilla::EventMessage = 55;
+        pub const EventMessage_eFormReset: root::mozilla::EventMessage = 56;
+        pub const EventMessage_eFormChange: root::mozilla::EventMessage = 57;
+        pub const EventMessage_eFormSelect: root::mozilla::EventMessage = 58;
+        pub const EventMessage_eFormInvalid: root::mozilla::EventMessage = 59;
+        pub const EventMessage_eFormCheckboxStateChange: root::mozilla::EventMessage = 60;
+        pub const EventMessage_eFormRadioStateChange: root::mozilla::EventMessage = 61;
+        pub const EventMessage_eFocus: root::mozilla::EventMessage = 62;
+        pub const EventMessage_eBlur: root::mozilla::EventMessage = 63;
+        pub const EventMessage_eFocusIn: root::mozilla::EventMessage = 64;
+        pub const EventMessage_eFocusOut: root::mozilla::EventMessage = 65;
+        pub const EventMessage_eDragEnter: root::mozilla::EventMessage = 66;
+        pub const EventMessage_eDragOver: root::mozilla::EventMessage = 67;
+        pub const EventMessage_eDragExit: root::mozilla::EventMessage = 68;
+        pub const EventMessage_eDrag: root::mozilla::EventMessage = 69;
+        pub const EventMessage_eDragEnd: root::mozilla::EventMessage = 70;
+        pub const EventMessage_eDragStart: root::mozilla::EventMessage = 71;
+        pub const EventMessage_eDrop: root::mozilla::EventMessage = 72;
+        pub const EventMessage_eDragLeave: root::mozilla::EventMessage = 73;
+        pub const EventMessage_eDragDropEventFirst: root::mozilla::EventMessage = 66;
+        pub const EventMessage_eDragDropEventLast: root::mozilla::EventMessage = 73;
+        pub const EventMessage_eXULPopupShowing: root::mozilla::EventMessage = 74;
+        pub const EventMessage_eXULPopupShown: root::mozilla::EventMessage = 75;
+        pub const EventMessage_eXULPopupPositioned: root::mozilla::EventMessage = 76;
+        pub const EventMessage_eXULPopupHiding: root::mozilla::EventMessage = 77;
+        pub const EventMessage_eXULPopupHidden: root::mozilla::EventMessage = 78;
+        pub const EventMessage_eXULBroadcast: root::mozilla::EventMessage = 79;
+        pub const EventMessage_eXULCommandUpdate: root::mozilla::EventMessage = 80;
+        pub const EventMessage_eLegacyMouseLineOrPageScroll: root::mozilla::EventMessage = 81;
+        pub const EventMessage_eLegacyMousePixelScroll: root::mozilla::EventMessage = 82;
+        pub const EventMessage_eScrollPortUnderflow: root::mozilla::EventMessage = 83;
+        pub const EventMessage_eScrollPortOverflow: root::mozilla::EventMessage = 84;
+        pub const EventMessage_eLegacySubtreeModified: root::mozilla::EventMessage = 85;
+        pub const EventMessage_eLegacyNodeInserted: root::mozilla::EventMessage = 86;
+        pub const EventMessage_eLegacyNodeRemoved: root::mozilla::EventMessage = 87;
+        pub const EventMessage_eLegacyNodeRemovedFromDocument: root::mozilla::EventMessage = 88;
+        pub const EventMessage_eLegacyNodeInsertedIntoDocument: root::mozilla::EventMessage = 89;
+        pub const EventMessage_eLegacyAttrModified: root::mozilla::EventMessage = 90;
+        pub const EventMessage_eLegacyCharacterDataModified: root::mozilla::EventMessage = 91;
+        pub const EventMessage_eLegacyMutationEventFirst: root::mozilla::EventMessage = 85;
+        pub const EventMessage_eLegacyMutationEventLast: root::mozilla::EventMessage = 91;
+        pub const EventMessage_eUnidentifiedEvent: root::mozilla::EventMessage = 92;
+        pub const EventMessage_eCompositionStart: root::mozilla::EventMessage = 93;
+        pub const EventMessage_eCompositionEnd: root::mozilla::EventMessage = 94;
+        pub const EventMessage_eCompositionUpdate: root::mozilla::EventMessage = 95;
+        pub const EventMessage_eCompositionChange: root::mozilla::EventMessage = 96;
+        pub const EventMessage_eCompositionCommitAsIs: root::mozilla::EventMessage = 97;
+        pub const EventMessage_eCompositionCommit: root::mozilla::EventMessage = 98;
+        pub const EventMessage_eCompositionCommitRequestHandled: root::mozilla::EventMessage = 99;
+        pub const EventMessage_eLegacyDOMActivate: root::mozilla::EventMessage = 100;
+        pub const EventMessage_eLegacyDOMFocusIn: root::mozilla::EventMessage = 101;
+        pub const EventMessage_eLegacyDOMFocusOut: root::mozilla::EventMessage = 102;
+        pub const EventMessage_ePageShow: root::mozilla::EventMessage = 103;
+        pub const EventMessage_ePageHide: root::mozilla::EventMessage = 104;
+        pub const EventMessage_eSVGLoad: root::mozilla::EventMessage = 105;
+        pub const EventMessage_eSVGUnload: root::mozilla::EventMessage = 106;
+        pub const EventMessage_eSVGResize: root::mozilla::EventMessage = 107;
+        pub const EventMessage_eSVGScroll: root::mozilla::EventMessage = 108;
+        pub const EventMessage_eSVGZoom: root::mozilla::EventMessage = 109;
+        pub const EventMessage_eXULCommand: root::mozilla::EventMessage = 110;
+        pub const EventMessage_eCopy: root::mozilla::EventMessage = 111;
+        pub const EventMessage_eCut: root::mozilla::EventMessage = 112;
+        pub const EventMessage_ePaste: root::mozilla::EventMessage = 113;
+        pub const EventMessage_ePasteNoFormatting: root::mozilla::EventMessage = 114;
+        pub const EventMessage_eQuerySelectedText: root::mozilla::EventMessage = 115;
+        pub const EventMessage_eQueryTextContent: root::mozilla::EventMessage = 116;
+        pub const EventMessage_eQueryCaretRect: root::mozilla::EventMessage = 117;
+        pub const EventMessage_eQueryTextRect: root::mozilla::EventMessage = 118;
+        pub const EventMessage_eQueryTextRectArray: root::mozilla::EventMessage = 119;
+        pub const EventMessage_eQueryEditorRect: root::mozilla::EventMessage = 120;
+        pub const EventMessage_eQueryContentState: root::mozilla::EventMessage = 121;
+        pub const EventMessage_eQuerySelectionAsTransferable: root::mozilla::EventMessage = 122;
+        pub const EventMessage_eQueryCharacterAtPoint: root::mozilla::EventMessage = 123;
+        pub const EventMessage_eQueryDOMWidgetHittest: root::mozilla::EventMessage = 124;
+        pub const EventMessage_eLoadStart: root::mozilla::EventMessage = 125;
+        pub const EventMessage_eProgress: root::mozilla::EventMessage = 126;
+        pub const EventMessage_eSuspend: root::mozilla::EventMessage = 127;
+        pub const EventMessage_eEmptied: root::mozilla::EventMessage = 128;
+        pub const EventMessage_eStalled: root::mozilla::EventMessage = 129;
+        pub const EventMessage_ePlay: root::mozilla::EventMessage = 130;
+        pub const EventMessage_ePause: root::mozilla::EventMessage = 131;
+        pub const EventMessage_eLoadedMetaData: root::mozilla::EventMessage = 132;
+        pub const EventMessage_eLoadedData: root::mozilla::EventMessage = 133;
+        pub const EventMessage_eWaiting: root::mozilla::EventMessage = 134;
+        pub const EventMessage_ePlaying: root::mozilla::EventMessage = 135;
+        pub const EventMessage_eCanPlay: root::mozilla::EventMessage = 136;
+        pub const EventMessage_eCanPlayThrough: root::mozilla::EventMessage = 137;
+        pub const EventMessage_eSeeking: root::mozilla::EventMessage = 138;
+        pub const EventMessage_eSeeked: root::mozilla::EventMessage = 139;
+        pub const EventMessage_eTimeUpdate: root::mozilla::EventMessage = 140;
+        pub const EventMessage_eEnded: root::mozilla::EventMessage = 141;
+        pub const EventMessage_eRateChange: root::mozilla::EventMessage = 142;
+        pub const EventMessage_eDurationChange: root::mozilla::EventMessage = 143;
+        pub const EventMessage_eVolumeChange: root::mozilla::EventMessage = 144;
+        pub const EventMessage_eAfterPaint: root::mozilla::EventMessage = 145;
+        pub const EventMessage_eSwipeGestureMayStart: root::mozilla::EventMessage = 146;
+        pub const EventMessage_eSwipeGestureStart: root::mozilla::EventMessage = 147;
+        pub const EventMessage_eSwipeGestureUpdate: root::mozilla::EventMessage = 148;
+        pub const EventMessage_eSwipeGestureEnd: root::mozilla::EventMessage = 149;
+        pub const EventMessage_eSwipeGesture: root::mozilla::EventMessage = 150;
+        pub const EventMessage_eMagnifyGestureStart: root::mozilla::EventMessage = 151;
+        pub const EventMessage_eMagnifyGestureUpdate: root::mozilla::EventMessage = 152;
+        pub const EventMessage_eMagnifyGesture: root::mozilla::EventMessage = 153;
+        pub const EventMessage_eRotateGestureStart: root::mozilla::EventMessage = 154;
+        pub const EventMessage_eRotateGestureUpdate: root::mozilla::EventMessage = 155;
+        pub const EventMessage_eRotateGesture: root::mozilla::EventMessage = 156;
+        pub const EventMessage_eTapGesture: root::mozilla::EventMessage = 157;
+        pub const EventMessage_ePressTapGesture: root::mozilla::EventMessage = 158;
+        pub const EventMessage_eEdgeUIStarted: root::mozilla::EventMessage = 159;
+        pub const EventMessage_eEdgeUICanceled: root::mozilla::EventMessage = 160;
+        pub const EventMessage_eEdgeUICompleted: root::mozilla::EventMessage = 161;
+        pub const EventMessage_ePluginInputEvent: root::mozilla::EventMessage = 162;
+        pub const EventMessage_eSetSelection: root::mozilla::EventMessage = 163;
+        pub const EventMessage_eContentCommandCut: root::mozilla::EventMessage = 164;
+        pub const EventMessage_eContentCommandCopy: root::mozilla::EventMessage = 165;
+        pub const EventMessage_eContentCommandPaste: root::mozilla::EventMessage = 166;
+        pub const EventMessage_eContentCommandDelete: root::mozilla::EventMessage = 167;
+        pub const EventMessage_eContentCommandUndo: root::mozilla::EventMessage = 168;
+        pub const EventMessage_eContentCommandRedo: root::mozilla::EventMessage = 169;
+        pub const EventMessage_eContentCommandPasteTransferable: root::mozilla::EventMessage = 170;
+        pub const EventMessage_eContentCommandLookUpDictionary: root::mozilla::EventMessage = 171;
+        pub const EventMessage_eContentCommandScroll: root::mozilla::EventMessage = 172;
+        pub const EventMessage_eGestureNotify: root::mozilla::EventMessage = 173;
+        pub const EventMessage_eScrolledAreaChanged: root::mozilla::EventMessage = 174;
+        pub const EventMessage_eTransitionStart: root::mozilla::EventMessage = 175;
+        pub const EventMessage_eTransitionRun: root::mozilla::EventMessage = 176;
+        pub const EventMessage_eTransitionEnd: root::mozilla::EventMessage = 177;
+        pub const EventMessage_eTransitionCancel: root::mozilla::EventMessage = 178;
+        pub const EventMessage_eAnimationStart: root::mozilla::EventMessage = 179;
+        pub const EventMessage_eAnimationEnd: root::mozilla::EventMessage = 180;
+        pub const EventMessage_eAnimationIteration: root::mozilla::EventMessage = 181;
+        pub const EventMessage_eAnimationCancel: root::mozilla::EventMessage = 182;
+        pub const EventMessage_eWebkitTransitionEnd: root::mozilla::EventMessage = 183;
+        pub const EventMessage_eWebkitAnimationStart: root::mozilla::EventMessage = 184;
+        pub const EventMessage_eWebkitAnimationEnd: root::mozilla::EventMessage = 185;
+        pub const EventMessage_eWebkitAnimationIteration: root::mozilla::EventMessage = 186;
+        pub const EventMessage_eSMILBeginEvent: root::mozilla::EventMessage = 187;
+        pub const EventMessage_eSMILEndEvent: root::mozilla::EventMessage = 188;
+        pub const EventMessage_eSMILRepeatEvent: root::mozilla::EventMessage = 189;
+        pub const EventMessage_eAudioProcess: root::mozilla::EventMessage = 190;
+        pub const EventMessage_eAudioComplete: root::mozilla::EventMessage = 191;
+        pub const EventMessage_eBeforeScriptExecute: root::mozilla::EventMessage = 192;
+        pub const EventMessage_eAfterScriptExecute: root::mozilla::EventMessage = 193;
+        pub const EventMessage_eBeforePrint: root::mozilla::EventMessage = 194;
+        pub const EventMessage_eAfterPrint: root::mozilla::EventMessage = 195;
+        pub const EventMessage_eMessage: root::mozilla::EventMessage = 196;
+        pub const EventMessage_eMessageError: root::mozilla::EventMessage = 197;
+        pub const EventMessage_eOpen: root::mozilla::EventMessage = 198;
+        pub const EventMessage_eDeviceOrientation: root::mozilla::EventMessage = 199;
+        pub const EventMessage_eAbsoluteDeviceOrientation: root::mozilla::EventMessage = 200;
+        pub const EventMessage_eDeviceMotion: root::mozilla::EventMessage = 201;
+        pub const EventMessage_eDeviceProximity: root::mozilla::EventMessage = 202;
+        pub const EventMessage_eUserProximity: root::mozilla::EventMessage = 203;
+        pub const EventMessage_eDeviceLight: root::mozilla::EventMessage = 204;
+        pub const EventMessage_eVRDisplayActivate: root::mozilla::EventMessage = 205;
+        pub const EventMessage_eVRDisplayDeactivate: root::mozilla::EventMessage = 206;
+        pub const EventMessage_eVRDisplayConnect: root::mozilla::EventMessage = 207;
+        pub const EventMessage_eVRDisplayDisconnect: root::mozilla::EventMessage = 208;
+        pub const EventMessage_eVRDisplayPresentChange: root::mozilla::EventMessage = 209;
+        pub const EventMessage_eShow: root::mozilla::EventMessage = 210;
+        pub const EventMessage_eFullscreenChange: root::mozilla::EventMessage = 211;
+        pub const EventMessage_eFullscreenError: root::mozilla::EventMessage = 212;
+        pub const EventMessage_eMozFullscreenChange: root::mozilla::EventMessage = 213;
+        pub const EventMessage_eMozFullscreenError: root::mozilla::EventMessage = 214;
+        pub const EventMessage_eTouchStart: root::mozilla::EventMessage = 215;
+        pub const EventMessage_eTouchMove: root::mozilla::EventMessage = 216;
+        pub const EventMessage_eTouchEnd: root::mozilla::EventMessage = 217;
+        pub const EventMessage_eTouchCancel: root::mozilla::EventMessage = 218;
+        pub const EventMessage_eTouchPointerCancel: root::mozilla::EventMessage = 219;
+        pub const EventMessage_ePointerLockChange: root::mozilla::EventMessage = 220;
+        pub const EventMessage_ePointerLockError: root::mozilla::EventMessage = 221;
+        pub const EventMessage_eMozPointerLockChange: root::mozilla::EventMessage = 222;
+        pub const EventMessage_eMozPointerLockError: root::mozilla::EventMessage = 223;
+        pub const EventMessage_eWheel: root::mozilla::EventMessage = 224;
+        pub const EventMessage_eWheelOperationStart: root::mozilla::EventMessage = 225;
+        pub const EventMessage_eWheelOperationEnd: root::mozilla::EventMessage = 226;
+        pub const EventMessage_eTimeChange: root::mozilla::EventMessage = 227;
+        pub const EventMessage_eNetworkUpload: root::mozilla::EventMessage = 228;
+        pub const EventMessage_eNetworkDownload: root::mozilla::EventMessage = 229;
+        pub const EventMessage_eMediaRecorderDataAvailable: root::mozilla::EventMessage = 230;
+        pub const EventMessage_eMediaRecorderWarning: root::mozilla::EventMessage = 231;
+        pub const EventMessage_eMediaRecorderStop: root::mozilla::EventMessage = 232;
+        pub const EventMessage_eGamepadButtonDown: root::mozilla::EventMessage = 233;
+        pub const EventMessage_eGamepadButtonUp: root::mozilla::EventMessage = 234;
+        pub const EventMessage_eGamepadAxisMove: root::mozilla::EventMessage = 235;
+        pub const EventMessage_eGamepadConnected: root::mozilla::EventMessage = 236;
+        pub const EventMessage_eGamepadDisconnected: root::mozilla::EventMessage = 237;
+        pub const EventMessage_eGamepadEventFirst: root::mozilla::EventMessage = 233;
+        pub const EventMessage_eGamepadEventLast: root::mozilla::EventMessage = 237;
+        pub const EventMessage_eEditorInput: root::mozilla::EventMessage = 238;
+        pub const EventMessage_eSelectStart: root::mozilla::EventMessage = 239;
+        pub const EventMessage_eSelectionChange: root::mozilla::EventMessage = 240;
+        pub const EventMessage_eVisibilityChange: root::mozilla::EventMessage = 241;
+        pub const EventMessage_eToggle: root::mozilla::EventMessage = 242;
+        pub const EventMessage_eClose: root::mozilla::EventMessage = 243;
+        pub const EventMessage_eEventMessage_MaxValue: root::mozilla::EventMessage = 244;
+        pub type EventMessage = u16;
+        /// Event class IDs
+        pub type EventClassIDType = u8;
+        pub const EventClassID_eBasicEventClass: root::mozilla::EventClassID = 0;
+        pub const EventClassID_eGUIEventClass: root::mozilla::EventClassID = 1;
+        pub const EventClassID_eInputEventClass: root::mozilla::EventClassID = 2;
+        pub const EventClassID_eUIEventClass: root::mozilla::EventClassID = 3;
+        pub const EventClassID_eKeyboardEventClass: root::mozilla::EventClassID = 4;
+        pub const EventClassID_eCompositionEventClass: root::mozilla::EventClassID = 5;
+        pub const EventClassID_eQueryContentEventClass: root::mozilla::EventClassID = 6;
+        pub const EventClassID_eSelectionEventClass: root::mozilla::EventClassID = 7;
+        pub const EventClassID_eEditorInputEventClass: root::mozilla::EventClassID = 8;
+        pub const EventClassID_eMouseEventBaseClass: root::mozilla::EventClassID = 9;
+        pub const EventClassID_eMouseEventClass: root::mozilla::EventClassID = 10;
+        pub const EventClassID_eDragEventClass: root::mozilla::EventClassID = 11;
+        pub const EventClassID_eMouseScrollEventClass: root::mozilla::EventClassID = 12;
+        pub const EventClassID_eWheelEventClass: root::mozilla::EventClassID = 13;
+        pub const EventClassID_ePointerEventClass: root::mozilla::EventClassID = 14;
+        pub const EventClassID_eGestureNotifyEventClass: root::mozilla::EventClassID = 15;
+        pub const EventClassID_eSimpleGestureEventClass: root::mozilla::EventClassID = 16;
+        pub const EventClassID_eTouchEventClass: root::mozilla::EventClassID = 17;
+        pub const EventClassID_eScrollPortEventClass: root::mozilla::EventClassID = 18;
+        pub const EventClassID_eScrollAreaEventClass: root::mozilla::EventClassID = 19;
+        pub const EventClassID_eFormEventClass: root::mozilla::EventClassID = 20;
+        pub const EventClassID_eClipboardEventClass: root::mozilla::EventClassID = 21;
+        pub const EventClassID_eFocusEventClass: root::mozilla::EventClassID = 22;
+        pub const EventClassID_eTransitionEventClass: root::mozilla::EventClassID = 23;
+        pub const EventClassID_eAnimationEventClass: root::mozilla::EventClassID = 24;
+        pub const EventClassID_eSMILTimeEventClass: root::mozilla::EventClassID = 25;
+        pub const EventClassID_eCommandEventClass: root::mozilla::EventClassID = 26;
+        pub const EventClassID_eContentCommandEventClass: root::mozilla::EventClassID = 27;
+        pub const EventClassID_ePluginEventClass: root::mozilla::EventClassID = 28;
+        pub const EventClassID_eMutationEventClass: root::mozilla::EventClassID = 29;
+        pub type EventClassID = u8;
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct EventListenerManager {
+            _unused: [u8; 0],
+        }
+        impl Clone for EventListenerManager {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
         #[repr(C)]
         #[derive(Debug)]
         pub struct URIPrincipalReferrerPolicyAndCORSModeHashKey {
             pub _base: root::nsURIHashKey,
             pub mPrincipal: root::nsCOMPtr,
             pub mCORSMode: root::mozilla::CORSMode,
             pub mReferrerPolicy:
                 root::mozilla::URIPrincipalReferrerPolicyAndCORSModeHashKey_ReferrerPolicy,
@@ -10625,16 +9544,1150 @@ pub mod root {
             );
             assert_eq!(
                 ::std::mem::align_of::<Encoder>(),
                 1usize,
                 concat!("Alignment of ", stringify!(Encoder))
             );
         }
         #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct DOMEventTargetHelper {
+            _unused: [u8; 0],
+        }
+        impl Clone for DOMEventTargetHelper {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy, Clone)]
+        pub struct SegmentedVector_SegmentImpl_Storage {
+            pub mBuf: root::__BindgenUnionField<*mut ::std::os::raw::c_char>,
+            pub mAlign: root::__BindgenUnionField<u8>,
+            pub bindgen_union_field: u64,
+        }
+        pub type SegmentedVector_Segment = u8;
+        #[repr(C)]
+        #[derive(Debug, Copy, Clone)]
+        pub struct SegmentedVector_IterImpl {
+            pub mSegment: *mut root::mozilla::SegmentedVector_Segment,
+            pub mIndex: usize,
+        }
+        pub type AtomArray = root::nsTArray<root::RefPtr<root::nsAtom>>;
+        /// EventStates is the class used to represent the event states of nsIContent
+        /// instances. These states are calculated by IntrinsicState() and
+        /// ContentStatesChanged() has to be called when one of them changes thus
+        /// informing the layout/style engine of the change.
+        /// Event states are associated with pseudo-classes.
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct EventStates {
+            pub mStates: root::mozilla::EventStates_InternalType,
+        }
+        pub type EventStates_InternalType = u64;
+        pub type EventStates_ServoType = u64;
+        #[test]
+        fn bindgen_test_layout_EventStates() {
+            assert_eq!(
+                ::std::mem::size_of::<EventStates>(),
+                8usize,
+                concat!("Size of: ", stringify!(EventStates))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<EventStates>(),
+                8usize,
+                concat!("Alignment of ", stringify!(EventStates))
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<EventStates>())).mStates as *const _ as usize },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(EventStates),
+                    "::",
+                    stringify!(mStates)
+                )
+            );
+        }
+        impl Clone for EventStates {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        pub const ArenaObjectID_eArenaObjectID_DummyBeforeFirstObjectID:
+            root::mozilla::ArenaObjectID = 171;
+        pub const ArenaObjectID_eArenaObjectID_GeckoComputedStyle: root::mozilla::ArenaObjectID =
+            172;
+        pub const ArenaObjectID_eArenaObjectID_nsLineBox: root::mozilla::ArenaObjectID = 173;
+        pub const ArenaObjectID_eArenaObjectID_nsRuleNode: root::mozilla::ArenaObjectID = 174;
+        pub const ArenaObjectID_eArenaObjectID_DisplayItemData: root::mozilla::ArenaObjectID = 175;
+        pub const ArenaObjectID_eArenaObjectID_nsInheritedStyleData: root::mozilla::ArenaObjectID =
+            176;
+        pub const ArenaObjectID_eArenaObjectID_nsResetStyleData: root::mozilla::ArenaObjectID = 177;
+        pub const ArenaObjectID_eArenaObjectID_nsConditionalResetStyleData:
+            root::mozilla::ArenaObjectID = 178;
+        pub const ArenaObjectID_eArenaObjectID_nsConditionalResetStyleDataEntry:
+            root::mozilla::ArenaObjectID = 179;
+        pub const ArenaObjectID_eArenaObjectID_nsFrameList: root::mozilla::ArenaObjectID = 180;
+        pub const ArenaObjectID_eArenaObjectID_CustomCounterStyle: root::mozilla::ArenaObjectID =
+            181;
+        pub const ArenaObjectID_eArenaObjectID_DependentBuiltinCounterStyle:
+            root::mozilla::ArenaObjectID = 182;
+        pub const ArenaObjectID_eArenaObjectID_nsCallbackEventRequest:
+            root::mozilla::ArenaObjectID = 183;
+        pub const ArenaObjectID_eArenaObjectID_nsIntervalSet_Interval:
+            root::mozilla::ArenaObjectID = 184;
+        pub const ArenaObjectID_eArenaObjectID_CellData: root::mozilla::ArenaObjectID = 185;
+        pub const ArenaObjectID_eArenaObjectID_BCCellData: root::mozilla::ArenaObjectID = 186;
+        pub const ArenaObjectID_eArenaObjectID_COUNT: root::mozilla::ArenaObjectID = 187;
+        pub type ArenaObjectID = u32;
+        pub const MediaFeatureChangeReason_ViewportChange: root::mozilla::MediaFeatureChangeReason =
+            1;
+        pub const MediaFeatureChangeReason_ZoomChange: root::mozilla::MediaFeatureChangeReason = 2;
+        pub const MediaFeatureChangeReason_MinFontSizeChange:
+            root::mozilla::MediaFeatureChangeReason = 4;
+        pub const MediaFeatureChangeReason_ResolutionChange:
+            root::mozilla::MediaFeatureChangeReason = 8;
+        pub const MediaFeatureChangeReason_MediumChange: root::mozilla::MediaFeatureChangeReason =
+            16;
+        pub const MediaFeatureChangeReason_SizeModeChange: root::mozilla::MediaFeatureChangeReason =
+            32;
+        pub const MediaFeatureChangeReason_SystemMetricsChange:
+            root::mozilla::MediaFeatureChangeReason = 64;
+        pub const MediaFeatureChangeReason_DeviceSizeIsPageSizeChange:
+            root::mozilla::MediaFeatureChangeReason = 128;
+        pub const MediaFeatureChangeReason_DisplayModeChange:
+            root::mozilla::MediaFeatureChangeReason = 256;
+        pub type MediaFeatureChangeReason = i32;
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct MediaFeatureChange {
+            pub mRestyleHint: root::nsRestyleHint,
+            pub mChangeHint: root::nsChangeHint,
+            pub mReason: root::mozilla::MediaFeatureChangeReason,
+        }
+        #[test]
+        fn bindgen_test_layout_MediaFeatureChange() {
+            assert_eq!(
+                ::std::mem::size_of::<MediaFeatureChange>(),
+                12usize,
+                concat!("Size of: ", stringify!(MediaFeatureChange))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<MediaFeatureChange>(),
+                4usize,
+                concat!("Alignment of ", stringify!(MediaFeatureChange))
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<MediaFeatureChange>())).mRestyleHint as *const _ as usize
+                },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(MediaFeatureChange),
+                    "::",
+                    stringify!(mRestyleHint)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<MediaFeatureChange>())).mChangeHint as *const _ as usize
+                },
+                4usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(MediaFeatureChange),
+                    "::",
+                    stringify!(mChangeHint)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<MediaFeatureChange>())).mReason as *const _ as usize
+                },
+                8usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(MediaFeatureChange),
+                    "::",
+                    stringify!(mReason)
+                )
+            );
+        }
+        impl Clone for MediaFeatureChange {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        /// A PostTraversalTask is a task to be performed immediately after a Servo
+        /// traversal.  There are just a few tasks we need to perform, so we use this
+        /// class rather than Runnables, to avoid virtual calls and some allocations.
+        ///
+        /// A PostTraversalTask is only safe to run immediately after the Servo
+        /// traversal, since it can hold raw pointers to DOM objects.
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct PostTraversalTask {
+            pub mType: root::mozilla::PostTraversalTask_Type,
+            pub mTarget: *mut ::std::os::raw::c_void,
+            pub mResult: root::nsresult,
+        }
+        pub const PostTraversalTask_Type_ResolveFontFaceLoadedPromise:
+            root::mozilla::PostTraversalTask_Type = 0;
+        pub const PostTraversalTask_Type_RejectFontFaceLoadedPromise:
+            root::mozilla::PostTraversalTask_Type = 1;
+        pub const PostTraversalTask_Type_DispatchLoadingEventAndReplaceReadyPromise:
+            root::mozilla::PostTraversalTask_Type = 2;
+        pub const PostTraversalTask_Type_DispatchFontFaceSetCheckLoadingFinishedAfterDelay:
+            root::mozilla::PostTraversalTask_Type = 3;
+        pub const PostTraversalTask_Type_LoadFontEntry: root::mozilla::PostTraversalTask_Type = 4;
+        pub type PostTraversalTask_Type = i32;
+        #[test]
+        fn bindgen_test_layout_PostTraversalTask() {
+            assert_eq!(
+                ::std::mem::size_of::<PostTraversalTask>(),
+                24usize,
+                concat!("Size of: ", stringify!(PostTraversalTask))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<PostTraversalTask>(),
+                8usize,
+                concat!("Alignment of ", stringify!(PostTraversalTask))
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<PostTraversalTask>())).mType as *const _ as usize },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(PostTraversalTask),
+                    "::",
+                    stringify!(mType)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<PostTraversalTask>())).mTarget as *const _ as usize
+                },
+                8usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(PostTraversalTask),
+                    "::",
+                    stringify!(mTarget)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<PostTraversalTask>())).mResult as *const _ as usize
+                },
+                16usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(PostTraversalTask),
+                    "::",
+                    stringify!(mResult)
+                )
+            );
+        }
+        impl Clone for PostTraversalTask {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        pub const CSSPseudoElementType_InheritingAnonBox: root::mozilla::CSSPseudoElementType =
+            CSSPseudoElementType::Count;
+        #[repr(u8)]
+        #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
+        pub enum CSSPseudoElementType {
+            after = 0,
+            before = 1,
+            backdrop = 2,
+            cue = 3,
+            firstLetter = 4,
+            firstLine = 5,
+            mozSelection = 6,
+            mozFocusInner = 7,
+            mozFocusOuter = 8,
+            mozListBullet = 9,
+            mozListNumber = 10,
+            mozMathAnonymous = 11,
+            mozNumberWrapper = 12,
+            mozNumberText = 13,
+            mozNumberSpinBox = 14,
+            mozNumberSpinUp = 15,
+            mozNumberSpinDown = 16,
+            mozProgressBar = 17,
+            mozRangeTrack = 18,
+            mozRangeProgress = 19,
+            mozRangeThumb = 20,
+            mozMeterBar = 21,
+            mozPlaceholder = 22,
+            placeholder = 23,
+            mozColorSwatch = 24,
+            Count = 25,
+            NonInheritingAnonBox = 26,
+            XULTree = 27,
+            NotPseudo = 28,
+            MAX = 29,
+        }
+        pub const StylistState_NotDirty: root::mozilla::StylistState = 0;
+        pub const StylistState_StyleSheetsDirty: root::mozilla::StylistState = 1;
+        pub const StylistState_XBLStyleSheetsDirty: root::mozilla::StylistState = 2;
+        pub type StylistState = u8;
+        pub const OriginFlags_UserAgent: root::mozilla::OriginFlags = root::mozilla::OriginFlags(1);
+        pub const OriginFlags_User: root::mozilla::OriginFlags = root::mozilla::OriginFlags(2);
+        pub const OriginFlags_Author: root::mozilla::OriginFlags = root::mozilla::OriginFlags(4);
+        pub const OriginFlags_All: root::mozilla::OriginFlags = root::mozilla::OriginFlags(7);
+        impl ::std::ops::BitOr<root::mozilla::OriginFlags> for root::mozilla::OriginFlags {
+            type Output = Self;
+            #[inline]
+            fn bitor(self, other: Self) -> Self {
+                OriginFlags(self.0 | other.0)
+            }
+        }
+        impl ::std::ops::BitOrAssign for root::mozilla::OriginFlags {
+            #[inline]
+            fn bitor_assign(&mut self, rhs: root::mozilla::OriginFlags) {
+                self.0 |= rhs.0;
+            }
+        }
+        impl ::std::ops::BitAnd<root::mozilla::OriginFlags> for root::mozilla::OriginFlags {
+            type Output = Self;
+            #[inline]
+            fn bitand(self, other: Self) -> Self {
+                OriginFlags(self.0 & other.0)
+            }
+        }
+        impl ::std::ops::BitAndAssign for root::mozilla::OriginFlags {
+            #[inline]
+            fn bitand_assign(&mut self, rhs: root::mozilla::OriginFlags) {
+                self.0 &= rhs.0;
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
+        pub struct OriginFlags(pub u8);
+        /// 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 mDocument: *mut root::nsIDocument,
+            pub mRawSet: root::mozilla::UniquePtr<root::RawServoStyleSet>,
+            pub mSheets: [u64; 8usize],
+            pub mAuthorStyleDisabled: bool,
+            pub mStylistState: root::mozilla::StylistState,
+            pub mUserFontSetUpdateGeneration: u64,
+            pub mNeedsRestyleAfterEnsureUniqueInner: bool,
+            pub mNonInheritingComputedStyles: [u64; 7usize],
+            pub mPostTraversalTasks: root::nsTArray<root::mozilla::PostTraversalTask>,
+            pub mStyleRuleMap: root::mozilla::UniquePtr<root::mozilla::ServoStyleRuleMap>,
+        }
+        pub type ServoStyleSet_SnapshotTable = root::mozilla::ServoElementSnapshotTable;
+        #[test]
+        fn bindgen_test_layout_ServoStyleSet() {
+            assert_eq!(
+                ::std::mem::size_of::<ServoStyleSet>(),
+                176usize,
+                concat!("Size of: ", stringify!(ServoStyleSet))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<ServoStyleSet>(),
+                8usize,
+                concat!("Alignment of ", stringify!(ServoStyleSet))
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<ServoStyleSet>())).mDocument as *const _ as usize },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ServoStyleSet),
+                    "::",
+                    stringify!(mDocument)
+                )
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<ServoStyleSet>())).mRawSet as *const _ as usize },
+                8usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ServoStyleSet),
+                    "::",
+                    stringify!(mRawSet)
+                )
+            );
+            assert_eq!(
+                unsafe { &(*(::std::ptr::null::<ServoStyleSet>())).mSheets as *const _ as usize },
+                16usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ServoStyleSet),
+                    "::",
+                    stringify!(mSheets)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ServoStyleSet>())).mAuthorStyleDisabled as *const _
+                        as usize
+                },
+                80usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ServoStyleSet),
+                    "::",
+                    stringify!(mAuthorStyleDisabled)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ServoStyleSet>())).mStylistState as *const _ as usize
+                },
+                81usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ServoStyleSet),
+                    "::",
+                    stringify!(mStylistState)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ServoStyleSet>())).mUserFontSetUpdateGeneration
+                        as *const _ as usize
+                },
+                88usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ServoStyleSet),
+                    "::",
+                    stringify!(mUserFontSetUpdateGeneration)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ServoStyleSet>())).mNeedsRestyleAfterEnsureUniqueInner
+                        as *const _ as usize
+                },
+                96usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ServoStyleSet),
+                    "::",
+                    stringify!(mNeedsRestyleAfterEnsureUniqueInner)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ServoStyleSet>())).mNonInheritingComputedStyles
+                        as *const _ as usize
+                },
+                104usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ServoStyleSet),
+                    "::",
+                    stringify!(mNonInheritingComputedStyles)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ServoStyleSet>())).mPostTraversalTasks as *const _
+                        as usize
+                },
+                160usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ServoStyleSet),
+                    "::",
+                    stringify!(mPostTraversalTasks)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ServoStyleSet>())).mStyleRuleMap as *const _ as usize
+                },
+                168usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ServoStyleSet),
+                    "::",
+                    stringify!(mStyleRuleMap)
+                )
+            );
+        }
+        pub mod widget {
+            #[allow(unused_imports)]
+            use self::super::super::super::root;
+            /// Contains IMEStatus plus information about the current
+            /// input context that the IME can use as hints if desired.
+            #[repr(C)]
+            #[derive(Debug, Copy)]
+            pub struct IMEState {
+                pub mEnabled: root::mozilla::widget::IMEState_Enabled,
+                pub mOpen: root::mozilla::widget::IMEState_Open,
+            }
+            /// 'Disabled' means the user cannot use IME. So, the IME open state should
+            /// be 'closed' during 'disabled'.
+            pub const IMEState_Enabled_DISABLED: root::mozilla::widget::IMEState_Enabled = 0;
+            /// 'Enabled' means the user can use IME.
+            pub const IMEState_Enabled_ENABLED: root::mozilla::widget::IMEState_Enabled = 1;
+            /// 'Password' state is a special case for the password editors.
+            /// E.g., on mac, the password editors should disable the non-Roman
+            /// keyboard layouts at getting focus. Thus, the password editor may have
+            /// special rules on some platforms.
+            pub const IMEState_Enabled_PASSWORD: root::mozilla::widget::IMEState_Enabled = 2;
+            /// This state is used when a plugin is focused.
+            /// When a plug-in is focused content, we should send native events
+            /// directly. Because we don't process some native events, but they may
+            /// be needed by the plug-in.
+            pub const IMEState_Enabled_PLUGIN: root::mozilla::widget::IMEState_Enabled = 3;
+            /// 'Unknown' is useful when you cache this enum.  So, this shouldn't be
+            /// used with nsIWidget::SetInputContext().
+            pub const IMEState_Enabled_UNKNOWN: root::mozilla::widget::IMEState_Enabled = 4;
+            /// IME enabled states, the mEnabled value of
+            /// SetInputContext()/GetInputContext() should be one value of following
+            /// values.
+            ///
+            /// WARNING: If you change these values, you also need to edit:
+            /// nsIDOMWindowUtils.idl
+            /// nsContentUtils::GetWidgetStatusFromIMEStatus
+            pub type IMEState_Enabled = u32;
+            /// 'Unsupported' means the platform cannot return actual IME open state.
+            /// This value is used only by GetInputContext().
+            pub const IMEState_Open_OPEN_STATE_NOT_SUPPORTED: root::mozilla::widget::IMEState_Open =
+                0;
+            /// 'Don't change' means the widget shouldn't change IME open state when
+            /// SetInputContext() is called.
+            pub const IMEState_Open_DONT_CHANGE_OPEN_STATE: root::mozilla::widget::IMEState_Open =
+                0;
+            /// 'Open' means that IME should compose in its primary language (or latest
+            /// input mode except direct ASCII character input mode).  Even if IME is
+            /// opened by this value, users should be able to close IME by theirselves.
+            /// Web contents can specify this value by |ime-mode: active;|.
+            pub const IMEState_Open_OPEN: root::mozilla::widget::IMEState_Open = 1;
+            /// 'Closed' means that IME shouldn't handle key events (or should handle
+            /// as ASCII character inputs on mobile device).  Even if IME is closed by
+            /// this value, users should be able to open IME by theirselves.
+            /// Web contents can specify this value by |ime-mode: inactive;|.
+            pub const IMEState_Open_CLOSED: root::mozilla::widget::IMEState_Open = 2;
+            /// IME open states the mOpen value of SetInputContext() should be one value of
+            /// OPEN, CLOSE or DONT_CHANGE_OPEN_STATE.  GetInputContext() should return
+            /// OPEN, CLOSE or OPEN_STATE_NOT_SUPPORTED.
+            pub type IMEState_Open = u32;
+            #[test]
+            fn bindgen_test_layout_IMEState() {
+                assert_eq!(
+                    ::std::mem::size_of::<IMEState>(),
+                    8usize,
+                    concat!("Size of: ", stringify!(IMEState))
+                );
+                assert_eq!(
+                    ::std::mem::align_of::<IMEState>(),
+                    4usize,
+                    concat!("Alignment of ", stringify!(IMEState))
+                );
+                assert_eq!(
+                    unsafe { &(*(::std::ptr::null::<IMEState>())).mEnabled as *const _ as usize },
+                    0usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(IMEState),
+                        "::",
+                        stringify!(mEnabled)
+                    )
+                );
+                assert_eq!(
+                    unsafe { &(*(::std::ptr::null::<IMEState>())).mOpen as *const _ as usize },
+                    4usize,
+                    concat!(
+                        "Offset of field: ",
+                        stringify!(IMEState),
+                        "::",
+                        stringify!(mOpen)
+                    )
+                );
+            }
+            impl Clone for IMEState {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+        }
+        pub mod layout {
+            #[allow(unused_imports)]
+            use self::super::super::super::root;
+            pub const FrameChildListID_kPrincipalList: root::mozilla::layout::FrameChildListID = 1;
+            pub const FrameChildListID_kPopupList: root::mozilla::layout::FrameChildListID = 2;
+            pub const FrameChildListID_kCaptionList: root::mozilla::layout::FrameChildListID = 4;
+            pub const FrameChildListID_kColGroupList: root::mozilla::layout::FrameChildListID = 8;
+            pub const FrameChildListID_kSelectPopupList: root::mozilla::layout::FrameChildListID =
+                16;
+            pub const FrameChildListID_kAbsoluteList: root::mozilla::layout::FrameChildListID = 32;
+            pub const FrameChildListID_kFixedList: root::mozilla::layout::FrameChildListID = 64;
+            pub const FrameChildListID_kOverflowList: root::mozilla::layout::FrameChildListID = 128;
+            pub const FrameChildListID_kOverflowContainersList:
+                root::mozilla::layout::FrameChildListID = 256;
+            pub const FrameChildListID_kExcessOverflowContainersList:
+                root::mozilla::layout::FrameChildListID = 512;
+            pub const FrameChildListID_kOverflowOutOfFlowList:
+                root::mozilla::layout::FrameChildListID = 1024;
+            pub const FrameChildListID_kFloatList: root::mozilla::layout::FrameChildListID = 2048;
+            pub const FrameChildListID_kBulletList: root::mozilla::layout::FrameChildListID = 4096;
+            pub const FrameChildListID_kPushedFloatsList: root::mozilla::layout::FrameChildListID =
+                8192;
+            pub const FrameChildListID_kBackdropList: root::mozilla::layout::FrameChildListID =
+                16384;
+            pub const FrameChildListID_kNoReflowPrincipalList:
+                root::mozilla::layout::FrameChildListID = 32768;
+            pub type FrameChildListID = u32;
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct UndisplayedNode {
+            _unused: [u8; 0],
+        }
+        impl Clone for UndisplayedNode {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct ArenaAllocator_ArenaHeader {
+            /// The location in memory of the data portion of the arena.
+            pub offset: usize,
+            /// The location in memory of the end of the data portion of the arena.
+            pub tail: usize,
+        }
+        impl Clone for ArenaAllocator_ArenaHeader {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct ArenaAllocator_ArenaChunk {
+            pub canary: root::mozilla::CorruptionCanary,
+            pub header: root::mozilla::ArenaAllocator_ArenaHeader,
+            pub next: *mut root::mozilla::ArenaAllocator_ArenaChunk,
+        }
+        pub type CSSSize = [u32; 2usize];
+        pub type LayoutDeviceIntPoint = [u32; 2usize];
+        pub type CSSToLayoutDeviceScale = u32;
+        pub type LayoutDeviceToScreenScale = u32;
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct CSSPixel {
+            pub _address: u8,
+        }
+        #[test]
+        fn bindgen_test_layout_CSSPixel() {
+            assert_eq!(
+                ::std::mem::size_of::<CSSPixel>(),
+                1usize,
+                concat!("Size of: ", stringify!(CSSPixel))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<CSSPixel>(),
+                1usize,
+                concat!("Alignment of ", stringify!(CSSPixel))
+            );
+        }
+        impl Clone for CSSPixel {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct LayoutDevicePixel {
+            pub _address: u8,
+        }
+        #[test]
+        fn bindgen_test_layout_LayoutDevicePixel() {
+            assert_eq!(
+                ::std::mem::size_of::<LayoutDevicePixel>(),
+                1usize,
+                concat!("Size of: ", stringify!(LayoutDevicePixel))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<LayoutDevicePixel>(),
+                1usize,
+                concat!("Alignment of ", stringify!(LayoutDevicePixel))
+            );
+        }
+        impl Clone for LayoutDevicePixel {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct ScreenPixel {
+            pub _address: u8,
+        }
+        #[test]
+        fn bindgen_test_layout_ScreenPixel() {
+            assert_eq!(
+                ::std::mem::size_of::<ScreenPixel>(),
+                1usize,
+                concat!("Size of: ", stringify!(ScreenPixel))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<ScreenPixel>(),
+                1usize,
+                concat!("Alignment of ", stringify!(ScreenPixel))
+            );
+        }
+        impl Clone for ScreenPixel {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        pub mod a11y {
+            #[allow(unused_imports)]
+            use self::super::super::super::root;
+            #[repr(C)]
+            #[derive(Debug, Copy)]
+            pub struct DocAccessible {
+                _unused: [u8; 0],
+            }
+            impl Clone for DocAccessible {
+                fn clone(&self) -> Self {
+                    *self
+                }
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct PendingAnimationTracker {
+            _unused: [u8; 0],
+        }
+        impl Clone for PendingAnimationTracker {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug)]
+        pub struct ScrollbarStyles {
+            pub mHorizontal: u8,
+            pub mVertical: u8,
+            pub mScrollBehavior: u8,
+            pub mOverscrollBehaviorX: root::mozilla::StyleOverscrollBehavior,
+            pub mOverscrollBehaviorY: root::mozilla::StyleOverscrollBehavior,
+            pub mScrollSnapTypeX: u8,
+            pub mScrollSnapTypeY: u8,
+            pub mScrollSnapPointsX: root::nsStyleCoord,
+            pub mScrollSnapPointsY: root::nsStyleCoord,
+            pub mScrollSnapDestinationX: root::nsStyleCoord_CalcValue,
+            pub mScrollSnapDestinationY: root::nsStyleCoord_CalcValue,
+        }
+        #[test]
+        fn bindgen_test_layout_ScrollbarStyles() {
+            assert_eq!(
+                ::std::mem::size_of::<ScrollbarStyles>(),
+                64usize,
+                concat!("Size of: ", stringify!(ScrollbarStyles))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<ScrollbarStyles>(),
+                8usize,
+                concat!("Alignment of ", stringify!(ScrollbarStyles))
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ScrollbarStyles>())).mHorizontal as *const _ as usize
+                },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ScrollbarStyles),
+                    "::",
+                    stringify!(mHorizontal)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ScrollbarStyles>())).mVertical as *const _ as usize
+                },
+                1usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ScrollbarStyles),
+                    "::",
+                    stringify!(mVertical)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollBehavior as *const _ as usize
+                },
+                2usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ScrollbarStyles),
+                    "::",
+                    stringify!(mScrollBehavior)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ScrollbarStyles>())).mOverscrollBehaviorX as *const _
+                        as usize
+                },
+                3usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ScrollbarStyles),
+                    "::",
+                    stringify!(mOverscrollBehaviorX)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ScrollbarStyles>())).mOverscrollBehaviorY as *const _
+                        as usize
+                },
+                4usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ScrollbarStyles),
+                    "::",
+                    stringify!(mOverscrollBehaviorY)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapTypeX as *const _
+                        as usize
+                },
+                5usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ScrollbarStyles),
+                    "::",
+                    stringify!(mScrollSnapTypeX)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapTypeY as *const _
+                        as usize
+                },
+                6usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ScrollbarStyles),
+                    "::",
+                    stringify!(mScrollSnapTypeY)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapPointsX as *const _
+                        as usize
+                },
+                8usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ScrollbarStyles),
+                    "::",
+                    stringify!(mScrollSnapPointsX)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapPointsY as *const _
+                        as usize
+                },
+                24usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ScrollbarStyles),
+                    "::",
+                    stringify!(mScrollSnapPointsY)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapDestinationX as *const _
+                        as usize
+                },
+                40usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ScrollbarStyles),
+                    "::",
+                    stringify!(mScrollSnapDestinationX)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<ScrollbarStyles>())).mScrollSnapDestinationY as *const _
+                        as usize
+                },
+                52usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(ScrollbarStyles),
+                    "::",
+                    stringify!(mScrollSnapDestinationY)
+                )
+            );
+        }
+        #[repr(C)]
+        pub struct LangGroupFontPrefs {
+            pub mLangGroup: root::RefPtr<root::nsAtom>,
+            pub mMinimumFontSize: root::nscoord,
+            pub mDefaultVariableFont: root::nsFont,
+            pub mDefaultFixedFont: root::nsFont,
+            pub mDefaultSerifFont: root::nsFont,
+            pub mDefaultSansSerifFont: root::nsFont,
+            pub mDefaultMonospaceFont: root::nsFont,
+            pub mDefaultCursiveFont: root::nsFont,
+            pub mDefaultFantasyFont: root::nsFont,
+            pub mNext: root::nsAutoPtr<root::mozilla::LangGroupFontPrefs>,
+        }
+        #[test]
+        fn bindgen_test_layout_LangGroupFontPrefs() {
+            assert_eq!(
+                ::std::mem::size_of::<LangGroupFontPrefs>(),
+                696usize,
+                concat!("Size of: ", stringify!(LangGroupFontPrefs))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<LangGroupFontPrefs>(),
+                8usize,
+                concat!("Alignment of ", stringify!(LangGroupFontPrefs))
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mLangGroup as *const _ as usize
+                },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LangGroupFontPrefs),
+                    "::",
+                    stringify!(mLangGroup)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mMinimumFontSize as *const _
+                        as usize
+                },
+                8usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LangGroupFontPrefs),
+                    "::",
+                    stringify!(mMinimumFontSize)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultVariableFont as *const _
+                        as usize
+                },
+                16usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LangGroupFontPrefs),
+                    "::",
+                    stringify!(mDefaultVariableFont)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultFixedFont as *const _
+                        as usize
+                },
+                112usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LangGroupFontPrefs),
+                    "::",
+                    stringify!(mDefaultFixedFont)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultSerifFont as *const _
+                        as usize
+                },
+                208usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LangGroupFontPrefs),
+                    "::",
+                    stringify!(mDefaultSerifFont)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultSansSerifFont as *const _
+                        as usize
+                },
+                304usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LangGroupFontPrefs),
+                    "::",
+                    stringify!(mDefaultSansSerifFont)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultMonospaceFont as *const _
+                        as usize
+                },
+                400usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LangGroupFontPrefs),
+                    "::",
+                    stringify!(mDefaultMonospaceFont)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultCursiveFont as *const _
+                        as usize
+                },
+                496usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LangGroupFontPrefs),
+                    "::",
+                    stringify!(mDefaultCursiveFont)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mDefaultFantasyFont as *const _
+                        as usize
+                },
+                592usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LangGroupFontPrefs),
+                    "::",
+                    stringify!(mDefaultFantasyFont)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<LangGroupFontPrefs>())).mNext as *const _ as usize
+                },
+                688usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(LangGroupFontPrefs),
+                    "::",
+                    stringify!(mNext)
+                )
+            );
+        }
+        /// Some functionality that has historically lived on nsPresContext does not
+        /// actually need to be per-document. This singleton class serves as a host
+        /// for that functionality. We delegate to it from nsPresContext where
+        /// appropriate, and use it standalone in some cases as well.
+        #[repr(C)]
+        pub struct StaticPresData {
+            pub mLangService: *mut root::nsLanguageAtomService,
+            pub mBorderWidthTable: [root::nscoord; 3usize],
+            pub mStaticLangGroupFontPrefs: root::mozilla::LangGroupFontPrefs,
+        }
+        #[test]
+        fn bindgen_test_layout_StaticPresData() {
+            assert_eq!(
+                ::std::mem::size_of::<StaticPresData>(),
+                720usize,
+                concat!("Size of: ", stringify!(StaticPresData))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<StaticPresData>(),
+                8usize,
+                concat!("Alignment of ", stringify!(StaticPresData))
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<StaticPresData>())).mLangService as *const _ as usize
+                },
+                0usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(StaticPresData),
+                    "::",
+                    stringify!(mLangService)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<StaticPresData>())).mBorderWidthTable as *const _
+                        as usize
+                },
+                8usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(StaticPresData),
+                    "::",
+                    stringify!(mBorderWidthTable)
+                )
+            );
+            assert_eq!(
+                unsafe {
+                    &(*(::std::ptr::null::<StaticPresData>())).mStaticLangGroupFontPrefs as *const _
+                        as usize
+                },
+                24usize,
+                concat!(
+                    "Offset of field: ",
+                    stringify!(StaticPresData),
+                    "::",
+                    stringify!(mStaticLangGroupFontPrefs)
+                )
+            );
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct AnimationEventDispatcher {
+            _unused: [u8; 0],
+        }
+        impl Clone for AnimationEventDispatcher {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct EventStateManager {
+            _unused: [u8; 0],
+        }
+        impl Clone for EventStateManager {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct RestyleManager {
+            _unused: [u8; 0],
+        }
+        impl Clone for RestyleManager {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
+        #[repr(C)]
         #[derive(Debug)]
         pub struct BindingStyleRule {
             pub _base: root::mozilla::css::Rule,
         }
         #[test]
         fn bindgen_test_layout_BindingStyleRule() {
             assert_eq!(
                 ::std::mem::size_of::<BindingStyleRule>(),
@@ -11178,24 +11231,23 @@ pub mod root {
                 *self
             }
         }
         /// A property-value pair specified on a keyframe.
         #[repr(C)]
         #[derive(Debug)]
         pub struct PropertyValuePair {
             pub mProperty: root::nsCSSPropertyID,
-            pub mValue: root::nsCSSValue,
             pub mServoDeclarationBlock: root::RefPtr<root::RawServoDeclarationBlock>,
         }
         #[test]
         fn bindgen_test_layout_PropertyValuePair() {
             assert_eq!(
                 ::std::mem::size_of::<PropertyValuePair>(),
-                32usize,
+                16usize,
                 concat!("Size of: ", stringify!(PropertyValuePair))
             );
             assert_eq!(
                 ::std::mem::align_of::<PropertyValuePair>(),
                 8usize,
                 concat!("Alignment of ", stringify!(PropertyValuePair))
             );
             assert_eq!(
@@ -11207,32 +11259,20 @@ pub mod root {
                     "Offset of field: ",
                     stringify!(PropertyValuePair),
                     "::",
                     stringify!(mProperty)
                 )
             );
             assert_eq!(
                 unsafe {
-                    &(*(::std::ptr::null::<PropertyValuePair>())).mValue as *const _ as usize
-                },
-                8usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(PropertyValuePair),
-                    "::",
-                    stringify!(mValue)
-                )
-            );
-            assert_eq!(
-                unsafe {
                     &(*(::std::ptr::null::<PropertyValuePair>())).mServoDeclarationBlock as *const _
                         as usize
                 },
-                24usize,
+                8usize,
                 concat!(
                     "Offset of field: ",
                     stringify!(PropertyValuePair),
                     "::",
                     stringify!(mServoDeclarationBlock)
                 )
             );
         }
@@ -11242,17 +11282,17 @@ pub mod root {
         /// corresponds closely to the type of objects returned via the getKeyframes()
         /// API.
         ///
         /// Before computing an output animation value, however, we flatten these frames
         /// down to a series of per-property value arrays where we also resolve any
         /// overlapping shorthands/longhands, convert specified CSS values to computed
         /// values, etc.
         ///
-        /// When the target element or style context changes, however, we rebuild these
+        /// When the target element or computed style changes, however, we rebuild these
         /// per-property arrays from the original list of keyframes objects. As a result,
         /// these objects represent the master definition of the effect's values.
         #[repr(C)]
         #[derive(Debug)]
         pub struct Keyframe {
             pub mOffset: [u64; 2usize],
             pub mComputedOffset: f64,
             pub mTimingFunction: [u64; 18usize],
@@ -11973,70 +12013,147 @@ pub mod root {
             }
         }
         #[repr(C)]
         #[derive(Debug, Copy)]
         pub struct StaticPrefs {
             pub _address: u8,
         }
         extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs41sVarCache_layout_css_font_display_enabledE"]
-            pub static mut StaticPrefs_sVarCache_layout_css_font_display_enabled: bool;
-        }
-        extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs49sVarCache_gfx_font_rendering_opentype_svg_enabledE"]
-            pub static mut StaticPrefs_sVarCache_gfx_font_rendering_opentype_svg_enabled: bool;
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs42sVarCache_full_screen_api_unprefix_enabledE" ] pub static mut StaticPrefs_sVarCache_full_screen_api_unprefix_enabled : bool ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs49sVarCache_gfx_font_rendering_opentype_svg_enabledE" ] pub static mut StaticPrefs_sVarCache_gfx_font_rendering_opentype_svg_enabled : bool ;
+        }
+        extern "C" {
+            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs29sVarCache_html5_offmainthreadE"]
+            pub static mut StaticPrefs_sVarCache_html5_offmainthread: bool;
+        }
+        extern "C" {
+            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs39sVarCache_html5_flushtimer_initialdelayE"]
+            pub static mut StaticPrefs_sVarCache_html5_flushtimer_initialdelay: i32;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs42sVarCache_html5_flushtimer_subsequentdelayE" ] pub static mut StaticPrefs_sVarCache_html5_flushtimer_subsequentdelay : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs41sVarCache_layout_css_font_display_enabledE" ] pub static mut StaticPrefs_sVarCache_layout_css_font_display_enabled : bool ;
         }
         extern "C" {
             #[link_name = "\u{1}_ZN7mozilla11StaticPrefs36sVarCache_layout_css_prefixes_webkitE"]
             pub static mut StaticPrefs_sVarCache_layout_css_prefixes_webkit: bool;
         }
         extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs55sVarCache_layout_css_prefixes_device_pixel_ratio_webkitE"]
-            pub static mut StaticPrefs_sVarCache_layout_css_prefixes_device_pixel_ratio_webkit: bool;
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs55sVarCache_layout_css_prefixes_device_pixel_ratio_webkitE" ] pub static mut StaticPrefs_sVarCache_layout_css_prefixes_device_pixel_ratio_webkit : bool ;
         }
         extern "C" {
             #[link_name = "\u{1}_ZN7mozilla11StaticPrefs39sVarCache_layout_css_prefixes_gradientsE"]
             pub static mut StaticPrefs_sVarCache_layout_css_prefixes_gradients: bool;
         }
         extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs47sVarCache_layout_css_control_characters_visibleE"]
-            pub static mut StaticPrefs_sVarCache_layout_css_control_characters_visible: bool;
-        }
-        extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs42sVarCache_layout_css_frames_timing_enabledE"]
-            pub static mut StaticPrefs_sVarCache_layout_css_frames_timing_enabled: bool;
-        }
-        extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs42sVarCache_full_screen_api_unprefix_enabledE"]
-            pub static mut StaticPrefs_sVarCache_full_screen_api_unprefix_enabled: bool;
-        }
-        extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs42sVarCache_layout_css_visited_links_enabledE"]
-            pub static mut StaticPrefs_sVarCache_layout_css_visited_links_enabled: bool;
-        }
-        extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs49sVarCache_layout_css_moz_document_content_enabledE"]
-            pub static mut StaticPrefs_sVarCache_layout_css_moz_document_content_enabled: bool;
-        }
-        extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs57sVarCache_layout_css_moz_document_url_prefix_hack_enabledE"]
-            pub static mut StaticPrefs_sVarCache_layout_css_moz_document_url_prefix_hack_enabled: bool;
-        }
-        extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs56sVarCache_layout_css_grid_template_subgrid_value_enabledE"]
-            pub static mut StaticPrefs_sVarCache_layout_css_grid_template_subgrid_value_enabled: bool;
-        }
-        extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs44sVarCache_layout_css_font_variations_enabledE"]
-            pub static mut StaticPrefs_sVarCache_layout_css_font_variations_enabled: bool;
-        }
-        extern "C" {
-            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs46sVarCache_layout_css_emulate_moz_box_with_flexE"]
-            pub static mut StaticPrefs_sVarCache_layout_css_emulate_moz_box_with_flex: bool;
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs47sVarCache_layout_css_control_characters_visibleE" ] pub static mut StaticPrefs_sVarCache_layout_css_control_characters_visible : bool ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs42sVarCache_layout_css_frames_timing_enabledE" ] pub static mut StaticPrefs_sVarCache_layout_css_frames_timing_enabled : bool ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs42sVarCache_layout_css_visited_links_enabledE" ] pub static mut StaticPrefs_sVarCache_layout_css_visited_links_enabled : bool ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs49sVarCache_layout_css_moz_document_content_enabledE" ] pub static mut StaticPrefs_sVarCache_layout_css_moz_document_content_enabled : bool ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs57sVarCache_layout_css_moz_document_url_prefix_hack_enabledE" ] pub static mut StaticPrefs_sVarCache_layout_css_moz_document_url_prefix_hack_enabled : bool ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs56sVarCache_layout_css_grid_template_subgrid_value_enabledE" ] pub static mut StaticPrefs_sVarCache_layout_css_grid_template_subgrid_value_enabled : bool ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs44sVarCache_layout_css_font_variations_enabledE" ] pub static mut StaticPrefs_sVarCache_layout_css_font_variations_enabled : bool ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs46sVarCache_layout_css_emulate_moz_box_with_flexE" ] pub static mut StaticPrefs_sVarCache_layout_css_emulate_moz_box_with_flex : bool ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs50sVarCache_network_auth_subresource_http_auth_allowE" ] pub static mut StaticPrefs_sVarCache_network_auth_subresource_http_auth_allow : u32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs67sVarCache_network_auth_subresource_img_cross_origin_http_auth_allowE" ] pub static mut StaticPrefs_sVarCache_network_auth_subresource_img_cross_origin_http_auth_allow : bool ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs74sVarCache_network_auth_non_web_content_triggered_resources_http_auth_allowE" ] pub static mut StaticPrefs_sVarCache_network_auth_non_web_content_triggered_resources_http_auth_allow : bool ;
+        }
+        extern "C" {
+            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs35sVarCache_network_predictor_enabledE"]
+            pub static mut StaticPrefs_sVarCache_network_predictor_enabled: bool;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs47sVarCache_network_predictor_enable_hover_on_sslE" ] pub static mut StaticPrefs_sVarCache_network_predictor_enable_hover_on_ssl : bool ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs43sVarCache_network_predictor_enable_prefetchE" ] pub static mut StaticPrefs_sVarCache_network_predictor_enable_prefetch : bool ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs48sVarCache_network_predictor_page_degradation_dayE" ] pub static mut StaticPrefs_sVarCache_network_predictor_page_degradation_day : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs49sVarCache_network_predictor_page_degradation_weekE" ] pub static mut StaticPrefs_sVarCache_network_predictor_page_degradation_week : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs50sVarCache_network_predictor_page_degradation_monthE" ] pub static mut StaticPrefs_sVarCache_network_predictor_page_degradation_month : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs49sVarCache_network_predictor_page_degradation_yearE" ] pub static mut StaticPrefs_sVarCache_network_predictor_page_degradation_year : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs48sVarCache_network_predictor_page_degradation_maxE" ] pub static mut StaticPrefs_sVarCache_network_predictor_page_degradation_max : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs55sVarCache_network_predictor_subresource_degradation_dayE" ] pub static mut StaticPrefs_sVarCache_network_predictor_subresource_degradation_day : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs56sVarCache_network_predictor_subresource_degradation_weekE" ] pub static mut StaticPrefs_sVarCache_network_predictor_subresource_degradation_week : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs57sVarCache_network_predictor_subresource_degradation_monthE" ] pub static mut StaticPrefs_sVarCache_network_predictor_subresource_degradation_month : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs56sVarCache_network_predictor_subresource_degradation_yearE" ] pub static mut StaticPrefs_sVarCache_network_predictor_subresource_degradation_year : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs55sVarCache_network_predictor_subresource_degradation_maxE" ] pub static mut StaticPrefs_sVarCache_network_predictor_subresource_degradation_max : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs55sVarCache_network_predictor_prefetch_rolling_load_countE" ] pub static mut StaticPrefs_sVarCache_network_predictor_prefetch_rolling_load_count : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs51sVarCache_network_predictor_prefetch_min_confidenceE" ] pub static mut StaticPrefs_sVarCache_network_predictor_prefetch_min_confidence : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs53sVarCache_network_predictor_preconnect_min_confidenceE" ] pub static mut StaticPrefs_sVarCache_network_predictor_preconnect_min_confidence : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs53sVarCache_network_predictor_preresolve_min_confidenceE" ] pub static mut StaticPrefs_sVarCache_network_predictor_preresolve_min_confidence : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs52sVarCache_network_predictor_prefetch_force_valid_forE" ] pub static mut StaticPrefs_sVarCache_network_predictor_prefetch_force_valid_for : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs51sVarCache_network_predictor_max_resources_per_entryE" ] pub static mut StaticPrefs_sVarCache_network_predictor_max_resources_per_entry : i32 ;
+        }
+        extern "C" {
+            # [ link_name = "\u{1}_ZN7mozilla11StaticPrefs42sVarCache_network_predictor_max_uri_lengthE" ] pub static mut StaticPrefs_sVarCache_network_predictor_max_uri_length : u32 ;
+        }
+        extern "C" {
+            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs39sVarCache_network_predictor_doing_testsE"]
+            pub static mut StaticPrefs_sVarCache_network_predictor_doing_tests: bool;
+        }
+        extern "C" {
+            #[link_name = "\u{1}_ZN7mozilla11StaticPrefs37sVarCache_view_source_editor_externalE"]
+            pub static mut StaticPrefs_sVarCache_view_source_editor_external: bool;
         }
         #[test]
         fn bindgen_test_layout_StaticPrefs() {
             assert_eq!(
                 ::std::mem::size_of::<StaticPrefs>(),
                 1usize,
                 concat!("Size of: ", stringify!(StaticPrefs))
             );
@@ -12932,49 +13049,16 @@ pub mod root {
                 concat!(
                     "Offset of field: ",
                     stringify!(ServoMediaList),
                     "::",
                     stringify!(mRawList)
                 )
             );
         }
-        pub const OriginFlags_UserAgent: root::mozilla::OriginFlags = root::mozilla::OriginFlags(1);
-        pub const OriginFlags_User: root::mozilla::OriginFlags = root::mozilla::OriginFlags(2);
-        pub const OriginFlags_Author: root::mozilla::OriginFlags = root::mozilla::OriginFlags(4);
-        pub const OriginFlags_All: root::mozilla::OriginFlags = root::mozilla::OriginFlags(7);
-        impl ::std::ops::BitOr<root::mozilla::OriginFlags> for root::mozilla::OriginFlags {
-            type Output = Self;
-            #[inline]
-            fn bitor(self, other: Self) -> Self {
-                OriginFlags(self.0 | other.0)
-            }
-        }
-        impl ::std::ops::BitOrAssign for root::mozilla::OriginFlags {
-            #[inline]
-            fn bitor_assign(&mut self, rhs: root::mozilla::OriginFlags) {
-                self.0 |= rhs.0;
-            }
-        }
-        impl ::std::ops::BitAnd<root::mozilla::OriginFlags> for root::mozilla::OriginFlags {
-            type Output = Self;
-            #[inline]
-            fn bitand(self, other: Self) -> Self {
-                OriginFlags(self.0 & other.0)
-            }
-        }
-        impl ::std::ops::BitAndAssign for root::mozilla::OriginFlags {
-            #[inline]
-            fn bitand_assign(&mut self, rhs: root::mozilla::OriginFlags) {
-                self.0 &= rhs.0;
-            }
-        }
-        #[repr(C)]
-        #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
-        pub struct OriginFlags(pub u8);
         #[repr(C)]
         #[derive(Debug)]
         pub struct CachedInheritingStyles {
             pub mBits: usize,
         }
         pub type CachedInheritingStyles_IndirectCache = [u64; 6usize];
         #[test]
         fn bindgen_test_layout_CachedInheritingStyles() {
@@ -12998,27 +13082,27 @@ pub mod root {
                     stringify!(CachedInheritingStyles),
                     "::",
                     stringify!(mBits)
                 )
             );
         }
         /// A ComputedStyle represents the computed style data for an element.  The
         /// computed style data are stored in a set of structs (see nsStyleStruct.h) that
-        /// are cached either on the style context or in the rule tree (see nsRuleNode.h
+        /// are cached either on the ComputedStyle or in the rule tree (see nsRuleNode.h
         /// for a description of this caching and how the cached structs are shared).
         ///
         /// Since the data in |nsIStyleRule|s and |nsRuleNode|s are immutable (with a few
         /// exceptions, like system color changes), the data in an ComputedStyle are also
         /// immutable (with the additional exception of GetUniqueStyleData).  When style
-        /// data change, ElementRestyler::Restyle creates a new style context.
+        /// data change, ElementRestyler::Restyle creates a new ComputedStyle.
         ///
         /// ComputedStyles are reference counted. References are generally held by:
-        /// 1. the |nsIFrame|s that are using the style context and
-        /// 2. any *child* style contexts (this might be the reverse of
+        /// 1. the |nsIFrame|s that are using the ComputedStyle and
+        /// 2. any *child* ComputedStyle (this might be the reverse of
         /// expectation, but it makes sense in this case)
         ///
         /// FIXME(emilio): This comment is somewhat outdated now.
         #[repr(C)]
         pub struct ComputedStyle {
             pub mPresContext: *mut root::nsPresContext,
             pub mSource: root::ServoComputedData,
             pub mCachedInheritingStyles: root::mozilla::CachedInheritingStyles,
@@ -13095,17 +13179,16 @@ pub mod root {
                 )
             );
         }
         #[repr(C)]
         #[derive(Debug, Copy)]
         pub struct DeclarationBlock {
             pub mContainer: root::mozilla::DeclarationBlock__bindgen_ty_1,
             pub mImmutable: bool,
-            pub mType: root::mozilla::StyleBackendType,
             pub mIsDirty: u32,
         }
         #[repr(C)]
         #[derive(Debug, Copy)]
         pub struct DeclarationBlock__bindgen_ty_1 {
             pub mRaw: root::__BindgenUnionField<usize>,
             pub mOwningRule: root::__BindgenUnionField<*mut root::mozilla::css::Rule>,
             pub mHTMLCSSStyleSheet: root::__BindgenUnionField<*mut root::nsHTMLCSSStyleSheet>,
@@ -13200,26 +13283,16 @@ pub mod root {
                 concat!(
                     "Offset of field: ",
                     stringify!(DeclarationBlock),
                     "::",
                     stringify!(mImmutable)
                 )
             );
             assert_eq!(
-                unsafe { &(*(::std::ptr::null::<DeclarationBlock>())).mType as *const _ as usize },
-                9usize,
-                concat!(
-                    "Offset of field: ",
-                    stringify!(DeclarationBlock),
-                    "::",
-                    stringify!(mType)
-                )
-            );
-            assert_eq!(
                 unsafe {
                     &(*(::std::ptr::null::<DeclarationBlock>())).mIsDirty as *const _ as usize
                 },
                 12usize,
                 concat!(
                     "Offset of field: ",
                     stringify!(DeclarationBlock),
                     "::",
@@ -13373,16 +13446,39 @@ pub mod root {
                 )
             );
         }
         impl Clone for ServoTraversalStatistics {
             fn clone(&self) -> Self {
                 *self
             }
         }
+        #[repr(C)]
+        #[derive(Debug, Copy)]
+        pub struct SeenPtrs {
+            pub _bindgen_opaque_blob: [u64; 4usize],
+        }
+        #[test]
+        fn bindgen_test_layout_SeenPtrs() {
+            assert_eq!(
+                ::std::mem::size_of::<SeenPtrs>(),
+                32usize,
+                concat!("Size of: ", stringify!(SeenPtrs))
+            );
+            assert_eq!(
+                ::std::mem::align_of::<SeenPtrs>(),
+                8usize,
+                concat!("Alignment of ", stringify!(SeenPtrs))
+            );
+        }
+        impl Clone for SeenPtrs {
+            fn clone(&self) -> Self {
+                *self
+            }
+        }
         pub mod intl {
             #[allow(unused_imports)]
             use self::super::super::super::root;
             #[repr(C)]
             #[derive(Debug)]
             pub struct LineBreaker {
                 pub mRefCnt: root::nsAutoRefCnt,
             }
@@ -13443,16 +13539,20 @@ pub mod root {
                         stringify!(WordBreaker),
                         "::",
                         stringify!(mRefCnt)
                     )
                 );
             }
         }
     }
+    pub mod __gnu_cxx {
+        #[allow(unused_imports)]
+        use self::super::super::root;
+    }
     #[repr(C)]
     #[derive(Debug, Copy)]
     pub struct InfallibleAllocPolicy {
         pub _address: u8,
     }
     #[test]
     fn bindgen_test_layout_InfallibleAllocPolicy() {
         assert_eq!(
@@ -13985,26 +14085,16 @@ pub mod root {
         NS_SUCCESS_RESTART_APP_NOT_SAME_PROFILE = 7864323,
         NS_SUCCESS_UNORM_NOTFOUND = 7864337,
         NS_ERROR_NOT_IN_TREE = 2155348006,
         NS_OK_NO_NAME_CLAUSE_HANDLED = 7864354,
         NS_ERROR_BLOCKED_BY_POLICY = 2155347971,
     }
     pub type nsrefcnt = root::MozRefCountType;
     #[repr(C)]
-    #[derive(Debug, Copy)]
-    pub struct nsIFrame {
-        _unused: [u8; 0],
-    }
-    impl Clone for nsIFrame {
-        fn clone(&self) -> Self {
-            *self
-        }
-    }
-    #[repr(C)]
     #[derive(Debug)]
     pub struct RefPtr<T> {
         pub mRawPtr: *mut T,
         pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>,
     }
     pub type RefPtr_element_type<T> = T;
     #[repr(C)]
     #[derive(Debug, Copy, Clone)]
@@ -16266,17 +16356,17 @@ pub mod root {
     pub const nsChangeHint_nsChangeHint_UpdateTextPath: root::nsChangeHint =
         root::nsChangeHint(524288);
     /// This will schedule an invalidating paint. This is useful if something
     /// has changed which will be invalidated by DLBI.
     pub const nsChangeHint_nsChangeHint_SchedulePaint: root::nsChangeHint =
         root::nsChangeHint(1048576);
     /// A hint reflecting that style data changed with no change handling
     /// behavior.  We need to return this, rather than nsChangeHint(0),
-    /// so that certain optimizations that manipulate the style context tree are
+    /// so that certain optimizations that manipulate the style tree are
     /// correct.
     ///
     /// nsChangeHint_NeutralChange must be returned by CalcDifference on a given
     /// style struct if the data in the style structs are meaningfully different
     /// and if no other change hints are returned.  If any other change hints are
     /// set, then nsChangeHint_NeutralChange need not also be included, but it is
     /// safe to do so.  (An example of style structs having non-meaningfully
     /// different data would be cached information that would be re-calculated
@@ -16412,27 +16502,242 @@ pub mod root {
     #[repr(C)]
     /// |nsRestyleHint| is a bitfield for the result of
     /// |HasStateDependentStyle| and |HasAttributeDependentStyle|.  When no
     /// restyling is necessary, use |nsRestyleHint(0)|.
     ///
     /// Without eRestyle_Force or eRestyle_ForceDescendants, the restyling process
     /// can stop processing at a frame when it detects no style changes and it is
     /// known that the styles of the subtree beneath it will not change, leaving
-    /// the old style context on the frame.  eRestyle_Force can be used to skip this
-    /// optimization on a frame, and to force its new style context to be used.
+    /// the old ComputedStyle on the frame.  eRestyle_Force can be used to skip this
+    /// optimization on a frame, and to force its new ComputedStyle to be used.
     ///
     /// Similarly, eRestyle_ForceDescendants will cause the frame and all of its
-    /// descendants to be traversed and for the new style contexts that are created
+    /// descendants to be traversed and for the new ComputedStyles that are created
     /// to be set on the frames.
     ///
     /// NOTE: When adding new restyle hints, please also add them to
     /// RestyleManager::RestyleHintToString.
     #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
     pub struct nsRestyleHint(pub u32);
+    #[repr(C)]
+    #[derive(Debug, Copy)]
+    pub struct nsTimingFunction {
+        pub mType: root::nsTimingFunction_Type,
+        pub __bindgen_anon_1: root::nsTimingFunction__bindgen_ty_1,
+    }
+    #[repr(i32)]
+    #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
+    pub enum nsTimingFunction_Type {
+        Ease = 0,
+        Linear = 1,
+        EaseIn = 2,
+        EaseOut = 3,
+        EaseInOut = 4,
+        StepStart = 5,
+        StepEnd = 6,
+        CubicBezier = 7,
+        Frames = 8,
+    }
+    pub const nsTimingFunction_Keyword_Implicit: root::nsTimingFunction_Keyword = 0;
+    pub const nsTimingFunction_Keyword_Explicit: root::nsTimingFunction_Keyword = 1;
+    pub type nsTimingFunction_Keyword = i32;
+    #[repr(C)]
+    #[derive(Debug, Copy)]
+    pub struct nsTimingFunction__bindgen_ty_1 {
+        pub mFunc: root::__BindgenUnionField<root::nsTimingFunction__bindgen_ty_1__bindgen_ty_1>,
+        pub __bindgen_anon_1:
+            root::__BindgenUnionField<root::nsTimingFunction__bindgen_ty_1__bindgen_ty_2>,
+        pub bindgen_union_field: [u32; 4usize],
+    }
+    #[repr(C)]
+    #[derive(Debug, Copy)]
+    pub struct nsTimingFunction__bindgen_ty_1__bindgen_ty_1 {
+        pub mX1: f32,
+        pub mY1: f32,
+        pub mX2: f32,
+        pub mY2: f32,
+    }
+    #[test]
+    fn bindgen_test_layout_nsTimingFunction__bindgen_ty_1__bindgen_ty_1() {
+        assert_eq!(
+            ::std::mem::size_of::<nsTimingFunction__bindgen_ty_1__bindgen_ty_1>(),
+            16usize,
+            concat!(
+                "Size of: ",
+                stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_1)
+            )
+        );
+        assert_eq!(
+            ::std::mem::align_of::<nsTimingFunction__bindgen_ty_1__bindgen_ty_1>(),
+            4usize,
+            concat!(
+                "Alignment of ",
+                stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_1)
+            )
+        );
+        assert_eq!(
+            unsafe {
+                &(*(::std::ptr::null::<nsTimingFunction__bindgen_ty_1__bindgen_ty_1>())).mX1
+                    as *const _ as usize
+            },
+            0usize,
+            concat!(
+                "Offset of field: ",
+                stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_1),
+                "::",
+                stringify!(mX1)
+            )
+        );
+        assert_eq!(
+            unsafe {
+                &(*(::std::ptr::null::<nsTimingFunction__bindgen_ty_1__bindgen_ty_1>())).mY1
+                    as *const _ as usize
+            },
+            4usize,
+            concat!(
+                "Offset of field: ",
+                stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_1),
+                "::",
+                stringify!(mY1)
+            )
+        );
+        assert_eq!(
+            unsafe {
+                &(*(::std::ptr::null::<nsTimingFunction__bindgen_ty_1__bindgen_ty_1>())).mX2
+                    as *const _ as usize
+            },
+            8usize,
+            concat!(
+                "Offset of field: ",
+                stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_1),
+                "::",
+                stringify!(mX2)
+            )
+        );
+        assert_eq!(
+            unsafe {
+                &(*(::std::ptr::null::<nsTimingFunction__bindgen_ty_1__bindgen_ty_1>())).mY2
+                    as *const _ as usize
+            },
+            12usize,
+            concat!(
+                "Offset of field: ",
+                stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_1),
+                "::",
+                stringify!(mY2)
+            )
+        );
+    }
+    impl Clone for nsTimingFunction__bindgen_ty_1__bindgen_ty_1 {
+        fn clone(&self) -> Self {
+            *self
+        }
+    }
+    #[repr(C)]
+    #[derive(Debug, Copy)]
+    pub struct nsTimingFunction__bindgen_ty_1__bindgen_ty_2 {
+        pub mStepsOrFrames: u32,
+    }
+    #[test]
+    fn bindgen_test_layout_nsTimingFunction__bindgen_ty_1__bindgen_ty_2() {
+        assert_eq!(
+            ::std::mem::size_of::<nsTimingFunction__bindgen_ty_1__bindgen_ty_2>(),
+            4usize,
+            concat!(
+                "Size of: ",
+                stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_2)
+            )
+        );
+        assert_eq!(
+            ::std::mem::align_of::<nsTimingFunction__bindgen_ty_1__bindgen_ty_2>(),
+            4usize,
+            concat!(
+                "Alignment of ",
+                stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_2)
+            )
+        );
+        assert_eq!(
+            unsafe {
+                &(*(::std::ptr::null::<nsTimingFunction__bindgen_ty_1__bindgen_ty_2>()))
+                    .mStepsOrFrames as *const _ as usize
+            },
+            0usize,
+            concat!(
+                "Offset of field: ",
+                stringify!(nsTimingFunction__bindgen_ty_1__bindgen_ty_2),
+                "::",
+                stringify!(mStepsOrFrames)
+            )
+        );
+    }
+    impl Clone for nsTimingFunction__bindgen_ty_1__bindgen_ty_2 {
+        fn clone(&self) -> Self {
+            *self
+        }
+    }
+    #[test]
+    fn bindgen_test_layout_nsTimingFunction__bindgen_ty_1() {
+        assert_eq!(
+            ::std::mem::size_of::<nsTimingFunction__bindgen_ty_1>(),
+            16usize,
+            concat!("Size of: ", stringify!(nsTimingFunction__bindgen_ty_1))
+        );
+        assert_eq!(
+            ::std::mem::align_of::<nsTimingFunction__bindgen_ty_1>(),
+            4usize,
+            concat!("Alignment of ", stringify!(nsTimingFunction__bindgen_ty_1))
+        );
+        assert_eq!(
+            unsafe {
+                &(*(::std::ptr::null::<nsTimingFunction__bindgen_ty_1>())).mFunc as *const _
+                    as usize
+            },
+            0usize,
+            concat!(
+                "Offset of field: ",
+                stringify!(nsTimingFunction__bindgen_ty_1),
+                "::",
+                stringify!(mFunc)
+            )
+        );
+    }
+    impl Clone for nsTimingFunction__bindgen_ty_1 {
+        fn clone(&self) -> Self {
+            *self
+        }
+    }
+    #[test]
+    fn bindgen_test_layout_nsTimingFunction() {
+        assert_eq!(
+            ::std::mem::size_of::<nsTimingFunction>(),
+            20usize,
+            concat!("Size of: ", stringify!(nsTimingFunction))
+        );
+        assert_eq!(
+            ::std::mem::align_of::<nsTimingFunction>(),
+            4usize,
+            concat!("Alignment of ", stringify!(nsTimingFunction))
+        );
+        assert_eq!(
+            unsafe { &(*(::std::ptr::null::<nsTimingFunction>())).mType as *const _ as usize },
+            0usize,
+            concat!(
+                "Offset of field: ",
+                stringify!(nsTimingFunction),
+                "::",
+                stringify!(mType)
+            )
+        );
+    }
+    impl Clone for nsTimingFunction {
+        fn clone(&self) -> Self {
+            *self
+        }
+    }
     /// Factors implementation for all template versions of nsCOMPtr.
     ///
     /// Here's the way people normally do things like this:
     ///
     /// template<class T> class Foo { ... };
     /// template<> class Foo<void*> { ... };
     /// template<class T> class Foo<T*> : private Foo<void*> { ... };
     #[repr(C)]
@@ -16812,60 +17117,16 @@ pub mod root {
                 "Offset of field: ",
                 stringify!(ServoComputedData),
                 "::",
                 stringify!(visited_style)
             )
         );
     }
     #[repr(C)]
-    #[derive(Debug, Copy)]
-    pub struct ProfilerBacktrace {
-        _unused: [u8; 0],
-    }
-    impl Clone for ProfilerBacktrace {
-        fn clone(&self) -> Self {
-            *self
-        }
-    }
-    #[repr(C)]
-    #[derive(Debug, Copy)]
-    pub struct ProfilerMarkerPayload {
-        _unused: [u8; 0],
-    }
-    impl Clone for ProfilerMarkerPayload {
-        fn clone(&self) -> Self {
-            *self
-        }
-    }
-    #[repr(C)]
-    #[derive(Debug, Copy)]
-    pub struct ProfilerBacktraceDestructor {
-        pub _address: u8,
-    }
-    #[test]
-    fn bindgen_test_layout_ProfilerBacktraceDestructor() {
-        assert_eq!(
-            ::std::mem::size_of::<ProfilerBacktraceDestructor>(),
-            1usize,
-            concat!("Size of: ", stringify!(ProfilerBacktraceDestructor))
-        );
-        assert_eq!(
-            ::std::mem::align_of::<ProfilerBacktraceDestructor>(),
-            1usize,
-            concat!("Alignment of ", stringify!(ProfilerBacktraceDestructor))
-        );
-    }
-    impl Clone for ProfilerBacktraceDestructor {
-        fn clone(&self) -> Self {
-            *self
-        }
-    }
-    pub type UniqueProfilerBacktrace = root::mozilla::UniquePtr<root::ProfilerBacktrace>;
-    #[repr(C)]
     #[derive(Debug)]
     pub struct nsAutoPtr<T> {
         pub mRawPtr: *mut T,
         pub _phantom_0: ::std::marker::PhantomData<::std::cell::UnsafeCell<T>>,
     }
     #[repr(C)]
     #[derive(Debug, Copy, Clone)]
     pub struct nsAutoPtr_Ptr<T> {
@@ -17034,17 +17295,22 @@ pub mod root {
         assert_eq!(
             ::std::mem::align_of::<nsStaticAtom>(),
             4usize,
             concat!("Alignment of ", stringify!(nsStaticAtom))
         );
         assert_eq!(
             unsafe { &(*(::std::ptr::null::<nsStaticAtom>())).mStringOffset as *const _ as usize },
             8usize,
-            concat!("Offset of field: ", stringify!(nsStaticAtom), "::", stringify!(mString))
+            concat!(
+                "Offset of field: ",
+                stringify!(nsStaticAtom),
+                "::",
+                stringify!(mStringOffset)
+            )
         );
     }
     #[repr(C)]
     #[derive(Debug)]
     pub struct nsDynamicAtom {
         pub _base: root::nsAtom,
         pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt,
         pub mString: *const u16,
@@ -17059,515 +17325,33 @@ pub mod root {
         assert_eq!(
             ::std::mem::align_of::<nsDynamicAtom>(),
             8usize,
             concat!("Alignment of ", stringify!(nsDynamicAtom))
         );
         assert_eq!(
             unsafe { &(*(::std::ptr::null::<nsDynamicAtom>())).mRefCnt as *const _ as usize },
             8usize,
-            concat!("Offset of field: ", stringify!(nsDynamicAtom), "::", stringify!(mRefCnt))
+            concat!(
+                "Offset of field: ",
+                stringify!(nsDynamicAtom),
+                "::",
+                stringify!(mRefCnt)
+            )
         );
         assert_eq!(
             unsafe { &(*(::std::ptr::null::<nsDynamicAtom>())).mString as *const _ as usize },
             16usize,