Title: [277039] trunk
- Revision
- 277039
- Author
- [email protected]
- Date
- 2021-05-05 13:41:43 -0700 (Wed, 05 May 2021)
Log Message
Invalid media query keyword values should not be parsable
https://bugs.webkit.org/show_bug.cgi?id=225282
Reviewed by Dean Jackson.
Updated WPT expectations.
LayoutTests/imported/w3c:
* web-platform-tests/css/mediaqueries/prefers-color-scheme-expected.txt:
* web-platform-tests/css/mediaqueries/prefers-reduced-motion-expected.txt:
Source/WebCore:
* css/MediaQueryExpression.cpp:
(WebCore::isValidValueForIdentMediaFeature):
(WebCore::featureWithValidIdent):
Modified Paths
Diff
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (277038 => 277039)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-05-05 20:34:53 UTC (rev 277038)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2021-05-05 20:41:43 UTC (rev 277039)
@@ -1,3 +1,15 @@
+2021-05-05 Tim Nguyen <[email protected]>
+
+ Invalid media query keyword values should not be parsable
+ https://bugs.webkit.org/show_bug.cgi?id=225282
+
+ Reviewed by Dean Jackson.
+
+ Updated WPT expectations.
+
+ * web-platform-tests/css/mediaqueries/prefers-color-scheme-expected.txt:
+ * web-platform-tests/css/mediaqueries/prefers-reduced-motion-expected.txt:
+
2021-05-05 Chris Lord <[email protected]>
Update WPT OffscreenCanvas tests to respect [EnforceRange]
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-color-scheme-expected.txt (277038 => 277039)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-color-scheme-expected.txt 2021-05-05 20:34:53 UTC (rev 277038)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-color-scheme-expected.txt 2021-05-05 20:41:43 UTC (rev 277039)
@@ -3,21 +3,21 @@
PASS Should be parseable in a CSS stylesheet: '(prefers-color-scheme: light)'
PASS Should be parseable in a CSS stylesheet: '(prefers-color-scheme: dark)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: 0)'
-FAIL Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: none)' assert_false: expected false got true
+PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: none)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: 10px)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: dark 0)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: dark light)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: light/dark)'
-FAIL Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: no-preference)' assert_false: expected false got true
+PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: no-preference)'
PASS Should be parseable in JS: '(prefers-color-scheme)'
PASS Should be parseable in JS: '(prefers-color-scheme: light)'
PASS Should be parseable in JS: '(prefers-color-scheme: dark)'
PASS Should not be parseable in JS: '(prefers-color-scheme: 0)'
-FAIL Should not be parseable in JS: '(prefers-color-scheme: none)' assert_false: expected false got true
+PASS Should not be parseable in JS: '(prefers-color-scheme: none)'
PASS Should not be parseable in JS: '(prefers-color-scheme: 10px)'
PASS Should not be parseable in JS: '(prefers-color-scheme: dark 0)'
PASS Should not be parseable in JS: '(prefers-color-scheme: dark light)'
PASS Should not be parseable in JS: '(prefers-color-scheme: light/dark)'
-FAIL Should not be parseable in JS: '(prefers-color-scheme: no-preference)' assert_false: expected false got true
+PASS Should not be parseable in JS: '(prefers-color-scheme: no-preference)'
PASS Check that prefer-color-scheme evaluates to true in the boolean context
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-reduced-motion-expected.txt (277038 => 277039)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-reduced-motion-expected.txt 2021-05-05 20:34:53 UTC (rev 277038)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-reduced-motion-expected.txt 2021-05-05 20:41:43 UTC (rev 277039)
@@ -3,16 +3,16 @@
PASS Should be parseable in a CSS stylesheet: '(prefers-reduced-motion: no-preference)'
PASS Should be parseable in a CSS stylesheet: '(prefers-reduced-motion: reduce)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-reduced-motion: 0)'
-FAIL Should not be parseable in a CSS stylesheet: '(prefers-reduced-motion: none)' assert_false: expected false got true
+PASS Should not be parseable in a CSS stylesheet: '(prefers-reduced-motion: none)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-reduced-motion: 10px)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-reduced-motion: no-preference reduce)'
-FAIL Should not be parseable in a CSS stylesheet: '(prefers-reduced-motion: reduced)' assert_false: expected false got true
+PASS Should not be parseable in a CSS stylesheet: '(prefers-reduced-motion: reduced)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-reduced-motion: no-preference/reduce)'
PASS Should be parseable in JS: '(prefers-reduced-motion)'
PASS Should be parseable in JS: '(prefers-reduced-motion: no-preference)'
PASS Should be parseable in JS: '(prefers-reduced-motion: reduce)'
PASS Should not be parseable in JS: '(prefers-reduced-motion: 0)'
-FAIL Should not be parseable in JS: '(prefers-reduced-motion: none)' assert_false: expected false got true
+PASS Should not be parseable in JS: '(prefers-reduced-motion: none)'
PASS Should not be parseable in JS: '(prefers-reduced-motion: 10px)'
PASS Should not be parseable in JS: '(prefers-reduced-motion: no-preference reduce)'
PASS Should not be parseable in JS: '(prefers-reduced-motion: reduced)'
Modified: trunk/Source/WebCore/ChangeLog (277038 => 277039)
--- trunk/Source/WebCore/ChangeLog 2021-05-05 20:34:53 UTC (rev 277038)
+++ trunk/Source/WebCore/ChangeLog 2021-05-05 20:41:43 UTC (rev 277039)
@@ -1,3 +1,16 @@
+2021-05-05 Tim Nguyen <[email protected]>
+
+ Invalid media query keyword values should not be parsable
+ https://bugs.webkit.org/show_bug.cgi?id=225282
+
+ Reviewed by Dean Jackson.
+
+ Updated WPT expectations.
+
+ * css/MediaQueryExpression.cpp:
+ (WebCore::isValidValueForIdentMediaFeature):
+ (WebCore::featureWithValidIdent):
+
2021-05-05 Alex Christensen <[email protected]>
Add WebKitAdditions stubs for new NetworkLoadMetrics
Modified: trunk/Source/WebCore/css/MediaQueryExpression.cpp (277038 => 277039)
--- trunk/Source/WebCore/css/MediaQueryExpression.cpp 2021-05-05 20:34:53 UTC (rev 277038)
+++ trunk/Source/WebCore/css/MediaQueryExpression.cpp 2021-05-05 20:41:43 UTC (rev 277039)
@@ -38,9 +38,43 @@
namespace WebCore {
+static inline bool isValidValueForIdentMediaFeature(const AtomString& feature, const CSSPrimitiveValue& value)
+{
+ auto valueID = value.valueID();
+
+ if (feature == MediaFeatureNames::orientation)
+ return valueID == CSSValuePortrait || valueID == CSSValueLandscape;
+ if (feature == MediaFeatureNames::colorGamut)
+ return valueID == CSSValueSRGB || valueID == CSSValueP3 || valueID == CSSValueRec2020;
+ if (feature == MediaFeatureNames::anyHover || feature == MediaFeatureNames::hover) // FIXME: remove `on-demand` that's no longer in the spec.
+ return valueID == CSSValueOnDemand || valueID == CSSValueHover || valueID == CSSValueNone;
+ if (feature == MediaFeatureNames::anyPointer || feature == MediaFeatureNames::pointer)
+ return valueID == CSSValueFine || valueID == CSSValueCoarse || valueID == CSSValueNone;
+ if (feature == MediaFeatureNames::invertedColors)
+ return valueID == CSSValueInverted || valueID == CSSValueNone;
+#if ENABLE(APPLICATION_MANIFEST)
+ if (feature == MediaFeatureNames::displayMode)
+ return valueID == CSSValueFullscreen || valueID == CSSValueStandalone || valueID == CSSValueMinimalUi || valueID == CSSValueBrowser;
+#endif
+#if ENABLE(DARK_MODE_CSS)
+ if (feature == MediaFeatureNames::prefersColorScheme)
+ return valueID == CSSValueLight || valueID == CSSValueDark;
+#endif
+ if (feature == MediaFeatureNames::prefersContrast) // FIXME: remove `forced` that's no longer in the spec.
+ return valueID == CSSValueNoPreference || valueID == CSSValueMore || valueID == CSSValueLess || valueID == CSSValueForced;
+ if (feature == MediaFeatureNames::prefersReducedMotion)
+ return valueID == CSSValueNoPreference || valueID == CSSValueReduce;
+ if (feature == MediaFeatureNames::prefersDarkInterface)
+ return valueID == CSSValuePrefers || valueID == CSSValueNoPreference;
+ if (feature == MediaFeatureNames::dynamicRange)
+ return valueID == CSSValueHigh || valueID == CSSValueStandard;
+
+ return false;
+}
+
static inline bool featureWithValidIdent(const AtomString& mediaFeature, const CSSPrimitiveValue& value, const MediaQueryParserContext& context)
{
- if (value.primitiveType() != CSSUnitType::CSS_IDENT)
+ if (value.primitiveType() != CSSUnitType::CSS_IDENT || !isValidValueForIdentMediaFeature(mediaFeature, value))
return false;
return mediaFeature == MediaFeatureNames::orientation
@@ -54,7 +88,7 @@
|| mediaFeature == MediaFeatureNames::displayMode
#endif
#if ENABLE(DARK_MODE_CSS)
- || (mediaFeature == MediaFeatureNames::prefersColorScheme)
+ || mediaFeature == MediaFeatureNames::prefersColorScheme
#endif
|| mediaFeature == MediaFeatureNames::prefersContrast
|| mediaFeature == MediaFeatureNames::prefersReducedMotion
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes