<!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>[202765] 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/202765">202765</a></dd>
<dt>Author</dt> <dd>dino@apple.com</dd>
<dt>Date</dt> <dd>2016-07-01 17:22:15 -0700 (Fri, 01 Jul 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>&quot;image-src&quot; support is missing. We only support &quot;-webkit-image-src&quot;
https://bugs.webkit.org/show_bug.cgi?id=159373
&lt;rdar://problem/27140443&gt;

Patch by Brent Fulgham and Dean Jackson.
Reviewed by Dean Jackson and Brent Fulgham.

Source/WebCore:

Support unprefixed image-set.

Test: fast/css/image-set-unprefixed.html

* css/CSSImageSetValue.cpp:
(WebCore::CSSImageSetValue::customCSSText):
* css/CSSParser.cpp:
(WebCore::isImageSetFunctionValue): New helper function
that checks prefixed and unprefixed form.
(WebCore::CSSParser::parseValue): Use the helper.
(WebCore::CSSParser::parseContent):
(WebCore::CSSParser::parseFillImage):
(WebCore::CSSParser::parseBorderImage):

LayoutTests:

Convert some existing tests to use the unprefixed form,
and add a test that checks we are compatible with
the prefixed form.

* cssom/cssvalue-comparison-expected.txt:
* cssom/cssvalue-comparison.html:
* fast/css/cursor-parsing-image-set-expected.txt:
* fast/css/cursor-parsing-image-set.html:
* fast/css/image-set-setting-expected.txt:
* fast/css/image-set-unprefixed-expected.txt: Added.
* fast/css/image-set-unprefixed.html: Added.
* fast/css/script-tests/image-set-setting.js:
(testImageSetRule):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestscssomcssvaluecomparisonexpectedtxt">trunk/LayoutTests/cssom/cssvalue-comparison-expected.txt</a></li>
<li><a href="#trunkLayoutTestscssomcssvaluecomparisonhtml">trunk/LayoutTests/cssom/cssvalue-comparison.html</a></li>
<li><a href="#trunkLayoutTestsfastcsscursorparsingimagesetexpectedtxt">trunk/LayoutTests/fast/css/cursor-parsing-image-set-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcsscursorparsingimagesethtml">trunk/LayoutTests/fast/css/cursor-parsing-image-set.html</a></li>
<li><a href="#trunkLayoutTestsfastcssimagesetsettingexpectedtxt">trunk/LayoutTests/fast/css/image-set-setting-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssscripttestsimagesetsettingjs">trunk/LayoutTests/fast/css/script-tests/image-set-setting.js</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssCSSImageSetValuecpp">trunk/Source/WebCore/css/CSSImageSetValue.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSParsercpp">trunk/Source/WebCore/css/CSSParser.cpp</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfastcssimagesetunprefixedexpectedtxt">trunk/LayoutTests/fast/css/image-set-unprefixed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssimagesetunprefixedhtml">trunk/LayoutTests/fast/css/image-set-unprefixed.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (202764 => 202765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-07-01 23:58:30 UTC (rev 202764)
+++ trunk/LayoutTests/ChangeLog        2016-07-02 00:22:15 UTC (rev 202765)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2016-07-01  Dean Jackson  &lt;dino@apple.com&gt;
+
+        &quot;image-src&quot; support is missing. We only support &quot;-webkit-image-src&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=159373
+        &lt;rdar://problem/27140443&gt;
+
+        Patch by Brent Fulgham and Dean Jackson.
+        Reviewed by Dean Jackson and Brent Fulgham.
+
+        Convert some existing tests to use the unprefixed form,
+        and add a test that checks we are compatible with
+        the prefixed form.
+
+        * cssom/cssvalue-comparison-expected.txt:
+        * cssom/cssvalue-comparison.html:
+        * fast/css/cursor-parsing-image-set-expected.txt:
+        * fast/css/cursor-parsing-image-set.html:
+        * fast/css/image-set-setting-expected.txt:
+        * fast/css/image-set-unprefixed-expected.txt: Added.
+        * fast/css/image-set-unprefixed.html: Added.
+        * fast/css/script-tests/image-set-setting.js:
+        (testImageSetRule):
+
</ins><span class="cx"> 2016-07-01  Ryan Haddad  &lt;ryanhaddad@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Land test expectations for rdar://problem/27141291.
</span></span></pre></div>
<a id="trunkLayoutTestscssomcssvaluecomparisonexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/cssom/cssvalue-comparison-expected.txt (202764 => 202765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/cssom/cssvalue-comparison-expected.txt        2016-07-01 23:58:30 UTC (rev 202764)
+++ trunk/LayoutTests/cssom/cssvalue-comparison-expected.txt        2016-07-02 00:22:15 UTC (rev 202765)
</span><span class="lines">@@ -98,6 +98,9 @@
</span><span class="cx"> PASS Two CSSValues &quot;-webkit-image-set(url(dummy://test.png) 1x, url(dummy://test.png) 2x)&quot; for property &quot;background-image&quot; are equal. 
</span><span class="cx"> PASS Two CSSValues &quot;-webkit-image-set(url(dummy://small.png) 2x, url(dummy://big.png) 3x)&quot; for property &quot;background-image&quot; are equal. 
</span><span class="cx"> PASS Two CSSValues &quot;-webkit-image-set(url(dummy://test.png) 1x, url(dummy://test.png) 2x)&quot; and &quot;-webkit-image-set(url(dummy://small.png) 2x, url(dummy://big.png) 3x)&quot; for property &quot;background-image&quot; are not equal. 
</span><ins>+PASS Two CSSValues &quot;image-set(url(dummy://test.png) 1x, url(dummy://test.png) 2x)&quot; for property &quot;background-image&quot; are equal. 
+PASS Two CSSValues &quot;image-set(url(dummy://small.png) 2x, url(dummy://big.png) 3x)&quot; for property &quot;background-image&quot; are equal. 
+PASS Two CSSValues &quot;image-set(url(dummy://test.png) 1x, url(dummy://test.png) 2x)&quot; and &quot;image-set(url(dummy://small.png) 2x, url(dummy://big.png) 3x)&quot; for property &quot;background-image&quot; are not equal. 
</ins><span class="cx"> PASS Two CSSValues &quot;grayscale(100%) sepia(100%)&quot; for property &quot;-webkit-filter&quot; are equal. 
</span><span class="cx"> PASS Two CSSValues &quot;sepia(10%) grayscale(50%)&quot; for property &quot;-webkit-filter&quot; are equal. 
</span><span class="cx"> PASS Two CSSValues &quot;grayscale(100%) sepia(100%)&quot; and &quot;sepia(10%) grayscale(50%)&quot; for property &quot;-webkit-filter&quot; are not equal. 
</span></span></pre></div>
<a id="trunkLayoutTestscssomcssvaluecomparisonhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/cssom/cssvalue-comparison.html (202764 => 202765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/cssom/cssvalue-comparison.html        2016-07-01 23:58:30 UTC (rev 202764)
+++ trunk/LayoutTests/cssom/cssvalue-comparison.html        2016-07-02 00:22:15 UTC (rev 202765)
</span><span class="lines">@@ -59,6 +59,7 @@
</span><span class="cx">                   {&quot;-webkit-transform&quot; : [&quot;rotate(30deg)&quot;, &quot;translate(50px,50px)&quot;, &quot;scale(2,4)&quot;, &quot;skew(30deg,20deg)&quot;, &quot;matrix(0.4,0.5,-0.5,0.4,0,0)&quot;]}, // transforms
</span><span class="cx">                   {&quot;-webkit-line-box-contain&quot; : [&quot;inline-box&quot;, &quot;font&quot;, &quot;glyphs&quot;, &quot;replaced&quot;]}, // line-box-contain
</span><span class="cx">                   {&quot;background-image&quot; : [&quot;-webkit-image-set(url(dummy://test.png) 1x, url(dummy://test.png) 2x)&quot;, &quot;-webkit-image-set(url(dummy://small.png) 2x, url(dummy://big.png) 3x)&quot;]}, // image set
</span><ins>+                  {&quot;background-image&quot; : [&quot;image-set(url(dummy://test.png) 1x, url(dummy://test.png) 2x)&quot;, &quot;image-set(url(dummy://small.png) 2x, url(dummy://big.png) 3x)&quot;]}, // image set
</ins><span class="cx">                   {&quot;-webkit-filter&quot; : [&quot;grayscale(100%) sepia(100%)&quot;, &quot;sepia(10%) grayscale(50%)&quot;]}, // filter
</span><span class="cx">                   {&quot;-webkit-dashboard-region&quot; : [&quot;dashboard-region(label circle)&quot;, &quot;dashboard-region(label circle 1px 2px 3px 4px) dashboard-region(label rectangle 5px 6px 7px 8px)&quot;]} // dashboard region
</span><span class="cx">                 ];
</span></span></pre></div>
<a id="trunkLayoutTestsfastcsscursorparsingimagesetexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/cursor-parsing-image-set-expected.txt (202764 => 202765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/cursor-parsing-image-set-expected.txt        2016-07-01 23:58:30 UTC (rev 202764)
+++ trunk/LayoutTests/fast/css/cursor-parsing-image-set-expected.txt        2016-07-02 00:22:15 UTC (rev 202765)
</span><span class="lines">@@ -6,10 +6,10 @@
</span><span class="cx"> Bug 99493
</span><span class="cx"> 
</span><span class="cx"> Test a bunch of cursor rules which should round-trip exactly.
</span><del>-PASS roundtripCssRule(&quot;cursor: -webkit-image-set(url(file:///foo.png) 1x), auto;&quot;) is &quot;cursor: -webkit-image-set(url(file:///foo.png) 1x), auto;&quot;
-PASS roundtripCssRule(&quot;cursor: -webkit-image-set(url(file:///foo.png) 1x, url(file:///foo2x.png) 2x), auto;&quot;) is &quot;cursor: -webkit-image-set(url(file:///foo.png) 1x, url(file:///foo2x.png) 2x), auto;&quot;
-PASS roundtripCssRule(&quot;cursor: -webkit-image-set(url(file:///foo.png) 1x, url(file:///foo2x.png) 2x) 2 3, auto;&quot;) is &quot;cursor: -webkit-image-set(url(file:///foo.png) 1x, url(file:///foo2x.png) 2x) 2 3, auto;&quot;
-PASS roundtripCssRule(&quot;cursor: -webkit-image-set(url(file:///foo03.png) 0.3x, url(file:///foo5x.png) 5x) 6 5, url(file:///foo.png) 12 3, pointer;&quot;) is &quot;cursor: -webkit-image-set(url(file:///foo03.png) 0.3x, url(file:///foo5x.png) 5x) 6 5, url(file:///foo.png) 12 3, pointer;&quot;
</del><ins>+PASS roundtripCssRule(&quot;cursor: image-set(url(file:///foo.png) 1x), auto;&quot;) is &quot;cursor: image-set(url(file:///foo.png) 1x), auto;&quot;
+PASS roundtripCssRule(&quot;cursor: image-set(url(file:///foo.png) 1x, url(file:///foo2x.png) 2x), auto;&quot;) is &quot;cursor: image-set(url(file:///foo.png) 1x, url(file:///foo2x.png) 2x), auto;&quot;
+PASS roundtripCssRule(&quot;cursor: image-set(url(file:///foo.png) 1x, url(file:///foo2x.png) 2x) 2 3, auto;&quot;) is &quot;cursor: image-set(url(file:///foo.png) 1x, url(file:///foo2x.png) 2x) 2 3, auto;&quot;
+PASS roundtripCssRule(&quot;cursor: image-set(url(file:///foo03.png) 0.3x, url(file:///foo5x.png) 5x) 6 5, url(file:///foo.png) 12 3, pointer;&quot;) is &quot;cursor: image-set(url(file:///foo03.png) 0.3x, url(file:///foo5x.png) 5x) 6 5, url(file:///foo.png) 12 3, pointer;&quot;
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsfastcsscursorparsingimagesethtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/cursor-parsing-image-set.html (202764 => 202765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/cursor-parsing-image-set.html        2016-07-01 23:58:30 UTC (rev 202764)
+++ trunk/LayoutTests/fast/css/cursor-parsing-image-set.html        2016-07-02 00:22:15 UTC (rev 202765)
</span><span class="lines">@@ -36,10 +36,10 @@
</span><span class="cx"> // to avoid triggering any network activity.
</span><span class="cx"> 
</span><span class="cx"> debug('Test a bunch of cursor rules which should round-trip exactly.');
</span><del>-testCursorRule('-webkit-image-set(url(file:///foo.png) 1x), auto');
-testCursorRule('-webkit-image-set(url(file:///foo.png) 1x, url(file:///foo2x.png) 2x), auto');
-testCursorRule('-webkit-image-set(url(file:///foo.png) 1x, url(file:///foo2x.png) 2x) 2 3, auto');
-testCursorRule('-webkit-image-set(url(file:///foo03.png) 0.3x, url(file:///foo5x.png) 5x) 6 5, url(file:///foo.png) 12 3, pointer');
</del><ins>+testCursorRule('image-set(url(file:///foo.png) 1x), auto');
+testCursorRule('image-set(url(file:///foo.png) 1x, url(file:///foo2x.png) 2x), auto');
+testCursorRule('image-set(url(file:///foo.png) 1x, url(file:///foo2x.png) 2x) 2 3, auto');
+testCursorRule('image-set(url(file:///foo03.png) 0.3x, url(file:///foo5x.png) 5x) 6 5, url(file:///foo.png) 12 3, pointer');
</ins><span class="cx"> 
</span><span class="cx"> successfullyParsed = true;
</span><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssimagesetsettingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/image-set-setting-expected.txt (202764 => 202765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/image-set-setting-expected.txt        2016-07-01 23:58:30 UTC (rev 202764)
+++ trunk/LayoutTests/fast/css/image-set-setting-expected.txt        2016-07-02 00:22:15 UTC (rev 202765)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-Test the setting of the -webkit-image-set function.
</del><ins>+Test the setting of the image-set function.
</ins><span class="cx"> 
</span><span class="cx"> On success, you will see a series of &quot;PASS&quot; messages, followed by &quot;TEST COMPLETE&quot;.
</span><span class="cx"> 
</span><span class="lines">@@ -5,19 +5,19 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> Single value for background-image : url(http://www.webkit.org/a) 1x
</span><del>-PASS testComputedStyle(&quot;background-image&quot;, &quot;-webkit-image-set(url(http://www.webkit.org/a) 1x)&quot;) is &quot;-webkit-image-set(url(http://www.webkit.org/a) 1x)&quot;
</del><ins>+PASS testComputedStyle(&quot;background-image&quot;, &quot;image-set(url(http://www.webkit.org/a) 1x)&quot;) is &quot;image-set(url(http://www.webkit.org/a) 1x)&quot;
</ins><span class="cx"> 
</span><span class="cx"> Multiple values for background-image : url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x
</span><del>-PASS testComputedStyle(&quot;background-image&quot;, &quot;-webkit-image-set(url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x)&quot;) is &quot;-webkit-image-set(url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x)&quot;
</del><ins>+PASS testComputedStyle(&quot;background-image&quot;, &quot;image-set(url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x)&quot;) is &quot;image-set(url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x)&quot;
</ins><span class="cx"> 
</span><span class="cx"> Multiple values for background-image, out of order : url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x
</span><del>-PASS testComputedStyle(&quot;background-image&quot;, &quot;-webkit-image-set(url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x)&quot;) is &quot;-webkit-image-set(url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x)&quot;
</del><ins>+PASS testComputedStyle(&quot;background-image&quot;, &quot;image-set(url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x)&quot;) is &quot;image-set(url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x)&quot;
</ins><span class="cx"> 
</span><span class="cx"> Duplicate values for background-image : url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x
</span><del>-PASS testComputedStyle(&quot;background-image&quot;, &quot;-webkit-image-set(url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x)&quot;) is &quot;-webkit-image-set(url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x)&quot;
</del><ins>+PASS testComputedStyle(&quot;background-image&quot;, &quot;image-set(url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x)&quot;) is &quot;image-set(url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x)&quot;
</ins><span class="cx"> 
</span><span class="cx"> Fractional values for background-image : url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x
</span><del>-PASS testComputedStyle(&quot;background-image&quot;, &quot;-webkit-image-set(url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x)&quot;) is &quot;-webkit-image-set(url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x)&quot;
</del><ins>+PASS testComputedStyle(&quot;background-image&quot;, &quot;image-set(url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x)&quot;) is &quot;image-set(url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x)&quot;
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx"> 
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssimagesetunprefixedexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css/image-set-unprefixed-expected.txt (0 => 202765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/image-set-unprefixed-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/css/image-set-unprefixed-expected.txt        2016-07-02 00:22:15 UTC (rev 202765)
</span><span class="lines">@@ -0,0 +1,81 @@
</span><ins>+
+Single value for background-image : url(http://www.webkit.org/a) 1x
+Unprefixed: PASS
+Prefixed: PASS
+
+Multiple values for background-image : url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x
+Unprefixed: PASS
+Prefixed: PASS
+
+Multiple values for background-image, out of order : url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x
+Unprefixed: PASS
+Prefixed: PASS
+
+Duplicate values for background-image : url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x
+Unprefixed: PASS
+Prefixed: PASS
+
+Fractional values for background-image : url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x
+Unprefixed: PASS
+Prefixed: PASS
+
+Single value for cursor : url(http://www.webkit.org/a) 1x
+Unprefixed: PASS
+Prefixed: PASS
+
+Multiple values for cursor : url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x
+Unprefixed: PASS
+Prefixed: PASS
+
+Multiple values for cursor, out of order : url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x
+Unprefixed: PASS
+Prefixed: PASS
+
+Duplicate values for cursor : url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x
+Unprefixed: PASS
+Prefixed: PASS
+
+Fractional values for cursor : url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x
+Unprefixed: PASS
+Prefixed: PASS
+
+Single value for list-style-image : url(http://www.webkit.org/a) 1x
+Unprefixed: PASS
+Prefixed: PASS
+
+Multiple values for list-style-image : url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x
+Unprefixed: PASS
+Prefixed: PASS
+
+Multiple values for list-style-image, out of order : url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x
+Unprefixed: PASS
+Prefixed: PASS
+
+Duplicate values for list-style-image : url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x
+Unprefixed: PASS
+Prefixed: PASS
+
+Fractional values for list-style-image : url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x
+Unprefixed: PASS
+Prefixed: PASS
+
+Single value for content : url(http://www.webkit.org/a) 1x
+Unprefixed: PASS
+Prefixed: PASS
+
+Multiple values for content : url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x
+Unprefixed: PASS
+Prefixed: PASS
+
+Multiple values for content, out of order : url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x
+Unprefixed: PASS
+Prefixed: PASS
+
+Duplicate values for content : url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x
+Unprefixed: PASS
+Prefixed: PASS
+
+Fractional values for content : url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x
+Unprefixed: PASS
+Prefixed: PASS
+
</ins><span class="cx">Property changes on: trunk/LayoutTests/fast/css/image-set-unprefixed-expected.txt
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<ins>+native
</ins><span class="cx">\ No newline at end of property
</span><a id="svnkeywords"></a>
<div class="addfile"><h4>Added: svn:keywords</h4></div>
<ins>+Date Revision
</ins><span class="cx">\ No newline at end of property
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<ins>+text/plain
</ins><span class="cx">\ No newline at end of property
</span><a id="trunkLayoutTestsfastcssimagesetunprefixedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/css/image-set-unprefixed.html (0 => 202765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/image-set-unprefixed.html                                (rev 0)
+++ trunk/LayoutTests/fast/css/image-set-unprefixed.html        2016-07-02 00:22:15 UTC (rev 202765)
</span><span class="lines">@@ -0,0 +1,120 @@
</span><ins>+&lt;pre id=&quot;output&quot;&gt;&lt;/pre&gt;
+&lt;script&gt;
+function debug(msg)
+{
+    var output = document.getElementById(&quot;output&quot;);
+    output.appendChild(document.createTextNode(msg + &quot;\n&quot;));
+}
+
+function testComputedStyle(property, fullRule)
+{
+    var div = document.createElement(&quot;div&quot;);
+    document.body.appendChild(div);
+    div.setAttribute(&quot;style&quot;, property + &quot;: &quot; + fullRule);
+    var computedValue = div.style[property];
+    document.body.removeChild(div);
+    return computedValue;
+}
+
+function testImageSetRule(description, property, rule, expected)
+{
+    debug(&quot;&quot;);
+    debug(`${description} : ${rule}`);
+
+    var rule = `image-set(${rule})`;
+    if (testComputedStyle(property, rule) == rule)
+        debug(&quot;Unprefixed: PASS&quot;);
+    else
+        debug(&quot;Unprefixed: FAIL&quot;);
+
+    if (testComputedStyle(property, &quot;-webkit-&quot; + rule) == rule)
+        debug(&quot;Prefixed: PASS&quot;);
+    else
+        debug(&quot;Prefixed: FAIL&quot;);
+}
+
+if (window.testRunner)
+    window.testRunner.dumpAsText();
+
+testImageSetRule(&quot;Single value for background-image&quot;,
+                &quot;background-image&quot;,
+                &quot;url(http://www.webkit.org/a) 1x&quot;);
+
+testImageSetRule(&quot;Multiple values for background-image&quot;,
+                &quot;background-image&quot;,
+                &quot;url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x&quot;);
+
+testImageSetRule(&quot;Multiple values for background-image, out of order&quot;,
+                &quot;background-image&quot;,
+                &quot;url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x&quot;);
+
+testImageSetRule(&quot;Duplicate values for background-image&quot;,
+                &quot;background-image&quot;,
+                &quot;url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x&quot;);
+
+testImageSetRule(&quot;Fractional values for background-image&quot;,
+                &quot;background-image&quot;,
+                &quot;url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x&quot;);
+
+testImageSetRule(&quot;Single value for cursor&quot;,
+                &quot;cursor&quot;,
+                &quot;url(http://www.webkit.org/a) 1x&quot;);
+
+testImageSetRule(&quot;Multiple values for cursor&quot;,
+                &quot;cursor&quot;,
+                &quot;url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x&quot;);
+
+testImageSetRule(&quot;Multiple values for cursor, out of order&quot;,
+                &quot;cursor&quot;,
+                &quot;url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x&quot;);
+
+testImageSetRule(&quot;Duplicate values for cursor&quot;,
+                &quot;cursor&quot;,
+                &quot;url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x&quot;);
+
+testImageSetRule(&quot;Fractional values for cursor&quot;,
+                &quot;cursor&quot;,
+                &quot;url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x&quot;);
+
+testImageSetRule(&quot;Single value for list-style-image&quot;,
+                &quot;list-style-image&quot;,
+                &quot;url(http://www.webkit.org/a) 1x&quot;);
+
+testImageSetRule(&quot;Multiple values for list-style-image&quot;,
+                &quot;list-style-image&quot;,
+                &quot;url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x&quot;);
+
+testImageSetRule(&quot;Multiple values for list-style-image, out of order&quot;,
+                &quot;list-style-image&quot;,
+                &quot;url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x&quot;);
+
+testImageSetRule(&quot;Duplicate values for list-style-image&quot;,
+                &quot;list-style-image&quot;,
+                &quot;url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x&quot;);
+
+testImageSetRule(&quot;Fractional values for list-style-image&quot;,
+                &quot;list-style-image&quot;,
+                &quot;url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x&quot;);
+
+testImageSetRule(&quot;Single value for content&quot;,
+                &quot;content&quot;,
+                &quot;url(http://www.webkit.org/a) 1x&quot;);
+
+testImageSetRule(&quot;Multiple values for content&quot;,
+                &quot;content&quot;,
+                &quot;url(http://www.webkit.org/a) 1x, url(http://www.webkit.org/b) 2x&quot;);
+
+testImageSetRule(&quot;Multiple values for content, out of order&quot;,
+                &quot;content&quot;,
+                &quot;url(http://www.webkit.org/c) 3x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x&quot;);
+
+testImageSetRule(&quot;Duplicate values for content&quot;,
+                &quot;content&quot;,
+                &quot;url(http://www.webkit.org/c) 1x, url(http://www.webkit.org/b) 2x, url(http://www.webkit.org/a) 1x&quot;);
+
+testImageSetRule(&quot;Fractional values for content&quot;,
+                &quot;content&quot;,
+                &quot;url(http://www.webkit.org/c) 0.2x, url(http://www.webkit.org/b) 2.3x, url(http://www.webkit.org/a) 12.3456x&quot;);
+
+
+&lt;/script&gt;
</ins><span class="cx">Property changes on: trunk/LayoutTests/fast/css/image-set-unprefixed.html
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<ins>+native
</ins><span class="cx">\ No newline at end of property
</span><a id="svnkeywords"></a>
<div class="addfile"><h4>Added: svn:keywords</h4></div>
<ins>+Date Revision
</ins><span class="cx">\ No newline at end of property
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<ins>+text/html
</ins><span class="cx">\ No newline at end of property
</span><a id="trunkLayoutTestsfastcssscripttestsimagesetsettingjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/script-tests/image-set-setting.js (202764 => 202765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/script-tests/image-set-setting.js        2016-07-01 23:58:30 UTC (rev 202764)
+++ trunk/LayoutTests/fast/css/script-tests/image-set-setting.js        2016-07-02 00:22:15 UTC (rev 202765)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-description(&quot;Test the setting of the -webkit-image-set function.&quot;);
</del><ins>+description(&quot;Test the setting of the image-set function.&quot;);
</ins><span class="cx"> 
</span><span class="cx"> function testComputedStyle(property, fullRule)
</span><span class="cx"> {
</span><span class="lines">@@ -15,7 +15,7 @@
</span><span class="cx">     debug(&quot;&quot;);
</span><span class="cx">     debug(description + &quot; : &quot; + rule);
</span><span class="cx"> 
</span><del>-    var fullRule = &quot;-webkit-image-set(&quot; + rule + &quot;)&quot;;
</del><ins>+    var fullRule = &quot;image-set(&quot; + rule + &quot;)&quot;;
</ins><span class="cx">     shouldBeEqualToString('testComputedStyle(&quot;' + property + '&quot;, &quot;' + fullRule + '&quot;)', fullRule);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (202764 => 202765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-07-01 23:58:30 UTC (rev 202764)
+++ trunk/Source/WebCore/ChangeLog        2016-07-02 00:22:15 UTC (rev 202765)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2016-07-01  Dean Jackson  &lt;dino@apple.com&gt;
+
+        &quot;image-src&quot; support is missing. We only support &quot;-webkit-image-src&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=159373
+        &lt;rdar://problem/27140443&gt;
+
+        Patch by Brent Fulgham and Dean Jackson.
+        Reviewed by Dean Jackson and Brent Fulgham.
+
+        Support unprefixed image-set.
+
+        Test: fast/css/image-set-unprefixed.html
+
+        * css/CSSImageSetValue.cpp:
+        (WebCore::CSSImageSetValue::customCSSText):
+        * css/CSSParser.cpp:
+        (WebCore::isImageSetFunctionValue): New helper function
+        that checks prefixed and unprefixed form.
+        (WebCore::CSSParser::parseValue): Use the helper.
+        (WebCore::CSSParser::parseContent):
+        (WebCore::CSSParser::parseFillImage):
+        (WebCore::CSSParser::parseBorderImage):
+
</ins><span class="cx"> 2016-07-01  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Possible null Range dereference under AXObjectCache::visiblePositionFromCharacterOffset()
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSImageSetValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSImageSetValue.cpp (202764 => 202765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSImageSetValue.cpp        2016-07-01 23:58:30 UTC (rev 202764)
+++ trunk/Source/WebCore/css/CSSImageSetValue.cpp        2016-07-02 00:22:15 UTC (rev 202765)
</span><span class="lines">@@ -154,7 +154,7 @@
</span><span class="cx"> String CSSImageSetValue::customCSSText() const
</span><span class="cx"> {
</span><span class="cx">     StringBuilder result;
</span><del>-    result.appendLiteral(&quot;-webkit-image-set(&quot;);
</del><ins>+    result.appendLiteral(&quot;image-set(&quot;);
</ins><span class="cx"> 
</span><span class="cx">     size_t length = this-&gt;length();
</span><span class="cx">     size_t i = 0;
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSParser.cpp (202764 => 202765)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSParser.cpp        2016-07-01 23:58:30 UTC (rev 202764)
+++ trunk/Source/WebCore/css/CSSParser.cpp        2016-07-02 00:22:15 UTC (rev 202765)
</span><span class="lines">@@ -1876,6 +1876,11 @@
</span><span class="cx">     return nullptr;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static bool isImageSetFunctionValue(const CSSParserValue&amp; value)
+{
+    return value.unit == CSSParserValue::Function &amp;&amp; (equalLettersIgnoringASCIICase(value.function-&gt;name, &quot;image-set(&quot;) || equalLettersIgnoringASCIICase(value.function-&gt;name, &quot;-webkit-image-set(&quot;));
+}
+
</ins><span class="cx"> bool CSSParser::parseValue(CSSPropertyID propId, bool important)
</span><span class="cx"> {
</span><span class="cx">     if (!m_valueList || !m_valueList-&gt;current())
</span><span class="lines">@@ -2092,7 +2097,7 @@
</span><span class="cx">                 if (!uri.isNull())
</span><span class="cx">                     image = CSSImageValue::create(completeURL(uri));
</span><span class="cx"> #if ENABLE(CSS_IMAGE_SET) &amp;&amp; ENABLE(MOUSE_CURSOR_SCALE)
</span><del>-            } else if (value-&gt;unit == CSSParserValue::Function &amp;&amp; equalLettersIgnoringASCIICase(value-&gt;function-&gt;name, &quot;-webkit-image-set(&quot;)) {
</del><ins>+            } else if (isImageSetFunctionValue(*value)) {
</ins><span class="cx">                 image = parseImageSet();
</span><span class="cx">                 if (!image)
</span><span class="cx">                     break;
</span><span class="lines">@@ -2225,7 +2230,7 @@
</span><span class="cx">                 return false;
</span><span class="cx">         }
</span><span class="cx"> #if ENABLE(CSS_IMAGE_SET)
</span><del>-        else if (valueWithCalculation.value().unit == CSSParserValue::Function &amp;&amp; equalLettersIgnoringASCIICase(valueWithCalculation.value().function-&gt;name, &quot;-webkit-image-set(&quot;)) {
</del><ins>+        else if (isImageSetFunctionValue(valueWithCalculation.value())) {
</ins><span class="cx">             parsedValue = parseImageSet();
</span><span class="cx">             if (!parsedValue)
</span><span class="cx">                 return false;
</span><span class="lines">@@ -4254,7 +4259,7 @@
</span><span class="cx">                 if (!parsedValue)
</span><span class="cx">                     return false;
</span><span class="cx"> #if ENABLE(CSS_IMAGE_SET)
</span><del>-            } else if (equalLettersIgnoringASCIICase(value-&gt;function-&gt;name, &quot;-webkit-image-set(&quot;)) {
</del><ins>+            } else if (isImageSetFunctionValue(*value)) {
</ins><span class="cx">                 parsedValue = parseImageSet();
</span><span class="cx">                 if (!parsedValue)
</span><span class="cx">                     return false;
</span><span class="lines">@@ -4352,7 +4357,7 @@
</span><span class="cx">         return parseGeneratedImage(valueList, value);
</span><span class="cx">     
</span><span class="cx"> #if ENABLE(CSS_IMAGE_SET)
</span><del>-    if (valueList.current()-&gt;unit == CSSParserValue::Function &amp;&amp; equalLettersIgnoringASCIICase(valueList.current()-&gt;function-&gt;name, &quot;-webkit-image-set(&quot;)) {
</del><ins>+    if (isImageSetFunctionValue(*valueList.current())) {
</ins><span class="cx">         value = parseImageSet();
</span><span class="cx">         if (value)
</span><span class="cx">             return true;
</span><span class="lines">@@ -8302,7 +8307,7 @@
</span><span class="cx">                 else
</span><span class="cx">                     return false;
</span><span class="cx"> #if ENABLE(CSS_IMAGE_SET)
</span><del>-            } else if (currentValue-&gt;unit == CSSParserValue::Function &amp;&amp; equalLettersIgnoringASCIICase(currentValue-&gt;function-&gt;name, &quot;-webkit-image-set(&quot;)) {
</del><ins>+            } else if (isImageSetFunctionValue(*currentValue)) {
</ins><span class="cx">                 RefPtr&lt;CSSValue&gt; value = parseImageSet();
</span><span class="cx">                 if (value)
</span><span class="cx">                     context.commitImage(value.releaseNonNull());
</span></span></pre>
</div>
</div>

</body>
</html>