Bug 1370846 - Make -moz-outline-radius-{*} animatable. draft
authorBoris Chiou <boris.chiou@gmail.com>
Fri, 09 Jun 2017 01:24:51 +0800
changeset 591423 6edcc53670406a44c8c56b4c62982eecfb9e6ca8
parent 590317 a49112c7a5765802096b3fc298069b9495436107
child 632513 1d9f5a73c6b58e76c9438a0e72e16940d21e6c37
push id63052
push userbmo:boris.chiou@gmail.com
push dateFri, 09 Jun 2017 02:44:26 +0000
bugs1370846
milestone55.0a1
Bug 1370846 - Make -moz-outline-radius-{*} animatable. MozReview-Commit-ID: 1FYaV4xBzUJ
servo/components/style/properties/gecko.mako.rs
servo/components/style/properties/longhand/outline.mako.rs
--- a/servo/components/style/properties/gecko.mako.rs
+++ b/servo/components/style/properties/gecko.mako.rs
@@ -566,17 +566,17 @@ fn color_to_nscolor_zero_currentcolor(co
         pub fn clone_${ident}(&self) -> longhands::${ident}::computed_value::T {
             use properties::longhands::${ident}::computed_value::T;
             T::from_gecko_style_coord(&self.gecko.${gecko_ffi_name})
                 .expect("clone for ${ident} failed")
         }
     % endif
 </%def>
 
-<%def name="impl_corner_style_coord(ident, gecko_ffi_name, x_index, y_index, need_clone=False)">
+<%def name="impl_corner_style_coord(ident, gecko_ffi_name, x_index, y_index, need_clone)">
     #[allow(non_snake_case)]
     pub fn set_${ident}(&mut self, v: longhands::${ident}::computed_value::T) {
         v.0.width.to_gecko_style_coord(&mut self.gecko.${gecko_ffi_name}.data_at_mut(${x_index}));
         v.0.height.to_gecko_style_coord(&mut self.gecko.${gecko_ffi_name}.data_at_mut(${y_index}));
     }
     #[allow(non_snake_case)]
     pub fn copy_${ident}_from(&mut self, other: &Self) {
         self.gecko.${gecko_ffi_name}.data_at_mut(${x_index})
@@ -1486,17 +1486,18 @@ fn static_assert() {
     <% impl_app_units("outline_width", "mActualOutlineWidth",
                       inherit_from="mOutlineWidth",
                       need_clone=True, round_to_pixels=True) %>
 
     % for corner in CORNERS:
     <% impl_corner_style_coord("_moz_outline_radius_%s" % corner.ident.replace("_", ""),
                                "mOutlineRadius",
                                corner.x_index,
-                               corner.y_index) %>
+                               corner.y_index,
+                               need_clone=True) %>
     % endfor
 
     pub fn outline_has_nonzero_width(&self) -> bool {
         self.gecko.mActualOutlineWidth != 0
     }
 </%self:impl_trait>
 
 <%
--- a/servo/components/style/properties/longhand/outline.mako.rs
+++ b/servo/components/style/properties/longhand/outline.mako.rs
@@ -65,21 +65,20 @@
                           "BorderSideWidth",
                           "Au::from_px(3)",
                           initial_specified_value="specified::BorderSideWidth::Medium",
                           computed_type="::app_units::Au",
                           animation_value_type="ComputedValue",
                           spec="https://drafts.csswg.org/css-ui/#propdef-outline-width")}
 
 // The -moz-outline-radius-* properties are non-standard and not on a standards track.
-// TODO: Should they animate?
 % for corner in ["topleft", "topright", "bottomright", "bottomleft"]:
     ${helpers.predefined_type("-moz-outline-radius-" + corner, "BorderCornerRadius",
         "computed::LengthOrPercentage::zero().into()",
         products="gecko",
         boxed=True,
-        animation_value_type="none",
+        animation_value_type="ComputedValue",
         spec="Nonstandard (https://developer.mozilla.org/en-US/docs/Web/CSS/-moz-outline-radius)")}
 % endfor
 
 ${helpers.predefined_type("outline-offset", "Length", "Au(0)", products="servo gecko",
                           animation_value_type="ComputedValue",
                           spec="https://drafts.csswg.org/css-ui/#propdef-outline-offset")}