From dd381174879ab248f84b66d46a9154ed7180edd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Mon, 22 May 2017 11:41:12 +0200 Subject: [PATCH] stylo: Parse but never match :-moz-placeholder as a pseudo-class. Fixes bug 1366709. --- components/style/gecko/non_ts_pseudo_class_list.rs | 1 + components/style/gecko/selector_parser.rs | 3 ++- components/style/gecko/wrapper.rs | 1 + 3 files changed, 4 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 f6551ce90d4..524ecb2e655 100644 --- a/components/style/gecko/non_ts_pseudo_class_list.rs +++ b/components/style/gecko/non_ts_pseudo_class_list.rs @@ -107,6 +107,7 @@ macro_rules! apply_non_ts_list { ("-moz-only-whitespace", MozOnlyWhitespace, mozOnlyWhitespace, _, _), ("-moz-native-anonymous", MozNativeAnonymous, mozNativeAnonymous, _, PSEUDO_CLASS_INTERNAL), ("-moz-is-html", MozIsHTML, mozIsHTML, _, _), + ("-moz-placeholder", MozPlaceholder, mozPlaceholder, _, _), ], string: [ ("-moz-system-metric", MozSystemMetric, mozSystemMetric, _, PSEUDO_CLASS_INTERNAL), diff --git a/components/style/gecko/selector_parser.rs b/components/style/gecko/selector_parser.rs index 787ecd5b2cb..30242dc9bcb 100644 --- a/components/style/gecko/selector_parser.rs +++ b/components/style/gecko/selector_parser.rs @@ -166,7 +166,8 @@ impl NonTSPseudoClass { !matches!(*self, NonTSPseudoClass::MozAny(_) | NonTSPseudoClass::Dir(_) | - NonTSPseudoClass::MozIsHTML) + NonTSPseudoClass::MozIsHTML | + NonTSPseudoClass::MozPlaceholder) } /// Convert NonTSPseudoClass to Gecko's CSSPseudoClassType. diff --git a/components/style/gecko/wrapper.rs b/components/style/gecko/wrapper.rs index e043ff57223..3732ea40051 100644 --- a/components/style/gecko/wrapper.rs +++ b/components/style/gecko/wrapper.rs @@ -1335,6 +1335,7 @@ impl<'le> ::selectors::Element for GeckoElement<'le> { NonTSPseudoClass::MozIsHTML => { self.is_html_element_in_html_document() } + NonTSPseudoClass::MozPlaceholder => false, NonTSPseudoClass::MozAny(ref sels) => { sels.iter().any(|s| { matches_complex_selector(s, self, context, flags_setter)