geckolib: Return from Servo_ComputeColor whether the value was currentcolor. draft
authorCameron McCormack <cam@mcc.id.au>
Fri, 24 Nov 2017 11:28:34 +0800
changeset 706731 24df640b6e55d74df42e909f6d12a971ece5d05d
parent 706692 709f355a7a8c4ae426d1824841a71ffdb5ce0137
child 706732 84e0b8a32a3b1648bb54da7ba475a7c9d69f3113
push id91902
push userbmo:cam@mcc.id.au
push dateMon, 04 Dec 2017 05:26:25 +0000
milestone59.0a1
geckolib: Return from Servo_ComputeColor whether the value was currentcolor. MozReview-Commit-ID: CwOJrfBG12J
servo/ports/geckolib/glue.rs
--- a/servo/ports/geckolib/glue.rs
+++ b/servo/ports/geckolib/glue.rs
@@ -4564,16 +4564,17 @@ pub extern "C" fn Servo_IsValidCSSColor(
 }
 
 #[no_mangle]
 pub extern "C" fn Servo_ComputeColor(
     raw_data: RawServoStyleSetBorrowedOrNull,
     current_color: structs::nscolor,
     value: *const nsAString,
     result_color: *mut structs::nscolor,
+    was_current_color: *mut bool,
 ) -> bool {
     use style::gecko;
 
     let current_color = gecko::values::convert_nscolor_to_rgba(current_color);
     let value = unsafe { (*value).to_string() };
     let result_color = unsafe { result_color.as_mut().unwrap() };
 
     match parse_color(&value) {
@@ -4598,16 +4599,21 @@ pub extern "C" fn Servo_ComputeColor(
                     specified_color.to_computed_color(None)
                 }
             };
 
             match computed_color {
                 Some(computed_color) => {
                     let rgba = computed_color.to_rgba(current_color);
                     *result_color = gecko::values::convert_rgba_to_nscolor(&rgba);
+                    if !was_current_color.is_null() {
+                        unsafe {
+                            *was_current_color = computed_color.is_currentcolor();
+                        }
+                    }
                     true
                 }
                 None => false,
             }
         }
         Err(_) => false,
     }
 }