From 04af68a4b4c07ebae41e29150ff00bd55912f0b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Naz=C4=B1m=20Can=20Alt=C4=B1nova?= Date: Wed, 15 Mar 2017 17:28:36 +0300 Subject: [PATCH 1/2] Stylo: Add placeholder-shown/target pseudo-classes to pseudo_class_list --- components/style/gecko/non_ts_pseudo_class_list.rs | 2 ++ components/style/gecko/wrapper.rs | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/style/gecko/non_ts_pseudo_class_list.rs b/components/style/gecko/non_ts_pseudo_class_list.rs index 0fc580cdc08..e73878ed67c 100644 --- a/components/style/gecko/non_ts_pseudo_class_list.rs +++ b/components/style/gecko/non_ts_pseudo_class_list.rs @@ -44,6 +44,8 @@ macro_rules! apply_non_ts_list { ("disabled", Disabled, disabled, IN_DISABLED_STATE, _), ("checked", Checked, checked, IN_CHECKED_STATE, _), ("indeterminate", Indeterminate, indeterminate, IN_INDETERMINATE_STATE, _), + ("placeholder-shown", PlaceholderShown, placeholderShown, IN_PLACEHOLDER_SHOWN_STATE, _), + ("target", Target, target, IN_TARGET_STATE, _), ("read-write", ReadWrite, _, IN_READ_WRITE_STATE, _), ("read-only", ReadOnly, _, IN_READ_WRITE_STATE, _), diff --git a/components/style/gecko/wrapper.rs b/components/style/gecko/wrapper.rs index 2c1f07b28b1..c733b533898 100644 --- a/components/style/gecko/wrapper.rs +++ b/components/style/gecko/wrapper.rs @@ -651,7 +651,9 @@ impl<'le> ::selectors::Element for GeckoElement<'le> { NonTSPseudoClass::Checked | NonTSPseudoClass::ReadWrite | NonTSPseudoClass::Fullscreen | - NonTSPseudoClass::Indeterminate => { + NonTSPseudoClass::Indeterminate | + NonTSPseudoClass::PlaceholderShown | + NonTSPseudoClass::Target => { self.get_state().contains(pseudo_class.state_flag()) }, NonTSPseudoClass::ReadOnly => { From bd7c8eb5136da5a751cb2446cc35242229081249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Naz=C4=B1m=20Can=20Alt=C4=B1nova?= Date: Wed, 15 Mar 2017 17:34:29 +0300 Subject: [PATCH 2/2] Stylo: Add support for :valid/:invalid/:-moz-ui-valid pseudo-classes --- components/style/element_state.rs | 8 +++++++- components/style/gecko/non_ts_pseudo_class_list.rs | 3 +++ components/style/gecko/wrapper.rs | 5 ++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/components/style/element_state.rs b/components/style/element_state.rs index 3bfa55242ad..c5e11ba1848 100644 --- a/components/style/element_state.rs +++ b/components/style/element_state.rs @@ -37,7 +37,13 @@ bitflags! { const IN_TARGET_STATE = 0x100, #[doc = "https://fullscreen.spec.whatwg.org/#%3Afullscreen-pseudo-class"] const IN_FULLSCREEN_STATE = 0x200, + #[doc = "https://html.spec.whatwg.org/multipage/#selector-valid"] + const IN_VALID_STATE = 0x400, + #[doc = "https://html.spec.whatwg.org/multipage/#selector-invalid"] + const IN_INVALID_STATE = 0x800, + #[doc = "Non-standard: https://developer.mozilla.org/en-US/docs/Web/CSS/:-moz-ui-valid"] + const IN_MOZ_UI_VALID_STATE = 0x1000, #[doc = "https://html.spec.whatwg.org/multipage/#selector-read-write"] - const IN_READ_WRITE_STATE = 0x400, + const IN_READ_WRITE_STATE = 0x2000, } } diff --git a/components/style/gecko/non_ts_pseudo_class_list.rs b/components/style/gecko/non_ts_pseudo_class_list.rs index e73878ed67c..6f70feca239 100644 --- a/components/style/gecko/non_ts_pseudo_class_list.rs +++ b/components/style/gecko/non_ts_pseudo_class_list.rs @@ -46,6 +46,9 @@ macro_rules! apply_non_ts_list { ("indeterminate", Indeterminate, indeterminate, IN_INDETERMINATE_STATE, _), ("placeholder-shown", PlaceholderShown, placeholderShown, IN_PLACEHOLDER_SHOWN_STATE, _), ("target", Target, target, IN_TARGET_STATE, _), + ("valid", Valid, valid, IN_VALID_STATE, _), + ("invalid", Invalid, invalid, IN_INVALID_STATE, _), + ("-moz-ui-valid", MozUIValid, mozUIValid, IN_MOZ_UI_VALID_STATE, _), ("read-write", ReadWrite, _, IN_READ_WRITE_STATE, _), ("read-only", ReadOnly, _, IN_READ_WRITE_STATE, _), diff --git a/components/style/gecko/wrapper.rs b/components/style/gecko/wrapper.rs index c733b533898..76974f0d2f7 100644 --- a/components/style/gecko/wrapper.rs +++ b/components/style/gecko/wrapper.rs @@ -653,7 +653,10 @@ impl<'le> ::selectors::Element for GeckoElement<'le> { NonTSPseudoClass::Fullscreen | NonTSPseudoClass::Indeterminate | NonTSPseudoClass::PlaceholderShown | - NonTSPseudoClass::Target => { + NonTSPseudoClass::Target | + NonTSPseudoClass::Valid | + NonTSPseudoClass::Invalid | + NonTSPseudoClass::MozUIValid => { self.get_state().contains(pseudo_class.state_flag()) }, NonTSPseudoClass::ReadOnly => {