style: :dir() pseudo class now represented by enum

Fixes #19195
This commit is contained in:
Michael Wilson 2017-11-10 00:00:48 -08:00
parent e6b05fa204
commit 10f3ef42bb
7 changed files with 73 additions and 27 deletions

View file

@ -74,7 +74,7 @@ use properties::animated_properties::{AnimationValue, AnimationValueMap};
use properties::animated_properties::TransitionProperty;
use properties::style_structs::Font;
use rule_tree::CascadeLevel as ServoCascadeLevel;
use selector_parser::{AttrValue, PseudoClassStringArg};
use selector_parser::{AttrValue, Direction, PseudoClassStringArg};
use selectors::{Element, OpaqueElement};
use selectors::attr::{AttrSelectorOperation, AttrSelectorOperator, CaseSensitivity, NamespaceConstraint};
use selectors::matching::{ElementSelectorFlags, MatchingContext};
@ -2068,8 +2068,7 @@ impl<'le> ::selectors::Element for GeckoElement<'le> {
NonTSPseudoClass::Lang(ref lang_arg) => {
self.match_element_lang(None, lang_arg)
}
NonTSPseudoClass::MozLocaleDir(ref s) |
NonTSPseudoClass::Dir(ref s) => {
NonTSPseudoClass::MozLocaleDir(ref s) => {
unsafe {
Gecko_MatchStringArgPseudo(
self.0,
@ -2078,6 +2077,13 @@ impl<'le> ::selectors::Element for GeckoElement<'le> {
)
}
}
NonTSPseudoClass::Dir(ref dir) => {
match **dir {
Direction::Ltr => self.get_state().intersects(ElementState::IN_LTR_STATE),
Direction::Rtl => self.get_state().intersects(ElementState::IN_RTL_STATE),
Direction::Other(..) => false,
}
}
}
}