Check ElementHasAnimations flag in rust side.

We can bail out earlier before calling an FFI function.
This commit is contained in:
Hiroyuki Ikezoe 2017-05-12 11:56:18 +09:00
parent d1f2cdfb3d
commit 652c2153a4

View file

@ -406,6 +406,12 @@ impl<'le> GeckoElement<'le> {
}, },
} }
} }
fn may_have_animations(&self) -> bool {
use gecko_bindings::structs::nsINode_BooleanFlag;
self.as_node().bool_flags() &
(1u32 << nsINode_BooleanFlag::ElementHasAnimations as u32) != 0
}
} }
/// Converts flags from the layout used by rust-selectors to the layout used /// Converts flags from the layout used by rust-selectors to the layout used
@ -738,15 +744,15 @@ impl<'le> TElement for GeckoElement<'le> {
} }
fn has_animations(&self) -> bool { fn has_animations(&self) -> bool {
unsafe { Gecko_ElementHasAnimations(self.0) } self.may_have_animations() && unsafe { Gecko_ElementHasAnimations(self.0) }
} }
fn has_css_animations(&self) -> bool { fn has_css_animations(&self) -> bool {
unsafe { Gecko_ElementHasCSSAnimations(self.0) } self.may_have_animations() && unsafe { Gecko_ElementHasCSSAnimations(self.0) }
} }
fn has_css_transitions(&self) -> bool { fn has_css_transitions(&self) -> bool {
unsafe { Gecko_ElementHasCSSTransitions(self.0) } self.may_have_animations() && unsafe { Gecko_ElementHasCSSTransitions(self.0) }
} }
fn get_css_transitions_info(&self) fn get_css_transitions_info(&self)