mirror of
https://github.com/servo/servo.git
synced 2025-09-07 05:28:21 +01:00
Add Servo_GetProperties_Overriding_Animation.
We add one FFI, Servo_GetProperties_Overriding_Animation, which calls StrongRuleNode::get_properties_overriding_animations() to get a LonghandIdSet, which may override animation properties running on compositor.
This commit is contained in:
parent
f05491166f
commit
60e7a89d57
4 changed files with 95 additions and 3 deletions
|
@ -40,11 +40,13 @@ use style::gecko_bindings::bindings::{RawServoStyleSheetBorrowed, ServoComputedV
|
|||
use style::gecko_bindings::bindings::{RawServoStyleSheetStrong, ServoComputedValuesStrong};
|
||||
use style::gecko_bindings::bindings::{RawServoSupportsRule, RawServoSupportsRuleBorrowed};
|
||||
use style::gecko_bindings::bindings::{ServoCssRulesBorrowed, ServoCssRulesStrong};
|
||||
use style::gecko_bindings::bindings::{nsACString, nsAString};
|
||||
use style::gecko_bindings::bindings::{nsACString, nsAString, nsCSSPropertyIDSetBorrowedMut};
|
||||
use style::gecko_bindings::bindings::Gecko_AddPropertyToSet;
|
||||
use style::gecko_bindings::bindings::Gecko_GetOrCreateFinalKeyframe;
|
||||
use style::gecko_bindings::bindings::Gecko_GetOrCreateInitialKeyframe;
|
||||
use style::gecko_bindings::bindings::Gecko_GetOrCreateKeyframeAtStart;
|
||||
use style::gecko_bindings::bindings::RawGeckoAnimationPropertySegmentBorrowed;
|
||||
use style::gecko_bindings::bindings::RawGeckoCSSPropertyIDListBorrowed;
|
||||
use style::gecko_bindings::bindings::RawGeckoComputedKeyframeValuesListBorrowedMut;
|
||||
use style::gecko_bindings::bindings::RawGeckoComputedTimingBorrowed;
|
||||
use style::gecko_bindings::bindings::RawGeckoElementBorrowed;
|
||||
|
@ -1319,6 +1321,38 @@ pub extern "C" fn Servo_ParseEasing(easing: *const nsAString,
|
|||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn Servo_GetProperties_Overriding_Animation(element: RawGeckoElementBorrowed,
|
||||
list: RawGeckoCSSPropertyIDListBorrowed,
|
||||
set: nsCSSPropertyIDSetBorrowedMut) {
|
||||
let element = GeckoElement(element);
|
||||
let element_data = match element.borrow_data() {
|
||||
Some(data) => data,
|
||||
None => return
|
||||
};
|
||||
let global_style_data = &*GLOBAL_STYLE_DATA;
|
||||
let guard = global_style_data.shared_lock.read();
|
||||
let guards = StylesheetGuards::same(&guard);
|
||||
let (overridden, custom) =
|
||||
element_data.styles().primary.rules.get_properties_overriding_animations(&guards);
|
||||
for p in list.iter() {
|
||||
match PropertyId::from_nscsspropertyid(*p) {
|
||||
Ok(property) => {
|
||||
if let PropertyId::Longhand(id) = property {
|
||||
if overridden.contains(id) {
|
||||
unsafe { Gecko_AddPropertyToSet(set, *p) };
|
||||
}
|
||||
}
|
||||
},
|
||||
Err(_) => {
|
||||
if *p == nsCSSPropertyID::eCSSPropertyExtra_variable && custom {
|
||||
unsafe { Gecko_AddPropertyToSet(set, *p) };
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn Servo_ParseStyleAttribute(data: *const nsACString,
|
||||
raw_extra_data: *mut URLExtraData,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue