<!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>[209559] 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/209559">209559</a></dd>
<dt>Author</dt> <dd>hyatt@apple.com</dd>
<dt>Date</dt> <dd>2016-12-08 12:57:59 -0800 (Thu, 08 Dec 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[CSS Parser] Unskip background parsing tests
https://bugs.webkit.org/show_bug.cgi?id=165619

Reviewed by Zalan Bujtas.

Source/WebCore:

Change background-position so that the origin being set is tracked
on a per-x/y basis instead of as a single boolean. The single boolean
caused lousy computed style dumping, since we would switch into verbose
mode for both x and y, even if only one of them had a pair set for it.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::createPositionListForLayer):
* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertPositionComponent):
* rendering/style/FillLayer.cpp:
(WebCore::FillLayer::FillLayer):
(WebCore::FillLayer::operator=):
(WebCore::FillLayer::fillUnsetProperties):
* rendering/style/FillLayer.h:
(WebCore::FillLayer::isBackgroundXOriginSet):
(WebCore::FillLayer::isBackgroundYOriginSet):
(WebCore::FillLayer::setBackgroundXOrigin):
(WebCore::FillLayer::setBackgroundYOrigin):
(WebCore::FillLayer::clearXPosition):
(WebCore::FillLayer::clearYPosition):
(WebCore::FillLayer::isBackgroundOriginSet): Deleted.

LayoutTests:

* TestExpectations:
* fast/backgrounds/background-position-parsing-2-expected.txt:
* fast/backgrounds/background-position-parsing-2.html:
* fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt:
* fast/backgrounds/background-shorthand-after-set-backgroundSize.html:
* fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt:
* fast/backgrounds/background-shorthand-with-backgroundSize-style.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsTestExpectations">trunk/LayoutTests/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsfastbackgroundsbackgroundpositionparsing2expectedtxt">trunk/LayoutTests/fast/backgrounds/background-position-parsing-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastbackgroundsbackgroundpositionparsing2html">trunk/LayoutTests/fast/backgrounds/background-position-parsing-2.html</a></li>
<li><a href="#trunkLayoutTestsfastbackgroundsbackgroundshorthandaftersetbackgroundSizeexpectedtxt">trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastbackgroundsbackgroundshorthandaftersetbackgroundSizehtml">trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html</a></li>
<li><a href="#trunkLayoutTestsfastbackgroundsbackgroundshorthandwithbackgroundSizestyleexpectedtxt">trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastbackgroundsbackgroundshorthandwithbackgroundSizestylehtml">trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style.html</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssCSSComputedStyleDeclarationcpp">trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
<li><a href="#trunkSourceWebCorecssStyleBuilderConverterh">trunk/Source/WebCore/css/StyleBuilderConverter.h</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleFillLayercpp">trunk/Source/WebCore/rendering/style/FillLayer.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingstyleFillLayerh">trunk/Source/WebCore/rendering/style/FillLayer.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/LayoutTests/ChangeLog        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2016-12-08  Dave Hyatt  &lt;hyatt@apple.com&gt;
+
+        [CSS Parser] Unskip background parsing tests
+        https://bugs.webkit.org/show_bug.cgi?id=165619
+
+        Reviewed by Zalan Bujtas.
+
+        * TestExpectations:
+        * fast/backgrounds/background-position-parsing-2-expected.txt:
+        * fast/backgrounds/background-position-parsing-2.html:
+        * fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt:
+        * fast/backgrounds/background-shorthand-after-set-backgroundSize.html:
+        * fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt:
+        * fast/backgrounds/background-shorthand-with-backgroundSize-style.html:
+
</ins><span class="cx"> 2016-12-08  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Inspector: Unable to delete breakpoint from worker script
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/LayoutTests/TestExpectations        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -970,9 +970,6 @@
</span><span class="cx"> 
</span><span class="cx"> # The following layout tests need to be changed when the new CSS Parser is turned on, since they
</span><span class="cx"> # incorrectly indicate failures on valid syntax.
</span><del>-webkit.org/b/165195 fast/backgrounds/background-shorthand-after-set-backgroundSize.html [ Pass Failure ]
-webkit.org/b/165195 fast/backgrounds/background-position-parsing-2.html [ Pass Failure ]
-webkit.org/b/165195 fast/backgrounds/background-shorthand-with-backgroundSize-style.html [ Pass Failure ]
</del><span class="cx"> webkit.org/b/165195 fast/css-grid-layout/grid-auto-flow-get-set.html [ Pass Failure ]
</span><span class="cx"> webkit.org/b/165195 fast/css-grid-layout/grid-columns-rows-get-set.html [ Pass Failure ]
</span><span class="cx"> webkit.org/b/165195 fast/css-grid-layout/non-grid-columns-rows-get-set.html [ Pass Failure ]
</span></span></pre></div>
<a id="trunkLayoutTestsfastbackgroundsbackgroundpositionparsing2expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/backgrounds/background-position-parsing-2-expected.txt (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/backgrounds/background-position-parsing-2-expected.txt        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/LayoutTests/fast/backgrounds/background-position-parsing-2-expected.txt        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -5,50 +5,50 @@
</span><span class="cx"> 
</span><span class="cx"> background-position with one value
</span><span class="cx"> PASS computedStyle.backgroundPosition is '0% 0%'
</span><del>-PASS style.backgroundPosition is '70% 50%'
</del><ins>+PASS style.backgroundPosition is '70% center'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '70% 50%'
</span><del>-PASS style.backgroundPosition is '84px 50%'
</del><ins>+PASS style.backgroundPosition is '84px center'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '84px 50%'
</span><del>-PASS style.backgroundPosition is '0% 50%'
</del><ins>+PASS style.backgroundPosition is 'left center'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '0% 50%'
</span><del>-PASS style.backgroundPosition is '100% 50%'
</del><ins>+PASS style.backgroundPosition is 'right center'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '100% 50%'
</span><del>-PASS style.backgroundPosition is '50% 100%'
</del><ins>+PASS style.backgroundPosition is 'center bottom'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '50% 100%'
</span><del>-PASS style.backgroundPosition is '50% 0%'
</del><ins>+PASS style.backgroundPosition is 'center top'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '50% 0%'
</span><del>-PASS style.backgroundPosition is '50% 50%'
</del><ins>+PASS style.backgroundPosition is 'center center'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '50% 50%'
</span><span class="cx"> background-position with two values
</span><del>-PASS style.backgroundPosition is '0% 100%'
</del><ins>+PASS style.backgroundPosition is 'left bottom'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '0% 100%'
</span><del>-PASS style.backgroundPosition is '0% 100%'
</del><ins>+PASS style.backgroundPosition is 'left bottom'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '0% 100%'
</span><del>-PASS style.backgroundPosition is '100% 100%'
</del><ins>+PASS style.backgroundPosition is '100% bottom'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '100% 100%'
</span><del>-PASS style.backgroundPosition is '100% 0%'
</del><ins>+PASS style.backgroundPosition is '100% top'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '100% 0%'
</span><del>-PASS style.backgroundPosition is '54px 100%'
</del><ins>+PASS style.backgroundPosition is '54px bottom'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '54px 100%'
</span><del>-PASS style.backgroundPosition is '50% 50%'
</del><ins>+PASS style.backgroundPosition is 'center center'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '50% 50%'
</span><del>-PASS style.backgroundPosition is '5% 100%'
</del><ins>+PASS style.backgroundPosition is '5% bottom'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '5% 100%'
</span><span class="cx"> PASS style.backgroundPosition is '30pt -20px'
</span><span class="cx"> PASS computedStyle.backgroundPosition is '40px -20px'
</span><del>-PASS style.backgroundPosition is '100% 50%'
</del><ins>+PASS style.backgroundPosition is 'right center'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '100% 50%'
</span><span class="cx"> PASS style.backgroundPosition is '100% 0px'
</span><span class="cx"> PASS computedStyle.backgroundPosition is '100% 0px'
</span><del>-PASS style.backgroundPosition is '100% 50%'
</del><ins>+PASS style.backgroundPosition is 'right center'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '100% 50%'
</span><del>-PASS style.backgroundPosition is '50% 50%'
</del><ins>+PASS style.backgroundPosition is 'center 50%'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '50% 50%'
</span><del>-PASS style.backgroundPosition is '0% 50%'
</del><ins>+PASS style.backgroundPosition is 'left center'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '0% 50%'
</span><del>-PASS style.backgroundPosition is '-20% 50%'
</del><ins>+PASS style.backgroundPosition is '-20% center'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '-20% 50%'
</span><del>-PASS style.backgroundPosition is '100% 0%'
</del><ins>+PASS style.backgroundPosition is 'right top'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '100% 0%'
</span><span class="cx"> PASS style.backgroundPosition is '50% 50%'
</span><span class="cx"> PASS computedStyle.backgroundPosition is '50% 50%'
</span><span class="lines">@@ -84,20 +84,20 @@
</span><span class="cx"> PASS style.backgroundPosition is '1px 1px'
</span><span class="cx"> PASS computedStyle.backgroundPosition is '1px 1px'
</span><span class="cx"> background-position with CSS3 comma separator, one or two values
</span><del>-PASS style.backgroundPosition is '50% 50%, 100% 50%'
</del><ins>+PASS style.backgroundPosition is '50% center, 100% center'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '50% 50%, 100% 50%'
</span><del>-PASS style.backgroundPosition is '50% 0%, 50% 100%'
</del><ins>+PASS style.backgroundPosition is 'center top, center bottom'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '50% 0%, 50% 100%'
</span><del>-PASS style.backgroundPosition is '100% 50%, 5px 100%'
</del><ins>+PASS style.backgroundPosition is 'right center, 5px bottom'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '100% 50%, 5px 100%'
</span><del>-PASS style.backgroundPosition is '0% 0%, 100% 100%'
</del><ins>+PASS style.backgroundPosition is 'left top, right bottom'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '0% 0%, 100% 100%'
</span><span class="cx"> background-position with CSS3 comma separator, with invalid one or two values, no change expected
</span><del>-PASS style.backgroundPosition is '0% 0%, 100% 100%'
</del><ins>+PASS style.backgroundPosition is 'left top, right bottom'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '0% 0%, 100% 100%'
</span><del>-PASS style.backgroundPosition is '0% 0%, 100% 100%'
</del><ins>+PASS style.backgroundPosition is 'left top, right bottom'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '0% 0%, 100% 100%'
</span><del>-PASS style.backgroundPosition is '0% 0%, 100% 100%'
</del><ins>+PASS style.backgroundPosition is 'left top, right bottom'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is '0% 0%, 100% 100%'
</span><span class="cx"> background-position with CSS3 four values
</span><span class="cx"> PASS style.backgroundPosition is 'left 10px top 15px'
</span><span class="lines">@@ -106,124 +106,124 @@
</span><span class="cx"> PASS computedStyle.backgroundPosition is 'left 10% top 30%'
</span><span class="cx"> PASS style.backgroundPosition is 'left 30% top 10%'
</span><span class="cx"> PASS computedStyle.backgroundPosition is 'left 30% top 10%'
</span><del>-PASS style.backgroundPosition is 'right 0% top 15px'
-PASS computedStyle.backgroundPosition is 'right 0% top 15px'
-PASS style.backgroundPosition is 'left 10px top 50%'
-PASS computedStyle.backgroundPosition is 'left 10px top 50%'
-PASS style.backgroundPosition is 'left 50% top 20px'
-PASS computedStyle.backgroundPosition is 'left 50% top 20px'
-PASS style.backgroundPosition is 'left 50% top 20px'
-PASS computedStyle.backgroundPosition is 'left 50% top 20px'
-PASS style.backgroundPosition is 'left 30px top 50%'
-PASS computedStyle.backgroundPosition is 'left 30px top 50%'
</del><ins>+PASS style.backgroundPosition is 'right top 15px'
+PASS computedStyle.backgroundPosition is '100% top 15px'
+PASS style.backgroundPosition is 'left 10px center'
+PASS computedStyle.backgroundPosition is 'left 10px 50%'
+PASS style.backgroundPosition is 'center top 20px'
+PASS computedStyle.backgroundPosition is '50% top 20px'
+PASS style.backgroundPosition is 'center top 20px'
+PASS computedStyle.backgroundPosition is '50% top 20px'
+PASS style.backgroundPosition is 'left 30px center'
+PASS computedStyle.backgroundPosition is 'left 30px 50%'
</ins><span class="cx"> PASS style.backgroundPosition is ''
</span><span class="cx"> PASS computedStyle.backgroundPosition is '0% 0%'
</span><del>-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
</del><ins>+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
</ins><span class="cx"> background-position with CSS3 invalid four values, no change expected
</span><del>-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
</del><ins>+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
</ins><span class="cx"> background-position with CSS3 four values and comma
</span><del>-PASS style.backgroundPosition is '50% 50%, left 0% bottom 20px'
-PASS computedStyle.backgroundPosition is '50% 50%, left 0% bottom 20px'
-PASS style.backgroundPosition is 'right 20px bottom 20px, 0% 50%'
</del><ins>+PASS style.backgroundPosition is 'center center, left bottom 20px'
+PASS computedStyle.backgroundPosition is '50% 50%, 0% bottom 20px'
+PASS style.backgroundPosition is 'right 20px bottom 20px, left center'
</ins><span class="cx"> PASS computedStyle.backgroundPosition is 'right 20px bottom 20px, 0% 50%'
</span><span class="cx"> PASS style.backgroundPosition is 'left 10px top 15px, right 20% bottom 20px'
</span><span class="cx"> PASS computedStyle.backgroundPosition is 'left 10px top 15px, right 20% bottom 20px'
</span><del>-PASS style.backgroundPosition is 'left 10% top 0%, right 0% top 0px'
-PASS computedStyle.backgroundPosition is 'left 10% top 0%, right 0% top 0px'
-PASS style.backgroundPosition is 'right 0% top 15px, right 20px bottom 0%'
-PASS computedStyle.backgroundPosition is 'right 0% top 15px, right 20px bottom 0%'
</del><ins>+PASS style.backgroundPosition is 'left 10% top, right top 0px'
+PASS computedStyle.backgroundPosition is 'left 10% 0%, 100% top 0px'
+PASS style.backgroundPosition is 'right top 15px, right 20px bottom'
+PASS computedStyle.backgroundPosition is '100% top 15px, right 20px 100%'
</ins><span class="cx"> background-position with invalid CSS3 four values and comma, no change expected
</span><del>-PASS style.backgroundPosition is 'right 0% top 15px, right 20px bottom 0%'
-PASS computedStyle.backgroundPosition is 'right 0% top 15px, right 20px bottom 0%'
-PASS style.backgroundPosition is 'right 0% top 15px, right 20px bottom 0%'
-PASS computedStyle.backgroundPosition is 'right 0% top 15px, right 20px bottom 0%'
-PASS style.backgroundPosition is 'right 0% top 15px, right 20px bottom 0%'
-PASS computedStyle.backgroundPosition is 'right 0% top 15px, right 20px bottom 0%'
</del><ins>+PASS style.backgroundPosition is 'right top 15px, right 20px bottom'
+PASS computedStyle.backgroundPosition is '100% top 15px, right 20px 100%'
+PASS style.backgroundPosition is 'right top 15px, right 20px bottom'
+PASS computedStyle.backgroundPosition is '100% top 15px, right 20px 100%'
+PASS style.backgroundPosition is 'right top 15px, right 20px bottom'
+PASS computedStyle.backgroundPosition is '100% top 15px, right 20px 100%'
</ins><span class="cx"> background-position inside the background shorthand
</span><span class="cx"> PASS style.background is 'left 30% top 10% / 10em round fixed border-box border-box gray'
</span><span class="cx"> PASS computedStyle.background is 'rgb(128, 128, 128) none round fixed left 30% top 10% / 160px border-box border-box'
</span><del>-PASS style.background is 'right 0% top 15px / 10em round fixed border-box border-box gray'
-PASS computedStyle.background is 'rgb(128, 128, 128) none round fixed right 0% top 15px / 160px border-box border-box'
-PASS style.background is 'left 10px top 50% / 10em round fixed border-box border-box gray'
-PASS computedStyle.background is 'rgb(128, 128, 128) none round fixed left 10px top 50% / 160px border-box border-box'
-PASS style.background is 'left 10px top 50% round fixed border-box border-box'
-PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left 10px top 50% / auto border-box border-box'
-PASS style.background is 'left 50% top 20px round fixed border-box border-box'
-PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left 50% top 20px / auto border-box border-box'
-PASS style.background is 'left 50% top 20px round fixed border-box border-box'
-PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left 50% top 20px / auto border-box border-box'
-PASS style.background is '50% 0% round fixed border-box border-box'
</del><ins>+PASS style.background is 'right top 15px / 10em round fixed border-box border-box gray'
+PASS computedStyle.background is 'rgb(128, 128, 128) none round fixed 100% top 15px / 160px border-box border-box'
+PASS style.background is 'left 10px center / 10em round fixed border-box border-box gray'
+PASS computedStyle.background is 'rgb(128, 128, 128) none round fixed left 10px 50% / 160px border-box border-box'
+PASS style.background is 'left 10px center round fixed border-box border-box'
+PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left 10px 50% / auto border-box border-box'
+PASS style.background is 'center top 20px round fixed border-box border-box'
+PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed 50% top 20px / auto border-box border-box'
+PASS style.background is 'center top 20px round fixed border-box border-box'
+PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed 50% top 20px / auto border-box border-box'
+PASS style.background is 'center top round fixed border-box border-box'
</ins><span class="cx"> PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed 50% 0% / auto border-box border-box'
</span><span class="cx"> PASS style.background is '50px 60px / 50px round fixed border-box border-box'
</span><span class="cx"> PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed 50px 60px / 50px border-box border-box'
</span><del>-PASS style.background is '50px 50% / 50px round fixed border-box border-box'
</del><ins>+PASS style.background is '50px center / 50px round fixed border-box border-box'
</ins><span class="cx"> PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed 50px 50% / 50px border-box border-box'
</span><del>-PASS style.background is 'left 0% top 60px / 50px round fixed border-box border-box'
-PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left 0% top 60px / 50px border-box border-box'
</del><ins>+PASS style.background is 'left top 60px / 50px round fixed border-box border-box'
+PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed 0% top 60px / 50px border-box border-box'
</ins><span class="cx"> PASS style.background is 'left -20px top 60px / 50px round fixed border-box border-box'
</span><span class="cx"> PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left -20px top 60px / 50px border-box border-box'
</span><del>-PASS style.background is 'left 20px top 0% / 50px round fixed border-box border-box'
-PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left 20px top 0% / 50px border-box border-box'
-PASS style.background is 'left 20px top 0% / 50px round fixed border-box border-box'
-PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left 20px top 0% / 50px border-box border-box'
</del><ins>+PASS style.background is 'left 20px top / 50px round fixed border-box border-box'
+PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left 20px 0% / 50px border-box border-box'
+PASS style.background is 'left 20px top / 50px round fixed border-box border-box'
+PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left 20px 0% / 50px border-box border-box'
</ins><span class="cx"> PASS style.background is 'left 20px top 40px / 50px round fixed border-box border-box'
</span><span class="cx"> PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left 20px top 40px / 50px border-box border-box'
</span><span class="cx"> PASS style.background is 'left 20px top 40px round fixed border-box border-box'
</span></span></pre></div>
<a id="trunkLayoutTestsfastbackgroundsbackgroundpositionparsing2html"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/backgrounds/background-position-parsing-2.html (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/backgrounds/background-position-parsing-2.html        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/LayoutTests/fast/backgrounds/background-position-parsing-2.html        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -25,60 +25,60 @@
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;70%&quot;;
</span><span class="cx"> // Second value is assuming to be 'center'
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'70% 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'70% center'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'70% 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;84px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'84px 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'84px center'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'84px 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'0% 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left center'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'0% 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;right&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'100% 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right center'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;bottom&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'50% 100%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'center bottom'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'50% 100%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;top&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'50% 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'center top'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'50% 0%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'50% 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'center center'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'50% 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> debug(&quot;background-position with two values&quot;);
</span><span class="cx"> style.backgroundPosition = &quot;left bottom&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'0% 100%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left bottom'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'0% 100%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;bottom left&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'0% 100%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left bottom'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'0% 100%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;100% bottom&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'100% 100%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'100% bottom'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% 100%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;100% top&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'100% 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'100% top'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% 0%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;54px bottom&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'54px 100%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'54px bottom'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'54px 100%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'50% 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'center center'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'50% 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;5% bottom&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'5% 100%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'5% bottom'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'5% 100%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;30pt -20px&quot;;
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'40px -20px'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;right center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'100% 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right center'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;100% 0&quot;;
</span><span class="lines">@@ -94,26 +94,26 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% 0px'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center right&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'100% 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right center'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center 50%&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'50% 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'center 50%'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'50% 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center left&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'0% 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left center'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'0% 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;-20% center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'-20% 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'-20% center'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'-20% 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;top right&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'100% 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right top'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% 0%'&quot;);
</span><span class="cx"> 
</span><del>-style.backgroundPosition = &quot;50% center&quot;;
</del><ins>+style.backgroundPosition = &quot;50% 50%&quot;;
</ins><span class="cx"> shouldBe(&quot;style.backgroundPosition&quot;, &quot;'50% 50%'&quot;);
</span><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'50% 50%'&quot;);
</span><span class="cx"> 
</span><span class="lines">@@ -183,32 +183,32 @@
</span><span class="cx"> style.backgroundRepeat = &quot;no-repeat&quot;;
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;50%, 100%&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'50% 50%, 100% 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'50% center, 100% center'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'50% 50%, 100% 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;top, bottom&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'50% 0%, 50% 100%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'center top, center bottom'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'50% 0%, 50% 100%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;right center, 5px bottom&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'100% 50%, 5px 100%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right center, 5px bottom'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% 50%, 5px 100%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;top left, bottom right&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'0% 0%, 100% 100%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left top, right bottom'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'0% 0%, 100% 100%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> debug(&quot;background-position with CSS3 comma separator, with invalid one or two values, no change expected&quot;);
</span><span class="cx"> style.backgroundPosition = &quot;0 center, right right&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'0% 0%, 100% 100%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left top, right bottom'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'0% 0%, 100% 100%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center right, right right&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'0% 0%, 100% 100%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left top, right bottom'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'0% 0%, 100% 100%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center 20px, solid 20px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'0% 0%, 100% 100%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left top, right bottom'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'0% 0%, 100% 100%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> debug(&quot;background-position with CSS3 four values&quot;);
</span><span class="lines">@@ -226,24 +226,24 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 30% top 10%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;right top 15px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right 0% top 15px'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'right 0% top 15px'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right top 15px'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% top 15px'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left 10px center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 10px top 50%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 10px top 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 10px center'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 10px 50%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center top 20px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 50% top 20px'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 50% top 20px'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'center top 20px'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'50% top 20px'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;top 20px center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 50% top 20px'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 50% top 20px'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'center top 20px'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'50% top 20px'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center left 30px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 30px top 50%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 30px top 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 30px center'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 30px 50%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;&quot;;
</span><span class="cx"> shouldBe(&quot;style.backgroundPosition&quot;, &quot;''&quot;);
</span><span class="lines">@@ -250,135 +250,135 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'0% 0%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left 20% top&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> debug(&quot;background-position with CSS3 invalid four values, no change expected&quot;);
</span><span class="cx"> style.backgroundPosition = &quot;left center top&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;0px right top&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left center top center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left center top 20%&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center bottom top 20%&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;right bottom top&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;right bottom solid&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;20px bottom top&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;20px bottom hidden&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;solid dotted bottom top&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;top top top top&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left 0px right 20%&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left 30% top 20% center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;20px 30% bottom&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;top 0px bottom&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left 0px right&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;top 0px bottom 30px top&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left 10px center 15px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left 10px top center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center right top 20px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center 10px center 10px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;top center center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center 10px center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center center 10px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center 0px left 20%&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left center top&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center center center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;top left 50% 50%&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center center center center&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% top 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 20% top'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 20% 0%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> debug(&quot;background-position with CSS3 four values and comma&quot;);
</span><span class="cx"> style.backgroundImage = &quot;url(resources/diamond.png), url(resources/ring.png)&quot;;
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;center, left bottom 20px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'50% 50%, left 0% bottom 20px'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'50% 50%, left 0% bottom 20px'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'center center, left bottom 20px'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'50% 50%, 0% bottom 20px'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;right 20px bottom 20px, center left&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right 20px bottom 20px, 0% 50%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right 20px bottom 20px, left center'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'right 20px bottom 20px, 0% 50%'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left 10px top 15px, right 20% bottom 20px&quot;;
</span><span class="lines">@@ -386,25 +386,25 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 10px top 15px, right 20% bottom 20px'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;left 10% top, top 0px right&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 10% top 0%, right 0% top 0px'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 10% top 0%, right 0% top 0px'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'left 10% top, right top 0px'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'left 10% 0%, 100% top 0px'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;right top 15px, bottom right 20px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right 0% top 15px, right 20px bottom 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'right 0% top 15px, right 20px bottom 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right top 15px, right 20px bottom'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% top 15px, right 20px 100%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> debug(&quot;background-position with invalid CSS3 four values and comma, no change expected&quot;);
</span><span class="cx"> style.backgroundPosition = &quot;right top 15px, left right 20px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right 0% top 15px, right 20px bottom 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'right 0% top 15px, right 20px bottom 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right top 15px, right 20px bottom'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% top 15px, right 20px 100%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;right left 15px, left bottom 20px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right 0% top 15px, right 20px bottom 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'right 0% top 15px, right 20px bottom 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right top 15px, right 20px bottom'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% top 15px, right 20px 100%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.backgroundPosition = &quot;solid, left bottom 20px&quot;;
</span><del>-shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right 0% top 15px, right 20px bottom 0%'&quot;);
-shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'right 0% top 15px, right 20px bottom 0%'&quot;);
</del><ins>+shouldBe(&quot;style.backgroundPosition&quot;, &quot;'right top 15px, right 20px bottom'&quot;);
+shouldBe(&quot;computedStyle.backgroundPosition&quot;, &quot;'100% top 15px, right 20px 100%'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> debug(&quot;background-position inside the background shorthand&quot;);
</span><span class="cx"> style.background = &quot;top 10% left 30% / 10em gray round fixed border-box&quot;;
</span><span class="lines">@@ -412,27 +412,27 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.background&quot;, &quot;'rgb(128, 128, 128) none round fixed left 30% top 10% / 160px border-box border-box'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.background = &quot;right top 15px / 10em gray round fixed border-box&quot;;
</span><del>-shouldBe(&quot;style.background&quot;, &quot;'right 0% top 15px / 10em round fixed border-box border-box gray'&quot;);
-shouldBe(&quot;computedStyle.background&quot;, &quot;'rgb(128, 128, 128) none round fixed right 0% top 15px / 160px border-box border-box'&quot;);
</del><ins>+shouldBe(&quot;style.background&quot;, &quot;'right top 15px / 10em round fixed border-box border-box gray'&quot;);
+shouldBe(&quot;computedStyle.background&quot;, &quot;'rgb(128, 128, 128) none round fixed 100% top 15px / 160px border-box border-box'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.background = &quot;left 10px center / 10em gray round fixed border-box&quot;;
</span><del>-shouldBe(&quot;style.background&quot;, &quot;'left 10px top 50% / 10em round fixed border-box border-box gray'&quot;);
-shouldBe(&quot;computedStyle.background&quot;, &quot;'rgb(128, 128, 128) none round fixed left 10px top 50% / 160px border-box border-box'&quot;);
</del><ins>+shouldBe(&quot;style.background&quot;, &quot;'left 10px center / 10em round fixed border-box border-box gray'&quot;);
+shouldBe(&quot;computedStyle.background&quot;, &quot;'rgb(128, 128, 128) none round fixed left 10px 50% / 160px border-box border-box'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.background = &quot;left 10px center round fixed border-box&quot;;
</span><del>-shouldBe(&quot;style.background&quot;, &quot;'left 10px top 50% round fixed border-box border-box'&quot;);
-shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed left 10px top 50% / auto border-box border-box'&quot;);
</del><ins>+shouldBe(&quot;style.background&quot;, &quot;'left 10px center round fixed border-box border-box'&quot;);
+shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed left 10px 50% / auto border-box border-box'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.background = &quot;center top 20px round fixed border-box&quot;;
</span><del>-shouldBe(&quot;style.background&quot;, &quot;'left 50% top 20px round fixed border-box border-box'&quot;);
-shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed left 50% top 20px / auto border-box border-box'&quot;);
</del><ins>+shouldBe(&quot;style.background&quot;, &quot;'center top 20px round fixed border-box border-box'&quot;);
+shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed 50% top 20px / auto border-box border-box'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.background = &quot;top 20px center round fixed border-box&quot;;
</span><del>-shouldBe(&quot;style.background&quot;, &quot;'left 50% top 20px round fixed border-box border-box'&quot;);
-shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed left 50% top 20px / auto border-box border-box'&quot;);
</del><ins>+shouldBe(&quot;style.background&quot;, &quot;'center top 20px round fixed border-box border-box'&quot;);
+shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed 50% top 20px / auto border-box border-box'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.background = &quot;top center round fixed border-box&quot;;
</span><del>-shouldBe(&quot;style.background&quot;, &quot;'50% 0% round fixed border-box border-box'&quot;);
</del><ins>+shouldBe(&quot;style.background&quot;, &quot;'center top round fixed border-box border-box'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed 50% 0% / auto border-box border-box'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.background = &quot;50px 60px / 50px round fixed border-box&quot;;
</span><span class="lines">@@ -440,12 +440,12 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed 50px 60px / 50px border-box border-box'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.background = &quot;50px / 50px round fixed border-box&quot;;
</span><del>-shouldBe(&quot;style.background&quot;, &quot;'50px 50% / 50px round fixed border-box border-box'&quot;);
</del><ins>+shouldBe(&quot;style.background&quot;, &quot;'50px center / 50px round fixed border-box border-box'&quot;);
</ins><span class="cx"> shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed 50px 50% / 50px border-box border-box'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.background = &quot;left top 60px / 50px round fixed border-box&quot;;
</span><del>-shouldBe(&quot;style.background&quot;, &quot;'left 0% top 60px / 50px round fixed border-box border-box'&quot;);
-shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed left 0% top 60px / 50px border-box border-box'&quot;);
</del><ins>+shouldBe(&quot;style.background&quot;, &quot;'left top 60px / 50px round fixed border-box border-box'&quot;);
+shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed 0% top 60px / 50px border-box border-box'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.background = &quot;left -20px top 60px / 50px round fixed border-box&quot;;
</span><span class="cx"> shouldBe(&quot;style.background&quot;, &quot;'left -20px top 60px / 50px round fixed border-box border-box'&quot;);
</span><span class="lines">@@ -452,12 +452,12 @@
</span><span class="cx"> shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed left -20px top 60px / 50px border-box border-box'&quot;);
</span><span class="cx"> 
</span><span class="cx"> style.background = &quot;border-box left 20px top / 50px round fixed&quot;;
</span><del>-shouldBe(&quot;style.background&quot;, &quot;'left 20px top 0% / 50px round fixed border-box border-box'&quot;);
-shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed left 20px top 0% / 50px border-box border-box'&quot;);
</del><ins>+shouldBe(&quot;style.background&quot;, &quot;'left 20px top / 50px round fixed border-box border-box'&quot;);
+shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed left 20px 0% / 50px border-box border-box'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.background = &quot;border-box round fixed left 20px top / 50px&quot;;
</span><del>-shouldBe(&quot;style.background&quot;, &quot;'left 20px top 0% / 50px round fixed border-box border-box'&quot;);
-shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed left 20px top 0% / 50px border-box border-box'&quot;);
</del><ins>+shouldBe(&quot;style.background&quot;, &quot;'left 20px top / 50px round fixed border-box border-box'&quot;);
+shouldBe(&quot;computedStyle.background&quot;, &quot;'rgba(0, 0, 0, 0) none round fixed left 20px 0% / 50px border-box border-box'&quot;);
</ins><span class="cx"> 
</span><span class="cx"> style.background = &quot;border-box round fixed left 20px top 40px / 50px&quot;;
</span><span class="cx"> shouldBe(&quot;style.background&quot;, &quot;'left 20px top 40px / 50px round fixed border-box border-box'&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsfastbackgroundsbackgroundshorthandaftersetbackgroundSizeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -3,7 +3,7 @@
</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="cx"> 
</span><del>-PASS e.style.background is 'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) center center / cover no-repeat border-box border-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is 'cover'
</span><span class="cx"> 
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="trunkLayoutTestsfastbackgroundsbackgroundshorthandaftersetbackgroundSizehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -12,7 +12,7 @@
</span><span class="cx"> 
</span><span class="cx">     e.style.backgroundSize = &quot;cover&quot;;
</span><span class="cx">     e.style.background = &quot;center red url(dummy://test.png) no-repeat border-box&quot;;
</span><del>-    shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'&quot;)
</del><ins>+    shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) center center / cover no-repeat border-box border-box red'&quot;)
</ins><span class="cx">     shouldBe(&quot;e.style.backgroundSize&quot;, &quot;'cover'&quot;);
</span><span class="cx">     debug(&quot;&quot;)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsfastbackgroundsbackgroundshorthandwithbackgroundSizestyleexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -3,7 +3,7 @@
</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="cx"> 
</span><del>-PASS e.style.background is 'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) center center / cover no-repeat border-box border-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is 'cover'
</span><span class="cx"> PASS checkStyle() is true
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background&quot;) is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 50% 50% / cover border-box border-box'
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background-size&quot;) is 'cover'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> 
</span><del>-PASS e.style.background is 'url(dummy://test.png) 20px 50% / contain no-repeat padding-box padding-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) 20px center / contain no-repeat padding-box padding-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is 'contain'
</span><span class="cx"> PASS checkStyle() is true
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background&quot;) is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 20px 50% / contain padding-box padding-box'
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background-size&quot;) is '50% 75%'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> 
</span><del>-PASS e.style.background is 'url(dummy://test.png) 0% 0% / 100px 200px repeat border-box content-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) left top / 100px 200px repeat border-box content-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is '100px 200px'
</span><span class="cx"> PASS checkStyle() is true
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background&quot;) is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px 200px border-box content-box'
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background-size&quot;) is '100px 200px'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> 
</span><del>-PASS e.style.background is 'url(dummy://test.png) 50% 50% / auto repeat content-box padding-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) 50% center / auto repeat content-box padding-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is 'auto'
</span><span class="cx"> PASS checkStyle() is true
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background&quot;) is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 50% 50% / auto content-box padding-box'
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background-size&quot;) is '50%'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> 
</span><del>-PASS e.style.background is 'url(dummy://test.png) 0% 0% / 100px repeat scroll padding-box border-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) left top / 100px repeat scroll padding-box border-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is '100px'
</span><span class="cx"> PASS checkStyle() is true
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background&quot;) is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px padding-box border-box'
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background-size&quot;) is '100px'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> 
</span><del>-PASS e.style.background is 'url(dummy://test.png) 50% 50% / auto repeat fixed content-box content-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) 50% center / auto repeat fixed content-box content-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is 'auto'
</span><span class="cx"> PASS checkStyle() is true
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background&quot;) is 'rgb(255, 0, 0) url(dummy://test.png) repeat fixed 50% 50% / auto content-box content-box'
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background-size&quot;) is 'auto'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> 
</span><del>-PASS e.style.background is '0% 0% / 50%'
</del><ins>+PASS e.style.background is 'left top / 50%'
</ins><span class="cx"> PASS e.style.backgroundSize is '50%'
</span><span class="cx"> PASS checkStyle() is true
</span><span class="cx"> PASS computedStyle.getPropertyValue(&quot;background&quot;) is 'rgba(0, 0, 0, 0) none repeat scroll 0% 0% / 50% padding-box border-box'
</span></span></pre></div>
<a id="trunkLayoutTestsfastbackgroundsbackgroundshorthandwithbackgroundSizestylehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style.html (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style.html        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style.html        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> e.style.background = &quot;center / cover red url(dummy://test.png) no-repeat border-box&quot;;
</span><del>-shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'&quot;);
</del><ins>+shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) center center / cover no-repeat border-box border-box red'&quot;);
</ins><span class="cx"> shouldBe(&quot;e.style.backgroundSize&quot;, &quot;'cover'&quot;);
</span><span class="cx"> shouldBe(&quot;checkStyle()&quot;, &quot;true&quot;);
</span><span class="cx"> shouldBe('computedStyle.getPropertyValue(&quot;background&quot;)', &quot;'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 50% 50% / cover border-box border-box'&quot;);
</span><span class="lines">@@ -32,7 +32,7 @@
</span><span class="cx"> debug(&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx"> e.style.background = &quot;red 20px / contain url(dummy://test.png) no-repeat padding-box&quot;;
</span><del>-shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) 20px 50% / contain no-repeat padding-box padding-box red'&quot;);
</del><ins>+shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) 20px center / contain no-repeat padding-box padding-box red'&quot;);
</ins><span class="cx"> shouldBe(&quot;e.style.backgroundSize&quot;, &quot;'contain'&quot;);
</span><span class="cx"> shouldBe(&quot;checkStyle()&quot;, &quot;true&quot;);
</span><span class="cx"> shouldBe('computedStyle.getPropertyValue(&quot;background&quot;)', &quot;'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 20px 50% / contain padding-box padding-box'&quot;);
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> debug(&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx"> e.style.background = &quot;red url(dummy://test.png) repeat top left / 100px 200px border-box content-box&quot;;
</span><del>-shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) 0% 0% / 100px 200px repeat border-box content-box red'&quot;);
</del><ins>+shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) left top / 100px 200px repeat border-box content-box red'&quot;);
</ins><span class="cx"> shouldBe(&quot;e.style.backgroundSize&quot;, &quot;'100px 200px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkStyle()&quot;, &quot;true&quot;);
</span><span class="cx"> shouldBe('computedStyle.getPropertyValue(&quot;background&quot;)', &quot;'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px 200px border-box content-box'&quot;);
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> debug(&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx"> e.style.background = &quot;red url(dummy://test.png) repeat 50% / auto auto content-box padding-box&quot;;
</span><del>-shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) 50% 50% / auto repeat content-box padding-box red'&quot;);
</del><ins>+shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) 50% center / auto repeat content-box padding-box red'&quot;);
</ins><span class="cx"> shouldBe(&quot;e.style.backgroundSize&quot;, &quot;'auto'&quot;);
</span><span class="cx"> shouldBe(&quot;checkStyle()&quot;, &quot;true&quot;);
</span><span class="cx"> shouldBe('computedStyle.getPropertyValue(&quot;background&quot;)', &quot;'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 50% 50% / auto content-box padding-box'&quot;);
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> debug(&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx"> e.style.background = &quot;red repeat scroll padding-box border-box top left / 100px url(dummy://test.png)&quot;;
</span><del>-shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) 0% 0% / 100px repeat scroll padding-box border-box red'&quot;);
</del><ins>+shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) left top / 100px repeat scroll padding-box border-box red'&quot;);
</ins><span class="cx"> shouldBe(&quot;e.style.backgroundSize&quot;, &quot;'100px'&quot;);
</span><span class="cx"> shouldBe(&quot;checkStyle()&quot;, &quot;true&quot;);
</span><span class="cx"> shouldBe('computedStyle.getPropertyValue(&quot;background&quot;)', &quot;'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px padding-box border-box'&quot;);
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx"> debug(&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx"> e.style.background = &quot;50% / auto fixed url(dummy://test.png) repeat content-box red&quot;;
</span><del>-shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) 50% 50% / auto repeat fixed content-box content-box red'&quot;);
</del><ins>+shouldBe(&quot;e.style.background&quot;, &quot;'url(dummy://test.png) 50% center / auto repeat fixed content-box content-box red'&quot;);
</ins><span class="cx"> shouldBe(&quot;e.style.backgroundSize&quot;, &quot;'auto'&quot;);
</span><span class="cx"> shouldBe(&quot;checkStyle()&quot;, &quot;true&quot;);
</span><span class="cx"> shouldBe('computedStyle.getPropertyValue(&quot;background&quot;)', &quot;'rgb(255, 0, 0) url(dummy://test.png) repeat fixed 50% 50% / auto content-box content-box'&quot;);
</span><span class="lines">@@ -95,7 +95,7 @@
</span><span class="cx"> debug(&quot;&quot;)
</span><span class="cx"> 
</span><span class="cx"> e.style.background = &quot;top left / 50%&quot;;
</span><del>-shouldBe(&quot;e.style.background&quot;, &quot;'0% 0% / 50%'&quot;);
</del><ins>+shouldBe(&quot;e.style.background&quot;, &quot;'left top / 50%'&quot;);
</ins><span class="cx"> shouldBe(&quot;e.style.backgroundSize&quot;, &quot;'50%'&quot;);
</span><span class="cx"> shouldBe(&quot;checkStyle()&quot;, &quot;true&quot;);
</span><span class="cx"> shouldBe('computedStyle.getPropertyValue(&quot;background&quot;)', &quot;'rgba(0, 0, 0, 0) none repeat scroll 0% 0% / 50% padding-box border-box'&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/Source/WebCore/ChangeLog        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -1,3 +1,32 @@
</span><ins>+2016-12-08  Dave Hyatt  &lt;hyatt@apple.com&gt;
+
+        [CSS Parser] Unskip background parsing tests
+        https://bugs.webkit.org/show_bug.cgi?id=165619
+
+        Reviewed by Zalan Bujtas.
+
+        Change background-position so that the origin being set is tracked
+        on a per-x/y basis instead of as a single boolean. The single boolean
+        caused lousy computed style dumping, since we would switch into verbose
+        mode for both x and y, even if only one of them had a pair set for it.
+
+        * css/CSSComputedStyleDeclaration.cpp:
+        (WebCore::createPositionListForLayer):
+        * css/StyleBuilderConverter.h:
+        (WebCore::StyleBuilderConverter::convertPositionComponent):
+        * rendering/style/FillLayer.cpp:
+        (WebCore::FillLayer::FillLayer):
+        (WebCore::FillLayer::operator=):
+        (WebCore::FillLayer::fillUnsetProperties):
+        * rendering/style/FillLayer.h:
+        (WebCore::FillLayer::isBackgroundXOriginSet):
+        (WebCore::FillLayer::isBackgroundYOriginSet):
+        (WebCore::FillLayer::setBackgroundXOrigin):
+        (WebCore::FillLayer::setBackgroundYOrigin):
+        (WebCore::FillLayer::clearXPosition):
+        (WebCore::FillLayer::clearYPosition):
+        (WebCore::FillLayer::isBackgroundOriginSet): Deleted.
+
</ins><span class="cx"> 2016-12-08  Jeremy Jones  &lt;jeremyj@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         pointer lock should exit when a js alert is shown
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -677,12 +677,12 @@
</span><span class="cx"> static Ref&lt;CSSValueList&gt; createPositionListForLayer(CSSPropertyID propertyID, const FillLayer* layer, const RenderStyle&amp; style)
</span><span class="cx"> {
</span><span class="cx">     auto positionList = CSSValueList::createSpaceSeparated();
</span><del>-    if (layer-&gt;isBackgroundOriginSet()) {
</del><ins>+    if (layer-&gt;isBackgroundXOriginSet()) {
</ins><span class="cx">         ASSERT_UNUSED(propertyID, propertyID == CSSPropertyBackgroundPosition || propertyID == CSSPropertyWebkitMaskPosition);
</span><span class="cx">         positionList.get().append(CSSValuePool::singleton().createValue(layer-&gt;backgroundXOrigin()));
</span><span class="cx">     }
</span><span class="cx">     positionList.get().append(zoomAdjustedPixelValueForLength(layer-&gt;xPosition(), style));
</span><del>-    if (layer-&gt;isBackgroundOriginSet()) {
</del><ins>+    if (layer-&gt;isBackgroundYOriginSet()) {
</ins><span class="cx">         ASSERT(propertyID == CSSPropertyBackgroundPosition || propertyID == CSSPropertyWebkitMaskPosition);
</span><span class="cx">         positionList.get().append(CSSValuePool::singleton().createValue(layer-&gt;backgroundYOrigin()));
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleBuilderConverterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleBuilderConverter.h (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleBuilderConverter.h        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/Source/WebCore/css/StyleBuilderConverter.h        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -347,7 +347,6 @@
</span><span class="cx">         auto&amp; first = *value.pairValue()-&gt;first();
</span><span class="cx">         if (first.valueID() == CSSValueRight || first.valueID() == CSSValueBottom)
</span><span class="cx">             relativeToTrailingEdge = true;
</span><del>-
</del><span class="cx">         lengthValue = value.pairValue()-&gt;second();
</span><span class="cx">     }
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleFillLayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/FillLayer.cpp (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/FillLayer.cpp        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/Source/WebCore/rendering/style/FillLayer.cpp        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -64,7 +64,8 @@
</span><span class="cx">     , m_repeatYSet(false)
</span><span class="cx">     , m_xPosSet(false)
</span><span class="cx">     , m_yPosSet(false)
</span><del>-    , m_backgroundOriginSet(false)
</del><ins>+    , m_backgroundXOriginSet(false)
+    , m_backgroundYOriginSet(false)
</ins><span class="cx">     , m_backgroundXOrigin(static_cast&lt;unsigned&gt;(Edge::Left))
</span><span class="cx">     , m_backgroundYOrigin(static_cast&lt;unsigned&gt;(Edge::Top))
</span><span class="cx">     , m_compositeSet(type == MaskFillLayer)
</span><span class="lines">@@ -97,7 +98,8 @@
</span><span class="cx">     , m_repeatYSet(o.m_repeatYSet)
</span><span class="cx">     , m_xPosSet(o.m_xPosSet)
</span><span class="cx">     , m_yPosSet(o.m_yPosSet)
</span><del>-    , m_backgroundOriginSet(o.m_backgroundOriginSet)
</del><ins>+    , m_backgroundXOriginSet(o.m_backgroundXOriginSet)
+    , m_backgroundYOriginSet(o.m_backgroundYOriginSet)
</ins><span class="cx">     , m_backgroundXOrigin(o.m_backgroundXOrigin)
</span><span class="cx">     , m_backgroundYOrigin(o.m_backgroundYOrigin)
</span><span class="cx">     , m_compositeSet(o.m_compositeSet)
</span><span class="lines">@@ -122,7 +124,8 @@
</span><span class="cx">     m_yPosition = o.m_yPosition;
</span><span class="cx">     m_backgroundXOrigin = o.m_backgroundXOrigin;
</span><span class="cx">     m_backgroundYOrigin = o.m_backgroundYOrigin;
</span><del>-    m_backgroundOriginSet = o.m_backgroundOriginSet;
</del><ins>+    m_backgroundXOriginSet = o.m_backgroundXOriginSet;
+    m_backgroundYOriginSet = o.m_backgroundYOriginSet;
</ins><span class="cx">     m_sizeLength = o.m_sizeLength;
</span><span class="cx">     m_attachment = o.m_attachment;
</span><span class="cx">     m_clip = o.m_clip;
</span><span class="lines">@@ -172,10 +175,10 @@
</span><span class="cx">         // We need to fill in the remaining values with the pattern specified.
</span><span class="cx">         for (FillLayer* pattern = this; curr; curr = curr-&gt;next()) {
</span><span class="cx">             curr-&gt;m_xPosition = pattern-&gt;m_xPosition;
</span><del>-            if (pattern-&gt;isBackgroundOriginSet()) {
</del><ins>+            if (pattern-&gt;isBackgroundXOriginSet())
</ins><span class="cx">                 curr-&gt;m_backgroundXOrigin = pattern-&gt;m_backgroundXOrigin;
</span><ins>+            if (pattern-&gt;isBackgroundYOriginSet())
</ins><span class="cx">                 curr-&gt;m_backgroundYOrigin = pattern-&gt;m_backgroundYOrigin;
</span><del>-            }
</del><span class="cx">             pattern = pattern-&gt;next();
</span><span class="cx">             if (pattern == curr || !pattern)
</span><span class="cx">                 pattern = this;
</span><span class="lines">@@ -187,10 +190,10 @@
</span><span class="cx">         // We need to fill in the remaining values with the pattern specified.
</span><span class="cx">         for (FillLayer* pattern = this; curr; curr = curr-&gt;next()) {
</span><span class="cx">             curr-&gt;m_yPosition = pattern-&gt;m_yPosition;
</span><del>-            if (pattern-&gt;isBackgroundOriginSet()) {
</del><ins>+            if (pattern-&gt;isBackgroundXOriginSet())
</ins><span class="cx">                 curr-&gt;m_backgroundXOrigin = pattern-&gt;m_backgroundXOrigin;
</span><ins>+            if (pattern-&gt;isBackgroundYOriginSet())
</ins><span class="cx">                 curr-&gt;m_backgroundYOrigin = pattern-&gt;m_backgroundYOrigin;
</span><del>-            }
</del><span class="cx">             pattern = pattern-&gt;next();
</span><span class="cx">             if (pattern == curr || !pattern)
</span><span class="cx">                 pattern = this;
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingstyleFillLayerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/style/FillLayer.h (209558 => 209559)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/style/FillLayer.h        2016-12-08 20:52:35 UTC (rev 209558)
+++ trunk/Source/WebCore/rendering/style/FillLayer.h        2016-12-08 20:57:59 UTC (rev 209559)
</span><span class="lines">@@ -89,7 +89,8 @@
</span><span class="cx">     bool isImageSet() const { return m_imageSet; }
</span><span class="cx">     bool isXPositionSet() const { return m_xPosSet; }
</span><span class="cx">     bool isYPositionSet() const { return m_yPosSet; }
</span><del>-    bool isBackgroundOriginSet() const { return m_backgroundOriginSet; }
</del><ins>+    bool isBackgroundXOriginSet() const { return m_backgroundXOriginSet; }
+    bool isBackgroundYOriginSet() const { return m_backgroundYOriginSet; }
</ins><span class="cx">     bool isAttachmentSet() const { return m_attachmentSet; }
</span><span class="cx">     bool isClipSet() const { return m_clipSet; }
</span><span class="cx">     bool isOriginSet() const { return m_originSet; }
</span><span class="lines">@@ -103,8 +104,8 @@
</span><span class="cx">     void setImage(RefPtr&lt;StyleImage&gt;&amp;&amp; image) { m_image = WTFMove(image); m_imageSet = true; }
</span><span class="cx">     void setXPosition(Length length) { m_xPosition = WTFMove(length); m_xPosSet = true; }
</span><span class="cx">     void setYPosition(Length length) { m_yPosition = WTFMove(length); m_yPosSet = true; }
</span><del>-    void setBackgroundXOrigin(Edge o) { m_backgroundXOrigin = static_cast&lt;unsigned&gt;(o); m_backgroundOriginSet = true; }
-    void setBackgroundYOrigin(Edge o) { m_backgroundYOrigin = static_cast&lt;unsigned&gt;(o); m_backgroundOriginSet = true; }
</del><ins>+    void setBackgroundXOrigin(Edge o) { m_backgroundXOrigin = static_cast&lt;unsigned&gt;(o); m_backgroundXOriginSet = true; }
+    void setBackgroundYOrigin(Edge o) { m_backgroundYOrigin = static_cast&lt;unsigned&gt;(o); m_backgroundYOriginSet = true; }
</ins><span class="cx">     void setAttachment(EFillAttachment attachment) { m_attachment = attachment; m_attachmentSet = true; }
</span><span class="cx">     void setClip(EFillBox b) { m_clip = b; m_clipSet = true; }
</span><span class="cx">     void setOrigin(EFillBox b) { m_origin = b; m_originSet = true; }
</span><span class="lines">@@ -119,8 +120,8 @@
</span><span class="cx"> 
</span><span class="cx">     void clearImage() { m_image = nullptr; m_imageSet = false; }
</span><span class="cx"> 
</span><del>-    void clearXPosition() { m_xPosSet = false; m_backgroundOriginSet = false; }
-    void clearYPosition() { m_yPosSet = false; m_backgroundOriginSet = false; }
</del><ins>+    void clearXPosition() { m_xPosSet = false; m_backgroundXOriginSet = false; }
+    void clearYPosition() { m_yPosSet = false; m_backgroundYOriginSet = false; }
</ins><span class="cx"> 
</span><span class="cx">     void clearAttachment() { m_attachmentSet = false; }
</span><span class="cx">     void clearClip() { m_clipSet = false; }
</span><span class="lines">@@ -200,7 +201,8 @@
</span><span class="cx">     unsigned m_repeatYSet : 1;
</span><span class="cx">     unsigned m_xPosSet : 1;
</span><span class="cx">     unsigned m_yPosSet : 1;
</span><del>-    unsigned m_backgroundOriginSet : 1;
</del><ins>+    unsigned m_backgroundXOriginSet : 1;
+    unsigned m_backgroundYOriginSet : 1;
</ins><span class="cx">     unsigned m_backgroundXOrigin : 2; // Edge
</span><span class="cx">     unsigned m_backgroundYOrigin : 2; // Edge
</span><span class="cx">     unsigned m_compositeSet : 1;
</span></span></pre>
</div>
</div>

</body>
</html>