| <!DOCTYPE html> |
| <html> |
| <script src="../../resources/js-test-pre.js"></script> |
| <div id="test"> </div> |
| <script> |
| description("Tests background shortand property with background-size"); |
| |
| var e = document.getElementById('test'); |
| var computedStyle = window.getComputedStyle(e, null); |
| |
| function checkStyle() { |
| var before = e.style.background; |
| e.style.background = 'none'; |
| e.style.background = before; |
| return (e.style.background == before); |
| } |
| |
| function checkComputedStyleValue() { |
| var before = window.getComputedStyle(e, null).getPropertyValue('background'); |
| e.style.background = 'none'; |
| e.style.background = before; |
| return (window.getComputedStyle(e, null).getPropertyValue('background') == before); |
| } |
| |
| e.style.background = "center / cover red url(dummy://test.png) no-repeat border-box"; |
| 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'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'cover'"); |
| 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 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'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'contain'"); |
| shouldBe("checkComputedStyleValue()", "true"); |
| debug("") |
| |
| e.style.background = "red url(dummy://test.png) 50px 60px / 50% 75% no-repeat"; |
| shouldBe("e.style.background", "'url(\"dummy://test.png\") 50px 60px / 50% 75% no-repeat red'"); |
| shouldBe("e.style.backgroundSize", "'50% 75%'"); |
| shouldBe("checkStyle()", "true"); |
| shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(\"dummy://test.png\") no-repeat scroll 50px 60px / 50% 75% padding-box border-box'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'50% 75%'"); |
| 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\") 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'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'100px 200px'"); |
| 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% 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'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'auto'"); |
| shouldBe("checkComputedStyleValue()", "true"); |
| debug("") |
| |
| e.style.background = "url(dummy://test.png) red 50px 60px / 50% no-repeat fixed"; |
| shouldBe("e.style.background", "'url(\"dummy://test.png\") 50px 60px / 50% no-repeat fixed red'"); |
| shouldBe("e.style.backgroundSize", "'50%'"); |
| shouldBe("checkStyle()", "true"); |
| shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(\"dummy://test.png\") no-repeat fixed 50px 60px / 50% padding-box border-box'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'50%'"); |
| 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\") 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'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'100px'"); |
| 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% 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'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'auto'"); |
| shouldBe("checkComputedStyleValue()", "true"); |
| debug("") |
| |
| e.style.background = "top left / 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'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'50%'"); |
| shouldBe("checkComputedStyleValue()", "true"); |
| debug("") |
| |
| e.style.background = "red fixed"; |
| shouldBe("e.style.background", "'fixed red'"); |
| shouldBe("e.style.backgroundSize", "'initial'"); |
| shouldBe("checkStyle()", "true"); |
| shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) none repeat fixed 0% 0% / auto padding-box border-box'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'auto'"); |
| shouldBe("checkComputedStyleValue()", "true"); |
| debug("") |
| |
| e.style.background = ""; |
| e.style.background = "red / cover url(dummy://test.png) repeat"; |
| shouldBe("e.style.background", "''"); |
| shouldBe("e.style.backgroundSize", "''"); |
| shouldBe("checkStyle()", "true"); |
| shouldBe('computedStyle.getPropertyValue("background")', "'rgba(0, 0, 0, 0) none repeat scroll 0% 0% / auto padding-box border-box'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'auto'"); |
| shouldBe("checkComputedStyleValue()", "true"); |
| debug("") |
| |
| e.style.background = ""; |
| e.style.background = "red url(dummy://test.png) repeat 25px / contain contain"; |
| shouldBe("e.style.background", "''"); |
| shouldBe("e.style.backgroundSize", "''"); |
| shouldBe("checkStyle()", "true"); |
| shouldBe('computedStyle.getPropertyValue("background")', "'rgba(0, 0, 0, 0) none repeat scroll 0% 0% / auto padding-box border-box'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'auto'"); |
| shouldBe("checkComputedStyleValue()", "true"); |
| debug("") |
| |
| e.style.background = ""; |
| e.style.background = "red top left / 100px cover url(dummy://test.png) repeat"; |
| shouldBe("e.style.background", "''"); |
| shouldBe("e.style.backgroundSize", "''"); |
| shouldBe("checkStyle()", "true"); |
| shouldBe('computedStyle.getPropertyValue("background")', "'rgba(0, 0, 0, 0) none repeat scroll 0% 0% / auto padding-box border-box'"); |
| shouldBe('computedStyle.getPropertyValue("background-size")', "'auto'"); |
| shouldBe("checkComputedStyleValue()", "true"); |
| debug("") |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |