aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/style/gecko_bindings/bindings.rs13
-rw-r--r--ports/geckolib/glue.rs40
2 files changed, 37 insertions, 16 deletions
diff --git a/components/style/gecko_bindings/bindings.rs b/components/style/gecko_bindings/bindings.rs
index 579e82f0d8e..0709c581d87 100644
--- a/components/style/gecko_bindings/bindings.rs
+++ b/components/style/gecko_bindings/bindings.rs
@@ -1303,13 +1303,18 @@ extern "C" {
-> RawServoDeclarationBlockStrong;
}
extern "C" {
- pub fn Servo_AnimationValues_GetOpacity(value:
- RawServoAnimationValueBorrowed)
+ pub fn Servo_AnimationValue_Serialize(value:
+ RawServoAnimationValueBorrowed,
+ property: nsCSSPropertyID,
+ buffer: *mut nsAString_internal);
+}
+extern "C" {
+ pub fn Servo_AnimationValue_GetOpacity(value: RawServoAnimationValueBorrowed)
-> f32;
}
extern "C" {
- pub fn Servo_AnimationValues_GetTransform(value: RawServoAnimationValueBorrowed,
- list: &mut RefPtr<nsCSSValueSharedList>);
+ pub fn Servo_AnimationValue_GetTransform(value: RawServoAnimationValueBorrowed,
+ list: &mut RefPtr<nsCSSValueSharedList>);
}
extern "C" {
pub fn Servo_ParseStyleAttribute(data: *const nsACString_internal)
diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs
index ce1e1d123ca..e7b3354b58b 100644
--- a/ports/geckolib/glue.rs
+++ b/ports/geckolib/glue.rs
@@ -207,8 +207,33 @@ pub extern "C" fn Servo_AnimationValues_Uncompute(value: RawServoAnimationValueB
})).into_strong()
}
+macro_rules! get_property_id_from_nscsspropertyid {
+ ($property_id: ident, $ret: expr) => {{
+ match PropertyId::from_nscsspropertyid($property_id) {
+ Ok(property_id) => property_id,
+ Err(()) => { return $ret; }
+ }
+ }}
+}
+
+#[no_mangle]
+pub extern "C" fn Servo_AnimationValue_Serialize(value: RawServoAnimationValueBorrowed,
+ property: nsCSSPropertyID,
+ buffer: *mut nsAString)
+{
+ let uncomputed_value = AnimationValue::as_arc(&value).uncompute();
+ let mut string = String::new();
+ let rv = PropertyDeclarationBlock {
+ declarations: vec![(uncomputed_value, Importance::Normal)],
+ important_count: 0
+ }.single_value_to_css(&get_property_id_from_nscsspropertyid!(property, ()), &mut string);
+ debug_assert!(rv.is_ok());
+
+ write!(unsafe { &mut *buffer }, "{}", string).expect("Failed to copy string");
+}
+
#[no_mangle]
-pub extern "C" fn Servo_AnimationValues_GetOpacity(value: RawServoAnimationValueBorrowed)
+pub extern "C" fn Servo_AnimationValue_GetOpacity(value: RawServoAnimationValueBorrowed)
-> f32
{
let value = AnimationValue::as_arc(&value);
@@ -220,8 +245,8 @@ pub extern "C" fn Servo_AnimationValues_GetOpacity(value: RawServoAnimationValue
}
#[no_mangle]
-pub extern "C" fn Servo_AnimationValues_GetTransform(value: RawServoAnimationValueBorrowed,
- list: &mut structs::RefPtr<nsCSSValueSharedList>)
+pub extern "C" fn Servo_AnimationValue_GetTransform(value: RawServoAnimationValueBorrowed,
+ list: &mut structs::RefPtr<nsCSSValueSharedList>)
{
let value = AnimationValue::as_arc(&value);
if let AnimationValue::Transform(ref servo_list) = **value {
@@ -844,15 +869,6 @@ pub extern "C" fn Servo_DeclarationBlock_GetCssText(declarations: RawServoDeclar
declarations.read().to_css(unsafe { result.as_mut().unwrap() }).unwrap();
}
-macro_rules! get_property_id_from_nscsspropertyid {
- ($property_id: ident, $ret: expr) => {{
- match PropertyId::from_nscsspropertyid($property_id) {
- Ok(property_id) => property_id,
- Err(()) => { return $ret; }
- }
- }}
-}
-
#[no_mangle]
pub extern "C" fn Servo_DeclarationBlock_SerializeOneValue(
declarations: RawServoDeclarationBlockBorrowed,