Auto merge of #19195 - wilsoniya:issue-16840, r=emilio

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

`:dir()` pseudo class param now represented as enum variants.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #16840
- [X] There are tests for these changes

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19195)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2017-11-21 02:56:49 -06:00 committed by GitHub
commit 006202732f
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};
@ -2070,8 +2070,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,
@ -2080,6 +2079,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,
}
}
}
}