- Revision
- 199024
- Author
- d...@apple.com
- Date
- 2016-04-04 15:10:50 -0700 (Mon, 04 Apr 2016)
Log Message
Add color-gamut media query support
https://bugs.webkit.org/show_bug.cgi?id=155994
<rdar://problem/23282326>
Reviewed by Darin Adler.
Source/WebCore:
Add the new CSS media query: color-gamut
https://drafts.csswg.org/mediaqueries-4/#color-gamut
This ultimately calls into screenSupportsExtendedColor,
which has only been implemented on iOS at the moment.
All displays will match the "srgb" keyword, but only
iOS devices with an extended color screen will
match against "p3" (e.g. the iPad Pro 9.7").
Nothing will match against "rec2020".
Test: fast/media/mq-color-gamut.html
* css/CSSValueKeywords.in: Add "p3" and "rec2020".
* css/MediaFeatureNames.h: Add "color-gamut"
* css/MediaQueryEvaluator.cpp:
(WebCore::color_gamutMediaFeatureEval): Call
screenSupportsExtendedColor to see if we're srgb or p3.
* css/MediaQueryExp.cpp:
(WebCore::featureWithCSSValueID):
* platform/efl/PlatformScreenEfl.cpp: Add empty implementation.
(WebCore::screenSupportsExtendedColor):
* platform/gtk/PlatformScreenGtk.cpp: Ditto.
(WebCore::screenSupportsExtendedColor):
* platform/win/PlatformScreenWin.cpp: Ditto.
(WebCore::screenSupportsExtendedColor):
LayoutTests:
New test for color-gamut.
* fast/media/mq-color-gamut-expected.html: Added.
* fast/media/mq-color-gamut.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (199023 => 199024)
--- trunk/LayoutTests/ChangeLog 2016-04-04 21:22:29 UTC (rev 199023)
+++ trunk/LayoutTests/ChangeLog 2016-04-04 22:10:50 UTC (rev 199024)
@@ -1,3 +1,16 @@
+2016-04-04 Dean Jackson <d...@apple.com>
+
+ Add color-gamut media query support
+ https://bugs.webkit.org/show_bug.cgi?id=155994
+ <rdar://problem/23282326>
+
+ Reviewed by Darin Adler.
+
+ New test for color-gamut.
+
+ * fast/media/mq-color-gamut-expected.html: Added.
+ * fast/media/mq-color-gamut.html: Added.
+
2016-04-04 Ryan Haddad <ryanhad...@apple.com>
Skipping crashing test fast/loader/opaque-base-url.html on Debug
Added: trunk/LayoutTests/fast/media/mq-color-gamut-expected.html (0 => 199024)
--- trunk/LayoutTests/fast/media/mq-color-gamut-expected.html (rev 0)
+++ trunk/LayoutTests/fast/media/mq-color-gamut-expected.html 2016-04-04 22:10:50 UTC (rev 199024)
@@ -0,0 +1,16 @@
+<html>
+<head>
+<title>CSS4 media query test: color-gamut.</title>
+<style type="text/css">
+#a { background-color: green; }
+#b { background-color: blue; }
+#c { background-color: green; }
+</style>
+</head>
+<body>
+ <p id="a">This paragraph should have a green background.</p>
+ <p id="b">This paragraph should have a blue background on a device with a display that supports something close to sRGB, which is nearly all displays. Otherwise the background should be green.</p>
+ <p id="c">This paragraph should have a blue background on a device with a display that supports something close to P3. Otherwise the background should be green.</p>
+ <p>Note that the expected results of this test assume a display that is not significantly wider than sRGB.</p>
+</body>
+</html>
Property changes on: trunk/LayoutTests/fast/media/mq-color-gamut-expected.html
___________________________________________________________________
Added: svn:mime-type
Added: svn:keywords
Added: svn:eol-style
Added: trunk/LayoutTests/fast/media/mq-color-gamut.html (0 => 199024)
--- trunk/LayoutTests/fast/media/mq-color-gamut.html (rev 0)
+++ trunk/LayoutTests/fast/media/mq-color-gamut.html 2016-04-04 22:10:50 UTC (rev 199024)
@@ -0,0 +1,24 @@
+<html>
+<head>
+<title>CSS4 media query test: color-gamut.</title>
+<style type="text/css">
+#a { background-color: green; }
+#b { background-color: green; }
+#c { background-color: green; }
+
+@media (color-gamut: srgb) {
+#b { background-color: blue; }
+}
+
+@media (color-gamut: p3) {
+#c { background-color: blue; }
+}
+</style>
+</head>
+<body>
+ <p id="a">This paragraph should have a green background.</p>
+ <p id="b">This paragraph should have a blue background on a device with a display that supports something close to sRGB, which is nearly all displays. Otherwise the background should be green.</p>
+ <p id="c">This paragraph should have a blue background on a device with a display that supports something close to P3. Otherwise the background should be green.</p>
+ <p>Note that the expected results of this test assume a display that is not significantly wider than sRGB.</p>
+</body>
+</html>
Property changes on: trunk/LayoutTests/fast/media/mq-color-gamut.html
___________________________________________________________________
Added: svn:mime-type
Added: svn:keywords
Added: svn:eol-style
Modified: trunk/Source/WebCore/ChangeLog (199023 => 199024)
--- trunk/Source/WebCore/ChangeLog 2016-04-04 21:22:29 UTC (rev 199023)
+++ trunk/Source/WebCore/ChangeLog 2016-04-04 22:10:50 UTC (rev 199024)
@@ -1,3 +1,37 @@
+2016-04-04 Dean Jackson <d...@apple.com>
+
+ Add color-gamut media query support
+ https://bugs.webkit.org/show_bug.cgi?id=155994
+ <rdar://problem/23282326>
+
+ Reviewed by Darin Adler.
+
+ Add the new CSS media query: color-gamut
+ https://drafts.csswg.org/mediaqueries-4/#color-gamut
+
+ This ultimately calls into screenSupportsExtendedColor,
+ which has only been implemented on iOS at the moment.
+ All displays will match the "srgb" keyword, but only
+ iOS devices with an extended color screen will
+ match against "p3" (e.g. the iPad Pro 9.7").
+ Nothing will match against "rec2020".
+
+ Test: fast/media/mq-color-gamut.html
+
+ * css/CSSValueKeywords.in: Add "p3" and "rec2020".
+ * css/MediaFeatureNames.h: Add "color-gamut"
+ * css/MediaQueryEvaluator.cpp:
+ (WebCore::color_gamutMediaFeatureEval): Call
+ screenSupportsExtendedColor to see if we're srgb or p3.
+ * css/MediaQueryExp.cpp:
+ (WebCore::featureWithCSSValueID):
+ * platform/efl/PlatformScreenEfl.cpp: Add empty implementation.
+ (WebCore::screenSupportsExtendedColor):
+ * platform/gtk/PlatformScreenGtk.cpp: Ditto.
+ (WebCore::screenSupportsExtendedColor):
+ * platform/win/PlatformScreenWin.cpp: Ditto.
+ (WebCore::screenSupportsExtendedColor):
+
2016-04-04 Brent Fulgham <bfulg...@apple.com>
Update feature status on anchor download attribute.
Modified: trunk/Source/WebCore/css/CSSValueKeywords.in (199023 => 199024)
--- trunk/Source/WebCore/css/CSSValueKeywords.in 2016-04-04 21:22:29 UTC (rev 199023)
+++ trunk/Source/WebCore/css/CSSValueKeywords.in 2016-04-04 22:10:50 UTC (rev 199024)
@@ -1196,3 +1196,7 @@
first
force-end
last
+
+// color-gamut
+p3
+rec2020
Modified: trunk/Source/WebCore/css/MediaFeatureNames.h (199023 => 199024)
--- trunk/Source/WebCore/css/MediaFeatureNames.h 2016-04-04 21:22:29 UTC (rev 199023)
+++ trunk/Source/WebCore/css/MediaFeatureNames.h 2016-04-04 22:10:50 UTC (rev 199024)
@@ -36,6 +36,7 @@
macro(any_pointer, "any-pointer") \
macro(color, "color") \
macro(color_index, "color-index") \
+ macro(color_gamut, "color-gamut") \
macro(grid, "grid") \
macro(monochrome, "monochrome") \
macro(height, "height") \
Modified: trunk/Source/WebCore/css/MediaQueryEvaluator.cpp (199023 => 199024)
--- trunk/Source/WebCore/css/MediaQueryEvaluator.cpp 2016-04-04 21:22:29 UTC (rev 199023)
+++ trunk/Source/WebCore/css/MediaQueryEvaluator.cpp 2016-04-04 22:10:50 UTC (rev 199024)
@@ -250,6 +250,28 @@
return numberValue(value, number) && compareValue(0, static_cast<int>(number), op);
}
+static bool color_gamutMediaFeatureEval(CSSValue* value, const CSSToLengthConversionData&, Frame*, MediaFeaturePrefix)
+{
+ if (!value)
+ return true;
+
+ switch (downcast<CSSPrimitiveValue>(*value).getValueID()) {
+ case CSSValueSrgb:
+ return true;
+ case CSSValueP3:
+ // FIXME: For the moment we'll just assume an "extended
+ // color" display is at least as good as P3.
+ return screenSupportsExtendedColor();
+ case CSSValueRec2020:
+ // FIXME: At some point we should start detecting displays that
+ // support more colors.
+ return false;
+ default:
+ ASSERT_NOT_REACHED();
+ return true;
+ }
+}
+
static bool monochromeMediaFeatureEval(CSSValue* value, const CSSToLengthConversionData& conversionData, Frame* frame, MediaFeaturePrefix op)
{
if (!screenIsMonochrome(frame->page()->mainFrame().view())) {
Modified: trunk/Source/WebCore/css/MediaQueryExp.cpp (199023 => 199024)
--- trunk/Source/WebCore/css/MediaQueryExp.cpp 2016-04-04 21:22:29 UTC (rev 199023)
+++ trunk/Source/WebCore/css/MediaQueryExp.cpp 2016-04-04 22:10:50 UTC (rev 199024)
@@ -45,6 +45,7 @@
#if ENABLE(VIEW_MODE_CSS_MEDIA)
|| mediaFeature == MediaFeatureNames::view_modeMediaFeature
#endif // ENABLE(VIEW_MODE_CSS_MEDIA)
+ || mediaFeature == MediaFeatureNames::color_gamutMediaFeature
|| mediaFeature == MediaFeatureNames::any_hoverMediaFeature
|| mediaFeature == MediaFeatureNames::any_pointerMediaFeature
|| mediaFeature == MediaFeatureNames::hoverMediaFeature
Modified: trunk/Source/WebCore/platform/efl/PlatformScreenEfl.cpp (199023 => 199024)
--- trunk/Source/WebCore/platform/efl/PlatformScreenEfl.cpp 2016-04-04 21:22:29 UTC (rev 199023)
+++ trunk/Source/WebCore/platform/efl/PlatformScreenEfl.cpp 2016-04-04 22:10:50 UTC (rev 199024)
@@ -118,4 +118,9 @@
return screenRect(widget);
}
+bool screenSupportsExtendedColor()
+{
+ return false;
}
+
+}
Modified: trunk/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp (199023 => 199024)
--- trunk/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp 2016-04-04 21:22:29 UTC (rev 199023)
+++ trunk/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp 2016-04-04 22:10:50 UTC (rev 199024)
@@ -130,4 +130,9 @@
}
+bool screenSupportsExtendedColor()
+{
+ return false;
+}
+
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/win/PlatformScreenWin.cpp (199023 => 199024)
--- trunk/Source/WebCore/platform/win/PlatformScreenWin.cpp 2016-04-04 21:22:29 UTC (rev 199023)
+++ trunk/Source/WebCore/platform/win/PlatformScreenWin.cpp 2016-04-04 22:10:50 UTC (rev 199024)
@@ -101,4 +101,9 @@
return monitorInfo.rcWork;
}
+bool screenSupportsExtendedColor()
+{
+ return false;
+}
+
} // namespace WebCore