Title: [199024] trunk
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
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to