[CSS Parser] Unskip background parsing tests
authorhyatt@apple.com <hyatt@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 8 Dec 2016 20:57:59 +0000 (20:57 +0000)
committerhyatt@apple.com <hyatt@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 8 Dec 2016 20:57:59 +0000 (20:57 +0000)
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:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@209559 268f45cc-cd09-0410-ab3c-d52691b4dbfc

13 files changed:
LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/fast/backgrounds/background-position-parsing-2-expected.txt
LayoutTests/fast/backgrounds/background-position-parsing-2.html
LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt
LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html
LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt
LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style.html
Source/WebCore/ChangeLog
Source/WebCore/css/CSSComputedStyleDeclaration.cpp
Source/WebCore/css/StyleBuilderConverter.h
Source/WebCore/rendering/style/FillLayer.cpp
Source/WebCore/rendering/style/FillLayer.h

index fdb6c7e..96b6b38 100644 (file)
@@ -1,3 +1,18 @@
+2016-12-08  Dave Hyatt  <hyatt@apple.com>
+
+        [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:
+
 2016-12-08  Joseph Pecoraro  <pecoraro@apple.com>
 
         Web Inspector: Unable to delete breakpoint from worker script
index 2341b9b..b4cd294 100644 (file)
@@ -970,9 +970,6 @@ webkit.org/b/164797 js/dom/domjit-function-get-element-by-id-changed.html [ Pass
 
 # The following layout tests need to be changed when the new CSS Parser is turned on, since they
 # incorrectly indicate failures on valid syntax.
-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 ]
 webkit.org/b/165195 fast/css-grid-layout/grid-auto-flow-get-set.html [ Pass Failure ]
 webkit.org/b/165195 fast/css-grid-layout/grid-columns-rows-get-set.html [ Pass Failure ]
 webkit.org/b/165195 fast/css-grid-layout/non-grid-columns-rows-get-set.html [ Pass Failure ]
index 7120166..e39a458 100644 (file)
@@ -5,50 +5,50 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 background-position with one value
 PASS computedStyle.backgroundPosition is '0% 0%'
-PASS style.backgroundPosition is '70% 50%'
+PASS style.backgroundPosition is '70% center'
 PASS computedStyle.backgroundPosition is '70% 50%'
-PASS style.backgroundPosition is '84px 50%'
+PASS style.backgroundPosition is '84px center'
 PASS computedStyle.backgroundPosition is '84px 50%'
-PASS style.backgroundPosition is '0% 50%'
+PASS style.backgroundPosition is 'left center'
 PASS computedStyle.backgroundPosition is '0% 50%'
-PASS style.backgroundPosition is '100% 50%'
+PASS style.backgroundPosition is 'right center'
 PASS computedStyle.backgroundPosition is '100% 50%'
-PASS style.backgroundPosition is '50% 100%'
+PASS style.backgroundPosition is 'center bottom'
 PASS computedStyle.backgroundPosition is '50% 100%'
-PASS style.backgroundPosition is '50% 0%'
+PASS style.backgroundPosition is 'center top'
 PASS computedStyle.backgroundPosition is '50% 0%'
-PASS style.backgroundPosition is '50% 50%'
+PASS style.backgroundPosition is 'center center'
 PASS computedStyle.backgroundPosition is '50% 50%'
 background-position with two values
-PASS style.backgroundPosition is '0% 100%'
+PASS style.backgroundPosition is 'left bottom'
 PASS computedStyle.backgroundPosition is '0% 100%'
-PASS style.backgroundPosition is '0% 100%'
+PASS style.backgroundPosition is 'left bottom'
 PASS computedStyle.backgroundPosition is '0% 100%'
-PASS style.backgroundPosition is '100% 100%'
+PASS style.backgroundPosition is '100% bottom'
 PASS computedStyle.backgroundPosition is '100% 100%'
-PASS style.backgroundPosition is '100% 0%'
+PASS style.backgroundPosition is '100% top'
 PASS computedStyle.backgroundPosition is '100% 0%'
-PASS style.backgroundPosition is '54px 100%'
+PASS style.backgroundPosition is '54px bottom'
 PASS computedStyle.backgroundPosition is '54px 100%'
-PASS style.backgroundPosition is '50% 50%'
+PASS style.backgroundPosition is 'center center'
 PASS computedStyle.backgroundPosition is '50% 50%'
-PASS style.backgroundPosition is '5% 100%'
+PASS style.backgroundPosition is '5% bottom'
 PASS computedStyle.backgroundPosition is '5% 100%'
 PASS style.backgroundPosition is '30pt -20px'
 PASS computedStyle.backgroundPosition is '40px -20px'
-PASS style.backgroundPosition is '100% 50%'
+PASS style.backgroundPosition is 'right center'
 PASS computedStyle.backgroundPosition is '100% 50%'
 PASS style.backgroundPosition is '100% 0px'
 PASS computedStyle.backgroundPosition is '100% 0px'
-PASS style.backgroundPosition is '100% 50%'
+PASS style.backgroundPosition is 'right center'
 PASS computedStyle.backgroundPosition is '100% 50%'
-PASS style.backgroundPosition is '50% 50%'
+PASS style.backgroundPosition is 'center 50%'
 PASS computedStyle.backgroundPosition is '50% 50%'
-PASS style.backgroundPosition is '0% 50%'
+PASS style.backgroundPosition is 'left center'
 PASS computedStyle.backgroundPosition is '0% 50%'
-PASS style.backgroundPosition is '-20% 50%'
+PASS style.backgroundPosition is '-20% center'
 PASS computedStyle.backgroundPosition is '-20% 50%'
-PASS style.backgroundPosition is '100% 0%'
+PASS style.backgroundPosition is 'right top'
 PASS computedStyle.backgroundPosition is '100% 0%'
 PASS style.backgroundPosition is '50% 50%'
 PASS computedStyle.backgroundPosition is '50% 50%'
@@ -84,20 +84,20 @@ PASS computedStyle.backgroundPosition is '50% 50%'
 PASS style.backgroundPosition is '1px 1px'
 PASS computedStyle.backgroundPosition is '1px 1px'
 background-position with CSS3 comma separator, one or two values
-PASS style.backgroundPosition is '50% 50%, 100% 50%'
+PASS style.backgroundPosition is '50% center, 100% center'
 PASS computedStyle.backgroundPosition is '50% 50%, 100% 50%'
-PASS style.backgroundPosition is '50% 0%, 50% 100%'
+PASS style.backgroundPosition is 'center top, center bottom'
 PASS computedStyle.backgroundPosition is '50% 0%, 50% 100%'
-PASS style.backgroundPosition is '100% 50%, 5px 100%'
+PASS style.backgroundPosition is 'right center, 5px bottom'
 PASS computedStyle.backgroundPosition is '100% 50%, 5px 100%'
-PASS style.backgroundPosition is '0% 0%, 100% 100%'
+PASS style.backgroundPosition is 'left top, right bottom'
 PASS computedStyle.backgroundPosition is '0% 0%, 100% 100%'
 background-position with CSS3 comma separator, with invalid one or two values, no change expected
-PASS style.backgroundPosition is '0% 0%, 100% 100%'
+PASS style.backgroundPosition is 'left top, right bottom'
 PASS computedStyle.backgroundPosition is '0% 0%, 100% 100%'
-PASS style.backgroundPosition is '0% 0%, 100% 100%'
+PASS style.backgroundPosition is 'left top, right bottom'
 PASS computedStyle.backgroundPosition is '0% 0%, 100% 100%'
-PASS style.backgroundPosition is '0% 0%, 100% 100%'
+PASS style.backgroundPosition is 'left top, right bottom'
 PASS computedStyle.backgroundPosition is '0% 0%, 100% 100%'
 background-position with CSS3 four values
 PASS style.backgroundPosition is 'left 10px top 15px'
@@ -106,124 +106,124 @@ PASS style.backgroundPosition is 'left 10% top 30%'
 PASS computedStyle.backgroundPosition is 'left 10% top 30%'
 PASS style.backgroundPosition is 'left 30% top 10%'
 PASS computedStyle.backgroundPosition is 'left 30% top 10%'
-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%'
+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%'
 PASS style.backgroundPosition is ''
 PASS computedStyle.backgroundPosition is '0% 0%'
-PASS style.backgroundPosition is 'left 20% top 0%'
-PASS computedStyle.backgroundPosition is 'left 20% top 0%'
+PASS style.backgroundPosition is 'left 20% top'
+PASS computedStyle.backgroundPosition is 'left 20% 0%'
 background-position with CSS3 invalid four values, no change expected
-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%'
+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%'
 background-position with CSS3 four values and comma
-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%'
+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'
 PASS computedStyle.backgroundPosition is 'right 20px bottom 20px, 0% 50%'
 PASS style.backgroundPosition is 'left 10px top 15px, right 20% bottom 20px'
 PASS computedStyle.backgroundPosition is 'left 10px top 15px, right 20% bottom 20px'
-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%'
+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%'
 background-position with invalid CSS3 four values and comma, no change expected
-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%'
+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%'
 background-position inside the background shorthand
 PASS style.background is 'left 30% top 10% / 10em round fixed border-box border-box gray'
 PASS computedStyle.background is 'rgb(128, 128, 128) none round fixed left 30% top 10% / 160px border-box border-box'
-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'
+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'
 PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed 50% 0% / auto border-box border-box'
 PASS style.background is '50px 60px / 50px round fixed border-box border-box'
 PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed 50px 60px / 50px border-box border-box'
-PASS style.background is '50px 50% / 50px round fixed border-box border-box'
+PASS style.background is '50px center / 50px round fixed border-box border-box'
 PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed 50px 50% / 50px border-box border-box'
-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'
+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'
 PASS style.background is 'left -20px top 60px / 50px round fixed border-box border-box'
 PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left -20px top 60px / 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'
-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 / 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'
 PASS style.background is 'left 20px top 40px / 50px round fixed border-box border-box'
 PASS computedStyle.background is 'rgba(0, 0, 0, 0) none round fixed left 20px top 40px / 50px border-box border-box'
 PASS style.background is 'left 20px top 40px round fixed border-box border-box'
index 93f56a4..c8f2f8f 100644 (file)
@@ -25,60 +25,60 @@ shouldBe("computedStyle.backgroundPosition", "'0% 0%'");
 
 style.backgroundPosition = "70%";
 // Second value is assuming to be 'center'
-shouldBe("style.backgroundPosition", "'70% 50%'");
+shouldBe("style.backgroundPosition", "'70% center'");
 shouldBe("computedStyle.backgroundPosition", "'70% 50%'");
 
 style.backgroundPosition = "84px";
-shouldBe("style.backgroundPosition", "'84px 50%'");
+shouldBe("style.backgroundPosition", "'84px center'");
 shouldBe("computedStyle.backgroundPosition", "'84px 50%'");
 
 style.backgroundPosition = "left";
-shouldBe("style.backgroundPosition", "'0% 50%'");
+shouldBe("style.backgroundPosition", "'left center'");
 shouldBe("computedStyle.backgroundPosition", "'0% 50%'");
 
 style.backgroundPosition = "right";
-shouldBe("style.backgroundPosition", "'100% 50%'");
+shouldBe("style.backgroundPosition", "'right center'");
 shouldBe("computedStyle.backgroundPosition", "'100% 50%'");
 
 style.backgroundPosition = "bottom";
-shouldBe("style.backgroundPosition", "'50% 100%'");
+shouldBe("style.backgroundPosition", "'center bottom'");
 shouldBe("computedStyle.backgroundPosition", "'50% 100%'");
 
 style.backgroundPosition = "top";
-shouldBe("style.backgroundPosition", "'50% 0%'");
+shouldBe("style.backgroundPosition", "'center top'");
 shouldBe("computedStyle.backgroundPosition", "'50% 0%'");
 
 style.backgroundPosition = "center";
-shouldBe("style.backgroundPosition", "'50% 50%'");
+shouldBe("style.backgroundPosition", "'center center'");
 shouldBe("computedStyle.backgroundPosition", "'50% 50%'");
 
 debug("background-position with two values");
 style.backgroundPosition = "left bottom";
-shouldBe("style.backgroundPosition", "'0% 100%'");
+shouldBe("style.backgroundPosition", "'left bottom'");
 shouldBe("computedStyle.backgroundPosition", "'0% 100%'");
 
 style.backgroundPosition = "bottom left";
-shouldBe("style.backgroundPosition", "'0% 100%'");
+shouldBe("style.backgroundPosition", "'left bottom'");
 shouldBe("computedStyle.backgroundPosition", "'0% 100%'");
 
 style.backgroundPosition = "100% bottom";
-shouldBe("style.backgroundPosition", "'100% 100%'");
+shouldBe("style.backgroundPosition", "'100% bottom'");
 shouldBe("computedStyle.backgroundPosition", "'100% 100%'");
 
 style.backgroundPosition = "100% top";
-shouldBe("style.backgroundPosition", "'100% 0%'");
+shouldBe("style.backgroundPosition", "'100% top'");
 shouldBe("computedStyle.backgroundPosition", "'100% 0%'");
 
 style.backgroundPosition = "54px bottom";
-shouldBe("style.backgroundPosition", "'54px 100%'");
+shouldBe("style.backgroundPosition", "'54px bottom'");
 shouldBe("computedStyle.backgroundPosition", "'54px 100%'");
 
 style.backgroundPosition = "center center";
-shouldBe("style.backgroundPosition", "'50% 50%'");
+shouldBe("style.backgroundPosition", "'center center'");
 shouldBe("computedStyle.backgroundPosition", "'50% 50%'");
 
 style.backgroundPosition = "5% bottom";
-shouldBe("style.backgroundPosition", "'5% 100%'");
+shouldBe("style.backgroundPosition", "'5% bottom'");
 shouldBe("computedStyle.backgroundPosition", "'5% 100%'");
 
 style.backgroundPosition = "30pt -20px";
@@ -86,7 +86,7 @@ shouldBe("style.backgroundPosition", "'30pt -20px'");
 shouldBe("computedStyle.backgroundPosition", "'40px -20px'");
 
 style.backgroundPosition = "right center";
-shouldBe("style.backgroundPosition", "'100% 50%'");
+shouldBe("style.backgroundPosition", "'right center'");
 shouldBe("computedStyle.backgroundPosition", "'100% 50%'");
 
 style.backgroundPosition = "100% 0";
@@ -94,26 +94,26 @@ shouldBe("style.backgroundPosition", "'100% 0px'");
 shouldBe("computedStyle.backgroundPosition", "'100% 0px'");
 
 style.backgroundPosition = "center right";
-shouldBe("style.backgroundPosition", "'100% 50%'");
+shouldBe("style.backgroundPosition", "'right center'");
 shouldBe("computedStyle.backgroundPosition", "'100% 50%'");
 
 style.backgroundPosition = "center 50%";
-shouldBe("style.backgroundPosition", "'50% 50%'");
+shouldBe("style.backgroundPosition", "'center 50%'");
 shouldBe("computedStyle.backgroundPosition", "'50% 50%'");
 
 style.backgroundPosition = "center left";
-shouldBe("style.backgroundPosition", "'0% 50%'");
+shouldBe("style.backgroundPosition", "'left center'");
 shouldBe("computedStyle.backgroundPosition", "'0% 50%'");
 
 style.backgroundPosition = "-20% center";
-shouldBe("style.backgroundPosition", "'-20% 50%'");
+shouldBe("style.backgroundPosition", "'-20% center'");
 shouldBe("computedStyle.backgroundPosition", "'-20% 50%'");
 
 style.backgroundPosition = "top right";
-shouldBe("style.backgroundPosition", "'100% 0%'");
+shouldBe("style.backgroundPosition", "'right top'");
 shouldBe("computedStyle.backgroundPosition", "'100% 0%'");
 
-style.backgroundPosition = "50% center";
+style.backgroundPosition = "50% 50%";
 shouldBe("style.backgroundPosition", "'50% 50%'");
 shouldBe("computedStyle.backgroundPosition", "'50% 50%'");
 
@@ -183,32 +183,32 @@ style.backgroundImage = "url(resources/diamond.png), url(resources/ring.png)";
 style.backgroundRepeat = "no-repeat";
 
 style.backgroundPosition = "50%, 100%";
-shouldBe("style.backgroundPosition", "'50% 50%, 100% 50%'");
+shouldBe("style.backgroundPosition", "'50% center, 100% center'");
 shouldBe("computedStyle.backgroundPosition", "'50% 50%, 100% 50%'");
 
 style.backgroundPosition = "top, bottom";
-shouldBe("style.backgroundPosition", "'50% 0%, 50% 100%'");
+shouldBe("style.backgroundPosition", "'center top, center bottom'");
 shouldBe("computedStyle.backgroundPosition", "'50% 0%, 50% 100%'");
 
 style.backgroundPosition = "right center, 5px bottom";
-shouldBe("style.backgroundPosition", "'100% 50%, 5px 100%'");
+shouldBe("style.backgroundPosition", "'right center, 5px bottom'");
 shouldBe("computedStyle.backgroundPosition", "'100% 50%, 5px 100%'");
 
 style.backgroundPosition = "top left, bottom right";
-shouldBe("style.backgroundPosition", "'0% 0%, 100% 100%'");
+shouldBe("style.backgroundPosition", "'left top, right bottom'");
 shouldBe("computedStyle.backgroundPosition", "'0% 0%, 100% 100%'");
 
 debug("background-position with CSS3 comma separator, with invalid one or two values, no change expected");
 style.backgroundPosition = "0 center, right right";
-shouldBe("style.backgroundPosition", "'0% 0%, 100% 100%'");
+shouldBe("style.backgroundPosition", "'left top, right bottom'");
 shouldBe("computedStyle.backgroundPosition", "'0% 0%, 100% 100%'");
 
 style.backgroundPosition = "center right, right right";
-shouldBe("style.backgroundPosition", "'0% 0%, 100% 100%'");
+shouldBe("style.backgroundPosition", "'left top, right bottom'");
 shouldBe("computedStyle.backgroundPosition", "'0% 0%, 100% 100%'");
 
 style.backgroundPosition = "center 20px, solid 20px";
-shouldBe("style.backgroundPosition", "'0% 0%, 100% 100%'");
+shouldBe("style.backgroundPosition", "'left top, right bottom'");
 shouldBe("computedStyle.backgroundPosition", "'0% 0%, 100% 100%'");
 
 debug("background-position with CSS3 four values");
@@ -226,159 +226,159 @@ shouldBe("style.backgroundPosition", "'left 30% top 10%'");
 shouldBe("computedStyle.backgroundPosition", "'left 30% top 10%'");
 
 style.backgroundPosition = "right top 15px";
-shouldBe("style.backgroundPosition", "'right 0% top 15px'");
-shouldBe("computedStyle.backgroundPosition", "'right 0% top 15px'");
+shouldBe("style.backgroundPosition", "'right top 15px'");
+shouldBe("computedStyle.backgroundPosition", "'100% top 15px'");
 
 style.backgroundPosition = "left 10px center";
-shouldBe("style.backgroundPosition", "'left 10px top 50%'");
-shouldBe("computedStyle.backgroundPosition", "'left 10px top 50%'");
+shouldBe("style.backgroundPosition", "'left 10px center'");
+shouldBe("computedStyle.backgroundPosition", "'left 10px 50%'");
 
 style.backgroundPosition = "center top 20px";
-shouldBe("style.backgroundPosition", "'left 50% top 20px'");
-shouldBe("computedStyle.backgroundPosition", "'left 50% top 20px'");
+shouldBe("style.backgroundPosition", "'center top 20px'");
+shouldBe("computedStyle.backgroundPosition", "'50% top 20px'");
 
 style.backgroundPosition = "top 20px center";
-shouldBe("style.backgroundPosition", "'left 50% top 20px'");
-shouldBe("computedStyle.backgroundPosition", "'left 50% top 20px'");
+shouldBe("style.backgroundPosition", "'center top 20px'");
+shouldBe("computedStyle.backgroundPosition", "'50% top 20px'");
 
 style.backgroundPosition = "center left 30px";
-shouldBe("style.backgroundPosition", "'left 30px top 50%'");
-shouldBe("computedStyle.backgroundPosition", "'left 30px top 50%'");
+shouldBe("style.backgroundPosition", "'left 30px center'");
+shouldBe("computedStyle.backgroundPosition", "'left 30px 50%'");
 
 style.backgroundPosition = "";
 shouldBe("style.backgroundPosition", "''");
 shouldBe("computedStyle.backgroundPosition", "'0% 0%'");
 
 style.backgroundPosition = "left 20% top";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 debug("background-position with CSS3 invalid four values, no change expected");
 style.backgroundPosition = "left center top";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "0px right top";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "left center top center";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "left center top 20%";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "center bottom top 20%";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "right bottom top";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "right bottom solid";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "20px bottom top";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "20px bottom hidden";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "solid dotted bottom top";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "top top top top";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "left 0px right 20%";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "left 30% top 20% center";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "20px 30% bottom";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "top 0px bottom";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "left 0px right";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "top 0px bottom 30px top";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "left 10px center 15px";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "left 10px top center";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "center right top 20px";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "center 10px center 10px";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "top center center";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "center 10px center";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "center center 10px";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "center 0px left 20%";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "left center top";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "center center center";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "top left 50% 50%";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 style.backgroundPosition = "center center center center";
-shouldBe("style.backgroundPosition", "'left 20% top 0%'");
-shouldBe("computedStyle.backgroundPosition", "'left 20% top 0%'");
+shouldBe("style.backgroundPosition", "'left 20% top'");
+shouldBe("computedStyle.backgroundPosition", "'left 20% 0%'");
 
 debug("background-position with CSS3 four values and comma");
 style.backgroundImage = "url(resources/diamond.png), url(resources/ring.png)";
 
 style.backgroundPosition = "center, left bottom 20px";
-shouldBe("style.backgroundPosition", "'50% 50%, left 0% bottom 20px'");
-shouldBe("computedStyle.backgroundPosition", "'50% 50%, left 0% bottom 20px'");
+shouldBe("style.backgroundPosition", "'center center, left bottom 20px'");
+shouldBe("computedStyle.backgroundPosition", "'50% 50%, 0% bottom 20px'");
 
 style.backgroundPosition = "right 20px bottom 20px, center left";
-shouldBe("style.backgroundPosition", "'right 20px bottom 20px, 0% 50%'");
+shouldBe("style.backgroundPosition", "'right 20px bottom 20px, left center'");
 shouldBe("computedStyle.backgroundPosition", "'right 20px bottom 20px, 0% 50%'");
 
 style.backgroundPosition = "left 10px top 15px, right 20% bottom 20px";
@@ -386,25 +386,25 @@ shouldBe("style.backgroundPosition", "'left 10px top 15px, right 20% bottom 20px
 shouldBe("computedStyle.backgroundPosition", "'left 10px top 15px, right 20% bottom 20px'");
 
 style.backgroundPosition = "left 10% top, top 0px right";
-shouldBe("style.backgroundPosition", "'left 10% top 0%, right 0% top 0px'");
-shouldBe("computedStyle.backgroundPosition", "'left 10% top 0%, right 0% top 0px'");
+shouldBe("style.backgroundPosition", "'left 10% top, right top 0px'");
+shouldBe("computedStyle.backgroundPosition", "'left 10% 0%, 100% top 0px'");
 
 style.backgroundPosition = "right top 15px, bottom right 20px";
-shouldBe("style.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");
-shouldBe("computedStyle.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");
+shouldBe("style.backgroundPosition", "'right top 15px, right 20px bottom'");
+shouldBe("computedStyle.backgroundPosition", "'100% top 15px, right 20px 100%'");
 
 debug("background-position with invalid CSS3 four values and comma, no change expected");
 style.backgroundPosition = "right top 15px, left right 20px";
-shouldBe("style.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");
-shouldBe("computedStyle.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");
+shouldBe("style.backgroundPosition", "'right top 15px, right 20px bottom'");
+shouldBe("computedStyle.backgroundPosition", "'100% top 15px, right 20px 100%'");
 
 style.backgroundPosition = "right left 15px, left bottom 20px";
-shouldBe("style.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");
-shouldBe("computedStyle.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");
+shouldBe("style.backgroundPosition", "'right top 15px, right 20px bottom'");
+shouldBe("computedStyle.backgroundPosition", "'100% top 15px, right 20px 100%'");
 
 style.backgroundPosition = "solid, left bottom 20px";
-shouldBe("style.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");
-shouldBe("computedStyle.backgroundPosition", "'right 0% top 15px, right 20px bottom 0%'");
+shouldBe("style.backgroundPosition", "'right top 15px, right 20px bottom'");
+shouldBe("computedStyle.backgroundPosition", "'100% top 15px, right 20px 100%'");
 
 debug("background-position inside the background shorthand");
 style.background = "top 10% left 30% / 10em gray round fixed border-box";
@@ -412,27 +412,27 @@ shouldBe("style.background", "'left 30% top 10% / 10em round fixed border-box bo
 shouldBe("computedStyle.background", "'rgb(128, 128, 128) none round fixed left 30% top 10% / 160px border-box border-box'");
 
 style.background = "right top 15px / 10em gray round fixed border-box";
-shouldBe("style.background", "'right 0% top 15px / 10em round fixed border-box border-box gray'");
-shouldBe("computedStyle.background", "'rgb(128, 128, 128) none round fixed right 0% top 15px / 160px border-box border-box'");
+shouldBe("style.background", "'right top 15px / 10em round fixed border-box border-box gray'");
+shouldBe("computedStyle.background", "'rgb(128, 128, 128) none round fixed 100% top 15px / 160px border-box border-box'");
 
 style.background = "left 10px center / 10em gray round fixed border-box";
-shouldBe("style.background", "'left 10px top 50% / 10em round fixed border-box border-box gray'");
-shouldBe("computedStyle.background", "'rgb(128, 128, 128) none round fixed left 10px top 50% / 160px border-box border-box'");
+shouldBe("style.background", "'left 10px center / 10em round fixed border-box border-box gray'");
+shouldBe("computedStyle.background", "'rgb(128, 128, 128) none round fixed left 10px 50% / 160px border-box border-box'");
 
 style.background = "left 10px center round fixed border-box";
-shouldBe("style.background", "'left 10px top 50% round fixed border-box border-box'");
-shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed left 10px top 50% / auto border-box border-box'");
+shouldBe("style.background", "'left 10px center round fixed border-box border-box'");
+shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed left 10px 50% / auto border-box border-box'");
 
 style.background = "center top 20px round fixed border-box";
-shouldBe("style.background", "'left 50% top 20px round fixed border-box border-box'");
-shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed left 50% top 20px / auto border-box border-box'");
+shouldBe("style.background", "'center top 20px round fixed border-box border-box'");
+shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed 50% top 20px / auto border-box border-box'");
 
 style.background = "top 20px center round fixed border-box";
-shouldBe("style.background", "'left 50% top 20px round fixed border-box border-box'");
-shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed left 50% top 20px / auto border-box border-box'");
+shouldBe("style.background", "'center top 20px round fixed border-box border-box'");
+shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed 50% top 20px / auto border-box border-box'");
 
 style.background = "top center round fixed border-box";
-shouldBe("style.background", "'50% 0% round fixed border-box border-box'");
+shouldBe("style.background", "'center top round fixed border-box border-box'");
 shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed 50% 0% / auto border-box border-box'");
 
 style.background = "50px 60px / 50px round fixed border-box";
@@ -440,24 +440,24 @@ shouldBe("style.background", "'50px 60px / 50px round fixed border-box border-bo
 shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed 50px 60px / 50px border-box border-box'");
 
 style.background = "50px / 50px round fixed border-box";
-shouldBe("style.background", "'50px 50% / 50px round fixed border-box border-box'");
+shouldBe("style.background", "'50px center / 50px round fixed border-box border-box'");
 shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed 50px 50% / 50px border-box border-box'");
 
 style.background = "left top 60px / 50px round fixed border-box";
-shouldBe("style.background", "'left 0% top 60px / 50px round fixed border-box border-box'");
-shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed left 0% top 60px / 50px border-box border-box'");
+shouldBe("style.background", "'left top 60px / 50px round fixed border-box border-box'");
+shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed 0% top 60px / 50px border-box border-box'");
 
 style.background = "left -20px top 60px / 50px round fixed border-box";
 shouldBe("style.background", "'left -20px top 60px / 50px round fixed border-box border-box'");
 shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed left -20px top 60px / 50px border-box border-box'");
 
 style.background = "border-box left 20px top / 50px round fixed";
-shouldBe("style.background", "'left 20px top 0% / 50px round fixed border-box border-box'");
-shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed left 20px top 0% / 50px border-box border-box'");
+shouldBe("style.background", "'left 20px top / 50px round fixed border-box border-box'");
+shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed left 20px 0% / 50px border-box border-box'");
 
 style.background = "border-box round fixed left 20px top / 50px";
-shouldBe("style.background", "'left 20px top 0% / 50px round fixed border-box border-box'");
-shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed left 20px top 0% / 50px border-box border-box'");
+shouldBe("style.background", "'left 20px top / 50px round fixed border-box border-box'");
+shouldBe("computedStyle.background", "'rgba(0, 0, 0, 0) none round fixed left 20px 0% / 50px border-box border-box'");
 
 style.background = "border-box round fixed left 20px top 40px / 50px";
 shouldBe("style.background", "'left 20px top 40px / 50px round fixed border-box border-box'");
index 70b034b..c5ee14f 100644 (file)
@@ -3,7 +3,7 @@ Tests a flag to make background shorthand property not override background-size
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS e.style.background is 'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'
+PASS e.style.background is 'url(dummy://test.png) center center / cover no-repeat border-box border-box red'
 PASS e.style.backgroundSize is 'cover'
 
 PASS successfullyParsed is true
index 43230b9..b82e460 100644 (file)
@@ -12,7 +12,7 @@ if (window.internals) {
 
     e.style.backgroundSize = "cover";
     e.style.background = "center red url(dummy://test.png) no-repeat border-box";
-    shouldBe("e.style.background", "'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'")
+    shouldBe("e.style.background", "'url(dummy://test.png) center center / cover no-repeat border-box border-box red'")
     shouldBe("e.style.backgroundSize", "'cover'");
     debug("")
 
index ae16a11..424a964 100644 (file)
@@ -3,14 +3,14 @@ Tests background shortand property with background-size
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS e.style.background is 'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'
+PASS e.style.background is 'url(dummy://test.png) center center / cover no-repeat border-box border-box red'
 PASS e.style.backgroundSize is 'cover'
 PASS checkStyle() is true
 PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 50% 50% / cover border-box border-box'
 PASS computedStyle.getPropertyValue("background-size") is 'cover'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is 'url(dummy://test.png) 20px 50% / contain no-repeat padding-box padding-box red'
+PASS e.style.background is 'url(dummy://test.png) 20px center / contain no-repeat padding-box padding-box red'
 PASS e.style.backgroundSize is 'contain'
 PASS checkStyle() is true
 PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 20px 50% / contain padding-box padding-box'
@@ -24,14 +24,14 @@ PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy:/
 PASS computedStyle.getPropertyValue("background-size") is '50% 75%'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is 'url(dummy://test.png) 0% 0% / 100px 200px repeat border-box content-box red'
+PASS e.style.background is 'url(dummy://test.png) left top / 100px 200px repeat border-box content-box red'
 PASS e.style.backgroundSize is '100px 200px'
 PASS checkStyle() is true
 PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px 200px border-box content-box'
 PASS computedStyle.getPropertyValue("background-size") is '100px 200px'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is 'url(dummy://test.png) 50% 50% / auto repeat content-box padding-box red'
+PASS e.style.background is 'url(dummy://test.png) 50% center / auto repeat content-box padding-box red'
 PASS e.style.backgroundSize is 'auto'
 PASS checkStyle() is true
 PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 50% 50% / auto content-box padding-box'
@@ -45,21 +45,21 @@ PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy:/
 PASS computedStyle.getPropertyValue("background-size") is '50%'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is 'url(dummy://test.png) 0% 0% / 100px repeat scroll padding-box border-box red'
+PASS e.style.background is 'url(dummy://test.png) left top / 100px repeat scroll padding-box border-box red'
 PASS e.style.backgroundSize is '100px'
 PASS checkStyle() is true
 PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px padding-box border-box'
 PASS computedStyle.getPropertyValue("background-size") is '100px'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is 'url(dummy://test.png) 50% 50% / auto repeat fixed content-box content-box red'
+PASS e.style.background is 'url(dummy://test.png) 50% center / auto repeat fixed content-box content-box red'
 PASS e.style.backgroundSize is 'auto'
 PASS checkStyle() is true
 PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) repeat fixed 50% 50% / auto content-box content-box'
 PASS computedStyle.getPropertyValue("background-size") is 'auto'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is '0% 0% / 50%'
+PASS e.style.background is 'left top / 50%'
 PASS e.style.backgroundSize is '50%'
 PASS checkStyle() is true
 PASS computedStyle.getPropertyValue("background") is 'rgba(0, 0, 0, 0) none repeat scroll 0% 0% / 50% padding-box border-box'
index e84eb64..b982dcd 100644 (file)
@@ -23,7 +23,7 @@ function checkComputedStyleValue() {
 }
 
 e.style.background = "center / cover red url(dummy://test.png) no-repeat border-box";
-shouldBe("e.style.background", "'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'");
+shouldBe("e.style.background", "'url(dummy://test.png) center center / cover no-repeat border-box border-box red'");
 shouldBe("e.style.backgroundSize", "'cover'");
 shouldBe("checkStyle()", "true");
 shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 50% 50% / cover border-box border-box'");
@@ -32,7 +32,7 @@ shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
 e.style.background = "red 20px / contain url(dummy://test.png) no-repeat padding-box";
-shouldBe("e.style.background", "'url(dummy://test.png) 20px 50% / contain no-repeat padding-box padding-box red'");
+shouldBe("e.style.background", "'url(dummy://test.png) 20px center / contain no-repeat padding-box padding-box red'");
 shouldBe("e.style.backgroundSize", "'contain'");
 shouldBe("checkStyle()", "true");
 shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 20px 50% / contain padding-box padding-box'");
@@ -50,7 +50,7 @@ shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
 e.style.background = "red url(dummy://test.png) repeat top left / 100px 200px border-box content-box";
-shouldBe("e.style.background", "'url(dummy://test.png) 0% 0% / 100px 200px repeat border-box content-box red'");
+shouldBe("e.style.background", "'url(dummy://test.png) left top / 100px 200px repeat border-box content-box red'");
 shouldBe("e.style.backgroundSize", "'100px 200px'");
 shouldBe("checkStyle()", "true");
 shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px 200px border-box content-box'");
@@ -59,7 +59,7 @@ shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
 e.style.background = "red url(dummy://test.png) repeat 50% / auto auto content-box padding-box";
-shouldBe("e.style.background", "'url(dummy://test.png) 50% 50% / auto repeat content-box padding-box red'");
+shouldBe("e.style.background", "'url(dummy://test.png) 50% center / auto repeat content-box padding-box red'");
 shouldBe("e.style.backgroundSize", "'auto'");
 shouldBe("checkStyle()", "true");
 shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 50% 50% / auto content-box padding-box'");
@@ -77,7 +77,7 @@ shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
 e.style.background = "red repeat scroll padding-box border-box top left / 100px url(dummy://test.png)";
-shouldBe("e.style.background", "'url(dummy://test.png) 0% 0% / 100px repeat scroll padding-box border-box red'");
+shouldBe("e.style.background", "'url(dummy://test.png) left top / 100px repeat scroll padding-box border-box red'");
 shouldBe("e.style.backgroundSize", "'100px'");
 shouldBe("checkStyle()", "true");
 shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px padding-box border-box'");
@@ -86,7 +86,7 @@ shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
 e.style.background = "50% / auto fixed url(dummy://test.png) repeat content-box red";
-shouldBe("e.style.background", "'url(dummy://test.png) 50% 50% / auto repeat fixed content-box content-box red'");
+shouldBe("e.style.background", "'url(dummy://test.png) 50% center / auto repeat fixed content-box content-box red'");
 shouldBe("e.style.backgroundSize", "'auto'");
 shouldBe("checkStyle()", "true");
 shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) repeat fixed 50% 50% / auto content-box content-box'");
@@ -95,7 +95,7 @@ shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
 e.style.background = "top left / 50%";
-shouldBe("e.style.background", "'0% 0% / 50%'");
+shouldBe("e.style.background", "'left top / 50%'");
 shouldBe("e.style.backgroundSize", "'50%'");
 shouldBe("checkStyle()", "true");
 shouldBe('computedStyle.getPropertyValue("background")', "'rgba(0, 0, 0, 0) none repeat scroll 0% 0% / 50% padding-box border-box'");
index 34e3426..506b7c3 100644 (file)
@@ -1,3 +1,32 @@
+2016-12-08  Dave Hyatt  <hyatt@apple.com>
+
+        [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.
+
 2016-12-08  Jeremy Jones  <jeremyj@apple.com>
 
         pointer lock should exit when a js alert is shown
index 46c93b6..788563b 100644 (file)
@@ -677,12 +677,12 @@ static Ref<CSSValue> valueForReflection(const StyleReflection* reflection, const
 static Ref<CSSValueList> createPositionListForLayer(CSSPropertyID propertyID, const FillLayer* layer, const RenderStyle& style)
 {
     auto positionList = CSSValueList::createSpaceSeparated();
-    if (layer->isBackgroundOriginSet()) {
+    if (layer->isBackgroundXOriginSet()) {
         ASSERT_UNUSED(propertyID, propertyID == CSSPropertyBackgroundPosition || propertyID == CSSPropertyWebkitMaskPosition);
         positionList.get().append(CSSValuePool::singleton().createValue(layer->backgroundXOrigin()));
     }
     positionList.get().append(zoomAdjustedPixelValueForLength(layer->xPosition(), style));
-    if (layer->isBackgroundOriginSet()) {
+    if (layer->isBackgroundYOriginSet()) {
         ASSERT(propertyID == CSSPropertyBackgroundPosition || propertyID == CSSPropertyWebkitMaskPosition);
         positionList.get().append(CSSValuePool::singleton().createValue(layer->backgroundYOrigin()));
     }
index 4e0eaa3..1ea883c 100644 (file)
@@ -347,7 +347,6 @@ inline Length StyleBuilderConverter::convertPositionComponent(StyleResolver& sty
         auto& first = *value.pairValue()->first();
         if (first.valueID() == CSSValueRight || first.valueID() == CSSValueBottom)
             relativeToTrailingEdge = true;
-
         lengthValue = value.pairValue()->second();
     }
     
index d85d9e2..a4ed826 100644 (file)
@@ -64,7 +64,8 @@ FillLayer::FillLayer(EFillLayerType type)
     , m_repeatYSet(false)
     , m_xPosSet(false)
     , m_yPosSet(false)
-    , m_backgroundOriginSet(false)
+    , m_backgroundXOriginSet(false)
+    , m_backgroundYOriginSet(false)
     , m_backgroundXOrigin(static_cast<unsigned>(Edge::Left))
     , m_backgroundYOrigin(static_cast<unsigned>(Edge::Top))
     , m_compositeSet(type == MaskFillLayer)
@@ -97,7 +98,8 @@ FillLayer::FillLayer(const FillLayer& o)
     , m_repeatYSet(o.m_repeatYSet)
     , m_xPosSet(o.m_xPosSet)
     , m_yPosSet(o.m_yPosSet)
-    , m_backgroundOriginSet(o.m_backgroundOriginSet)
+    , m_backgroundXOriginSet(o.m_backgroundXOriginSet)
+    , m_backgroundYOriginSet(o.m_backgroundYOriginSet)
     , m_backgroundXOrigin(o.m_backgroundXOrigin)
     , m_backgroundYOrigin(o.m_backgroundYOrigin)
     , m_compositeSet(o.m_compositeSet)
@@ -122,7 +124,8 @@ FillLayer& FillLayer::operator=(const FillLayer& o)
     m_yPosition = o.m_yPosition;
     m_backgroundXOrigin = o.m_backgroundXOrigin;
     m_backgroundYOrigin = o.m_backgroundYOrigin;
-    m_backgroundOriginSet = o.m_backgroundOriginSet;
+    m_backgroundXOriginSet = o.m_backgroundXOriginSet;
+    m_backgroundYOriginSet = o.m_backgroundYOriginSet;
     m_sizeLength = o.m_sizeLength;
     m_attachment = o.m_attachment;
     m_clip = o.m_clip;
@@ -172,10 +175,10 @@ void FillLayer::fillUnsetProperties()
         // We need to fill in the remaining values with the pattern specified.
         for (FillLayer* pattern = this; curr; curr = curr->next()) {
             curr->m_xPosition = pattern->m_xPosition;
-            if (pattern->isBackgroundOriginSet()) {
+            if (pattern->isBackgroundXOriginSet())
                 curr->m_backgroundXOrigin = pattern->m_backgroundXOrigin;
+            if (pattern->isBackgroundYOriginSet())
                 curr->m_backgroundYOrigin = pattern->m_backgroundYOrigin;
-            }
             pattern = pattern->next();
             if (pattern == curr || !pattern)
                 pattern = this;
@@ -187,10 +190,10 @@ void FillLayer::fillUnsetProperties()
         // We need to fill in the remaining values with the pattern specified.
         for (FillLayer* pattern = this; curr; curr = curr->next()) {
             curr->m_yPosition = pattern->m_yPosition;
-            if (pattern->isBackgroundOriginSet()) {
+            if (pattern->isBackgroundXOriginSet())
                 curr->m_backgroundXOrigin = pattern->m_backgroundXOrigin;
+            if (pattern->isBackgroundYOriginSet())
                 curr->m_backgroundYOrigin = pattern->m_backgroundYOrigin;
-            }
             pattern = pattern->next();
             if (pattern == curr || !pattern)
                 pattern = this;
index 799d6b5..1e624cd 100644 (file)
@@ -89,7 +89,8 @@ public:
     bool isImageSet() const { return m_imageSet; }
     bool isXPositionSet() const { return m_xPosSet; }
     bool isYPositionSet() const { return m_yPosSet; }
-    bool isBackgroundOriginSet() const { return m_backgroundOriginSet; }
+    bool isBackgroundXOriginSet() const { return m_backgroundXOriginSet; }
+    bool isBackgroundYOriginSet() const { return m_backgroundYOriginSet; }
     bool isAttachmentSet() const { return m_attachmentSet; }
     bool isClipSet() const { return m_clipSet; }
     bool isOriginSet() const { return m_originSet; }
@@ -103,8 +104,8 @@ public:
     void setImage(RefPtr<StyleImage>&& image) { m_image = WTFMove(image); m_imageSet = true; }
     void setXPosition(Length length) { m_xPosition = WTFMove(length); m_xPosSet = true; }
     void setYPosition(Length length) { m_yPosition = WTFMove(length); m_yPosSet = true; }
-    void setBackgroundXOrigin(Edge o) { m_backgroundXOrigin = static_cast<unsigned>(o); m_backgroundOriginSet = true; }
-    void setBackgroundYOrigin(Edge o) { m_backgroundYOrigin = static_cast<unsigned>(o); m_backgroundOriginSet = true; }
+    void setBackgroundXOrigin(Edge o) { m_backgroundXOrigin = static_cast<unsigned>(o); m_backgroundXOriginSet = true; }
+    void setBackgroundYOrigin(Edge o) { m_backgroundYOrigin = static_cast<unsigned>(o); m_backgroundYOriginSet = true; }
     void setAttachment(EFillAttachment attachment) { m_attachment = attachment; m_attachmentSet = true; }
     void setClip(EFillBox b) { m_clip = b; m_clipSet = true; }
     void setOrigin(EFillBox b) { m_origin = b; m_originSet = true; }
@@ -119,8 +120,8 @@ public:
 
     void clearImage() { m_image = nullptr; m_imageSet = false; }
 
-    void clearXPosition() { m_xPosSet = false; m_backgroundOriginSet = false; }
-    void clearYPosition() { m_yPosSet = false; m_backgroundOriginSet = false; }
+    void clearXPosition() { m_xPosSet = false; m_backgroundXOriginSet = false; }
+    void clearYPosition() { m_yPosSet = false; m_backgroundYOriginSet = false; }
 
     void clearAttachment() { m_attachmentSet = false; }
     void clearClip() { m_clipSet = false; }
@@ -200,7 +201,8 @@ private:
     unsigned m_repeatYSet : 1;
     unsigned m_xPosSet : 1;
     unsigned m_yPosSet : 1;
-    unsigned m_backgroundOriginSet : 1;
+    unsigned m_backgroundXOriginSet : 1;
+    unsigned m_backgroundYOriginSet : 1;
     unsigned m_backgroundXOrigin : 2; // Edge
     unsigned m_backgroundYOrigin : 2; // Edge
     unsigned m_compositeSet : 1;