style: Make Servo deal with CSS property prefs more correctly.

Right now you could still set preffed-off properties from CSSStyleDeclaration.
This commit is contained in:
Emilio Cobos Álvarez 2018-02-27 19:19:43 +01:00
parent 030509e66b
commit 650e947c94
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
4 changed files with 54 additions and 16 deletions

View file

@ -164,9 +164,17 @@ macro_rules! css_properties(
( $([$getter:ident, $setter:ident, $id:expr],)* ) => (
$(
fn $getter(&self) -> DOMString {
debug_assert!(
$id.enabled_for_all_content(),
"Someone forgot a #[Pref] annotation"
);
self.get_property_value($id)
}
fn $setter(&self, value: DOMString) -> ErrorResult {
debug_assert!(
$id.enabled_for_all_content(),
"Someone forgot a #[Pref] annotation"
);
self.set_property($id, value, DOMString::new())
}
)*
@ -238,6 +246,10 @@ impl CSSStyleDeclaration {
return Err(Error::NoModificationAllowed);
}
if !id.enabled_for_all_content() {
return Ok(());
}
self.owner.mutate_associated_block(|pdb, changed| {
if value.is_empty() {
// Step 3

View file

@ -244,8 +244,10 @@ partial interface CSSStyleDeclaration {
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString whiteSpace;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString white-space;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString writingMode;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString writing-mode;
[Pref="layout.writing-mode.enabled", CEReactions, SetterThrows, TreatNullAs=EmptyString]
attribute DOMString writingMode;
[Pref="layout.writing-mode.enabled", CEReactions, SetterThrows, TreatNullAs=EmptyString]
attribute DOMString writing-mode;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString letterSpacing;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString letter-spacing;
@ -385,13 +387,20 @@ partial interface CSSStyleDeclaration {
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString imageRendering;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString image-rendering;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString columnCount;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString column-count;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString columnWidth;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString column-width;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString columns;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString columnGap;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString column-gap;
[Pref="layout.column-count.enabled", CEReactions, SetterThrows, TreatNullAs=EmptyString]
attribute DOMString columnCount;
[Pref="layout.column-count.enabled", CEReactions, SetterThrows, TreatNullAs=EmptyString]
attribute DOMString column-count;
[Pref="layout.column-width.enabled", CEReactions, SetterThrows, TreatNullAs=EmptyString]
attribute DOMString columnWidth;
[Pref="layout.column-width.enabled", CEReactions, SetterThrows, TreatNullAs=EmptyString]
attribute DOMString column-width;
[Pref="layout.columns.enabled", CEReactions, SetterThrows, TreatNullAs=EmptyString]
attribute DOMString columns;
[Pref="layout.column-gap.enabled", CEReactions, SetterThrows, TreatNullAs=EmptyString]
attribute DOMString columnGap;
[Pref="layout.column-gap.enabled", CEReactions, SetterThrows, TreatNullAs=EmptyString]
attribute DOMString column-gap;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString transition;
[CEReactions, SetterThrows, TreatNullAs=EmptyString] attribute DOMString transitionDuration;