Use Servo data to back @counter-style rule.

This commit is contained in:
Xidorn Quan 2018-04-05 08:43:55 +10:00
parent 32cd0b4ea0
commit 80ab893e3a
12 changed files with 18158 additions and 18132 deletions

View file

@ -10,12 +10,12 @@ use Atom;
use cssparser::{AtRuleParser, DeclarationListParser, DeclarationParser}; use cssparser::{AtRuleParser, DeclarationListParser, DeclarationParser};
use cssparser::{Parser, Token, CowRcStr, SourceLocation}; use cssparser::{Parser, Token, CowRcStr, SourceLocation};
use error_reporting::{ContextualParseError, ParseErrorReporter}; 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 parser::{ParserContext, ParserErrorContext, Parse};
use selectors::parser::SelectorParseErrorKind; use selectors::parser::SelectorParseErrorKind;
use shared_lock::{SharedRwLockReadGuard, ToCssWithGuard}; use shared_lock::{SharedRwLockReadGuard, ToCssWithGuard};
use std::fmt::{self, Write}; use std::fmt::{self, Write};
use std::mem;
use std::num::Wrapping;
use std::ops::Range; use std::ops::Range;
use str::CssStringWriter; use str::CssStringWriter;
use style_traits::{Comma, CssWriter, OneOrMoreSeparated, ParseError}; use style_traits::{Comma, CssWriter, OneOrMoreSeparated, ParseError};
@ -55,13 +55,17 @@ pub fn parse_counter_style_name<'i, 't>(
include!("predefined.rs") 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 /// Parse the prelude of an @counter-style rule
pub fn parse_counter_style_name_definition<'i, 't>( pub fn parse_counter_style_name_definition<'i, 't>(
input: &mut Parser<'i, 't> input: &mut Parser<'i, 't>
) -> Result<CustomIdent, ParseError<'i>> { ) -> Result<CustomIdent, ParseError<'i>> {
parse_counter_style_name(input) parse_counter_style_name(input)
.and_then(|ident| { .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)) Err(input.new_custom_error(StyleParseErrorKind::UnspecifiedError))
} else { } else {
Ok(ident) Ok(ident)
@ -143,14 +147,24 @@ impl<'a, 'b, 'i> AtRuleParser<'i> for CounterStyleRuleParser<'a, 'b> {
type Error = StyleParseErrorKind<'i>; type Error = StyleParseErrorKind<'i>;
} }
macro_rules! checker {
($self:ident._($value:ident)) => {};
($self:ident.$checker:ident($value:ident)) => {
if !$self.$checker(&$value) {
return false;
}
};
}
macro_rules! counter_style_descriptors { macro_rules! counter_style_descriptors {
( (
$( #[$doc: meta] $name: tt $ident: ident / $gecko_ident: ident: $ty: ty, )+ $( #[$doc: meta] $name: tt $ident: ident / $setter: ident [$checker: tt]: $ty: ty, )+
) => { ) => {
/// An @counter-style rule /// An @counter-style rule
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct CounterStyleRuleData { pub struct CounterStyleRuleData {
name: CustomIdent, name: CustomIdent,
generation: Wrapping<u32>,
$( $(
#[$doc] #[$doc]
$ident: Option<$ty>, $ident: Option<$ty>,
@ -163,6 +177,7 @@ macro_rules! counter_style_descriptors {
fn empty(name: CustomIdent, source_location: SourceLocation) -> Self { fn empty(name: CustomIdent, source_location: SourceLocation) -> Self {
CounterStyleRuleData { CounterStyleRuleData {
name: name, name: name,
generation: Wrapping(0),
$( $(
$ident: None, $ident: None,
)+ )+
@ -170,20 +185,6 @@ macro_rules! counter_style_descriptors {
} }
} }
/// Get the name of the counter style rule.
pub fn name(&self) -> &CustomIdent {
&self.name
}
/// 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,
}
}
$( $(
#[$doc] #[$doc]
pub fn $ident(&self) -> Option<&$ty> { pub fn $ident(&self) -> Option<&$ty> {
@ -191,15 +192,15 @@ macro_rules! counter_style_descriptors {
} }
)+ )+
/// Convert to Gecko types $(
#[cfg(feature = "gecko")] #[$doc]
pub fn set_descriptors(self, descriptors: &mut CounterStyleDescriptors) { pub fn $setter(&mut self, value: $ty) -> bool {
$( checker!(self.$checker(value));
if let Some(value) = self.$ident { self.$ident = Some(value);
descriptors[nsCSSCounterDesc::$gecko_ident as usize].set_from(value) self.generation += Wrapping(1);
} true
)* }
} )+
} }
impl<'a, 'b, 'i> DeclarationParser<'i> for CounterStyleRuleParser<'a, 'b> { impl<'a, 'b, 'i> DeclarationParser<'i> for CounterStyleRuleParser<'a, 'b> {
@ -240,63 +241,96 @@ macro_rules! counter_style_descriptors {
dest.write_str("}") 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! { counter_style_descriptors! {
/// <https://drafts.csswg.org/css-counter-styles/#counter-style-system> /// <https://drafts.csswg.org/css-counter-styles/#counter-style-system>
"system" system / eCSSCounterDesc_System: System, "system" system / set_system [check_system]: System,
/// <https://drafts.csswg.org/css-counter-styles/#counter-style-negative> /// <https://drafts.csswg.org/css-counter-styles/#counter-style-negative>
"negative" negative / eCSSCounterDesc_Negative: Negative, "negative" negative / set_negative [_]: Negative,
/// <https://drafts.csswg.org/css-counter-styles/#counter-style-prefix> /// <https://drafts.csswg.org/css-counter-styles/#counter-style-prefix>
"prefix" prefix / eCSSCounterDesc_Prefix: Symbol, "prefix" prefix / set_prefix [_]: Symbol,
/// <https://drafts.csswg.org/css-counter-styles/#counter-style-suffix> /// <https://drafts.csswg.org/css-counter-styles/#counter-style-suffix>
"suffix" suffix / eCSSCounterDesc_Suffix: Symbol, "suffix" suffix / set_suffix [_]: Symbol,
/// <https://drafts.csswg.org/css-counter-styles/#counter-style-range> /// <https://drafts.csswg.org/css-counter-styles/#counter-style-range>
"range" range / eCSSCounterDesc_Range: Ranges, "range" range / set_range [_]: Ranges,
/// <https://drafts.csswg.org/css-counter-styles/#counter-style-pad> /// <https://drafts.csswg.org/css-counter-styles/#counter-style-pad>
"pad" pad / eCSSCounterDesc_Pad: Pad, "pad" pad / set_pad [_]: Pad,
/// <https://drafts.csswg.org/css-counter-styles/#counter-style-fallback> /// <https://drafts.csswg.org/css-counter-styles/#counter-style-fallback>
"fallback" fallback / eCSSCounterDesc_Fallback: Fallback, "fallback" fallback / set_fallback [_]: Fallback,
/// <https://drafts.csswg.org/css-counter-styles/#descdef-counter-style-symbols> /// <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> /// <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> /// <https://drafts.csswg.org/css-counter-styles/#counter-style-speak-as>
"speak-as" speak_as / eCSSCounterDesc_SpeakAs: SpeakAs, "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> /// <https://drafts.csswg.org/css-counter-styles/#counter-style-system>

View file

@ -8,7 +8,7 @@
#![allow(non_snake_case, missing_docs)] #![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::{RawServoKeyframe, RawServoKeyframesRule, RawServoSupportsRule};
use gecko_bindings::bindings::{RawServoMediaRule, RawServoNamespaceRule, RawServoPageRule}; use gecko_bindings::bindings::{RawServoMediaRule, RawServoNamespaceRule, RawServoPageRule};
use gecko_bindings::bindings::{RawServoRuleNode, RawServoRuleNodeStrong, RawServoDocumentRule}; use gecko_bindings::bindings::{RawServoRuleNode, RawServoRuleNodeStrong, RawServoDocumentRule};
@ -23,8 +23,9 @@ use rule_tree::StrongRuleNode;
use servo_arc::{Arc, ArcBorrow}; use servo_arc::{Arc, ArcBorrow};
use shared_lock::Locked; use shared_lock::Locked;
use std::{mem, ptr}; use std::{mem, ptr};
use stylesheets::{CssRules, StylesheetContents, StyleRule, ImportRule, KeyframesRule, MediaRule}; use stylesheets::{CssRules, CounterStyleRule, FontFaceRule, FontFeatureValuesRule};
use stylesheets::{FontFaceRule, FontFeatureValuesRule, NamespaceRule, PageRule, SupportsRule, DocumentRule}; use stylesheets::{ImportRule, KeyframesRule, MediaRule, StylesheetContents, StyleRule};
use stylesheets::{NamespaceRule, PageRule, SupportsRule, DocumentRule};
use stylesheets::keyframes_rule::Keyframe; use stylesheets::keyframes_rule::Keyframe;
macro_rules! impl_arc_ffi { macro_rules! impl_arc_ffi {
@ -94,6 +95,9 @@ impl_arc_ffi!(Locked<FontFeatureValuesRule> => RawServoFontFeatureValuesRule
impl_arc_ffi!(Locked<FontFaceRule> => RawServoFontFaceRule impl_arc_ffi!(Locked<FontFaceRule> => RawServoFontFaceRule
[Servo_FontFaceRule_AddRef, Servo_FontFaceRule_Release]); [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. // RuleNode is a Arc-like type but it does not use Arc.
impl StrongRuleNode { impl StrongRuleNode {

View file

@ -90,8 +90,6 @@ cfg_if! {
pub static nsGkAtoms_action: *mut nsStaticAtom; pub static nsGkAtoms_action: *mut nsStaticAtom;
#[link_name = "_ZN9nsGkAtoms6activeE"] #[link_name = "_ZN9nsGkAtoms6activeE"]
pub static nsGkAtoms_active: *mut nsStaticAtom; pub static nsGkAtoms_active: *mut nsStaticAtom;
#[link_name = "_ZN9nsGkAtoms19activetitlebarcolorE"]
pub static nsGkAtoms_activetitlebarcolor: *mut nsStaticAtom;
#[link_name = "_ZN9nsGkAtoms13activateontabE"] #[link_name = "_ZN9nsGkAtoms13activateontabE"]
pub static nsGkAtoms_activateontab: *mut nsStaticAtom; pub static nsGkAtoms_activateontab: *mut nsStaticAtom;
#[link_name = "_ZN9nsGkAtoms7actuateE"] #[link_name = "_ZN9nsGkAtoms7actuateE"]
@ -1088,8 +1086,6 @@ cfg_if! {
pub static nsGkAtoms_implements: *mut nsStaticAtom; pub static nsGkAtoms_implements: *mut nsStaticAtom;
#[link_name = "_ZN9nsGkAtoms6importE"] #[link_name = "_ZN9nsGkAtoms6importE"]
pub static nsGkAtoms_import: *mut nsStaticAtom; pub static nsGkAtoms_import: *mut nsStaticAtom;
#[link_name = "_ZN9nsGkAtoms21inactivetitlebarcolorE"]
pub static nsGkAtoms_inactivetitlebarcolor: *mut nsStaticAtom;
#[link_name = "_ZN9nsGkAtoms7includeE"] #[link_name = "_ZN9nsGkAtoms7includeE"]
pub static nsGkAtoms_include: *mut nsStaticAtom; pub static nsGkAtoms_include: *mut nsStaticAtom;
#[link_name = "_ZN9nsGkAtoms8includesE"] #[link_name = "_ZN9nsGkAtoms8includesE"]
@ -5128,10 +5124,22 @@ cfg_if! {
pub static nsCSSPseudoElements_placeholder: *mut nsICSSPseudoElement; pub static nsCSSPseudoElements_placeholder: *mut nsICSSPseudoElement;
#[link_name = "_ZN19nsCSSPseudoElements14mozColorSwatchE"] #[link_name = "_ZN19nsCSSPseudoElements14mozColorSwatchE"]
pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement; pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement;
#[link_name = "_ZN14nsCSSAnonBoxes7mozTextE"]
pub static nsCSSAnonBoxes_mozText: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes14oofPlaceholderE"] #[link_name = "_ZN14nsCSSAnonBoxes14oofPlaceholderE"]
pub static nsCSSAnonBoxes_oofPlaceholder: *mut nsICSSAnonBoxPseudo; 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 = "_ZN14nsCSSAnonBoxes23firstLetterContinuationE"] #[link_name = "_ZN14nsCSSAnonBoxes23firstLetterContinuationE"]
pub static nsCSSAnonBoxes_firstLetterContinuation: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_firstLetterContinuation: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes27mozBlockInsideInlineWrapperE"] #[link_name = "_ZN14nsCSSAnonBoxes27mozBlockInsideInlineWrapperE"]
@ -5140,10 +5148,6 @@ cfg_if! {
pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes20mozXULAnonymousBlockE"] #[link_name = "_ZN14nsCSSAnonBoxes20mozXULAnonymousBlockE"]
pub static nsCSSAnonBoxes_mozXULAnonymousBlock: *mut nsICSSAnonBoxPseudo; 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"] #[link_name = "_ZN14nsCSSAnonBoxes12mozLineFrameE"]
pub static nsCSSAnonBoxes_mozLineFrame: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_mozLineFrame: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes13buttonContentE"] #[link_name = "_ZN14nsCSSAnonBoxes13buttonContentE"]
@ -5154,8 +5158,6 @@ cfg_if! {
pub static nsCSSAnonBoxes_dropDownList: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_dropDownList: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes15fieldsetContentE"] #[link_name = "_ZN14nsCSSAnonBoxes15fieldsetContentE"]
pub static nsCSSAnonBoxes_fieldsetContent: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_fieldsetContent: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes13framesetBlankE"]
pub static nsCSSAnonBoxes_framesetBlank: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes30mozDisplayComboboxControlFrameE"] #[link_name = "_ZN14nsCSSAnonBoxes30mozDisplayComboboxControlFrameE"]
pub static nsCSSAnonBoxes_mozDisplayComboboxControlFrame: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_mozDisplayComboboxControlFrame: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes17htmlCanvasContentE"] #[link_name = "_ZN14nsCSSAnonBoxes17htmlCanvasContentE"]
@ -5166,10 +5168,6 @@ cfg_if! {
pub static nsCSSAnonBoxes_table: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_table: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes9tableCellE"] #[link_name = "_ZN14nsCSSAnonBoxes9tableCellE"]
pub static nsCSSAnonBoxes_tableCell: *mut nsICSSAnonBoxPseudo; 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"] #[link_name = "_ZN14nsCSSAnonBoxes12tableWrapperE"]
pub static nsCSSAnonBoxes_tableWrapper: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_tableWrapper: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes13tableRowGroupE"] #[link_name = "_ZN14nsCSSAnonBoxes13tableRowGroupE"]
@ -5178,8 +5176,6 @@ cfg_if! {
pub static nsCSSAnonBoxes_tableRow: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_tableRow: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes6canvasE"] #[link_name = "_ZN14nsCSSAnonBoxes6canvasE"]
pub static nsCSSAnonBoxes_canvas: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_canvas: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes9pageBreakE"]
pub static nsCSSAnonBoxes_pageBreak: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes4pageE"] #[link_name = "_ZN14nsCSSAnonBoxes4pageE"]
pub static nsCSSAnonBoxes_page: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_page: *mut nsICSSAnonBoxPseudo;
#[link_name = "_ZN14nsCSSAnonBoxes11pageContentE"] #[link_name = "_ZN14nsCSSAnonBoxes11pageContentE"]
@ -5315,8 +5311,6 @@ cfg_if! {
pub static nsGkAtoms_action: *mut nsStaticAtom; pub static nsGkAtoms_action: *mut nsStaticAtom;
#[link_name = "?active@nsGkAtoms@@2PEAVnsStaticAtom@@EA"] #[link_name = "?active@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
pub static nsGkAtoms_active: *mut nsStaticAtom; pub static nsGkAtoms_active: *mut nsStaticAtom;
#[link_name = "?activetitlebarcolor@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
pub static nsGkAtoms_activetitlebarcolor: *mut nsStaticAtom;
#[link_name = "?activateontab@nsGkAtoms@@2PEAVnsStaticAtom@@EA"] #[link_name = "?activateontab@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
pub static nsGkAtoms_activateontab: *mut nsStaticAtom; pub static nsGkAtoms_activateontab: *mut nsStaticAtom;
#[link_name = "?actuate@nsGkAtoms@@2PEAVnsStaticAtom@@EA"] #[link_name = "?actuate@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
@ -6313,8 +6307,6 @@ cfg_if! {
pub static nsGkAtoms_implements: *mut nsStaticAtom; pub static nsGkAtoms_implements: *mut nsStaticAtom;
#[link_name = "?import@nsGkAtoms@@2PEAVnsStaticAtom@@EA"] #[link_name = "?import@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
pub static nsGkAtoms_import: *mut nsStaticAtom; pub static nsGkAtoms_import: *mut nsStaticAtom;
#[link_name = "?inactivetitlebarcolor@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
pub static nsGkAtoms_inactivetitlebarcolor: *mut nsStaticAtom;
#[link_name = "?include@nsGkAtoms@@2PEAVnsStaticAtom@@EA"] #[link_name = "?include@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
pub static nsGkAtoms_include: *mut nsStaticAtom; pub static nsGkAtoms_include: *mut nsStaticAtom;
#[link_name = "?includes@nsGkAtoms@@2PEAVnsStaticAtom@@EA"] #[link_name = "?includes@nsGkAtoms@@2PEAVnsStaticAtom@@EA"]
@ -10353,10 +10345,22 @@ cfg_if! {
pub static nsCSSPseudoElements_placeholder: *mut nsICSSPseudoElement; pub static nsCSSPseudoElements_placeholder: *mut nsICSSPseudoElement;
#[link_name = "?mozColorSwatch@nsCSSPseudoElements@@2PEAVnsICSSPseudoElement@@EA"] #[link_name = "?mozColorSwatch@nsCSSPseudoElements@@2PEAVnsICSSPseudoElement@@EA"]
pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement; pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement;
#[link_name = "?mozText@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_mozText: *mut nsICSSAnonBoxPseudo;
#[link_name = "?oofPlaceholder@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?oofPlaceholder@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_oofPlaceholder: *mut nsICSSAnonBoxPseudo; 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 = "?firstLetterContinuation@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?firstLetterContinuation@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_firstLetterContinuation: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_firstLetterContinuation: *mut nsICSSAnonBoxPseudo;
#[link_name = "?mozBlockInsideInlineWrapper@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?mozBlockInsideInlineWrapper@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
@ -10365,10 +10369,6 @@ cfg_if! {
pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo;
#[link_name = "?mozXULAnonymousBlock@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?mozXULAnonymousBlock@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_mozXULAnonymousBlock: *mut nsICSSAnonBoxPseudo; 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"] #[link_name = "?mozLineFrame@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_mozLineFrame: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_mozLineFrame: *mut nsICSSAnonBoxPseudo;
#[link_name = "?buttonContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?buttonContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
@ -10379,8 +10379,6 @@ cfg_if! {
pub static nsCSSAnonBoxes_dropDownList: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_dropDownList: *mut nsICSSAnonBoxPseudo;
#[link_name = "?fieldsetContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?fieldsetContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_fieldsetContent: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_fieldsetContent: *mut nsICSSAnonBoxPseudo;
#[link_name = "?framesetBlank@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_framesetBlank: *mut nsICSSAnonBoxPseudo;
#[link_name = "?mozDisplayComboboxControlFrame@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?mozDisplayComboboxControlFrame@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_mozDisplayComboboxControlFrame: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_mozDisplayComboboxControlFrame: *mut nsICSSAnonBoxPseudo;
#[link_name = "?htmlCanvasContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?htmlCanvasContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
@ -10391,10 +10389,6 @@ cfg_if! {
pub static nsCSSAnonBoxes_table: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_table: *mut nsICSSAnonBoxPseudo;
#[link_name = "?tableCell@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?tableCell@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_tableCell: *mut nsICSSAnonBoxPseudo; 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"] #[link_name = "?tableWrapper@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_tableWrapper: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_tableWrapper: *mut nsICSSAnonBoxPseudo;
#[link_name = "?tableRowGroup@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?tableRowGroup@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
@ -10403,8 +10397,6 @@ cfg_if! {
pub static nsCSSAnonBoxes_tableRow: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_tableRow: *mut nsICSSAnonBoxPseudo;
#[link_name = "?canvas@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?canvas@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_canvas: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_canvas: *mut nsICSSAnonBoxPseudo;
#[link_name = "?pageBreak@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_pageBreak: *mut nsICSSAnonBoxPseudo;
#[link_name = "?page@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?page@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
pub static nsCSSAnonBoxes_page: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_page: *mut nsICSSAnonBoxPseudo;
#[link_name = "?pageContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"] #[link_name = "?pageContent@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
@ -10540,8 +10532,6 @@ cfg_if! {
pub static nsGkAtoms_action: *mut nsStaticAtom; pub static nsGkAtoms_action: *mut nsStaticAtom;
#[link_name = "\x01?active@nsGkAtoms@@2PAVnsStaticAtom@@A"] #[link_name = "\x01?active@nsGkAtoms@@2PAVnsStaticAtom@@A"]
pub static nsGkAtoms_active: *mut nsStaticAtom; 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"] #[link_name = "\x01?activateontab@nsGkAtoms@@2PAVnsStaticAtom@@A"]
pub static nsGkAtoms_activateontab: *mut nsStaticAtom; pub static nsGkAtoms_activateontab: *mut nsStaticAtom;
#[link_name = "\x01?actuate@nsGkAtoms@@2PAVnsStaticAtom@@A"] #[link_name = "\x01?actuate@nsGkAtoms@@2PAVnsStaticAtom@@A"]
@ -11538,8 +11528,6 @@ cfg_if! {
pub static nsGkAtoms_implements: *mut nsStaticAtom; pub static nsGkAtoms_implements: *mut nsStaticAtom;
#[link_name = "\x01?import@nsGkAtoms@@2PAVnsStaticAtom@@A"] #[link_name = "\x01?import@nsGkAtoms@@2PAVnsStaticAtom@@A"]
pub static nsGkAtoms_import: *mut nsStaticAtom; 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"] #[link_name = "\x01?include@nsGkAtoms@@2PAVnsStaticAtom@@A"]
pub static nsGkAtoms_include: *mut nsStaticAtom; pub static nsGkAtoms_include: *mut nsStaticAtom;
#[link_name = "\x01?includes@nsGkAtoms@@2PAVnsStaticAtom@@A"] #[link_name = "\x01?includes@nsGkAtoms@@2PAVnsStaticAtom@@A"]
@ -15578,10 +15566,22 @@ cfg_if! {
pub static nsCSSPseudoElements_placeholder: *mut nsICSSPseudoElement; pub static nsCSSPseudoElements_placeholder: *mut nsICSSPseudoElement;
#[link_name = "\x01?mozColorSwatch@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"] #[link_name = "\x01?mozColorSwatch@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"]
pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement; pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement;
#[link_name = "\x01?mozText@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
pub static nsCSSAnonBoxes_mozText: *mut nsICSSAnonBoxPseudo;
#[link_name = "\x01?oofPlaceholder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] #[link_name = "\x01?oofPlaceholder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
pub static nsCSSAnonBoxes_oofPlaceholder: *mut nsICSSAnonBoxPseudo; 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?firstLetterContinuation@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] #[link_name = "\x01?firstLetterContinuation@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
pub static nsCSSAnonBoxes_firstLetterContinuation: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_firstLetterContinuation: *mut nsICSSAnonBoxPseudo;
#[link_name = "\x01?mozBlockInsideInlineWrapper@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] #[link_name = "\x01?mozBlockInsideInlineWrapper@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
@ -15590,10 +15590,6 @@ cfg_if! {
pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo;
#[link_name = "\x01?mozXULAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] #[link_name = "\x01?mozXULAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
pub static nsCSSAnonBoxes_mozXULAnonymousBlock: *mut nsICSSAnonBoxPseudo; 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"] #[link_name = "\x01?mozLineFrame@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
pub static nsCSSAnonBoxes_mozLineFrame: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_mozLineFrame: *mut nsICSSAnonBoxPseudo;
#[link_name = "\x01?buttonContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] #[link_name = "\x01?buttonContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
@ -15604,8 +15600,6 @@ cfg_if! {
pub static nsCSSAnonBoxes_dropDownList: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_dropDownList: *mut nsICSSAnonBoxPseudo;
#[link_name = "\x01?fieldsetContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] #[link_name = "\x01?fieldsetContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
pub static nsCSSAnonBoxes_fieldsetContent: *mut nsICSSAnonBoxPseudo; 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"] #[link_name = "\x01?mozDisplayComboboxControlFrame@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
pub static nsCSSAnonBoxes_mozDisplayComboboxControlFrame: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_mozDisplayComboboxControlFrame: *mut nsICSSAnonBoxPseudo;
#[link_name = "\x01?htmlCanvasContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] #[link_name = "\x01?htmlCanvasContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
@ -15616,10 +15610,6 @@ cfg_if! {
pub static nsCSSAnonBoxes_table: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_table: *mut nsICSSAnonBoxPseudo;
#[link_name = "\x01?tableCell@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] #[link_name = "\x01?tableCell@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
pub static nsCSSAnonBoxes_tableCell: *mut nsICSSAnonBoxPseudo; 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"] #[link_name = "\x01?tableWrapper@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
pub static nsCSSAnonBoxes_tableWrapper: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_tableWrapper: *mut nsICSSAnonBoxPseudo;
#[link_name = "\x01?tableRowGroup@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] #[link_name = "\x01?tableRowGroup@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
@ -15628,8 +15618,6 @@ cfg_if! {
pub static nsCSSAnonBoxes_tableRow: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_tableRow: *mut nsICSSAnonBoxPseudo;
#[link_name = "\x01?canvas@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] #[link_name = "\x01?canvas@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
pub static nsCSSAnonBoxes_canvas: *mut nsICSSAnonBoxPseudo; 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"] #[link_name = "\x01?page@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
pub static nsCSSAnonBoxes_page: *mut nsICSSAnonBoxPseudo; pub static nsCSSAnonBoxes_page: *mut nsICSSAnonBoxPseudo;
#[link_name = "\x01?pageContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"] #[link_name = "\x01?pageContent@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
@ -15768,8 +15756,6 @@ macro_rules! atom {
{{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_action as *mut _) } }}; {{ #[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") => ("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 _) } }}; {{ #[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") => ("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 _) } }}; {{ #[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") => ("actuate") =>
@ -16766,8 +16752,6 @@ macro_rules! atom {
{{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_implements as *mut _) } }}; {{ #[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") => ("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 _) } }}; {{ #[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") => ("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 _) } }}; {{ #[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") => ("includes") =>
@ -20806,10 +20790,22 @@ macro_rules! atom {
{{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSPseudoElements_placeholder as *mut _) } }}; {{ #[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") => (":-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 _) } }}; {{ #[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-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") => (":-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 _) } }}; {{ #[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-first-letter-continuation") => (":-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 _) } }}; {{ #[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") => (":-moz-block-inside-inline-wrapper") =>
@ -20818,10 +20814,6 @@ macro_rules! atom {
{{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozMathMLAnonymousBlock as *mut _) } }}; {{ #[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") => (":-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 _) } }}; {{ #[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") => (":-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 _) } }}; {{ #[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") => (":-moz-button-content") =>
@ -20832,8 +20824,6 @@ macro_rules! atom {
{{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_dropDownList as *mut _) } }}; {{ #[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") => (":-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 _) } }}; {{ #[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") => (":-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 _) } }}; {{ #[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") => (":-moz-html-canvas-content") =>
@ -20844,10 +20834,6 @@ macro_rules! atom {
{{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_table as *mut _) } }}; {{ #[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") => (":-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 _) } }}; {{ #[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") => (":-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 _) } }}; {{ #[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") => (":-moz-table-row-group") =>
@ -20856,8 +20842,6 @@ macro_rules! atom {
{{ #[allow(unsafe_code)] #[allow(unused_unsafe)]unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_tableRow as *mut _) } }}; {{ #[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") => (":-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 _) } }}; {{ #[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") => (":-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 _) } }}; {{ #[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") => (":-moz-pagecontent") =>

View file

@ -76,7 +76,6 @@ use gecko_bindings::structs::StyleShapeSource;
use gecko_bindings::structs::StyleTransition; use gecko_bindings::structs::StyleTransition;
use gecko_bindings::structs::gfxFontFeatureValueSet; use gecko_bindings::structs::gfxFontFeatureValueSet;
use gecko_bindings::structs::nsCSSCounterDesc; use gecko_bindings::structs::nsCSSCounterDesc;
use gecko_bindings::structs::nsCSSCounterStyleRule;
use gecko_bindings::structs::nsCSSFontDesc; use gecko_bindings::structs::nsCSSFontDesc;
use gecko_bindings::structs::nsCSSKeyword; use gecko_bindings::structs::nsCSSKeyword;
use gecko_bindings::structs::nsCSSPropertyID; use gecko_bindings::structs::nsCSSPropertyID;
@ -433,6 +432,11 @@ pub struct RawServoRuleNode(RawServoRuleNodeVoid);
pub type RawServoFontFaceRuleStrong = ::gecko_bindings::sugar::ownership::Strong<RawServoFontFaceRule>; pub type RawServoFontFaceRuleStrong = ::gecko_bindings::sugar::ownership::Strong<RawServoFontFaceRule>;
pub type RawServoFontFaceRuleBorrowed<'a> = &'a RawServoFontFaceRule; pub type RawServoFontFaceRuleBorrowed<'a> = &'a RawServoFontFaceRule;
pub type RawServoFontFaceRuleBorrowedOrNull<'a> = Option<&'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" { extern "C" {
pub fn Gecko_EnsureTArrayCapacity( pub fn Gecko_EnsureTArrayCapacity(
@ -550,6 +554,12 @@ extern "C" {
extern "C" { extern "C" {
pub fn Servo_FontFaceRule_Release(ptr: RawServoFontFaceRuleBorrowed); 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" { extern "C" {
pub fn Servo_StyleSet_Drop(ptr: RawServoStyleSetOwned); pub fn Servo_StyleSet_Drop(ptr: RawServoStyleSetOwned);
} }
@ -1572,26 +1582,6 @@ extern "C" {
len: *mut u32, len: *mut u32,
) -> *const ::std::os::raw::c_char; ) -> *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" { extern "C" {
pub fn Gecko_IsDocumentBody(element: RawGeckoElementBorrowed) -> bool; pub fn Gecko_IsDocumentBody(element: RawGeckoElementBorrowed) -> bool;
} }
@ -2140,7 +2130,7 @@ extern "C" {
pub fn Servo_StyleSet_GetCounterStyleRule( pub fn Servo_StyleSet_GetCounterStyleRule(
set: RawServoStyleSetBorrowed, set: RawServoStyleSetBorrowed,
name: *mut nsAtom, name: *mut nsAtom,
) -> *mut nsCSSCounterStyleRule; ) -> *const RawServoCounterStyleRule;
} }
extern "C" { extern "C" {
pub fn Servo_StyleSet_BuildFontFeatureValueSet( pub fn Servo_StyleSet_BuildFontFeatureValueSet(
@ -2473,7 +2463,21 @@ extern "C" {
pub fn Servo_CssRules_GetCounterStyleRuleAt( pub fn Servo_CssRules_GetCounterStyleRuleAt(
rules: ServoCssRulesBorrowed, rules: ServoCssRulesBorrowed,
index: u32, 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" { extern "C" {
pub fn Servo_StyleRule_GetStyle( pub fn Servo_StyleRule_GetStyle(
@ -2675,6 +2679,56 @@ extern "C" {
desc: nsCSSFontDesc, 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" { extern "C" {
pub fn Servo_ParseProperty( pub fn Servo_ParseProperty(
property: nsCSSPropertyID, property: nsCSSPropertyID,
@ -3317,17 +3371,6 @@ extern "C" {
result: *mut RawGeckoGfxMatrix4x4, result: *mut RawGeckoGfxMatrix4x4,
) -> bool; ) -> 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" { extern "C" {
pub fn Servo_ParseFontShorthandForMatching( pub fn Servo_ParseFontShorthandForMatching(
value: *const nsAString, value: *const nsAString,
@ -3341,6 +3384,9 @@ extern "C" {
extern "C" { extern "C" {
pub fn Servo_Property_IsShorthand(name: *const nsACString, found: *mut bool) -> bool; 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" { extern "C" {
pub fn Gecko_CreateCSSErrorReporter( pub fn Gecko_CreateCSSErrorReporter(
sheet: *mut ServoStyleSheet, sheet: *mut ServoStyleSheet,

View file

@ -55,10 +55,22 @@ pub enum PseudoElement {
Placeholder, Placeholder,
/// :-moz-color-swatch /// :-moz-color-swatch
MozColorSwatch, MozColorSwatch,
/// :-moz-text
MozText,
/// :-moz-oof-placeholder /// :-moz-oof-placeholder
OofPlaceholder, 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-first-letter-continuation /// :-moz-first-letter-continuation
FirstLetterContinuation, FirstLetterContinuation,
/// :-moz-block-inside-inline-wrapper /// :-moz-block-inside-inline-wrapper
@ -67,10 +79,6 @@ pub enum PseudoElement {
MozMathMLAnonymousBlock, MozMathMLAnonymousBlock,
/// :-moz-xul-anonymous-block /// :-moz-xul-anonymous-block
MozXULAnonymousBlock, MozXULAnonymousBlock,
/// :-moz-hframeset-border
HorizontalFramesetBorder,
/// :-moz-vframeset-border
VerticalFramesetBorder,
/// :-moz-line-frame /// :-moz-line-frame
MozLineFrame, MozLineFrame,
/// :-moz-button-content /// :-moz-button-content
@ -81,8 +89,6 @@ pub enum PseudoElement {
DropDownList, DropDownList,
/// :-moz-fieldset-content /// :-moz-fieldset-content
FieldsetContent, FieldsetContent,
/// :-moz-frameset-blank
FramesetBlank,
/// :-moz-display-comboboxcontrol-frame /// :-moz-display-comboboxcontrol-frame
MozDisplayComboboxControlFrame, MozDisplayComboboxControlFrame,
/// :-moz-html-canvas-content /// :-moz-html-canvas-content
@ -93,10 +99,6 @@ pub enum PseudoElement {
Table, Table,
/// :-moz-table-cell /// :-moz-table-cell
TableCell, TableCell,
/// :-moz-table-column-group
TableColGroup,
/// :-moz-table-column
TableCol,
/// :-moz-table-wrapper /// :-moz-table-wrapper
TableWrapper, TableWrapper,
/// :-moz-table-row-group /// :-moz-table-row-group
@ -105,8 +107,6 @@ pub enum PseudoElement {
TableRow, TableRow,
/// :-moz-canvas /// :-moz-canvas
Canvas, Canvas,
/// :-moz-pagebreak
PageBreak,
/// :-moz-page /// :-moz-page
Page, Page,
/// :-moz-pagecontent /// :-moz-pagecontent
@ -229,32 +229,32 @@ impl PseudoElement {
PseudoElement::MozPlaceholder => atom!(":-moz-placeholder"), PseudoElement::MozPlaceholder => atom!(":-moz-placeholder"),
PseudoElement::Placeholder => atom!(":placeholder"), PseudoElement::Placeholder => atom!(":placeholder"),
PseudoElement::MozColorSwatch => atom!(":-moz-color-swatch"), PseudoElement::MozColorSwatch => atom!(":-moz-color-swatch"),
PseudoElement::MozText => atom!(":-moz-text"),
PseudoElement::OofPlaceholder => atom!(":-moz-oof-placeholder"), 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::FirstLetterContinuation => atom!(":-moz-first-letter-continuation"), PseudoElement::FirstLetterContinuation => atom!(":-moz-first-letter-continuation"),
PseudoElement::MozBlockInsideInlineWrapper => atom!(":-moz-block-inside-inline-wrapper"), PseudoElement::MozBlockInsideInlineWrapper => atom!(":-moz-block-inside-inline-wrapper"),
PseudoElement::MozMathMLAnonymousBlock => atom!(":-moz-mathml-anonymous-block"), PseudoElement::MozMathMLAnonymousBlock => atom!(":-moz-mathml-anonymous-block"),
PseudoElement::MozXULAnonymousBlock => atom!(":-moz-xul-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::MozLineFrame => atom!(":-moz-line-frame"),
PseudoElement::ButtonContent => atom!(":-moz-button-content"), PseudoElement::ButtonContent => atom!(":-moz-button-content"),
PseudoElement::CellContent => atom!(":-moz-cell-content"), PseudoElement::CellContent => atom!(":-moz-cell-content"),
PseudoElement::DropDownList => atom!(":-moz-dropdown-list"), PseudoElement::DropDownList => atom!(":-moz-dropdown-list"),
PseudoElement::FieldsetContent => atom!(":-moz-fieldset-content"), PseudoElement::FieldsetContent => atom!(":-moz-fieldset-content"),
PseudoElement::FramesetBlank => atom!(":-moz-frameset-blank"),
PseudoElement::MozDisplayComboboxControlFrame => atom!(":-moz-display-comboboxcontrol-frame"), PseudoElement::MozDisplayComboboxControlFrame => atom!(":-moz-display-comboboxcontrol-frame"),
PseudoElement::HtmlCanvasContent => atom!(":-moz-html-canvas-content"), PseudoElement::HtmlCanvasContent => atom!(":-moz-html-canvas-content"),
PseudoElement::InlineTable => atom!(":-moz-inline-table"), PseudoElement::InlineTable => atom!(":-moz-inline-table"),
PseudoElement::Table => atom!(":-moz-table"), PseudoElement::Table => atom!(":-moz-table"),
PseudoElement::TableCell => atom!(":-moz-table-cell"), 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::TableWrapper => atom!(":-moz-table-wrapper"),
PseudoElement::TableRowGroup => atom!(":-moz-table-row-group"), PseudoElement::TableRowGroup => atom!(":-moz-table-row-group"),
PseudoElement::TableRow => atom!(":-moz-table-row"), PseudoElement::TableRow => atom!(":-moz-table-row"),
PseudoElement::Canvas => atom!(":-moz-canvas"), PseudoElement::Canvas => atom!(":-moz-canvas"),
PseudoElement::PageBreak => atom!(":-moz-pagebreak"),
PseudoElement::Page => atom!(":-moz-page"), PseudoElement::Page => atom!(":-moz-page"),
PseudoElement::PageContent => atom!(":-moz-pagecontent"), PseudoElement::PageContent => atom!(":-moz-pagecontent"),
PseudoElement::PageSequence => atom!(":-moz-page-sequence"), PseudoElement::PageSequence => atom!(":-moz-page-sequence"),
@ -318,32 +318,32 @@ impl PseudoElement {
PseudoElement::MozPlaceholder => 22, PseudoElement::MozPlaceholder => 22,
PseudoElement::Placeholder => 23, PseudoElement::Placeholder => 23,
PseudoElement::MozColorSwatch => 24, PseudoElement::MozColorSwatch => 24,
PseudoElement::MozText => 25, PseudoElement::OofPlaceholder => 25,
PseudoElement::OofPlaceholder => 26, PseudoElement::HorizontalFramesetBorder => 26,
PseudoElement::FirstLetterContinuation => 27, PseudoElement::VerticalFramesetBorder => 27,
PseudoElement::MozBlockInsideInlineWrapper => 28, PseudoElement::FramesetBlank => 28,
PseudoElement::MozMathMLAnonymousBlock => 29, PseudoElement::TableColGroup => 29,
PseudoElement::MozXULAnonymousBlock => 30, PseudoElement::TableCol => 30,
PseudoElement::HorizontalFramesetBorder => 31, PseudoElement::PageBreak => 31,
PseudoElement::VerticalFramesetBorder => 32, PseudoElement::MozText => 32,
PseudoElement::MozLineFrame => 33, PseudoElement::FirstLetterContinuation => 33,
PseudoElement::ButtonContent => 34, PseudoElement::MozBlockInsideInlineWrapper => 34,
PseudoElement::CellContent => 35, PseudoElement::MozMathMLAnonymousBlock => 35,
PseudoElement::DropDownList => 36, PseudoElement::MozXULAnonymousBlock => 36,
PseudoElement::FieldsetContent => 37, PseudoElement::MozLineFrame => 37,
PseudoElement::FramesetBlank => 38, PseudoElement::ButtonContent => 38,
PseudoElement::MozDisplayComboboxControlFrame => 39, PseudoElement::CellContent => 39,
PseudoElement::HtmlCanvasContent => 40, PseudoElement::DropDownList => 40,
PseudoElement::InlineTable => 41, PseudoElement::FieldsetContent => 41,
PseudoElement::Table => 42, PseudoElement::MozDisplayComboboxControlFrame => 42,
PseudoElement::TableCell => 43, PseudoElement::HtmlCanvasContent => 43,
PseudoElement::TableColGroup => 44, PseudoElement::InlineTable => 44,
PseudoElement::TableCol => 45, PseudoElement::Table => 45,
PseudoElement::TableWrapper => 46, PseudoElement::TableCell => 46,
PseudoElement::TableRowGroup => 47, PseudoElement::TableWrapper => 47,
PseudoElement::TableRow => 48, PseudoElement::TableRowGroup => 48,
PseudoElement::Canvas => 49, PseudoElement::TableRow => 49,
PseudoElement::PageBreak => 50, PseudoElement::Canvas => 50,
PseudoElement::Page => 51, PseudoElement::Page => 51,
PseudoElement::PageContent => 52, PseudoElement::PageContent => 52,
PseudoElement::PageSequence => 53, PseudoElement::PageSequence => 53,
@ -472,32 +472,32 @@ impl PseudoElement {
#[inline] #[inline]
pub fn is_anon_box(&self) -> bool { pub fn is_anon_box(&self) -> bool {
match *self { match *self {
PseudoElement::MozText => true,
PseudoElement::OofPlaceholder => true, 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::FirstLetterContinuation => true, PseudoElement::FirstLetterContinuation => true,
PseudoElement::MozBlockInsideInlineWrapper => true, PseudoElement::MozBlockInsideInlineWrapper => true,
PseudoElement::MozMathMLAnonymousBlock => true, PseudoElement::MozMathMLAnonymousBlock => true,
PseudoElement::MozXULAnonymousBlock => true, PseudoElement::MozXULAnonymousBlock => true,
PseudoElement::HorizontalFramesetBorder => true,
PseudoElement::VerticalFramesetBorder => true,
PseudoElement::MozLineFrame => true, PseudoElement::MozLineFrame => true,
PseudoElement::ButtonContent => true, PseudoElement::ButtonContent => true,
PseudoElement::CellContent => true, PseudoElement::CellContent => true,
PseudoElement::DropDownList => true, PseudoElement::DropDownList => true,
PseudoElement::FieldsetContent => true, PseudoElement::FieldsetContent => true,
PseudoElement::FramesetBlank => true,
PseudoElement::MozDisplayComboboxControlFrame => true, PseudoElement::MozDisplayComboboxControlFrame => true,
PseudoElement::HtmlCanvasContent => true, PseudoElement::HtmlCanvasContent => true,
PseudoElement::InlineTable => true, PseudoElement::InlineTable => true,
PseudoElement::Table => true, PseudoElement::Table => true,
PseudoElement::TableCell => true, PseudoElement::TableCell => true,
PseudoElement::TableColGroup => true,
PseudoElement::TableCol => true,
PseudoElement::TableWrapper => true, PseudoElement::TableWrapper => true,
PseudoElement::TableRowGroup => true, PseudoElement::TableRowGroup => true,
PseudoElement::TableRow => true, PseudoElement::TableRow => true,
PseudoElement::Canvas => true, PseudoElement::Canvas => true,
PseudoElement::PageBreak => true,
PseudoElement::Page => true, PseudoElement::Page => true,
PseudoElement::PageContent => true, PseudoElement::PageContent => true,
PseudoElement::PageSequence => true, PseudoElement::PageSequence => true,
@ -613,10 +613,22 @@ impl PseudoElement {
structs::SERVO_CSS_PSEUDO_ELEMENT_FLAGS_placeholder, structs::SERVO_CSS_PSEUDO_ELEMENT_FLAGS_placeholder,
PseudoElement::MozColorSwatch => PseudoElement::MozColorSwatch =>
structs::SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozColorSwatch, structs::SERVO_CSS_PSEUDO_ELEMENT_FLAGS_mozColorSwatch,
PseudoElement::MozText =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::OofPlaceholder => PseudoElement::OofPlaceholder =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, 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::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 => PseudoElement::FirstLetterContinuation =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::MozBlockInsideInlineWrapper => PseudoElement::MozBlockInsideInlineWrapper =>
@ -625,10 +637,6 @@ impl PseudoElement {
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::MozXULAnonymousBlock => PseudoElement::MozXULAnonymousBlock =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, 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 => PseudoElement::MozLineFrame =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::ButtonContent => PseudoElement::ButtonContent =>
@ -639,8 +647,6 @@ impl PseudoElement {
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::FieldsetContent => PseudoElement::FieldsetContent =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::FramesetBlank =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::MozDisplayComboboxControlFrame => PseudoElement::MozDisplayComboboxControlFrame =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::HtmlCanvasContent => PseudoElement::HtmlCanvasContent =>
@ -651,10 +657,6 @@ impl PseudoElement {
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::TableCell => PseudoElement::TableCell =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, 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 => PseudoElement::TableWrapper =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::TableRowGroup => PseudoElement::TableRowGroup =>
@ -663,8 +665,6 @@ impl PseudoElement {
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::Canvas => PseudoElement::Canvas =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::PageBreak =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::Page => PseudoElement::Page =>
structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS, structs::CSS_PSEUDO_ELEMENT_ENABLED_IN_UA_SHEETS,
PseudoElement::PageContent => PseudoElement::PageContent =>
@ -844,32 +844,32 @@ impl PseudoElement {
PseudoElement::MozPlaceholder => CSSPseudoElementType::mozPlaceholder, PseudoElement::MozPlaceholder => CSSPseudoElementType::mozPlaceholder,
PseudoElement::Placeholder => CSSPseudoElementType::placeholder, PseudoElement::Placeholder => CSSPseudoElementType::placeholder,
PseudoElement::MozColorSwatch => CSSPseudoElementType::mozColorSwatch, PseudoElement::MozColorSwatch => CSSPseudoElementType::mozColorSwatch,
PseudoElement::MozText => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::OofPlaceholder => CSSPseudoElementType::NonInheritingAnonBox, 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::FirstLetterContinuation => CSSPseudoElementType_InheritingAnonBox, PseudoElement::FirstLetterContinuation => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::MozBlockInsideInlineWrapper => CSSPseudoElementType_InheritingAnonBox, PseudoElement::MozBlockInsideInlineWrapper => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::MozMathMLAnonymousBlock => CSSPseudoElementType_InheritingAnonBox, PseudoElement::MozMathMLAnonymousBlock => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::MozXULAnonymousBlock => CSSPseudoElementType_InheritingAnonBox, PseudoElement::MozXULAnonymousBlock => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::HorizontalFramesetBorder => CSSPseudoElementType::NonInheritingAnonBox,
PseudoElement::VerticalFramesetBorder => CSSPseudoElementType::NonInheritingAnonBox,
PseudoElement::MozLineFrame => CSSPseudoElementType_InheritingAnonBox, PseudoElement::MozLineFrame => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::ButtonContent => CSSPseudoElementType_InheritingAnonBox, PseudoElement::ButtonContent => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::CellContent => CSSPseudoElementType_InheritingAnonBox, PseudoElement::CellContent => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::DropDownList => CSSPseudoElementType_InheritingAnonBox, PseudoElement::DropDownList => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::FieldsetContent => CSSPseudoElementType_InheritingAnonBox, PseudoElement::FieldsetContent => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::FramesetBlank => CSSPseudoElementType::NonInheritingAnonBox,
PseudoElement::MozDisplayComboboxControlFrame => CSSPseudoElementType_InheritingAnonBox, PseudoElement::MozDisplayComboboxControlFrame => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::HtmlCanvasContent => CSSPseudoElementType_InheritingAnonBox, PseudoElement::HtmlCanvasContent => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::InlineTable => CSSPseudoElementType_InheritingAnonBox, PseudoElement::InlineTable => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::Table => CSSPseudoElementType_InheritingAnonBox, PseudoElement::Table => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::TableCell => CSSPseudoElementType_InheritingAnonBox, PseudoElement::TableCell => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::TableColGroup => CSSPseudoElementType::NonInheritingAnonBox,
PseudoElement::TableCol => CSSPseudoElementType::NonInheritingAnonBox,
PseudoElement::TableWrapper => CSSPseudoElementType_InheritingAnonBox, PseudoElement::TableWrapper => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::TableRowGroup => CSSPseudoElementType_InheritingAnonBox, PseudoElement::TableRowGroup => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::TableRow => CSSPseudoElementType_InheritingAnonBox, PseudoElement::TableRow => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::Canvas => CSSPseudoElementType_InheritingAnonBox, PseudoElement::Canvas => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::PageBreak => CSSPseudoElementType::NonInheritingAnonBox,
PseudoElement::Page => CSSPseudoElementType_InheritingAnonBox, PseudoElement::Page => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::PageContent => CSSPseudoElementType_InheritingAnonBox, PseudoElement::PageContent => CSSPseudoElementType_InheritingAnonBox,
PseudoElement::PageSequence => CSSPseudoElementType_InheritingAnonBox, PseudoElement::PageSequence => CSSPseudoElementType_InheritingAnonBox,
@ -1006,12 +1006,30 @@ impl PseudoElement {
if atom == &atom!(":-moz-color-swatch") { if atom == &atom!(":-moz-color-swatch") {
return Some(PseudoElement::MozColorSwatch); return Some(PseudoElement::MozColorSwatch);
} }
if atom == &atom!(":-moz-text") {
return Some(PseudoElement::MozText);
}
if atom == &atom!(":-moz-oof-placeholder") { if atom == &atom!(":-moz-oof-placeholder") {
return Some(PseudoElement::OofPlaceholder); 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-first-letter-continuation") { if atom == &atom!(":-moz-first-letter-continuation") {
return Some(PseudoElement::FirstLetterContinuation); return Some(PseudoElement::FirstLetterContinuation);
} }
@ -1024,12 +1042,6 @@ impl PseudoElement {
if atom == &atom!(":-moz-xul-anonymous-block") { if atom == &atom!(":-moz-xul-anonymous-block") {
return Some(PseudoElement::MozXULAnonymousBlock); 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") { if atom == &atom!(":-moz-line-frame") {
return Some(PseudoElement::MozLineFrame); return Some(PseudoElement::MozLineFrame);
} }
@ -1045,9 +1057,6 @@ impl PseudoElement {
if atom == &atom!(":-moz-fieldset-content") { if atom == &atom!(":-moz-fieldset-content") {
return Some(PseudoElement::FieldsetContent); return Some(PseudoElement::FieldsetContent);
} }
if atom == &atom!(":-moz-frameset-blank") {
return Some(PseudoElement::FramesetBlank);
}
if atom == &atom!(":-moz-display-comboboxcontrol-frame") { if atom == &atom!(":-moz-display-comboboxcontrol-frame") {
return Some(PseudoElement::MozDisplayComboboxControlFrame); return Some(PseudoElement::MozDisplayComboboxControlFrame);
} }
@ -1063,12 +1072,6 @@ impl PseudoElement {
if atom == &atom!(":-moz-table-cell") { if atom == &atom!(":-moz-table-cell") {
return Some(PseudoElement::TableCell); 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") { if atom == &atom!(":-moz-table-wrapper") {
return Some(PseudoElement::TableWrapper); return Some(PseudoElement::TableWrapper);
} }
@ -1081,9 +1084,6 @@ impl PseudoElement {
if atom == &atom!(":-moz-canvas") { if atom == &atom!(":-moz-canvas") {
return Some(PseudoElement::Canvas); return Some(PseudoElement::Canvas);
} }
if atom == &atom!(":-moz-pagebreak") {
return Some(PseudoElement::PageBreak);
}
if atom == &atom!(":-moz-page") { if atom == &atom!(":-moz-page") {
return Some(PseudoElement::Page); return Some(PseudoElement::Page);
} }
@ -1161,12 +1161,30 @@ impl PseudoElement {
/// Construct a pseudo-element from an anonymous box `Atom`. /// Construct a pseudo-element from an anonymous box `Atom`.
#[inline] #[inline]
pub fn from_anon_box_atom(atom: &Atom) -> Option<Self> { pub fn from_anon_box_atom(atom: &Atom) -> Option<Self> {
if atom == &atom!(":-moz-text") {
return Some(PseudoElement::MozText);
}
if atom == &atom!(":-moz-oof-placeholder") { if atom == &atom!(":-moz-oof-placeholder") {
return Some(PseudoElement::OofPlaceholder); 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-first-letter-continuation") { if atom == &atom!(":-moz-first-letter-continuation") {
return Some(PseudoElement::FirstLetterContinuation); return Some(PseudoElement::FirstLetterContinuation);
} }
@ -1179,12 +1197,6 @@ impl PseudoElement {
if atom == &atom!(":-moz-xul-anonymous-block") { if atom == &atom!(":-moz-xul-anonymous-block") {
return Some(PseudoElement::MozXULAnonymousBlock); 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") { if atom == &atom!(":-moz-line-frame") {
return Some(PseudoElement::MozLineFrame); return Some(PseudoElement::MozLineFrame);
} }
@ -1200,9 +1212,6 @@ impl PseudoElement {
if atom == &atom!(":-moz-fieldset-content") { if atom == &atom!(":-moz-fieldset-content") {
return Some(PseudoElement::FieldsetContent); return Some(PseudoElement::FieldsetContent);
} }
if atom == &atom!(":-moz-frameset-blank") {
return Some(PseudoElement::FramesetBlank);
}
if atom == &atom!(":-moz-display-comboboxcontrol-frame") { if atom == &atom!(":-moz-display-comboboxcontrol-frame") {
return Some(PseudoElement::MozDisplayComboboxControlFrame); return Some(PseudoElement::MozDisplayComboboxControlFrame);
} }
@ -1218,12 +1227,6 @@ impl PseudoElement {
if atom == &atom!(":-moz-table-cell") { if atom == &atom!(":-moz-table-cell") {
return Some(PseudoElement::TableCell); 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") { if atom == &atom!(":-moz-table-wrapper") {
return Some(PseudoElement::TableWrapper); return Some(PseudoElement::TableWrapper);
} }
@ -1236,9 +1239,6 @@ impl PseudoElement {
if atom == &atom!(":-moz-canvas") { if atom == &atom!(":-moz-canvas") {
return Some(PseudoElement::Canvas); return Some(PseudoElement::Canvas);
} }
if atom == &atom!(":-moz-pagebreak") {
return Some(PseudoElement::PageBreak);
}
if atom == &atom!(":-moz-page") { if atom == &atom!(":-moz-page") {
return Some(PseudoElement::Page); return Some(PseudoElement::Page);
} }
@ -1440,12 +1440,30 @@ impl PseudoElement {
"-moz-color-swatch" => { "-moz-color-swatch" => {
return Some(PseudoElement::MozColorSwatch) return Some(PseudoElement::MozColorSwatch)
} }
"-moz-text" => {
return Some(PseudoElement::MozText)
}
"-moz-oof-placeholder" => { "-moz-oof-placeholder" => {
return Some(PseudoElement::OofPlaceholder) 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-first-letter-continuation" => { "-moz-first-letter-continuation" => {
return Some(PseudoElement::FirstLetterContinuation) return Some(PseudoElement::FirstLetterContinuation)
} }
@ -1458,12 +1476,6 @@ impl PseudoElement {
"-moz-xul-anonymous-block" => { "-moz-xul-anonymous-block" => {
return Some(PseudoElement::MozXULAnonymousBlock) return Some(PseudoElement::MozXULAnonymousBlock)
} }
"-moz-hframeset-border" => {
return Some(PseudoElement::HorizontalFramesetBorder)
}
"-moz-vframeset-border" => {
return Some(PseudoElement::VerticalFramesetBorder)
}
"-moz-line-frame" => { "-moz-line-frame" => {
return Some(PseudoElement::MozLineFrame) return Some(PseudoElement::MozLineFrame)
} }
@ -1479,9 +1491,6 @@ impl PseudoElement {
"-moz-fieldset-content" => { "-moz-fieldset-content" => {
return Some(PseudoElement::FieldsetContent) return Some(PseudoElement::FieldsetContent)
} }
"-moz-frameset-blank" => {
return Some(PseudoElement::FramesetBlank)
}
"-moz-display-comboboxcontrol-frame" => { "-moz-display-comboboxcontrol-frame" => {
return Some(PseudoElement::MozDisplayComboboxControlFrame) return Some(PseudoElement::MozDisplayComboboxControlFrame)
} }
@ -1497,12 +1506,6 @@ impl PseudoElement {
"-moz-table-cell" => { "-moz-table-cell" => {
return Some(PseudoElement::TableCell) return Some(PseudoElement::TableCell)
} }
"-moz-table-column-group" => {
return Some(PseudoElement::TableColGroup)
}
"-moz-table-column" => {
return Some(PseudoElement::TableCol)
}
"-moz-table-wrapper" => { "-moz-table-wrapper" => {
return Some(PseudoElement::TableWrapper) return Some(PseudoElement::TableWrapper)
} }
@ -1515,9 +1518,6 @@ impl PseudoElement {
"-moz-canvas" => { "-moz-canvas" => {
return Some(PseudoElement::Canvas) return Some(PseudoElement::Canvas)
} }
"-moz-pagebreak" => {
return Some(PseudoElement::PageBreak)
}
"-moz-page" => { "-moz-page" => {
return Some(PseudoElement::Page) return Some(PseudoElement::Page)
} }
@ -1664,32 +1664,32 @@ impl ToCss for PseudoElement {
PseudoElement::MozPlaceholder => dest.write_str(":-moz-placeholder")?, PseudoElement::MozPlaceholder => dest.write_str(":-moz-placeholder")?,
PseudoElement::Placeholder => dest.write_str(":placeholder")?, PseudoElement::Placeholder => dest.write_str(":placeholder")?,
PseudoElement::MozColorSwatch => dest.write_str(":-moz-color-swatch")?, PseudoElement::MozColorSwatch => dest.write_str(":-moz-color-swatch")?,
PseudoElement::MozText => dest.write_str(":-moz-text")?,
PseudoElement::OofPlaceholder => dest.write_str(":-moz-oof-placeholder")?, 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::FirstLetterContinuation => dest.write_str(":-moz-first-letter-continuation")?, PseudoElement::FirstLetterContinuation => dest.write_str(":-moz-first-letter-continuation")?,
PseudoElement::MozBlockInsideInlineWrapper => dest.write_str(":-moz-block-inside-inline-wrapper")?, PseudoElement::MozBlockInsideInlineWrapper => dest.write_str(":-moz-block-inside-inline-wrapper")?,
PseudoElement::MozMathMLAnonymousBlock => dest.write_str(":-moz-mathml-anonymous-block")?, PseudoElement::MozMathMLAnonymousBlock => dest.write_str(":-moz-mathml-anonymous-block")?,
PseudoElement::MozXULAnonymousBlock => dest.write_str(":-moz-xul-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::MozLineFrame => dest.write_str(":-moz-line-frame")?,
PseudoElement::ButtonContent => dest.write_str(":-moz-button-content")?, PseudoElement::ButtonContent => dest.write_str(":-moz-button-content")?,
PseudoElement::CellContent => dest.write_str(":-moz-cell-content")?, PseudoElement::CellContent => dest.write_str(":-moz-cell-content")?,
PseudoElement::DropDownList => dest.write_str(":-moz-dropdown-list")?, PseudoElement::DropDownList => dest.write_str(":-moz-dropdown-list")?,
PseudoElement::FieldsetContent => dest.write_str(":-moz-fieldset-content")?, 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::MozDisplayComboboxControlFrame => dest.write_str(":-moz-display-comboboxcontrol-frame")?,
PseudoElement::HtmlCanvasContent => dest.write_str(":-moz-html-canvas-content")?, PseudoElement::HtmlCanvasContent => dest.write_str(":-moz-html-canvas-content")?,
PseudoElement::InlineTable => dest.write_str(":-moz-inline-table")?, PseudoElement::InlineTable => dest.write_str(":-moz-inline-table")?,
PseudoElement::Table => dest.write_str(":-moz-table")?, PseudoElement::Table => dest.write_str(":-moz-table")?,
PseudoElement::TableCell => dest.write_str(":-moz-table-cell")?, 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::TableWrapper => dest.write_str(":-moz-table-wrapper")?,
PseudoElement::TableRowGroup => dest.write_str(":-moz-table-row-group")?, PseudoElement::TableRowGroup => dest.write_str(":-moz-table-row-group")?,
PseudoElement::TableRow => dest.write_str(":-moz-table-row")?, PseudoElement::TableRow => dest.write_str(":-moz-table-row")?,
PseudoElement::Canvas => dest.write_str(":-moz-canvas")?, PseudoElement::Canvas => dest.write_str(":-moz-canvas")?,
PseudoElement::PageBreak => dest.write_str(":-moz-pagebreak")?,
PseudoElement::Page => dest.write_str(":-moz-page")?, PseudoElement::Page => dest.write_str(":-moz-page")?,
PseudoElement::PageContent => dest.write_str(":-moz-pagecontent")?, PseudoElement::PageContent => dest.write_str(":-moz-pagecontent")?,
PseudoElement::PageSequence => dest.write_str(":-moz-page-sequence")?, PseudoElement::PageSequence => dest.write_str(":-moz-page-sequence")?,

File diff suppressed because it is too large Load diff

View file

@ -9,17 +9,10 @@ use computed_values::{font_stretch, font_style, font_weight};
use counter_style::{self, CounterBound}; use counter_style::{self, CounterBound};
use cssparser::UnicodeRange; use cssparser::UnicodeRange;
use font_face::{Source, FontDisplay, FontWeight}; use font_face::{Source, FontDisplay, FontWeight};
use gecko_bindings::bindings;
use gecko_bindings::structs::{self, nsCSSValue}; use gecko_bindings::structs::{self, nsCSSValue};
use gecko_bindings::structs::{nsCSSCounterDesc, nsCSSCounterStyleRule};
use gecko_bindings::sugar::ns_css_value::ToNsCssValue; use gecko_bindings::sugar::ns_css_value::ToNsCssValue;
use gecko_bindings::sugar::refptr::{RefPtr, UniqueRefPtr};
use nsstring::nsString;
use properties::longhands::font_language_override; use properties::longhands::font_language_override;
use shared_lock::{ToCssWithGuard, SharedRwLockReadGuard};
use std::fmt::{self, Write};
use std::str; use std::str;
use str::CssStringWriter;
use values::computed::font::FamilyName; use values::computed::font::FamilyName;
use values::generics::font::FontTag; use values::generics::font::FontTag;
use values::specified::font::{SpecifiedFontVariationSettings, SpecifiedFontFeatureSettings}; use values::specified::font::{SpecifiedFontVariationSettings, SpecifiedFontFeatureSettings};
@ -192,101 +185,62 @@ impl<'a> ToNsCssValue for &'a FontDisplay {
} }
} }
/// A @counter-style rule impl<'a> ToNsCssValue for &'a counter_style::System {
pub type CounterStyleRule = RefPtr<nsCSSCounterStyleRule>;
impl CounterStyleRule {
/// Ask Gecko to deep clone the nsCSSCounterStyleRule, and then construct
/// a CounterStyleRule object from it.
pub fn deep_clone_from_gecko(&self) -> CounterStyleRule {
let result = unsafe {
UniqueRefPtr::from_addrefed(
bindings::Gecko_CSSCounterStyle_Clone(self.get()))
};
result.get()
}
}
impl From<counter_style::CounterStyleRuleData> for CounterStyleRule {
fn from(data: counter_style::CounterStyleRuleData) -> CounterStyleRule {
let mut result = unsafe {
UniqueRefPtr::from_addrefed(
bindings::Gecko_CSSCounterStyle_Create(data.name().0.as_ptr()))
};
data.set_descriptors(&mut result.mValues);
result.get()
}
}
impl ToCssWithGuard for CounterStyleRule {
fn to_css(&self, _guard: &SharedRwLockReadGuard, dest: &mut CssStringWriter) -> fmt::Result {
let mut css_text = nsString::new();
unsafe {
bindings::Gecko_CSSCounterStyle_GetCssText(self.get(), &mut *css_text);
}
write!(dest, "{}", css_text)
}
}
/// The type of nsCSSCounterStyleRule::mValues
pub type CounterStyleDescriptors = [nsCSSValue; nsCSSCounterDesc::eCSSCounterDesc_COUNT as usize];
impl ToNsCssValue for counter_style::System {
fn convert(self, nscssvalue: &mut nsCSSValue) { fn convert(self, nscssvalue: &mut nsCSSValue) {
use counter_style::System::*; use counter_style::System::*;
match self { match *self {
Cyclic => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_CYCLIC as i32), Cyclic => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_CYCLIC as i32),
Numeric => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_NUMERIC as i32), Numeric => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_NUMERIC as i32),
Alphabetic => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_ALPHABETIC as i32), Alphabetic => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_ALPHABETIC as i32),
Symbolic => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_SYMBOLIC as i32), Symbolic => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_SYMBOLIC as i32),
Additive => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_ADDITIVE as i32), Additive => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_ADDITIVE as i32),
Fixed { first_symbol_value } => { Fixed { ref first_symbol_value } => {
let mut a = nsCSSValue::null(); let mut a = nsCSSValue::null();
let mut b = nsCSSValue::null(); let mut b = nsCSSValue::null();
a.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_FIXED as i32); a.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_FIXED as i32);
b.set_integer(first_symbol_value.map_or(1, |v| v.value())); b.set_integer(first_symbol_value.map_or(1, |v| v.value()));
nscssvalue.set_pair(&a, &b); nscssvalue.set_pair(&a, &b);
} }
Extends(other) => { Extends(ref other) => {
let mut a = nsCSSValue::null(); let mut a = nsCSSValue::null();
let mut b = nsCSSValue::null(); let mut b = nsCSSValue::null();
a.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_EXTENDS as i32); a.set_enum(structs::NS_STYLE_COUNTER_SYSTEM_EXTENDS as i32);
b.set_atom_ident(other.0); b.set_atom_ident(other.0.clone());
nscssvalue.set_pair(&a, &b); nscssvalue.set_pair(&a, &b);
} }
} }
} }
} }
impl ToNsCssValue for counter_style::Negative { impl<'a> ToNsCssValue for &'a counter_style::Negative {
fn convert(self, nscssvalue: &mut nsCSSValue) { fn convert(self, nscssvalue: &mut nsCSSValue) {
if let Some(second) = self.1 { if let Some(ref second) = self.1 {
let mut a = nsCSSValue::null(); let mut a = nsCSSValue::null();
let mut b = nsCSSValue::null(); let mut b = nsCSSValue::null();
a.set_from(self.0); a.set_from(&self.0);
b.set_from(second); b.set_from(second);
nscssvalue.set_pair(&a, &b); nscssvalue.set_pair(&a, &b);
} else { } else {
nscssvalue.set_from(self.0) nscssvalue.set_from(&self.0)
} }
} }
} }
impl ToNsCssValue for counter_style::Symbol { impl<'a> ToNsCssValue for &'a counter_style::Symbol {
fn convert(self, nscssvalue: &mut nsCSSValue) { fn convert(self, nscssvalue: &mut nsCSSValue) {
match self { match *self {
counter_style::Symbol::String(s) => nscssvalue.set_string(&s), counter_style::Symbol::String(ref s) => nscssvalue.set_string(s),
counter_style::Symbol::Ident(s) => nscssvalue.set_ident_from_atom(&s.0), counter_style::Symbol::Ident(ref s) => nscssvalue.set_ident_from_atom(&s.0),
} }
} }
} }
impl ToNsCssValue for counter_style::Ranges { impl<'a> ToNsCssValue for &'a counter_style::Ranges {
fn convert(self, nscssvalue: &mut nsCSSValue) { fn convert(self, nscssvalue: &mut nsCSSValue) {
if self.0.is_empty() { if self.0.is_empty() {
nscssvalue.set_auto(); nscssvalue.set_auto();
} else { } else {
nscssvalue.set_pair_list(self.0.into_iter().map(|range| { nscssvalue.set_pair_list(self.0.iter().map(|range| {
fn set_bound(bound: CounterBound, nscssvalue: &mut nsCSSValue) { fn set_bound(bound: CounterBound, nscssvalue: &mut nsCSSValue) {
if let CounterBound::Integer(finite) = bound { if let CounterBound::Integer(finite) = bound {
nscssvalue.set_integer(finite.value()) nscssvalue.set_integer(finite.value())
@ -304,25 +258,25 @@ impl ToNsCssValue for counter_style::Ranges {
} }
} }
impl ToNsCssValue for counter_style::Pad { impl<'a> ToNsCssValue for &'a counter_style::Pad {
fn convert(self, nscssvalue: &mut nsCSSValue) { fn convert(self, nscssvalue: &mut nsCSSValue) {
let mut min_length = nsCSSValue::null(); let mut min_length = nsCSSValue::null();
let mut pad_with = nsCSSValue::null(); let mut pad_with = nsCSSValue::null();
min_length.set_integer(self.0.value()); min_length.set_integer(self.0.value());
pad_with.set_from(self.1); pad_with.set_from(&self.1);
nscssvalue.set_pair(&min_length, &pad_with); nscssvalue.set_pair(&min_length, &pad_with);
} }
} }
impl ToNsCssValue for counter_style::Fallback { impl<'a> ToNsCssValue for &'a counter_style::Fallback {
fn convert(self, nscssvalue: &mut nsCSSValue) { fn convert(self, nscssvalue: &mut nsCSSValue) {
nscssvalue.set_atom_ident(self.0 .0) nscssvalue.set_atom_ident(self.0 .0.clone())
} }
} }
impl ToNsCssValue for counter_style::Symbols { impl<'a> ToNsCssValue for &'a counter_style::Symbols {
fn convert(self, nscssvalue: &mut nsCSSValue) { fn convert(self, nscssvalue: &mut nsCSSValue) {
nscssvalue.set_list(self.0.into_iter().map(|item| { nscssvalue.set_list(self.0.iter().map(|item| {
let mut value = nsCSSValue::null(); let mut value = nsCSSValue::null();
value.set_from(item); value.set_from(item);
value value
@ -330,27 +284,27 @@ impl ToNsCssValue for counter_style::Symbols {
} }
} }
impl ToNsCssValue for counter_style::AdditiveSymbols { impl<'a> ToNsCssValue for &'a counter_style::AdditiveSymbols {
fn convert(self, nscssvalue: &mut nsCSSValue) { fn convert(self, nscssvalue: &mut nsCSSValue) {
nscssvalue.set_pair_list(self.0.into_iter().map(|tuple| { nscssvalue.set_pair_list(self.0.iter().map(|tuple| {
let mut weight = nsCSSValue::null(); let mut weight = nsCSSValue::null();
let mut symbol = nsCSSValue::null(); let mut symbol = nsCSSValue::null();
weight.set_integer(tuple.weight.value()); weight.set_integer(tuple.weight.value());
symbol.set_from(tuple.symbol); symbol.set_from(&tuple.symbol);
(weight, symbol) (weight, symbol)
})); }));
} }
} }
impl ToNsCssValue for counter_style::SpeakAs { impl<'a> ToNsCssValue for &'a counter_style::SpeakAs {
fn convert(self, nscssvalue: &mut nsCSSValue) { fn convert(self, nscssvalue: &mut nsCSSValue) {
use counter_style::SpeakAs::*; use counter_style::SpeakAs::*;
match self { match *self {
Auto => nscssvalue.set_auto(), Auto => nscssvalue.set_auto(),
Bullets => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SPEAKAS_BULLETS as i32), Bullets => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SPEAKAS_BULLETS as i32),
Numbers => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SPEAKAS_NUMBERS as i32), Numbers => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SPEAKAS_NUMBERS as i32),
Words => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SPEAKAS_WORDS as i32), Words => nscssvalue.set_enum(structs::NS_STYLE_COUNTER_SPEAKAS_WORDS as i32),
Other(other) => nscssvalue.set_atom_ident(other.0), Other(ref other) => nscssvalue.set_atom_ident(other.0.clone()),
} }
} }
} }

View file

@ -260,9 +260,6 @@ macro_rules! impl_refcount {
); );
} }
impl_refcount!(::gecko_bindings::structs::nsCSSCounterStyleRule,
Gecko_CSSCounterStyleRule_AddRef, Gecko_CSSCounterStyleRule_Release);
// Companion of NS_DECL_THREADSAFE_FFI_REFCOUNTING. // Companion of NS_DECL_THREADSAFE_FFI_REFCOUNTING.
// //
// Gets you a free RefCounted impl implemented via FFI. // Gets you a free RefCounted impl implemented via FFI.

View file

@ -2,23 +2,6 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// TODO(emilio): unify this, components/style/counter_style.rs, and
// components/style/gecko/rules.rs
#![allow(missing_docs)] #![allow(missing_docs)]
#[cfg(feature = "servo")]
pub use counter_style::CounterStyleRuleData as CounterStyleRule; pub use counter_style::CounterStyleRuleData as CounterStyleRule;
#[cfg(feature = "gecko")]
pub use gecko::rules::CounterStyleRule;
impl CounterStyleRule {
#[cfg(feature = "servo")]
pub fn clone_conditionally_gecko_or_servo(&self) -> CounterStyleRule {
self.clone()
}
#[cfg(feature = "gecko")]
pub fn clone_conditionally_gecko_or_servo(&self) -> CounterStyleRule {
self.deep_clone_from_gecko()
}
}

View file

@ -314,8 +314,7 @@ impl DeepCloneWithLock for CssRule {
}, },
CssRule::CounterStyle(ref arc) => { CssRule::CounterStyle(ref arc) => {
let rule = arc.read_with(guard); let rule = arc.read_with(guard);
CssRule::CounterStyle(Arc::new(lock.wrap( CssRule::CounterStyle(Arc::new(lock.wrap(rule.clone())))
rule.clone_conditionally_gecko_or_servo())))
}, },
CssRule::Viewport(ref arc) => { CssRule::Viewport(ref arc) => {
let rule = arc.read_with(guard); let rule = arc.read_with(guard);

View file

@ -1611,8 +1611,6 @@ pub struct ExtraStyleData {
pub pages: Vec<Arc<Locked<PageRule>>>, pub pages: Vec<Arc<Locked<PageRule>>>,
} }
// FIXME(emilio): This is kind of a lie, and relies on us not cloning
// nsCSSCounterStyleRules OMT (which we don't).
#[cfg(feature = "gecko")] #[cfg(feature = "gecko")]
unsafe impl Sync for ExtraStyleData {} unsafe impl Sync for ExtraStyleData {}
#[cfg(feature = "gecko")] #[cfg(feature = "gecko")]
@ -1636,7 +1634,7 @@ impl ExtraStyleData {
guard: &SharedRwLockReadGuard, guard: &SharedRwLockReadGuard,
rule: &Arc<Locked<CounterStyleRule>>, rule: &Arc<Locked<CounterStyleRule>>,
) { ) {
let name = unsafe { Atom::from_raw(rule.read_with(guard).mName.mRawPtr) }; let name = rule.read_with(guard).name().0.clone();
self.counter_styles.insert(name, rule.clone()); self.counter_styles.insert(name, rule.clone());
} }

View file

@ -39,6 +39,7 @@ use style::gecko_bindings::bindings::{RawGeckoElementBorrowed, RawGeckoElementBo
use style::gecko_bindings::bindings::{RawGeckoKeyframeListBorrowed, RawGeckoKeyframeListBorrowedMut}; use style::gecko_bindings::bindings::{RawGeckoKeyframeListBorrowed, RawGeckoKeyframeListBorrowedMut};
use style::gecko_bindings::bindings::{RawServoAuthorStyles, RawServoAuthorStylesBorrowed}; use style::gecko_bindings::bindings::{RawServoAuthorStyles, RawServoAuthorStylesBorrowed};
use style::gecko_bindings::bindings::{RawServoAuthorStylesBorrowedMut, RawServoAuthorStylesOwned}; use style::gecko_bindings::bindings::{RawServoAuthorStylesBorrowedMut, RawServoAuthorStylesOwned};
use style::gecko_bindings::bindings::{RawServoCounterStyleRule, RawServoCounterStyleRuleBorrowed};
use style::gecko_bindings::bindings::{RawServoDeclarationBlockBorrowed, RawServoDeclarationBlockStrong}; use style::gecko_bindings::bindings::{RawServoDeclarationBlockBorrowed, RawServoDeclarationBlockStrong};
use style::gecko_bindings::bindings::{RawServoDocumentRule, RawServoDocumentRuleBorrowed}; use style::gecko_bindings::bindings::{RawServoDocumentRule, RawServoDocumentRuleBorrowed};
use style::gecko_bindings::bindings::{RawServoFontFaceRuleBorrowed, RawServoFontFaceRuleStrong}; use style::gecko_bindings::bindings::{RawServoFontFaceRuleBorrowed, RawServoFontFaceRuleStrong};
@ -92,7 +93,7 @@ use style::gecko_bindings::structs::{CallerType, CSSPseudoElementType, Composite
use style::gecko_bindings::structs::{Loader, LoaderReusableStyleSheets}; use style::gecko_bindings::structs::{Loader, LoaderReusableStyleSheets};
use style::gecko_bindings::structs::{RawServoStyleRule, ComputedStyleStrong, RustString}; use style::gecko_bindings::structs::{RawServoStyleRule, ComputedStyleStrong, RustString};
use style::gecko_bindings::structs::{ServoStyleSheet, SheetLoadData, SheetParsingMode, nsAtom, nsCSSPropertyID}; use style::gecko_bindings::structs::{ServoStyleSheet, SheetLoadData, SheetParsingMode, nsAtom, nsCSSPropertyID};
use style::gecko_bindings::structs::{nsCSSFontDesc, nsCSSCounterStyleRule}; use style::gecko_bindings::structs::{nsCSSFontDesc, nsCSSCounterDesc};
use style::gecko_bindings::structs::{nsRestyleHint, nsChangeHint, PropertyValuePair}; use style::gecko_bindings::structs::{nsRestyleHint, nsChangeHint, PropertyValuePair};
use style::gecko_bindings::structs::AtomArray; use style::gecko_bindings::structs::AtomArray;
use style::gecko_bindings::structs::IterationCompositeOperation; use style::gecko_bindings::structs::IterationCompositeOperation;
@ -113,8 +114,6 @@ use style::gecko_bindings::structs::ServoTraversalFlags;
use style::gecko_bindings::structs::StyleRuleInclusion; use style::gecko_bindings::structs::StyleRuleInclusion;
use style::gecko_bindings::structs::URLExtraData; use style::gecko_bindings::structs::URLExtraData;
use style::gecko_bindings::structs::gfxFontFeatureValueSet; use style::gecko_bindings::structs::gfxFontFeatureValueSet;
use style::gecko_bindings::structs::nsCSSCounterDesc;
use style::gecko_bindings::structs::nsCSSValue;
use style::gecko_bindings::structs::nsCSSValueSharedList; use style::gecko_bindings::structs::nsCSSValueSharedList;
use style::gecko_bindings::structs::nsCompatibility; use style::gecko_bindings::structs::nsCompatibility;
use style::gecko_bindings::structs::nsIDocument; use style::gecko_bindings::structs::nsIDocument;
@ -141,10 +140,10 @@ use style::selector_parser::{PseudoElementCascadeType, SelectorImpl};
use style::shared_lock::{SharedRwLockReadGuard, StylesheetGuards, ToCssWithGuard, Locked}; use style::shared_lock::{SharedRwLockReadGuard, StylesheetGuards, ToCssWithGuard, Locked};
use style::string_cache::{Atom, WeakAtom}; use style::string_cache::{Atom, WeakAtom};
use style::style_adjuster::StyleAdjuster; use style::style_adjuster::StyleAdjuster;
use style::stylesheets::{CssRule, CssRules, CssRuleType, CssRulesHelpers, DocumentRule}; use style::stylesheets::{CssRule, CssRules, CssRuleType, CssRulesHelpers, CounterStyleRule};
use style::stylesheets::{FontFaceRule, FontFeatureValuesRule, ImportRule, KeyframesRule}; use style::stylesheets::{DocumentRule, FontFaceRule, FontFeatureValuesRule, ImportRule};
use style::stylesheets::{MediaRule, NamespaceRule, Origin, OriginSet, PageRule, StyleRule}; use style::stylesheets::{KeyframesRule, MediaRule, NamespaceRule, Origin, OriginSet, PageRule};
use style::stylesheets::{StylesheetContents, SupportsRule}; use style::stylesheets::{StyleRule, StylesheetContents, SupportsRule};
use style::stylesheets::StylesheetLoader as StyleStylesheetLoader; use style::stylesheets::StylesheetLoader as StyleStylesheetLoader;
use style::stylesheets::keyframes_rule::{Keyframe, KeyframeSelector, KeyframesStepValue}; use style::stylesheets::keyframes_rule::{Keyframe, KeyframeSelector, KeyframesStepValue};
use style::stylesheets::supports_rule::parse_condition_or_declaration; use style::stylesheets::supports_rule::parse_condition_or_declaration;
@ -1754,26 +1753,12 @@ impl_basic_rule_funcs! { (FontFace, FontFaceRule, RawServoFontFaceRule),
to_css: Servo_FontFaceRule_GetCssText, to_css: Servo_FontFaceRule_GetCssText,
} }
macro_rules! impl_getter_for_embedded_rule { impl_basic_rule_funcs! { (CounterStyle, CounterStyleRule, RawServoCounterStyleRule),
($getter:ident: $name:ident -> $ty:ty) => { getter: Servo_CssRules_GetCounterStyleRuleAt,
#[no_mangle] debug: Servo_CounterStyleRule_Debug,
pub extern "C" fn $getter(rules: ServoCssRulesBorrowed, index: u32) -> *mut $ty to_css: Servo_CounterStyleRule_GetCssText,
{
let global_style_data = &*GLOBAL_STYLE_DATA;
let guard = global_style_data.shared_lock.read();
let rules = Locked::<CssRules>::as_arc(&rules).read_with(&guard);
match rules.0[index as usize] {
CssRule::$name(ref rule) => rule.read_with(&guard).get(),
_ => unreachable!(concat!(stringify!($getter), " should only be called on a ",
stringify!($name), " rule")),
}
}
}
} }
impl_getter_for_embedded_rule!(Servo_CssRules_GetCounterStyleRuleAt:
CounterStyle -> nsCSSCounterStyleRule);
#[no_mangle] #[no_mangle]
pub extern "C" fn Servo_StyleRule_GetStyle(rule: RawServoStyleRuleBorrowed) -> RawServoDeclarationBlockStrong { pub extern "C" fn Servo_StyleRule_GetStyle(rule: RawServoStyleRuleBorrowed) -> RawServoDeclarationBlockStrong {
read_locked_arc(rule, |rule: &StyleRule| { read_locked_arc(rule, |rule: &StyleRule| {
@ -2438,6 +2423,198 @@ pub unsafe extern "C" fn Servo_FontFaceRule_ResetDescriptor(
}) })
} }
#[no_mangle]
pub unsafe extern "C" fn Servo_CounterStyleRule_GetName(
rule: RawServoCounterStyleRuleBorrowed,
) -> *mut nsAtom {
read_locked_arc(rule, |rule: &CounterStyleRule| {
rule.name().0.as_ptr()
})
}
#[no_mangle]
pub unsafe extern "C" fn Servo_CounterStyleRule_SetName(
rule: RawServoCounterStyleRuleBorrowed,
value: *const nsACString,
) -> bool {
let value = value.as_ref().unwrap().as_str_unchecked();
let mut input = ParserInput::new(&value);
let mut parser = Parser::new(&mut input);
match parser.parse_entirely(counter_style::parse_counter_style_name_definition) {
Ok(name) => {
write_locked_arc(rule, |rule: &mut CounterStyleRule| rule.set_name(name));
true
}
Err(_) => false,
}
}
#[no_mangle]
pub unsafe extern "C" fn Servo_CounterStyleRule_GetGeneration(
rule: RawServoCounterStyleRuleBorrowed,
) -> u32 {
read_locked_arc(rule, |rule: &CounterStyleRule| {
rule.generation()
})
}
#[no_mangle]
pub unsafe extern "C" fn Servo_CounterStyleRule_GetSystem(
rule: RawServoCounterStyleRuleBorrowed,
) -> u8 {
use style::counter_style::System;
read_locked_arc(rule, |rule: &CounterStyleRule| {
match *rule.resolved_system() {
System::Cyclic => structs::NS_STYLE_COUNTER_SYSTEM_CYCLIC,
System::Numeric => structs::NS_STYLE_COUNTER_SYSTEM_NUMERIC,
System::Alphabetic => structs::NS_STYLE_COUNTER_SYSTEM_ALPHABETIC,
System::Symbolic => structs::NS_STYLE_COUNTER_SYSTEM_SYMBOLIC,
System::Additive => structs::NS_STYLE_COUNTER_SYSTEM_ADDITIVE,
System::Fixed { .. } => structs::NS_STYLE_COUNTER_SYSTEM_FIXED,
System::Extends(_) => structs::NS_STYLE_COUNTER_SYSTEM_EXTENDS,
}
}) as u8
}
#[no_mangle]
pub unsafe extern "C" fn Servo_CounterStyleRule_GetExtended(
rule: RawServoCounterStyleRuleBorrowed,
) -> *mut nsAtom {
read_locked_arc(rule, |rule: &CounterStyleRule| {
match *rule.resolved_system() {
counter_style::System::Extends(ref name) => name.0.as_ptr(),
_ => {
debug_assert!(false, "Not extends system");
ptr::null_mut()
}
}
})
}
#[no_mangle]
pub unsafe extern "C" fn Servo_CounterStyleRule_GetFixedFirstValue(
rule: RawServoCounterStyleRuleBorrowed,
) -> i32 {
read_locked_arc(rule, |rule: &CounterStyleRule| {
match *rule.resolved_system() {
counter_style::System::Fixed { first_symbol_value } => {
first_symbol_value.map_or(1, |v| v.value())
}
_ => {
debug_assert!(false, "Not fixed system");
0
}
}
})
}
#[no_mangle]
pub unsafe extern "C" fn Servo_CounterStyleRule_GetFallback(
rule: RawServoCounterStyleRuleBorrowed,
) -> *mut nsAtom {
read_locked_arc(rule, |rule: &CounterStyleRule| {
rule.fallback().map_or(ptr::null_mut(), |i| i.0 .0.as_ptr())
})
}
macro_rules! counter_style_descriptors {
{
valid: [
$($desc:ident => $getter:ident / $setter:ident,)+
]
invalid: [
$($i_desc:ident,)+
]
} => {
#[no_mangle]
pub unsafe extern "C" fn Servo_CounterStyleRule_GetDescriptor(
rule: RawServoCounterStyleRuleBorrowed,
desc: nsCSSCounterDesc,
result: nsCSSValueBorrowedMut,
) {
read_locked_arc(rule, |rule: &CounterStyleRule| {
match desc {
$(nsCSSCounterDesc::$desc => {
if let Some(value) = rule.$getter() {
result.set_from(value);
}
})+
$(nsCSSCounterDesc::$i_desc => unreachable!(),)+
}
});
}
#[no_mangle]
pub unsafe extern "C" fn Servo_CounterStyleRule_GetDescriptorCssText(
rule: RawServoCounterStyleRuleBorrowed,
desc: nsCSSCounterDesc,
result: *mut nsAString,
) {
let mut writer = CssWriter::new(result.as_mut().unwrap());
read_locked_arc(rule, |rule: &CounterStyleRule| {
match desc {
$(nsCSSCounterDesc::$desc => {
if let Some(value) = rule.$getter() {
value.to_css(&mut writer).unwrap();
}
})+
$(nsCSSCounterDesc::$i_desc => unreachable!(),)+
}
});
}
#[no_mangle]
pub unsafe extern "C" fn Servo_CounterStyleRule_SetDescriptor(
rule: RawServoCounterStyleRuleBorrowed,
desc: nsCSSCounterDesc,
value: *const nsACString,
) -> bool {
let value = value.as_ref().unwrap().as_str_unchecked();
let mut input = ParserInput::new(&value);
let mut parser = Parser::new(&mut input);
let url_data = dummy_url_data();
let context = ParserContext::new(
Origin::Author,
url_data,
Some(CssRuleType::CounterStyle),
ParsingMode::DEFAULT,
QuirksMode::NoQuirks,
);
write_locked_arc(rule, |rule: &mut CounterStyleRule| {
match desc {
$(nsCSSCounterDesc::$desc => {
match parser.parse_entirely(|i| Parse::parse(&context, i)) {
Ok(value) => rule.$setter(value),
Err(_) => false,
}
})+
$(nsCSSCounterDesc::$i_desc => unreachable!(),)+
}
})
}
}
}
counter_style_descriptors! {
valid: [
eCSSCounterDesc_System => system / set_system,
eCSSCounterDesc_Symbols => symbols / set_symbols,
eCSSCounterDesc_AdditiveSymbols => additive_symbols / set_additive_symbols,
eCSSCounterDesc_Negative => negative / set_negative,
eCSSCounterDesc_Prefix => prefix / set_prefix,
eCSSCounterDesc_Suffix => suffix / set_suffix,
eCSSCounterDesc_Range => range / set_range,
eCSSCounterDesc_Pad => pad / set_pad,
eCSSCounterDesc_Fallback => fallback / set_fallback,
eCSSCounterDesc_SpeakAs => speak_as / set_speak_as,
]
invalid: [
eCSSCounterDesc_UNKNOWN,
eCSSCounterDesc_COUNT,
]
}
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn Servo_ComputedValues_GetForAnonymousBox( pub unsafe extern "C" fn Servo_ComputedValues_GetForAnonymousBox(
parent_style_or_null: ComputedStyleBorrowedOrNull, parent_style_or_null: ComputedStyleBorrowedOrNull,
@ -4605,25 +4782,23 @@ pub extern "C" fn Servo_StyleSet_GetFontFaceRules(
} }
} }
// XXX Ideally this should return a RawServoCounterStyleRuleBorrowedOrNull,
// but we cannot, because the value from AtomicRefCell::borrow() can only
// live in this function, and thus anything derived from it cannot get the
// same lifetime as raw_data in parameter. See bug 1451543.
#[no_mangle] #[no_mangle]
pub extern "C" fn Servo_StyleSet_GetCounterStyleRule( pub unsafe extern "C" fn Servo_StyleSet_GetCounterStyleRule(
raw_data: RawServoStyleSetBorrowed, raw_data: RawServoStyleSetBorrowed,
name: *mut nsAtom, name: *mut nsAtom,
) -> *mut nsCSSCounterStyleRule { ) -> *const RawServoCounterStyleRule {
let data = PerDocumentStyleData::from_ffi(raw_data).borrow(); let data = PerDocumentStyleData::from_ffi(raw_data).borrow();
Atom::with(name, |name| {
unsafe { data.stylist
Atom::with(name, |name| { .iter_extra_data_origins()
data.stylist .filter_map(|(d, _)| d.counter_styles.get(name))
.iter_extra_data_origins() .next()
.filter_map(|(d, _)| d.counter_styles.get(name)) .map_or(ptr::null(), |rule| rule.as_borrowed())
.next() })
})
}.map(|rule| {
let global_style_data = &*GLOBAL_STYLE_DATA;
let guard = global_style_data.shared_lock.read();
rule.read_with(&guard).get()
}).unwrap_or(ptr::null_mut())
} }
#[no_mangle] #[no_mangle]
@ -5205,19 +5380,6 @@ pub unsafe extern "C" fn Servo_SourceSizeList_Drop(list: RawServoSourceSizeListO
let _ = list.into_box::<SourceSizeList>(); let _ = list.into_box::<SourceSizeList>();
} }
#[no_mangle]
pub extern "C" fn Servo_ParseCounterStyleName(
value: *const nsACString,
) -> *mut nsAtom {
let value = unsafe { value.as_ref().unwrap().as_str_unchecked() };
let mut input = ParserInput::new(&value);
let mut parser = Parser::new(&mut input);
match parser.parse_entirely(counter_style::parse_counter_style_name_definition) {
Ok(name) => name.0.into_addrefed(),
Err(_) => ptr::null_mut(),
}
}
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn Servo_InvalidateStyleForDocStateChanges( pub unsafe extern "C" fn Servo_InvalidateStyleForDocStateChanges(
root: RawGeckoElementBorrowed, root: RawGeckoElementBorrowed,
@ -5258,39 +5420,6 @@ pub unsafe extern "C" fn Servo_InvalidateStyleForDocStateChanges(
} }
} }
#[no_mangle]
pub extern "C" fn Servo_ParseCounterStyleDescriptor(
descriptor: nsCSSCounterDesc,
value: *const nsACString,
raw_extra_data: *mut URLExtraData,
result: *mut nsCSSValue,
) -> bool {
let value = unsafe { value.as_ref().unwrap().as_str_unchecked() };
let url_data = unsafe {
if raw_extra_data.is_null() {
dummy_url_data()
} else {
RefPtr::from_ptr_ref(&raw_extra_data)
}
};
let result = unsafe { result.as_mut().unwrap() };
let mut input = ParserInput::new(&value);
let mut parser = Parser::new(&mut input);
let context = ParserContext::new(
Origin::Author,
url_data,
Some(CssRuleType::CounterStyle),
ParsingMode::DEFAULT,
QuirksMode::NoQuirks,
);
counter_style::parse_counter_style_descriptor(
&context,
&mut parser,
descriptor,
result,
).is_ok()
}
#[no_mangle] #[no_mangle]
pub unsafe extern "C" fn Servo_PseudoClass_GetStates(name: *const nsACString) -> u64 { pub unsafe extern "C" fn Servo_PseudoClass_GetStates(name: *const nsACString) -> u64 {
let name = name.as_ref().unwrap().as_str_unchecked(); let name = name.as_ref().unwrap().as_str_unchecked();