mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Auto merge of #20627 - emilio:overflow-shorthand, r=xidorn
style: Let overflow parse two values. Per https://github.com/w3c/csswg-drafts/issues/2484. Bug: 1453148 Reviewed-by: xidorn MozReview-Commit-ID: D7M3PhnTtD2 <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/20627) <!-- Reviewable:end -->
This commit is contained in:
commit
e0ea9e17af
3 changed files with 15 additions and 45 deletions
|
@ -4,8 +4,11 @@
|
||||||
|
|
||||||
<%namespace name="helpers" file="/helpers.mako.rs" />
|
<%namespace name="helpers" file="/helpers.mako.rs" />
|
||||||
|
|
||||||
<%helpers:shorthand name="overflow" sub_properties="overflow-x overflow-y"
|
<%helpers:shorthand
|
||||||
spec="https://drafts.csswg.org/css-overflow/#propdef-overflow">
|
name="overflow"
|
||||||
|
sub_properties="overflow-x overflow-y"
|
||||||
|
spec="https://drafts.csswg.org/css-overflow/#propdef-overflow"
|
||||||
|
>
|
||||||
use properties::longhands::overflow_x::parse as parse_overflow;
|
use properties::longhands::overflow_x::parse as parse_overflow;
|
||||||
% if product == "gecko":
|
% if product == "gecko":
|
||||||
use properties::longhands::overflow_x::SpecifiedValue;
|
use properties::longhands::overflow_x::SpecifiedValue;
|
||||||
|
@ -42,20 +45,23 @@
|
||||||
return moz_kw_found
|
return moz_kw_found
|
||||||
}
|
}
|
||||||
% endif
|
% endif
|
||||||
let overflow = parse_overflow(context, input)?;
|
let overflow_x = parse_overflow(context, input)?;
|
||||||
|
let overflow_y =
|
||||||
|
input.try(|i| parse_overflow(context, i)).unwrap_or(overflow_x);
|
||||||
Ok(expanded! {
|
Ok(expanded! {
|
||||||
overflow_x: overflow,
|
overflow_x: overflow_x,
|
||||||
overflow_y: overflow,
|
overflow_y: overflow_y,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> ToCss for LonghandsToSerialize<'a> {
|
impl<'a> ToCss for LonghandsToSerialize<'a> {
|
||||||
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write {
|
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result where W: fmt::Write {
|
||||||
if self.overflow_x == self.overflow_y {
|
self.overflow_x.to_css(dest)?;
|
||||||
self.overflow_x.to_css(dest)
|
if self.overflow_x != self.overflow_y {
|
||||||
} else {
|
dest.write_char(' ')?;
|
||||||
Ok(())
|
self.overflow_y.to_css(dest)?;
|
||||||
}
|
}
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</%helpers:shorthand>
|
</%helpers:shorthand>
|
||||||
|
|
|
@ -75,39 +75,6 @@ mod shorthand_serialization {
|
||||||
block.to_css_string()
|
block.to_css_string()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add Test to show error if a longhand property is missing!!!!!!
|
|
||||||
|
|
||||||
mod overflow {
|
|
||||||
pub use super::*;
|
|
||||||
use style::properties::longhands::overflow_x::SpecifiedValue as OverflowValue;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn equal_overflow_properties_should_serialize_to_single_value() {
|
|
||||||
let mut properties = Vec::new();
|
|
||||||
|
|
||||||
let overflow = OverflowValue::Auto;
|
|
||||||
properties.push(PropertyDeclaration::OverflowX(overflow));
|
|
||||||
properties.push(PropertyDeclaration::OverflowY(overflow));
|
|
||||||
|
|
||||||
let serialization = shorthand_properties_to_string(properties);
|
|
||||||
assert_eq!(serialization, "overflow: auto;");
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn different_overflow_properties_should_serialize_to_two_values() {
|
|
||||||
let mut properties = Vec::new();
|
|
||||||
|
|
||||||
let overflow_x = OverflowValue::Scroll;
|
|
||||||
properties.push(PropertyDeclaration::OverflowX(overflow_x));
|
|
||||||
|
|
||||||
let overflow_y = OverflowValue::Auto;
|
|
||||||
properties.push(PropertyDeclaration::OverflowY(overflow_y));
|
|
||||||
|
|
||||||
let serialization = shorthand_properties_to_string(properties);
|
|
||||||
assert_eq!(serialization, "overflow-x: scroll; overflow-y: auto;");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mod four_sides_shorthands {
|
mod four_sides_shorthands {
|
||||||
pub use super::*;
|
pub use super::*;
|
||||||
|
|
||||||
|
|
|
@ -24,9 +24,6 @@
|
||||||
[border is expected to be border: dotted;]
|
[border is expected to be border: dotted;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[overflow is expected to be overflow: scroll hidden;]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[outline is expected to be outline: blue dotted 2px;]
|
[outline is expected to be outline: blue dotted 2px;]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue