<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[199024] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/199024">199024</a></dd>
<dt>Author</dt> <dd>dino@apple.com</dd>
<dt>Date</dt> <dd>2016-04-04 15:10:50 -0700 (Mon, 04 Apr 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>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.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssCSSValueKeywordsin">trunk/Source/WebCore/css/CSSValueKeywords.in</a></li>
<li><a href="#trunkSourceWebCorecssMediaFeatureNamesh">trunk/Source/WebCore/css/MediaFeatureNames.h</a></li>
<li><a href="#trunkSourceWebCorecssMediaQueryEvaluatorcpp">trunk/Source/WebCore/css/MediaQueryEvaluator.cpp</a></li>
<li><a href="#trunkSourceWebCorecssMediaQueryExpcpp">trunk/Source/WebCore/css/MediaQueryExp.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformeflPlatformScreenEflcpp">trunk/Source/WebCore/platform/efl/PlatformScreenEfl.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgtkPlatformScreenGtkcpp">trunk/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformwinPlatformScreenWincpp">trunk/Source/WebCore/platform/win/PlatformScreenWin.cpp</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastmediamqcolorgamutexpectedhtml">trunk/LayoutTests/fast/media/mq-color-gamut-expected.html</a></li>
<li><a href="#trunkLayoutTestsfastmediamqcolorgamuthtml">trunk/LayoutTests/fast/media/mq-color-gamut.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (199023 => 199024)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-04-04 21:22:29 UTC (rev 199023)
+++ trunk/LayoutTests/ChangeLog        2016-04-04 22:10:50 UTC (rev 199024)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2016-04-04 Dean Jackson <dino@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.
+
</ins><span class="cx"> 2016-04-04 Ryan Haddad <ryanhaddad@apple.com>
</span><span class="cx">
</span><span class="cx"> Skipping crashing test fast/loader/opaque-base-url.html on Debug
</span></span></pre></div>
<a id="trunkLayoutTestsfastmediamqcolorgamutexpectedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/media/mq-color-gamut-expected.html (0 => 199024)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+<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>
</ins><span class="cx">Property changes on: trunk/LayoutTests/fast/media/mq-color-gamut-expected.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="svnkeywords"></a>
<div class="addfile"><h4>Added: svn:keywords</h4></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkLayoutTestsfastmediamqcolorgamuthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/media/mq-color-gamut.html (0 => 199024)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+<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>
</ins><span class="cx">Property changes on: trunk/LayoutTests/fast/media/mq-color-gamut.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="svnkeywords"></a>
<div class="addfile"><h4>Added: svn:keywords</h4></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (199023 => 199024)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,3 +1,37 @@
</span><ins>+2016-04-04 Dean Jackson <dino@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):
+
</ins><span class="cx"> 2016-04-04 Brent Fulgham <bfulgham@apple.com>
</span><span class="cx">
</span><span class="cx"> Update feature status on anchor download attribute.
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSValueKeywordsin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSValueKeywords.in (199023 => 199024)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1196,3 +1196,7 @@
</span><span class="cx"> first
</span><span class="cx"> force-end
</span><span class="cx"> last
</span><ins>+
+// color-gamut
+p3
+rec2020
</ins></span></pre></div>
<a id="trunkSourceWebCorecssMediaFeatureNamesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/MediaFeatureNames.h (199023 => 199024)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> macro(any_pointer, "any-pointer") \
</span><span class="cx"> macro(color, "color") \
</span><span class="cx"> macro(color_index, "color-index") \
</span><ins>+ macro(color_gamut, "color-gamut") \
</ins><span class="cx"> macro(grid, "grid") \
</span><span class="cx"> macro(monochrome, "monochrome") \
</span><span class="cx"> macro(height, "height") \
</span></span></pre></div>
<a id="trunkSourceWebCorecssMediaQueryEvaluatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/MediaQueryEvaluator.cpp (199023 => 199024)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -250,6 +250,28 @@
</span><span class="cx"> return numberValue(value, number) && compareValue(0, static_cast<int>(number), op);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+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;
+ }
+}
+
</ins><span class="cx"> static bool monochromeMediaFeatureEval(CSSValue* value, const CSSToLengthConversionData& conversionData, Frame* frame, MediaFeaturePrefix op)
</span><span class="cx"> {
</span><span class="cx"> if (!screenIsMonochrome(frame->page()->mainFrame().view())) {
</span></span></pre></div>
<a id="trunkSourceWebCorecssMediaQueryExpcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/MediaQueryExp.cpp (199023 => 199024)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx"> #if ENABLE(VIEW_MODE_CSS_MEDIA)
</span><span class="cx"> || mediaFeature == MediaFeatureNames::view_modeMediaFeature
</span><span class="cx"> #endif // ENABLE(VIEW_MODE_CSS_MEDIA)
</span><ins>+ || mediaFeature == MediaFeatureNames::color_gamutMediaFeature
</ins><span class="cx"> || mediaFeature == MediaFeatureNames::any_hoverMediaFeature
</span><span class="cx"> || mediaFeature == MediaFeatureNames::any_pointerMediaFeature
</span><span class="cx"> || mediaFeature == MediaFeatureNames::hoverMediaFeature
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformeflPlatformScreenEflcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/efl/PlatformScreenEfl.cpp (199023 => 199024)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -118,4 +118,9 @@
</span><span class="cx"> return screenRect(widget);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+bool screenSupportsExtendedColor()
+{
+ return false;
</ins><span class="cx"> }
</span><ins>+
+}
</ins></span></pre></div>
<a id="trunkSourceWebCoreplatformgtkPlatformScreenGtkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/gtk/PlatformScreenGtk.cpp (199023 => 199024)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -130,4 +130,9 @@
</span><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+bool screenSupportsExtendedColor()
+{
+ return false;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformwinPlatformScreenWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/win/PlatformScreenWin.cpp (199023 => 199024)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -101,4 +101,9 @@
</span><span class="cx"> return monitorInfo.rcWork;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+bool screenSupportsExtendedColor()
+{
+ return false;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre>
</div>
</div>
</body>
</html>