geckolib: Return from Servo_ComputeColor whether the value was currentcolor.
draft
geckolib: Return from Servo_ComputeColor whether the value was currentcolor.
MozReview-Commit-ID: CwOJrfBG12J
--- 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,
}
}