Fix parsing/serialization bug in contain property

This commit is contained in:
Nazım Can Altınova 2017-04-17 22:36:45 +03:00
parent 86aa4e89c5
commit 05a4febc40
No known key found for this signature in database
GPG key ID: AF9BCD7CE6449954
2 changed files with 17 additions and 5 deletions

View file

@ -2096,8 +2096,10 @@ ${helpers.single_keyword("transform-style",
const LAYOUT = 0x02,
const STYLE = 0x04,
const PAINT = 0x08,
const STRICT = SIZE.bits | LAYOUT.bits | STYLE.bits | PAINT.bits,
const CONTENT = LAYOUT.bits | STYLE.bits | PAINT.bits,
const STRICT = 0x10,
const STRICT_BITS = SIZE.bits | LAYOUT.bits | STYLE.bits | PAINT.bits,
const CONTENT = 0x20,
const CONTENT_BITS = LAYOUT.bits | STYLE.bits | PAINT.bits,
}
}
@ -2148,11 +2150,11 @@ ${helpers.single_keyword("transform-style",
return Ok(result)
}
if input.try(|input| input.expect_ident_matching("strict")).is_ok() {
result.insert(STRICT);
result.insert(STRICT | STRICT_BITS);
return Ok(result)
}
if input.try(|input| input.expect_ident_matching("content")).is_ok() {
result.insert(CONTENT);
result.insert(CONTENT | CONTENT_BITS);
return Ok(result)
}

View file

@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use parsing::parse;
use style_traits::ToCss;
#[test]
fn contain_longhand_should_parse_correctly() {
@ -13,11 +14,20 @@ fn contain_longhand_should_parse_correctly() {
assert_eq!(none, SpecifiedValue::empty());
let strict = parse_longhand!(contain, "strict");
assert_eq!(strict, contain::STRICT);
assert_eq!(strict, contain::STRICT | contain::STRICT_BITS);
let strict = parse_longhand!(contain, "content");
assert_eq!(strict, contain::CONTENT | contain::CONTENT_BITS);
let style_paint = parse_longhand!(contain, "style paint");
assert_eq!(style_paint, contain::STYLE | contain::PAINT);
assert_roundtrip_with_context!(contain::parse, "strict");
assert_roundtrip_with_context!(contain::parse, "size layout style paint");
assert_roundtrip_with_context!(contain::parse, "content");
assert_roundtrip_with_context!(contain::parse, "layout style paint");
// Assert that the `2px` is not consumed, which would trigger parsing failure in real use
assert_parser_exhausted!(contain::parse, "layout 2px", false);
}