mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
Bug 1365629: Respect parsing mode in LengthOrPercentage. r=canaltinova
This commit is contained in:
parent
3d40b516c8
commit
911d307f8f
1 changed files with 12 additions and 5 deletions
|
@ -620,7 +620,8 @@ impl Length {
|
||||||
Token::Dimension(ref value, ref unit) if num_context.is_ok(value.value) =>
|
Token::Dimension(ref value, ref unit) if num_context.is_ok(value.value) =>
|
||||||
Length::parse_dimension(context, value.value, unit),
|
Length::parse_dimension(context, value.value, unit),
|
||||||
Token::Number(ref value) if num_context.is_ok(value.value) => {
|
Token::Number(ref value) if num_context.is_ok(value.value) => {
|
||||||
if value.value != 0. && !context.parsing_mode.allows_unitless_lengths() &&
|
if value.value != 0. &&
|
||||||
|
!context.parsing_mode.allows_unitless_lengths() &&
|
||||||
!allow_quirks.allowed(context.quirks_mode) {
|
!allow_quirks.allowed(context.quirks_mode) {
|
||||||
return Err(())
|
return Err(())
|
||||||
}
|
}
|
||||||
|
@ -805,9 +806,14 @@ impl LengthOrPercentage {
|
||||||
NoCalcLength::parse_dimension(context, value.value, unit).map(LengthOrPercentage::Length),
|
NoCalcLength::parse_dimension(context, value.value, unit).map(LengthOrPercentage::Length),
|
||||||
Token::Percentage(ref value) if num_context.is_ok(value.unit_value) =>
|
Token::Percentage(ref value) if num_context.is_ok(value.unit_value) =>
|
||||||
Ok(LengthOrPercentage::Percentage(Percentage(value.unit_value))),
|
Ok(LengthOrPercentage::Percentage(Percentage(value.unit_value))),
|
||||||
Token::Number(value) if value.value == 0. ||
|
Token::Number(value) if num_context.is_ok(value.value) => {
|
||||||
(num_context.is_ok(value.value) && allow_quirks.allowed(context.quirks_mode)) =>
|
if value.value != 0. &&
|
||||||
Ok(LengthOrPercentage::Length(NoCalcLength::from_px(value.value))),
|
!context.parsing_mode.allows_unitless_lengths() &&
|
||||||
|
!allow_quirks.allowed(context.quirks_mode) {
|
||||||
|
return Err(())
|
||||||
|
}
|
||||||
|
Ok(LengthOrPercentage::Length(NoCalcLength::from_px(value.value)))
|
||||||
|
}
|
||||||
Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {
|
Token::Function(ref name) if name.eq_ignore_ascii_case("calc") => {
|
||||||
let calc = try!(input.parse_nested_block(|i| {
|
let calc = try!(input.parse_nested_block(|i| {
|
||||||
CalcNode::parse_length_or_percentage(context, i, num_context)
|
CalcNode::parse_length_or_percentage(context, i, num_context)
|
||||||
|
@ -942,7 +948,8 @@ impl LengthOrPercentageOrAuto {
|
||||||
Token::Percentage(ref value) if num_context.is_ok(value.unit_value) =>
|
Token::Percentage(ref value) if num_context.is_ok(value.unit_value) =>
|
||||||
Ok(LengthOrPercentageOrAuto::Percentage(Percentage(value.unit_value))),
|
Ok(LengthOrPercentageOrAuto::Percentage(Percentage(value.unit_value))),
|
||||||
Token::Number(ref value) if num_context.is_ok(value.value) => {
|
Token::Number(ref value) if num_context.is_ok(value.value) => {
|
||||||
if value.value != 0. && !context.parsing_mode.allows_unitless_lengths() &&
|
if value.value != 0. &&
|
||||||
|
!context.parsing_mode.allows_unitless_lengths() &&
|
||||||
!allow_quirks.allowed(context.quirks_mode) {
|
!allow_quirks.allowed(context.quirks_mode) {
|
||||||
return Err(())
|
return Err(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue