| <!DOCTYPE HTML><!-- webkit-test-runner [ experimental:WebAnimationsCSSIntegrationEnabled=false ] --> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Test window.CSS.supports()"); |
| |
| shouldBeTrue('CSS.supports("display: none")'); |
| shouldBeTrue('CSS.supports("(display: none)")'); |
| shouldBeTrue('CSS.supports(" display: none ")'); |
| shouldBeFalse('CSS.supports("(display: deadbeef)")'); |
| |
| shouldBeFalse('CSS.supports("display: deadbeef")'); |
| shouldBeTrue('CSS.supports("(display: none) and ((display: block) or (display: inline))")'); |
| shouldBeTrue('CSS.supports("(not (display: deadbeef)) and (display: block)")'); |
| shouldBeTrue('CSS.supports("top: -webkit-calc(80% - 20px)")'); |
| shouldBeTrue('CSS.supports("background-color: rgb(0, 128, 0)")'); |
| shouldBeTrue('CSS.supports("background: url(\'/blah\')")'); |
| shouldBeFalse('CSS.supports("background: invalid(\'/blah\')")'); |
| shouldBeFalse('CSS.supports("display: none;")'); |
| shouldBeFalse('CSS.supports("display: none; garbage")'); |
| shouldBeFalse('CSS.supports(" display: none ; garbage ")'); |
| |
| // Negation |
| shouldBeTrue('CSS.supports("not (display: deadbeef)")'); |
| shouldBeFalse('CSS.supports("not (display: none)")'); |
| shouldBeTrue('CSS.supports("not (not (display: none))")'); |
| shouldBeFalse('CSS.supports("not (not (not (display: none)))")'); |
| |
| // Conjunction. |
| shouldBeTrue('CSS.supports("(display: none) and (display: block)")'); |
| shouldBeTrue('CSS.supports("(display: none) and (display: block) and (display: inline)")'); |
| shouldBeFalse('CSS.supports("(display: none) and (display: block) and (display: deadbeef) and (display: inline)")'); |
| |
| // Disjunction. |
| shouldBeTrue('CSS.supports("(display: none) or (display: inline)")'); |
| shouldBeTrue('CSS.supports("(display: none) or (display: block) or (display: inline)")'); |
| shouldBeTrue('CSS.supports("(display: none) or (display: deadbeef) or (display: inline)")'); |
| shouldBeFalse('CSS.supports("(display: ohhai) or (display: deadbeef) or (display: rainbows)")'); |
| |
| // Bad syntax. Can't mix operators without a layer of parentheses.. |
| shouldBeFalse('CSS.supports("(display: none) and (display: block) or (display: inline)")'); |
| shouldBeFalse('CSS.supports("not (display: deadbeef) and (display: block)")'); |
| |
| // Mix 'n match. |
| shouldBeTrue('CSS.supports("(not (border: 1px 1px 1px 1px 1px solid #000)) and (display: block)")'); |
| shouldBeTrue('CSS.supports("(display: block !important) and ((display: inline) or (display: deadbeef))")'); |
| shouldBeTrue('CSS.supports("not ((not (display: block)) or ((display: none) and (deadbeef: 1px)))")'); |
| |
| // Whitespace/Syntax. |
| shouldBeTrue('CSS.supports("not( display: deadbeef)")'); |
| shouldBeTrue('CSS.supports("(display: none)and ( -webkit-transition: all 1s )")'); |
| shouldBeTrue('CSS.supports("(display: none)or(-webkit-transition: all 1s)")'); |
| shouldBeTrue('CSS.supports("(display: none) or(-webkit-transition: all 1s )")'); |
| shouldBeTrue('CSS.supports("(((((((display: none)))))))")'); |
| shouldBeFalse('CSS.supports("(!important)")'); |
| shouldBeFalse('CSS.supports("!important")'); |
| shouldBeFalse('CSS.supports("not not not not (display: none)")'); |
| |
| // Functions. |
| shouldBeTrue('CSS.supports("(top: -webkit-calc(80% - 20px))")'); |
| shouldBeTrue('CSS.supports("(background-color: rgb(0, 128, 0))")'); |
| shouldBeTrue('CSS.supports("(background: url(\'/blah\'))")'); |
| shouldBeTrue('CSS.supports("((top: -webkit-calc(80% - 20px)) and (not (background-color: rgb(0, 128, 0)))) or (background: url(\'/blah\'))")'); |
| shouldBeFalse('CSS.supports("(background: invalid(\'/blah\'))")'); |
| |
| // Property/value variant. |
| shouldBeTrue('CSS.supports("top", "20%")'); |
| shouldBeTrue('CSS.supports("top", " 20px ")'); |
| shouldBeFalse('CSS.supports("top", "20")'); |
| shouldBeFalse('CSS.supports("dis\\nplay", "none")'); |
| shouldBeFalse('CSS.supports("display", "rainbow")'); |
| shouldBeFalse('CSS.supports("display", "url(rainbow.png)")'); |
| shouldBeTrue('CSS.supports(" background ", "url(rainbow.png)")'); |
| shouldBeFalse('CSS.supports("background", "invalid(rainbow.png)")'); |
| shouldBeTrue('CSS.supports("background-color", "#000")'); |
| shouldBeTrue('CSS.supports("background-color", "rgba(0,0,0,0)")'); |
| shouldBeTrue('CSS.supports("background-color", "inherit")'); |
| |
| shouldBeTrue('CSS.supports("display", "none !important")'); |
| shouldBeTrue('CSS.supports("display", "none!important")'); |
| shouldBeFalse('CSS.supports("display", "!important none")'); |
| shouldBeFalse('CSS.supports("display", "none !important ! important ")'); |
| shouldBeTrue('CSS.supports("display", "none ! important")'); |
| shouldBeTrue('CSS.supports("display", "none ! \timportant")'); |
| shouldBeTrue('CSS.supports("display", "none ! \\nimportant")'); |
| |
| shouldBeFalse('CSS.supports("", "")'); |
| shouldBeFalse('CSS.supports(true, "")'); |
| shouldBeFalse('CSS.supports([], "none")'); |
| shouldBeFalse('CSS.supports("display", "")'); |
| shouldBeFalse('CSS.supports("display:", "none")'); |
| shouldBeTrue('CSS.supports("z-index", 1)'); |
| shouldBeFalse('CSS.supports("content", [])'); |
| shouldBeFalse('CSS.supports("content", "!important")'); |
| shouldBeFalse('CSS.supports("(display: none)", undefined)'); |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |