Bug 1882754 - Remove default implementations of component parsing functions. r=layout-reviewers,emilio

Differential Revision: https://phabricator.services.mozilla.com/D203119
This commit is contained in:
Tiaan Louw 2024-02-29 16:37:18 +00:00
parent 2b84327e28
commit dd04bff973

View File

@ -14,7 +14,6 @@ use cssparser::color::{
clamp_floor_256_f32, clamp_unit_f32, parse_hash_color, PredefinedColorSpace, OPAQUE,
};
use cssparser::{match_ignore_ascii_case, CowRcStr, Parser, Token};
use std::f32::consts::PI;
use std::str::FromStr;
use style_traits::ParseError;
@ -486,53 +485,21 @@ pub trait ColorParser<'i> {
fn parse_angle_or_number<'t>(
&self,
input: &mut Parser<'i, 't>,
) -> Result<AngleOrNumber, ParseError<'i>> {
let location = input.current_source_location();
Ok(match *input.next()? {
Token::Number { value, .. } => AngleOrNumber::Number { value },
Token::Dimension {
value: v, ref unit, ..
} => {
let degrees = match_ignore_ascii_case! { unit,
"deg" => v,
"grad" => v * 360. / 400.,
"rad" => v * 360. / (2. * PI),
"turn" => v * 360.,
_ => {
return Err(location.new_unexpected_token_error(Token::Ident(unit.clone())))
}
};
AngleOrNumber::Angle { degrees }
},
ref t => return Err(location.new_unexpected_token_error(t.clone())),
})
}
) -> Result<AngleOrNumber, ParseError<'i>>;
/// Parse a `<percentage>` value.
///
/// Returns the result in a number from 0.0 to 1.0.
fn parse_percentage<'t>(&self, input: &mut Parser<'i, 't>) -> Result<f32, ParseError<'i>> {
input.expect_percentage().map_err(From::from)
}
fn parse_percentage<'t>(&self, input: &mut Parser<'i, 't>) -> Result<f32, ParseError<'i>>;
/// Parse a `<number>` value.
fn parse_number<'t>(&self, input: &mut Parser<'i, 't>) -> Result<f32, ParseError<'i>> {
input.expect_number().map_err(From::from)
}
fn parse_number<'t>(&self, input: &mut Parser<'i, 't>) -> Result<f32, ParseError<'i>>;
/// Parse a `<number>` value or a `<percentage>` value.
fn parse_number_or_percentage<'t>(
&self,
input: &mut Parser<'i, 't>,
) -> Result<NumberOrPercentage, ParseError<'i>> {
let location = input.current_source_location();
Ok(match *input.next()? {
Token::Number { value, .. } => NumberOrPercentage::Number { value },
Token::Percentage { unit_value, .. } => NumberOrPercentage::Percentage { unit_value },
ref t => return Err(location.new_unexpected_token_error(t.clone())),
})
}
) -> Result<NumberOrPercentage, ParseError<'i>>;
}
/// This trait is used by the [`ColorParser`] to construct colors of any type.