Update web-platform-tests to revision 36634cbcf3253dfe8d220990a27ad4eeebf8ec2f

This commit is contained in:
WPT Sync Bot 2018-09-27 21:57:09 -04:00
parent 0964d055cd
commit 7295abcc2a
245 changed files with 5966 additions and 1901 deletions

View file

@ -14,9 +14,6 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
[Revoke blob URL after calling fetch, fetch should succeed]
expected: FAIL
[url-with-fetch.any.html]
[Untitled]
@ -37,6 +34,3 @@
[Revoke blob URL after creating Request, will fetch]
expected: FAIL
[Revoke blob URL after calling fetch, fetch should succeed]
expected: FAIL

File diff suppressed because it is too large Load diff

View file

@ -50,3 +50,75 @@
[animationName has default value of empty string]
expected: FAIL
[elapsedTime set to -0.5]
expected: FAIL
[elapsedTime cannot be set to -Infinity]
expected: FAIL
[elapsedTime cannot be set to Infinity]
expected: FAIL
[animationName set to [\]]
expected: FAIL
[elapsedTime set to null]
expected: FAIL
[elapsedTime set to an object with a valueOf function]
expected: FAIL
[animationName set to an object with a valueOf function]
expected: FAIL
[elapsedTime cannot be set to NaN]
expected: FAIL
[elapsedTime set to true]
expected: FAIL
[elapsedTime set to '']
expected: FAIL
[elapsedTime set to [0.5\]]
expected: FAIL
[elapsedTime set to undefined]
expected: FAIL
[animationName set to true]
expected: FAIL
[elapsedTime set to false]
expected: FAIL
[elapsedTime set to [\]]
expected: FAIL
[elapsedTime cannot be set to [0.5, 1.0\]]
expected: FAIL
[animationName set to null]
expected: FAIL
[animationName set to an object]
expected: FAIL
[elapsedTime cannot be set to 'sample']
expected: FAIL
[animationName set to undefined]
expected: FAIL
[animationName set to [1, 2, 3\]]
expected: FAIL
[animationName set to false]
expected: FAIL
[animationName set to a number]
expected: FAIL
[elapsedTime cannot be set to an object]
expected: FAIL

View file

@ -1,13 +1,4 @@
[css-text-line-break-ja-hyphens-strict.html]
[2010 HYPHEN may NOT appear at line start if ja and strict]
expected: FAIL
[2013 EN DASH may NOT appear at line start if ja and strict]
expected: FAIL
[30A0 KATAKANA-HIRAGANA DOUBLE HYPHEN may NOT appear at line start if ja and strict]
expected: FAIL
[301C WAVE DASH may NOT appear at line start if ja and strict]
expected:
if os == "linux": FAIL

View file

@ -0,0 +1,2 @@
[tab-min-rendered-width-1.html]
expected: FAIL

View file

@ -1,6 +1,7 @@
[properties-value-inherit-002.html]
expected: TIMEOUT
[outline-width length(px) / values]
expected: FAIL
expected: TIMEOUT
[border-left-width length(em) / values]
expected: FAIL
@ -24,13 +25,13 @@
expected: FAIL
[opacity number[0,1\](zero-to-one) / values]
expected: FAIL
expected: TIMEOUT
[line-height number(integer) / values]
expected: FAIL
[outline-offset length(px) / values]
expected: FAIL
expected: TIMEOUT
[font-size length(pt) / values]
expected: FAIL
@ -39,7 +40,7 @@
expected: FAIL
[vertical-align length(in) / values]
expected: FAIL
expected: TIMEOUT
[max-height percentage(%) / values]
expected: FAIL
@ -75,7 +76,7 @@
expected: FAIL
[vertical-align percentage(%) / values]
expected: FAIL
expected: TIMEOUT
[background-position length(in) / events]
expected: FAIL
@ -99,10 +100,10 @@
expected: FAIL
[vertical-align length(em) / values]
expected: FAIL
expected: TIMEOUT
[clip rectangle(rectangle) / values]
expected: FAIL
expected: TIMEOUT
[word-spacing length(em) / values]
expected: FAIL
@ -126,7 +127,7 @@
expected: FAIL
[outline-offset length(ex) / values]
expected: FAIL
expected: TIMEOUT
[min-width length(cm) / values]
expected: FAIL
@ -141,16 +142,16 @@
expected: FAIL
[vertical-align length(pc) / values]
expected: FAIL
expected: TIMEOUT
[vertical-align length(cm) / values]
expected: FAIL
expected: TIMEOUT
[max-height length(ex) / values]
expected: FAIL
[vertical-align length(ex) / values]
expected: FAIL
expected: TIMEOUT
[min-height percentage(%) / values]
expected: FAIL
@ -159,7 +160,7 @@
expected: FAIL
[outline-offset length(mm) / values]
expected: FAIL
expected: TIMEOUT
[font-weight font-weight(keyword) / values]
expected: FAIL
@ -168,7 +169,7 @@
expected: FAIL
[outline-offset length(pt) / values]
expected: FAIL
expected: TIMEOUT
[line-height length(mm) / values]
expected: FAIL
@ -201,7 +202,7 @@
expected: FAIL
[vertical-align length(pt) / values]
expected: FAIL
expected: TIMEOUT
[border-left-color color(rgba) / values]
expected: FAIL
@ -270,10 +271,10 @@
expected: FAIL
[outline-offset length(in) / values]
expected: FAIL
expected: TIMEOUT
[outline-width length(pt) / values]
expected: FAIL
expected: TIMEOUT
[border-top-width length(pc) / values]
expected: FAIL
@ -291,7 +292,7 @@
expected: FAIL
[outline-width length(in) / values]
expected: FAIL
expected: TIMEOUT
[word-spacing length(pt) / values]
expected: FAIL
@ -303,7 +304,7 @@
expected: FAIL
[outline-color color(rgba) / values]
expected: FAIL
expected: TIMEOUT
[background-position length(ex) / events]
expected: FAIL
@ -327,7 +328,7 @@
expected: FAIL
[outline-width length(ex) / values]
expected: FAIL
expected: TIMEOUT
[font-size length(pc) / values]
expected: FAIL
@ -339,7 +340,7 @@
expected: FAIL
[outline-width length(cm) / values]
expected: FAIL
expected: TIMEOUT
[max-width percentage(%) / values]
expected: FAIL
@ -354,19 +355,19 @@
expected: FAIL
[outline-width length(mm) / values]
expected: FAIL
expected: TIMEOUT
[border-left-width length(pc) / values]
expected: FAIL
[outline-width length(pc) / values]
expected: FAIL
expected: TIMEOUT
[font-weight font-weight(numeric) / values]
expected: FAIL
[vertical-align length(px) / values]
expected: FAIL
expected: TIMEOUT
[letter-spacing length(px) / values]
expected: FAIL
@ -393,7 +394,7 @@
expected: FAIL
[outline-width length(em) / values]
expected: FAIL
expected: TIMEOUT
[border-right-width length(em) / values]
expected: FAIL
@ -405,10 +406,10 @@
expected: FAIL
[outline-offset length(em) / values]
expected: FAIL
expected: TIMEOUT
[outline-offset length(cm) / values]
expected: FAIL
expected: TIMEOUT
[background-position length(mm) / events]
expected: FAIL
@ -420,13 +421,13 @@
expected: FAIL
[z-index integer(integer) / values]
expected: FAIL
expected: TIMEOUT
[border-left-width length(pt) / values]
expected: FAIL
[vertical-align length(mm) / values]
expected: FAIL
expected: TIMEOUT
[border-bottom-width length(pc) / values]
expected: FAIL
@ -447,7 +448,7 @@
expected: FAIL
[outline-offset length(pc) / values]
expected: FAIL
expected: TIMEOUT
[max-height length(pc) / values]
expected: FAIL
@ -473,39 +474,135 @@
[min-width length(ex) / values]
expected: FAIL
[text-indent length(pc) / values]
expected: FAIL
[text-indent length(ex) / values]
expected: FAIL
[text-indent length(px) / values]
expected: FAIL
[text-indent length(mm) / values]
expected: FAIL
[word-spacing length(in) / values]
expected: FAIL
[text-indent length(cm) / values]
expected: FAIL
[text-indent length(pt) / values]
expected: FAIL
[text-shadow shadow(shadow) / values]
expected: FAIL
[word-spacing percentage(%) / values]
expected: FAIL
[text-indent length(in) / values]
[outline-width length(pc) / events]
expected: TIMEOUT
[height percentage(%) / values]
expected: FAIL
[text-indent length(em) / values]
[vertical-align length(px) / events]
expected: TIMEOUT
[padding-right length(em) / values]
expected: FAIL
[text-indent percentage(%) / values]
[outline-offset length(mm) / events]
expected: TIMEOUT
[vertical-align length(in) / events]
expected: TIMEOUT
[padding-left length(px) / values]
expected: FAIL
[vertical-align length(em) / events]
expected: TIMEOUT
[vertical-align length(cm) / events]
expected: TIMEOUT
[outline-offset length(cm) / events]
expected: TIMEOUT
[vertical-align length(mm) / events]
expected: TIMEOUT
[outline-offset length(em) / events]
expected: TIMEOUT
[z-index integer(integer) / events]
expected: TIMEOUT
[vertical-align length(ex) / events]
expected: TIMEOUT
[outline-width length(em) / events]
expected: TIMEOUT
[visibility visibility(keyword) / events]
expected: TIMEOUT
[width length(pc) / values]
expected: FAIL
[opacity number[0,1\](zero-to-one) / events]
expected: TIMEOUT
[margin-bottom length(px) / values]
expected: FAIL
[visibility visibility(keyword) / values]
expected: TIMEOUT
[width length(pt) / values]
expected: FAIL
[outline-width length(cm) / events]
expected: TIMEOUT
[clip rectangle(rectangle) / events]
expected: TIMEOUT
[outline-width length(ex) / events]
expected: TIMEOUT
[outline-width length(mm) / events]
expected: TIMEOUT
[width length(mm) / values]
expected: FAIL
[vertical-align percentage(%) / events]
expected: TIMEOUT
[outline-width length(pt) / events]
expected: TIMEOUT
[outline-color color(rgba) / events]
expected: TIMEOUT
[outline-width length(in) / events]
expected: TIMEOUT
[outline-offset length(ex) / events]
expected: TIMEOUT
[padding-top length(mm) / values]
expected: FAIL
[vertical-align length(pc) / events]
expected: TIMEOUT
[vertical-align length(pt) / events]
expected: TIMEOUT
[width length(ex) / values]
expected: FAIL
[top length(ex) / values]
expected: FAIL
[outline-offset length(pt) / events]
expected: TIMEOUT
[outline-offset length(px) / events]
expected: TIMEOUT
[outline-offset length(in) / events]
expected: TIMEOUT
[outline-width length(px) / events]
expected: TIMEOUT
[outline-offset length(pc) / events]
expected: TIMEOUT

View file

@ -0,0 +1,7 @@
[transitionevent-interface.html]
[elapsedTime set to undefined]
expected: FAIL
[propertyName set to undefined]
expected: FAIL

View file

@ -20,9 +20,6 @@
[right intermediate]
expected: FAIL
[min-width intermediate]
expected: FAIL
[background-position end]
expected: FAIL
@ -35,42 +32,81 @@
[font-weight intermediate]
expected: FAIL
[clip intermediate]
expected: FAIL
[border-right-width intermediate]
expected: FAIL
[border-left-width intermediate]
expected: FAIL
[min-height intermediate]
expected: FAIL
[border-top-width intermediate]
expected: FAIL
[max-width intermediate]
expected: FAIL
[max-height intermediate]
expected: FAIL
[outline-offset intermediate]
expected: FAIL
[border-spacing intermediate]
expected: FAIL
[left intermediate]
expected: FAIL
[outline-width intermediate]
expected: FAIL
[bottom intermediate]
expected: FAIL
[outline-width end]
expected: FAIL
[max-height end]
expected: FAIL
[height end]
expected: FAIL
[line-height end]
expected: FAIL
[min-height end]
expected: FAIL
[bottom end]
expected: FAIL
[clip end]
expected: FAIL
[font-weight end]
expected: FAIL
[border-left-color end]
expected: FAIL
[border-top-width end]
expected: FAIL
[margin-right intermediate]
expected: FAIL
[border-left-width end]
expected: FAIL
[border-bottom-width end]
expected: FAIL
[letter-spacing end]
expected: FAIL
[margin-bottom end]
expected: FAIL
[border-right-width end]
expected: FAIL
[border-right-color end]
expected: FAIL
[border-top-color end]
expected: FAIL
[color end]
expected: FAIL
[border-spacing end]
expected: FAIL
[visibility end]
expected: FAIL
[left end]
expected: FAIL

View file

@ -0,0 +1,4 @@
[shadow-relatedTarget.html]
[shadow-relatedTarget]
expected: FAIL

View file

@ -2,7 +2,7 @@
type: testharness
[single-byte-decoder.html?document]
expected: CRASH
expected: TIMEOUT
[windows-1254: iso_8859-9 (document.characterSet and document.inputEncoding)]
expected: FAIL

View file

@ -0,0 +1,5 @@
[format-field-id-2.htm]
expected: TIMEOUT
[EventSource: Last-Event-ID (2)]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[format-field-id.htm]
expected: TIMEOUT
[EventSource: Last-Event-ID]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[traverse_the_history_1.html]
[Multiple history traversals from the same task]
expected: FAIL

View file

@ -1,4 +1,4 @@
[traverse_the_history_4.html]
[traverse_the_history_3.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,17 +0,0 @@
[location-protocol-setter-non-broken-weird.html]
type: testharness
[Set location.protocol to x]
expected: FAIL
[Set location.protocol to data]
expected: FAIL
[Set location.protocol to ftp]
expected: FAIL
[Set location.protocol to gopher]
expected: FAIL
[Set location.protocol to http+x]
expected: FAIL

View file

@ -30,3 +30,6 @@
[Set HTTP URL frame location.protocol to data]
expected: FAIL
[Set HTTP URL frame location.protocol to x]
expected: FAIL

View file

@ -0,0 +1,2 @@
[transformed-tbody-tr-collapsed-border.html]
expected: FAIL

View file

@ -0,0 +1,2 @@
[legend-list-item-numbering.html]
expected: FAIL

View file

@ -3,3 +3,39 @@
[Should get an error event for a text/plain response.]
expected: FAIL
[Stylesheet loading using @import with no Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using <link> with broken Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using @import with broken Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using @import with wrong Content-Type, same-origin, and nosniff]
expected: FAIL
[Stylesheet loading using <link> with no Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using @import with wrong Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using @import with wrong Content-Type, same-origin, and no nosniff]
expected: FAIL
[Stylesheet loading using <link> with wrong Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using <link> with wrong Content-Type, same-origin, and no nosniff]
expected: FAIL
[Stylesheet loading using @import with wrong Content-Type, cross-origin, and no nosniff]
expected: FAIL
[Stylesheet loading using <link> with wrong Content-Type, cross-origin, and no nosniff]
expected: FAIL
[Stylesheet loading using <link> with wrong Content-Type, same-origin, and nosniff]
expected: FAIL

View file

@ -0,0 +1,37 @@
[link-style-error-limited-quirks.html]
[Stylesheet loading using @import with no Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using <link> with broken Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using @import with broken Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using @import with wrong Content-Type, same-origin, and nosniff]
expected: FAIL
[Stylesheet loading using <link> with no Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using @import with wrong Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using @import with wrong Content-Type, same-origin, and no nosniff]
expected: FAIL
[Stylesheet loading using <link> with wrong Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using <link> with wrong Content-Type, same-origin, and no nosniff]
expected: FAIL
[Stylesheet loading using @import with wrong Content-Type, cross-origin, and no nosniff]
expected: FAIL
[Stylesheet loading using <link> with wrong Content-Type, cross-origin, and no nosniff]
expected: FAIL
[Stylesheet loading using <link> with wrong Content-Type, same-origin, and nosniff]
expected: FAIL

View file

@ -0,0 +1,31 @@
[link-style-error-quirks.html]
[Stylesheet loading using @import with no Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using <link> with broken Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using @import with broken Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using @import with wrong Content-Type, same-origin, and nosniff]
expected: FAIL
[Stylesheet loading using <link> with no Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using @import with wrong Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using <link> with wrong Content-Type, cross-origin, and nosniff]
expected: FAIL
[Stylesheet loading using @import with wrong Content-Type, cross-origin, and no nosniff]
expected: FAIL
[Stylesheet loading using <link> with wrong Content-Type, cross-origin, and no nosniff]
expected: FAIL
[Stylesheet loading using <link> with wrong Content-Type, same-origin, and nosniff]
expected: FAIL

View file

@ -0,0 +1,4 @@
[iframe-nosrc.html]
[load event of iframe should not be fired after processing the element]
expected: FAIL

View file

@ -13,21 +13,3 @@
[picture: source (max-width:500px) valid image, img valid image, resize to narrow]
expected: FAIL
[picture: source (max-width:500px) broken image, img valid image, resize to narrow]
expected: FAIL
[img (srcset 1 cand) valid image, resize to wide]
expected: FAIL
[picture: same URL in source (max-width:500px) and img, resize to wide]
expected: FAIL
[img (srcset 1 cand) valid image, resize to narrow]
expected: FAIL
[picture: source (max-width:500px) valid image, img broken image, resize to wide]
expected: FAIL
[picture: same URL in source (max-width:500px) and img, resize to narrow]
expected: FAIL

View file

@ -0,0 +1,10 @@
[non-active-document.html]
[DOMParser]
expected: FAIL
[createHTMLDocument]
expected: FAIL
[<template>]
expected: FAIL

View file

@ -183,3 +183,18 @@
[off is an allowed autocomplete field name]
expected: FAIL
[Unknown field]
expected: FAIL
[Test maximum number of tokens]
expected: FAIL
[Serialize combinations of section, mode, contact, and field]
expected: FAIL
[Test 'wearing the autofill anchor mantle' with off/on]
expected: FAIL
[Test whitespace-only attribute value]
expected: FAIL

View file

@ -2,3 +2,6 @@
[document.open() after parser is aborted]
expected: FAIL
[async document.open() after parser is aborted]
expected: FAIL

View file

@ -1,283 +0,0 @@
[limited-quirks.html]
[top: -\\31 .5]
expected: FAIL
[bottom: -1A]
expected: FAIL
[bottom: -1a]
expected: FAIL
[top: @1]
expected: FAIL
[top: "1a"]
expected: FAIL
[top: @a]
expected: FAIL
[bottom: "1"]
expected: FAIL
[bottom: -/**/1]
expected: FAIL
[top: +/**/1]
expected: FAIL
[bottom: @1a]
expected: FAIL
[top: 1\\31 ]
expected: FAIL
[top: url('1')]
expected: FAIL
[bottom: -\\31 ]
expected: FAIL
[top: calc(1)]
expected: FAIL
[top: \\31 ]
expected: FAIL
[bottom: +1\\31 ]
expected: FAIL
[bottom: 1\\31 .5]
expected: FAIL
[bottom: #0001]
expected: FAIL
[top: calc(2 * 2px)]
expected: FAIL
[bottom: 1a]
expected: FAIL
[bottom: A]
expected: FAIL
[bottom: #01]
expected: FAIL
[top: +\\31 .5]
expected: FAIL
[bottom: #1]
expected: FAIL
[top: -/**/1]
expected: FAIL
[bottom: +\\31 .5]
expected: FAIL
[bottom: \\31 ]
expected: FAIL
[bottom: calc(1)]
expected: FAIL
[top: #001]
expected: FAIL
[top: +\\31 ]
expected: FAIL
[bottom: +\\31 ]
expected: FAIL
[top: +1.5]
expected: FAIL
[top: +1\\31 ]
expected: FAIL
[bottom: @a]
expected: FAIL
[bottom: @1]
expected: FAIL
[top: #1]
expected: FAIL
[top: 1a]
expected: FAIL
[bottom: +1a]
expected: FAIL
[bottom: +1A]
expected: FAIL
[bottom: "a"]
expected: FAIL
[top: #00001]
expected: FAIL
[bottom: -1\\31 .5]
expected: FAIL
[top: "1"]
expected: FAIL
[bottom: 1.5]
expected: FAIL
[bottom: -\\31 .5]
expected: FAIL
[bottom: url('1')]
expected: FAIL
[bottom: -1.5]
expected: FAIL
[top: \\31 .5]
expected: FAIL
[bottom: "1a"]
expected: FAIL
[bottom: calc(2 * 2px)]
expected: FAIL
[bottom: +1\\31 .5]
expected: FAIL
[bottom: 1\\31 ]
expected: FAIL
[bottom: +/**/1]
expected: FAIL
[bottom: #00001]
expected: FAIL
[top: url(1)]
expected: FAIL
[bottom: #001]
expected: FAIL
[top: +1\\31 .5]
expected: FAIL
[top: -1a]
expected: FAIL
[top: -1A]
expected: FAIL
[bottom: url(1)]
expected: FAIL
[top: a]
expected: FAIL
[top: A]
expected: FAIL
[top: #000001]
expected: FAIL
[top: 1]
expected: FAIL
[top: 1\\31 .5]
expected: FAIL
[bottom: a]
expected: FAIL
[bottom: 1]
expected: FAIL
[bottom: +1]
expected: FAIL
[bottom: #000001]
expected: FAIL
[bottom: +a]
expected: FAIL
[bottom: +A]
expected: FAIL
[top: 1.5]
expected: FAIL
[top: +A]
expected: FAIL
[top: +a]
expected: FAIL
[top: +1]
expected: FAIL
[top: -1.5]
expected: FAIL
[top: -1\\31 .5]
expected: FAIL
[top: +1a]
expected: FAIL
[top: +1A]
expected: FAIL
[top: @1a]
expected: FAIL
[bottom: \\31 .5]
expected: FAIL
[top: "a"]
expected: FAIL
[top: #01]
expected: FAIL
[bottom: +1.5]
expected: FAIL
[bottom: -A]
expected: FAIL
[bottom: -a]
expected: FAIL
[bottom: -1\\31 ]
expected: FAIL
[top: #0001]
expected: FAIL
[bottom: -1]
expected: FAIL
[top: -\\31 ]
expected: FAIL
[top: -A]
expected: FAIL
[top: -a]
expected: FAIL
[top: -1]
expected: FAIL
[top: -1\\31 ]
expected: FAIL

View file

@ -1,283 +0,0 @@
[no-quirks.html]
[top: -\\31 .5]
expected: FAIL
[bottom: -1A]
expected: FAIL
[bottom: -1a]
expected: FAIL
[top: @1]
expected: FAIL
[top: "1a"]
expected: FAIL
[top: @a]
expected: FAIL
[bottom: "1"]
expected: FAIL
[bottom: -/**/1]
expected: FAIL
[top: +/**/1]
expected: FAIL
[bottom: @1a]
expected: FAIL
[top: 1\\31 ]
expected: FAIL
[top: url('1')]
expected: FAIL
[bottom: -\\31 ]
expected: FAIL
[top: calc(1)]
expected: FAIL
[top: \\31 ]
expected: FAIL
[bottom: +1\\31 ]
expected: FAIL
[bottom: 1\\31 .5]
expected: FAIL
[bottom: #0001]
expected: FAIL
[top: calc(2 * 2px)]
expected: FAIL
[bottom: 1a]
expected: FAIL
[bottom: A]
expected: FAIL
[bottom: #01]
expected: FAIL
[top: +\\31 .5]
expected: FAIL
[bottom: #1]
expected: FAIL
[top: -/**/1]
expected: FAIL
[bottom: +\\31 .5]
expected: FAIL
[bottom: \\31 ]
expected: FAIL
[bottom: calc(1)]
expected: FAIL
[top: #001]
expected: FAIL
[top: +\\31 ]
expected: FAIL
[bottom: +\\31 ]
expected: FAIL
[top: +1.5]
expected: FAIL
[top: +1\\31 ]
expected: FAIL
[bottom: @a]
expected: FAIL
[bottom: @1]
expected: FAIL
[top: #1]
expected: FAIL
[top: 1a]
expected: FAIL
[bottom: +1a]
expected: FAIL
[bottom: +1A]
expected: FAIL
[bottom: "a"]
expected: FAIL
[top: #00001]
expected: FAIL
[bottom: -1\\31 .5]
expected: FAIL
[top: "1"]
expected: FAIL
[bottom: 1.5]
expected: FAIL
[bottom: -\\31 .5]
expected: FAIL
[bottom: url('1')]
expected: FAIL
[bottom: -1.5]
expected: FAIL
[top: \\31 .5]
expected: FAIL
[bottom: "1a"]
expected: FAIL
[bottom: calc(2 * 2px)]
expected: FAIL
[bottom: +1\\31 .5]
expected: FAIL
[bottom: 1\\31 ]
expected: FAIL
[bottom: +/**/1]
expected: FAIL
[bottom: #00001]
expected: FAIL
[top: url(1)]
expected: FAIL
[bottom: #001]
expected: FAIL
[top: +1\\31 .5]
expected: FAIL
[top: -1a]
expected: FAIL
[top: -1A]
expected: FAIL
[bottom: url(1)]
expected: FAIL
[top: a]
expected: FAIL
[top: A]
expected: FAIL
[top: #000001]
expected: FAIL
[top: 1]
expected: FAIL
[top: 1\\31 .5]
expected: FAIL
[bottom: a]
expected: FAIL
[bottom: 1]
expected: FAIL
[bottom: +1]
expected: FAIL
[bottom: #000001]
expected: FAIL
[bottom: +a]
expected: FAIL
[bottom: +A]
expected: FAIL
[top: 1.5]
expected: FAIL
[top: +A]
expected: FAIL
[top: +a]
expected: FAIL
[top: +1]
expected: FAIL
[top: -1.5]
expected: FAIL
[top: -1\\31 .5]
expected: FAIL
[top: +1a]
expected: FAIL
[top: +1A]
expected: FAIL
[top: @1a]
expected: FAIL
[bottom: \\31 .5]
expected: FAIL
[top: "a"]
expected: FAIL
[top: #01]
expected: FAIL
[bottom: +1.5]
expected: FAIL
[bottom: -A]
expected: FAIL
[bottom: -a]
expected: FAIL
[bottom: -1\\31 ]
expected: FAIL
[top: #0001]
expected: FAIL
[bottom: -1]
expected: FAIL
[top: -\\31 ]
expected: FAIL
[top: -A]
expected: FAIL
[top: -a]
expected: FAIL
[top: -1]
expected: FAIL
[top: -1\\31 ]
expected: FAIL

View file

@ -1,283 +0,0 @@
[quirks.html]
[top: -\\31 .5]
expected: FAIL
[bottom: -1A]
expected: FAIL
[bottom: -1a]
expected: FAIL
[top: @1]
expected: FAIL
[top: "1a"]
expected: FAIL
[top: @a]
expected: FAIL
[bottom: "1"]
expected: FAIL
[bottom: -/**/1]
expected: FAIL
[top: +/**/1]
expected: FAIL
[bottom: @1a]
expected: FAIL
[top: 1\\31 ]
expected: FAIL
[top: url('1')]
expected: FAIL
[bottom: -\\31 ]
expected: FAIL
[top: calc(1)]
expected: FAIL
[top: \\31 ]
expected: FAIL
[bottom: +1\\31 ]
expected: FAIL
[bottom: 1\\31 .5]
expected: FAIL
[bottom: #0001]
expected: FAIL
[top: calc(2 * 2px)]
expected: FAIL
[bottom: 1a]
expected: FAIL
[bottom: A]
expected: FAIL
[bottom: #01]
expected: FAIL
[top: +\\31 .5]
expected: FAIL
[bottom: #1]
expected: FAIL
[top: -/**/1]
expected: FAIL
[bottom: +\\31 .5]
expected: FAIL
[bottom: \\31 ]
expected: FAIL
[bottom: calc(1)]
expected: FAIL
[top: #001]
expected: FAIL
[top: +\\31 ]
expected: FAIL
[bottom: +\\31 ]
expected: FAIL
[top: +1.5]
expected: FAIL
[top: +1\\31 ]
expected: FAIL
[bottom: @a]
expected: FAIL
[bottom: @1]
expected: FAIL
[top: #1]
expected: FAIL
[top: 1a]
expected: FAIL
[bottom: +1a]
expected: FAIL
[bottom: +1A]
expected: FAIL
[bottom: "a"]
expected: FAIL
[top: #00001]
expected: FAIL
[bottom: -1\\31 .5]
expected: FAIL
[top: "1"]
expected: FAIL
[bottom: 1.5]
expected: FAIL
[bottom: -\\31 .5]
expected: FAIL
[bottom: url('1')]
expected: FAIL
[bottom: -1.5]
expected: FAIL
[top: \\31 .5]
expected: FAIL
[bottom: "1a"]
expected: FAIL
[bottom: calc(2 * 2px)]
expected: FAIL
[bottom: +1\\31 .5]
expected: FAIL
[bottom: 1\\31 ]
expected: FAIL
[bottom: +/**/1]
expected: FAIL
[bottom: #00001]
expected: FAIL
[top: url(1)]
expected: FAIL
[bottom: #001]
expected: FAIL
[top: +1\\31 .5]
expected: FAIL
[top: -1a]
expected: FAIL
[top: -1A]
expected: FAIL
[bottom: url(1)]
expected: FAIL
[top: a]
expected: FAIL
[top: A]
expected: FAIL
[top: #000001]
expected: FAIL
[top: 1]
expected: FAIL
[top: 1\\31 .5]
expected: FAIL
[bottom: a]
expected: FAIL
[bottom: 1]
expected: FAIL
[bottom: +1]
expected: FAIL
[bottom: #000001]
expected: FAIL
[bottom: +a]
expected: FAIL
[bottom: +A]
expected: FAIL
[top: 1.5]
expected: FAIL
[top: +A]
expected: FAIL
[top: +a]
expected: FAIL
[top: +1]
expected: FAIL
[top: -1.5]
expected: FAIL
[top: -1\\31 .5]
expected: FAIL
[top: +1a]
expected: FAIL
[top: +1A]
expected: FAIL
[top: @1a]
expected: FAIL
[bottom: \\31 .5]
expected: FAIL
[top: "a"]
expected: FAIL
[top: #01]
expected: FAIL
[bottom: +1.5]
expected: FAIL
[bottom: -A]
expected: FAIL
[bottom: -a]
expected: FAIL
[bottom: -1\\31 ]
expected: FAIL
[top: #0001]
expected: FAIL
[bottom: -1]
expected: FAIL
[top: -\\31 ]
expected: FAIL
[top: -A]
expected: FAIL
[top: -a]
expected: FAIL
[top: -1]
expected: FAIL
[top: -1\\31 ]
expected: FAIL

View file

@ -0,0 +1,4 @@
[external-import-stylesheet.html]
[Child css from external stylesheet.]
expected: FAIL

View file

@ -0,0 +1,4 @@
[internal-import-stylesheet.html]
[Child css from internal stylesheet.]
expected: FAIL

View file

@ -0,0 +1,5 @@
[processing-instruction.html]
expected: ERROR
[Child css via a ProcessingInstruction.]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[external-import-stylesheet.html]
expected: ERROR
[Font from imported stylesheet (external).]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[external-stylesheet.html]
[Font from external stylesheet.]
expected: FAIL

View file

@ -0,0 +1,5 @@
[internal-import-stylesheet.html]
expected: ERROR
[Font from imported stylesheet (internal).]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[internal-stylesheet.html]
[Font from internal stylesheet.]
expected: FAIL

View file

@ -0,0 +1,5 @@
[processing-instruction.html]
expected: ERROR
[Font from external stylesheet (from ProcessingInstruction).]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[external-import-stylesheet.html]
expected: ERROR
[Image from imported stylesheet (external).]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[external-stylesheet.html]
expected: ERROR
[Image from external stylesheet.]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[inline-style.html]
expected: ERROR
[Image from inline styles.]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[internal-import-stylesheet.html]
expected: ERROR
[Image from imported stylesheet (internal).]
expected: TIMEOUT

View file

@ -0,0 +1,5 @@
[internal-stylesheet.html]
expected: ERROR
[Image from internal stylesheet.]
expected: TIMEOUT

View file

@ -0,0 +1,4 @@
[presentation-attribute.html]
[Image from presentation attributes.]
expected: FAIL

View file

@ -0,0 +1,5 @@
[processing-instruction.html]
expected: ERROR
[Image from external stylesheet (from ProcessingInstruction).]
expected: TIMEOUT

View file

@ -0,0 +1,8 @@
[external-stylesheet.html]
expected: ERROR
[Test styling SVG from external style fill]
expected: TIMEOUT
[Test styling SVG from external style stroke]
expected: NOTRUN

View file

@ -0,0 +1,8 @@
[inline-style.html]
expected: ERROR
[Styling SVG from inline styles stroke]
expected: NOTRUN
[Styling SVG from inline styles fill]
expected: TIMEOUT

View file

@ -0,0 +1,8 @@
[internal-stylesheet.html]
expected: ERROR
[Styling SVG from internal styles stroke]
expected: NOTRUN
[Styling SVG from internal styles fill]
expected: TIMEOUT

View file

@ -0,0 +1,8 @@
[presentation-attribute.html]
expected: ERROR
[Styling SVG from presentation attributes fill]
expected: TIMEOUT
[Styling SVG from presentation attributes stroke]
expected: NOTRUN

View file

@ -0,0 +1,8 @@
[processing-instruction.html]
expected: ERROR
[Styling SVG from ProcessingInstruction stroke]
expected: NOTRUN
[Styling SVG from ProcessingInstruction fill]
expected: TIMEOUT

View file

@ -2,15 +2,18 @@
[request.formData() with input: &&&a=b&&&&c=d&]
expected: FAIL
[request.formData() with input: _charset_=windows-1252&test=%C2x]
expected: FAIL
[request.formData() with input: a&b&c]
expected: FAIL
[request.formData() with input: a=b&c=d]
expected: FAIL
[response.formData() with input: a&b&c]
expected: FAIL
[response.formData() with input: _charset_=windows-1252&test=%C2x]
expected: FAIL
[response.formData() with input: a=b&c=d]
expected: FAIL
[urlencoded-parser.any.worker.html]
[request.formData() with input: a&b&c]
@ -22,6 +25,12 @@
[response.formData() with input: a&b&c]
expected: FAIL
[response.formData() with input: &&&a=b&&&&c=d&]
[response.formData() with input: a=b&c=d&]
expected: FAIL
[request.formData() with input: a=b&c=d]
expected: FAIL
[response.formData() with input: _charset_=windows-1252&test=%C2x]
expected: FAIL

View file

@ -20,6 +20,9 @@
[Changing the buffer]
expected: FAIL
[Stray argument]
expected: FAIL
[compile.any.html]
[Invalid arguments]
@ -43,3 +46,6 @@
[Changing the buffer]
expected: FAIL
[Stray argument]
expected: FAIL

View file

@ -68,6 +68,12 @@
[getter order for imports object: Module argument]
expected: FAIL
[stray argument: BufferSource argument]
expected: FAIL
[stray argument: Module argument]
expected: FAIL
[instantiate.any.worker.html]
[Invalid arguments]
@ -139,3 +145,9 @@
[getter order for imports object: Module argument]
expected: FAIL
[stray argument: BufferSource argument]
expected: FAIL
[stray argument: Module argument]
expected: FAIL

View file

@ -92,6 +92,9 @@
[Explicit value "3" for type f32]
expected: FAIL
[Stray argument]
expected: FAIL
[constructor.any.worker.html]
[Explicit value object with toString for type f32]
@ -187,3 +190,6 @@
[Explicit value "3" for type f32]
expected: FAIL
[Stray argument]
expected: FAIL

View file

@ -0,0 +1,207 @@
[value-get-set.any.worker.html]
[Mutable f64 (true on prototype)]
expected: FAIL
[Mutable i32 (true on prototype)]
expected: FAIL
[Immutable f32 (missing)]
expected: FAIL
[Immutable i32 (empty string)]
expected: FAIL
[i64 with default]
expected: FAIL
[Mutable f64 (one)]
expected: FAIL
[Mutable f32 (string)]
expected: FAIL
[Mutable i32 (true)]
expected: FAIL
[Mutable i32 (string)]
expected: FAIL
[Immutable f32 (false)]
expected: FAIL
[Immutable f64 (empty string)]
expected: FAIL
[Immutable i32 (undefined)]
expected: FAIL
[Mutable f32 (one)]
expected: FAIL
[Calling setter without argument]
expected: FAIL
[Immutable i32 (zero)]
expected: FAIL
[Immutable f64 (undefined)]
expected: FAIL
[Mutable i32 (one)]
expected: FAIL
[Immutable f32 (zero)]
expected: FAIL
[Immutable i32 (null)]
expected: FAIL
[Immutable f64 (false)]
expected: FAIL
[Immutable f64 (missing)]
expected: FAIL
[Immutable f64 (null)]
expected: FAIL
[Mutable f32 (true on prototype)]
expected: FAIL
[Immutable i32 (false)]
expected: FAIL
[Immutable i32 (missing)]
expected: FAIL
[Mutable f32 (true)]
expected: FAIL
[Stray argument]
expected: FAIL
[Immutable f32 (null)]
expected: FAIL
[Branding]
expected: FAIL
[Immutable f64 (zero)]
expected: FAIL
[Mutable f64 (true)]
expected: FAIL
[Mutable f64 (string)]
expected: FAIL
[Immutable f32 (empty string)]
expected: FAIL
[Immutable f32 (undefined)]
expected: FAIL
[value-get-set.any.html]
[Mutable f64 (true on prototype)]
expected: FAIL
[Mutable i32 (true on prototype)]
expected: FAIL
[Immutable f32 (missing)]
expected: FAIL
[Immutable i32 (empty string)]
expected: FAIL
[i64 with default]
expected: FAIL
[Mutable f64 (one)]
expected: FAIL
[Mutable f32 (string)]
expected: FAIL
[Mutable i32 (true)]
expected: FAIL
[Mutable i32 (string)]
expected: FAIL
[Immutable f32 (false)]
expected: FAIL
[Immutable f64 (empty string)]
expected: FAIL
[Immutable i32 (undefined)]
expected: FAIL
[Mutable f32 (one)]
expected: FAIL
[Calling setter without argument]
expected: FAIL
[Immutable i32 (zero)]
expected: FAIL
[Immutable f64 (undefined)]
expected: FAIL
[Mutable i32 (one)]
expected: FAIL
[Immutable f32 (zero)]
expected: FAIL
[Immutable i32 (null)]
expected: FAIL
[Immutable f64 (false)]
expected: FAIL
[Immutable f64 (missing)]
expected: FAIL
[Immutable f64 (null)]
expected: FAIL
[Mutable f32 (true on prototype)]
expected: FAIL
[Immutable i32 (false)]
expected: FAIL
[Immutable i32 (missing)]
expected: FAIL
[Mutable f32 (true)]
expected: FAIL
[Stray argument]
expected: FAIL
[Immutable f32 (null)]
expected: FAIL
[Branding]
expected: FAIL
[Immutable f64 (zero)]
expected: FAIL
[Mutable f64 (true)]
expected: FAIL
[Mutable f64 (string)]
expected: FAIL
[Immutable f32 (empty string)]
expected: FAIL
[Immutable f32 (undefined)]
expected: FAIL

View file

@ -2,8 +2,14 @@
[Branding]
expected: FAIL
[Stray argument]
expected: FAIL
[valueOf.any.html]
[Branding]
expected: FAIL
[Stray argument]
expected: FAIL

View file

@ -38,6 +38,9 @@
[Basic]
expected: FAIL
[Stray argument]
expected: FAIL
[grow.any.worker.html]
[Out-of-range argument: 68719476736]
@ -79,3 +82,6 @@
[Basic]
expected: FAIL
[Stray argument]
expected: FAIL

View file

@ -1,2 +0,0 @@
[transition_calc_implicit.html]
expected: TIMEOUT

View file

@ -0,0 +1,2 @@
[unitless-length.html]
expected: TIMEOUT

View file

@ -0,0 +1,67 @@
<!DOCTYPE HTML>
<html>
<head>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
</head>
<body>
<script>
var tests = [
// Make sure that csp works properly in normal situations
{ "csp": "", "expected": true, "name": "Should load image without any CSP" },
{ "csp": "img-src 'none';", "expected": false, "name": "Should not load image with 'none' CSP" },
// Ensure ASCII whitespaces are properly parsed
// ASCII whitespace is U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, or U+0020 SPACE.
// between directive name and value
{ "csp": "img-src\u0009'none';", "expected": false, "name": "U+0009 TAB should be properly parsed between directive name and value" },
{ "csp": "img-src\u000C'none';", "expected": false, "name": "U+000C FF should be properly parsed between directive name and value" },
{ "csp": "img-src\u000A'none';", "expected": false, "name": "U+000A LF should be properly parsed between directive name and value" },
{ "csp": "img-src\u000D'none';", "expected": false, "name": "U+000D CR should be properly parsed between directive name and value" },
{ "csp": "img-src\u0020'none';", "expected": false, "name": "U+0020 SPACE should be properly parsed between directive name and value" },
// inside directive value
{ "csp": "img-src http://example.com\u0009http://example2.com;", "expected": false, "name": "U+0009 TAB should be properly parsed inside directive value" },
{ "csp": "img-src http://example.com\u000Chttp://example2.com;", "expected": false, "name": "U+000C FF should be properly parsed inside directive value" },
{ "csp": "img-src http://example.com\u000Ahttp://example2.com;", "expected": false, "name": "U+000A LF should be properly parsed inside directive value" },
{ "csp": "img-src http://example.com\u000Dhttp://example2.com;", "expected": false, "name": "U+000D CR should be properly parsed inside directive value" },
{ "csp": "img-src http://example.com\u0020http://example2.com;", "expected": false, "name": "U+0020 SPACE should be properly parsed inside directive value" },
// Ensure nbsp (U+00A0) is not considered a valid whitespace
// https://github.com/webcompat/web-bugs/issues/18902 has more details about why this particularly relevant
{ "csp": "img-src\u00A0'none';", "expected": true, "name": "U+00A0 NBSP should not be parsed between directive name and value" },
{ "csp": "img-src http://example.com\u00A0http://example2.com;", "expected": true, "name": "U+00A0 NBSP should not be parsed inside directive value" },
];
tests.forEach(test => {
async_test(t => {
var url = "support/load_img_and_post_result_meta.sub.html?csp=" + encodeURIComponent(test.csp);
test_image_loads_as_expected(test, t, url);
}, test.name + " - meta tag");
// We can't test csp delivered in an HTTP header if we're testing CR/LF characters
if (test.csp.indexOf("\u000A") == -1 && test.csp.indexOf("\u000D") == -1) {
async_test(t => {
var url = "support/load_img_and_post_result_meta.sub.html?csp=" + encodeURIComponent(test.csp);
test_image_loads_as_expected(test, t, url);
}, test.name + " - HTTP header");
}
});
function test_image_loads_as_expected(test, t, url) {
var i = document.createElement('iframe');
i.src = url;
window.addEventListener('message', t.step_func(function(e) {
if (e.source != i.contentWindow) return;
if (test.expected) {
assert_equals(e.data, "img loaded");
} else {
assert_equals(e.data, "img not loaded");
}
t.done();
}));
document.body.appendChild(i);
}
</script>
</body>
</html>

View file

@ -0,0 +1,11 @@
<html>
<body>
<script>
var img = document.createElement("img");
img.src = "/content-security-policy/support/pass.png";
img.onload = function() { parent.postMessage('img loaded', '*'); }
img.onerror = function() { parent.postMessage('img not loaded', '*'); }
document.body.appendChild(img);
</script>
</body>
</html>

View file

@ -0,0 +1 @@
Content-Security-Policy: {{GET[csp]}}

View file

@ -0,0 +1,14 @@
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="{{GET[csp]}}">
</head>
<body>
<script>
var img = document.createElement("img");
img.src = "/content-security-policy/support/pass.png";
img.onload = function() { parent.postMessage('img loaded', '*'); }
img.onerror = function() { parent.postMessage('img not loaded', '*'); }
document.body.appendChild(img);
</script>
</body>
</html>

View file

@ -78,11 +78,139 @@
assert_equals(event.animationName, "sample");
}, "animationName set to 'sample'");
test(function() {
var event = new AnimationEvent("test", {animationName: undefined});
assert_equals(event.animationName, "");
}, "animationName set to undefined");
test(function() {
var event = new AnimationEvent("test", {animationName: null});
assert_equals(event.animationName, "null");
}, "animationName set to null");
test(function() {
var event = new AnimationEvent("test", {animationName: false});
assert_equals(event.animationName, "false");
}, "animationName set to false");
test(function() {
var event = new AnimationEvent("test", {animationName: true});
assert_equals(event.animationName, "true");
}, "animationName set to true");
test(function() {
var event = new AnimationEvent("test", {animationName: 0.5});
assert_equals(event.animationName, "0.5");
}, "animationName set to a number");
test(function() {
var event = new AnimationEvent("test", {animationName: []});
assert_equals(event.animationName, "");
}, "animationName set to []");
test(function() {
var event = new AnimationEvent("test", {animationName: [1, 2, 3]});
assert_equals(event.animationName, "1,2,3");
}, "animationName set to [1, 2, 3]");
test(function() {
var event = new AnimationEvent("test", {animationName: {sample: 0.5}});
assert_equals(event.animationName, "[object Object]");
}, "animationName set to an object");
test(function() {
var event = new AnimationEvent("test",
{animationName: {valueOf: function () { return 'sample'; }}});
assert_equals(event.animationName, "[object Object]");
}, "animationName set to an object with a valueOf function");
test(function() {
var event = new AnimationEvent("test", {elapsedTime: 0.5});
assert_equals(event.elapsedTime, 0.5);
}, "elapsedTime set to 0.5");
test(function() {
var event = new AnimationEvent("test", {elapsedTime: -0.5});
assert_equals(event.elapsedTime, -0.5);
}, "elapsedTime set to -0.5");
test(function() {
var event = new AnimationEvent("test", {elapsedTime: undefined});
assert_equals(event.elapsedTime, 0);
}, "elapsedTime set to undefined");
test(function() {
var event = new AnimationEvent("test", {elapsedTime: null});
assert_equals(event.elapsedTime, 0);
}, "elapsedTime set to null");
test(function() {
var event = new AnimationEvent("test", {elapsedTime: false});
assert_equals(event.elapsedTime, 0);
}, "elapsedTime set to false");
test(function() {
var event = new AnimationEvent("test", {elapsedTime: true});
assert_equals(event.elapsedTime, 1);
}, "elapsedTime set to true");
test(function() {
var event = new AnimationEvent("test", {elapsedTime: ""});
assert_equals(event.elapsedTime, 0);
}, "elapsedTime set to ''");
test(function() {
var event = new AnimationEvent("test", {elapsedTime: []});
assert_equals(event.elapsedTime, 0);
}, "elapsedTime set to []");
test(function() {
var event = new AnimationEvent("test", {elapsedTime: [0.5]});
assert_equals(event.elapsedTime, 0.5);
}, "elapsedTime set to [0.5]");
test(function() {
var event = new AnimationEvent(
"test", {elapsedTime: { valueOf: function() { return 0.5; }}});
assert_equals(event.elapsedTime, 0.5);
}, "elapsedTime set to an object with a valueOf function");
test(function() {
assert_throws(new TypeError(), function() {
new AnimationEvent("test", {elapsedTime: NaN});
}, 'elapsedTime cannot be NaN so was expecting a TypeError');
}, "elapsedTime cannot be set to NaN");
test(function() {
assert_throws(new TypeError(), function() {
new AnimationEvent("test", {elapsedTime: Infinity});
}, 'elapsedTime cannot be Infinity so was expecting a TypeError');
}, "elapsedTime cannot be set to Infinity");
test(function() {
assert_throws(new TypeError(), function() {
new AnimationEvent("test", {elapsedTime: -Infinity});
}, 'elapsedTime cannot be -Infinity so was expecting a TypeError');
}, "elapsedTime cannot be set to -Infinity");
test(function() {
assert_throws(new TypeError(), function() {
new AnimationEvent("test", {elapsedTime: "sample"});
}, 'elapsedTime cannot be a string so was expecting a TypeError');
}, "elapsedTime cannot be set to 'sample'");
test(function() {
assert_throws(new TypeError(), function() {
new AnimationEvent("test", {elapsedTime: [0.5, 1.0]});
}, 'elapsedTime cannot be a multi-element array so was expecting a TypeError');
}, "elapsedTime cannot be set to [0.5, 1.0]");
test(function() {
assert_throws(new TypeError(), function() {
new AnimationEvent("test", {elapsedTime: { sample: 0.5}});
}, 'elapsedTime cannot be an object so was expecting a TypeError');
}, "elapsedTime cannot be set to an object");
test(function() {
var eventInit = {animationName: "sample", elapsedTime: 0.5};
var event = new AnimationEvent("test", eventInit);

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<title>Historical CSS Animation features must be removed</title>
<link rel="help" href="http://www.w3.org/TR/css3-animations">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
function isInterfaceNuked(name) {
test(function() {
assert_equals(window[name], undefined)
}, "Historical CSS features must be removed: " + name)
}
var nukedInterfaces = [
"WebKitAnimationEvent", // Replaced by unprefixed AnimationEvent
];
nukedInterfaces.forEach(isInterfaceNuked);
</script>

View file

@ -31,5 +31,4 @@
document.documentElement.classList.remove("reftest-wait");
});
});
inner.style.backgroundClip = "border-box";
</script>

View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Containment Test: Size containment on fieldset</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-contain-1/#containment-size">
<link rel="match" href="reference/contain-size-fieldset-001-ref.html">
<meta name=assert content="Size containment does apply to fieldsets, thus their size is the same than if they don't have contents.">
<style>
fieldset {
contain: size;
display: inline-block;
color: transparent;
border: none;
padding: 0;
}
</style>
<p>This test passes if it has the same output as the reference. You see the word "before", a small space, and then the word "after".</p>
before<fieldset><legend>legend</legend></fieldset>after

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Containment Test: Reference file</title>
<link rel="author" title="Manuel Rego Casasnovas" href="mailto:rego@igalia.com">
<style>
fieldset {
display: inline-block;
color: transparent;
border: none;
padding: 0;
}
</style>
<p>This test passes if it has the same output as the reference. You see the word "before", a small space, and then the word "after".</p>
before<fieldset></fieldset>after

View file

@ -0,0 +1,62 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: Changing Self-Alignment properties to interfere in Baseline Alignment</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-align">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#self-alignment">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-self-property">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#typedef-baseline-position">
<meta name="assert" content="Changing the 'align-self' property's value of a grid item from 'baseline' will exclude such item from its baseline context, which implies recomputing all the baseline offsets and aligning the items left in such context.">
<style>
#container {
position: relative;
display: inline-grid;
grid: 100px / 50px 50px 50px;
background: grey;
align-items: baseline;
}
#item1 {
height: 20px;
background: blue;
}
#item2 {
height: 50px;
background: green;
}
#item3 {
height: 30px;
background: red;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<script src="support/style-change.js"></script>
<script>
function runTest() {
let before = {
item1: {"data-offset-y": 30 },
item2: {"data-offset-y": 0 },
item3: {"data-offset-y": 20 }
};
let after = {
item1: {"data-offset-y": 10 },
item2: {"data-offset-y": 50 },
item3: {"data-offset-y": 0 }
};
evaluateStyleChangeMultiple("before", before);
item2.style.alignSelf = "end";
evaluateStyleChangeMultiple("after", after);
done();
}
</script>
<body onload="runTest()">
<div id="container">
<div id="item1" data-expected-width="50" data-expected-height="20" data-offset-x="0"></div>
<div id="item2" data-expected-width="50" data-expected-height="50" data-offset-x="50"></div>
<div id="item3" data-expected-width="50" data-expected-height="30" data-offset-x="100"></div>
</div>
<div id="log"></div>
</body>

View file

@ -0,0 +1,63 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: Changing Self-Alignment properties to interfere in Baseline Alignment</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-align">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#self-alignment">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-self-property">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#typedef-baseline-position">
<meta name="assert" content="Changing the 'align-self' property's value of a grid item to 'baseline' will include such item into a baseline context, which implies recomputing all the baseline offsets and aligning the items in such context.">
<style>
#container {
position: relative;
display: inline-grid;
grid: 100px / 50px 50px 50px;
background: grey;
align-items: baseline;
}
#item1 {
height: 20px;
background: blue;
}
#item2 {
height: 50px;
background: green;
align-self: center;
}
#item3 {
height: 30px;
background: red;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<script src="support/style-change.js"></script>
<script>
function runTest() {
let before = {
item1: {"data-offset-y": 10 },
item2: {"data-offset-y": 25 },
item3: {"data-offset-y": 0 }
};
let after = {
item1: {"data-offset-y": 30 },
item2: {"data-offset-y": 0 },
item3: {"data-offset-y": 20 }
};
evaluateStyleChangeMultiple("before", before);
item2.style.alignSelf = "baseline";
evaluateStyleChangeMultiple("after", after);
done();
}
</script>
<body onload="runTest()">
<div id="container">
<div id="item1" data-expected-width="50" data-expected-height="20" data-offset-x="0"></div>
<div id="item2" data-expected-width="50" data-expected-height="50" data-offset-x="50"></div>
<div id="item3" data-expected-width="50" data-expected-height="30" data-offset-x="100"></div>
</div>
<div id="log"></div>
</body>

View file

@ -0,0 +1,63 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: Changing the Self-Alignment properties to interfere in Baseline Alignment</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-align">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#self-alignment">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-self-property">
<link rel="help" href="https://drafts.csswg.org/css-align/#typedef-baseline-position">
<meta name="assert" content="Changing the justify-self' property's value of a grid item from 'baseline' will exclude such item from its baseline context, which implies recomputing all the baseline offsets and aligning the items left in such context.">
<style>
#container {
position: relative;
display: inline-grid;
grid: 50px 50px 50px / 100px;
background: grey;
justify-items: baseline;
}
#container > div { writing-mode: vertical-rl; }
#item1 {
width: 20px;
background: blue;
}
#item2 {
width: 50px;
background: green;
}
#item3 {
width: 30px;
background: red;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<script src="support/style-change.js"></script>
<script>
function runTest() {
let before = {
item1: {"data-offset-x": 30 },
item2: {"data-offset-x": 0 },
item3: {"data-offset-x": 20 }
};
let after = {
item1: {"data-offset-x": 10 },
item2: {"data-offset-x": 50 },
item3: {"data-offset-x": 0 }
};
evaluateStyleChangeMultiple("before", before);
item2.style.justifySelf = "end";
evaluateStyleChangeMultiple("after", after);
done();
}
</script>
<body onload="runTest()">
<div id="container">
<div id="item1" data-expected-width="20" data-expected-height="50" data-offset-y="0"></div>
<div id="item2" data-expected-width="50" data-expected-height="50" data-offset-y="50"></div>
<div id="item3" data-expected-width="30" data-expected-height="50" data-offset-y="100"></div>
</div>
<div id="log"></div>
</body>

View file

@ -0,0 +1,64 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: Changing the Self-Alignment properties to interfere in Baseline Alignment</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-align">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#self-alignment">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-self-property">
<link rel="help" href="https://drafts.csswg.org/css-align/#typedef-baseline-position">
<meta name="assert" content="Changing the 'justify-self' property's value of a grid item to 'baseline' will include such item into a baseline context, which implies recomputing all the baseline offsets and aligning the items in such context.">
<style>
#container {
position: relative;
display: inline-grid;
grid: 50px 50px 50px / 100px;
background: grey;
justify-items: baseline;
}
#container > div { writing-mode: vertical-rl; }
#item1 {
width: 20px;
background: blue;
}
#item2 {
width: 50px;
background: green;
justify-self: center;
}
#item3 {
width: 30px;
background: red;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<script src="support/style-change.js"></script>
<script>
function runTest() {
let before = {
item1: {"data-offset-x": 10 },
item2: {"data-offset-x": 25 },
item3: {"data-offset-x": 0 }
};
let after = {
item1: {"data-offset-x": 30 },
item2: {"data-offset-x": 0 },
item3: {"data-offset-x": 20 }
};
evaluateStyleChangeMultiple("before", before);
item2.style.justifySelf = "baseline";
evaluateStyleChangeMultiple("after", after);
done();
}
</script>
<body onload="runTest()">
<div id="container">
<div id="item1" data-expected-width="20" data-expected-height="50" data-offset-y="0"></div>
<div id="item2" data-expected-width="50" data-expected-height="50" data-offset-y="50"></div>
<div id="item3" data-expected-width="30" data-expected-height="50" data-offset-y="100"></div>
</div>
<div id="log"></div>
</body>

View file

@ -0,0 +1,63 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: Changing Self-Alignment properties to interfere in Baseline Alignment</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-align">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#self-alignment">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-self-property">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#typedef-baseline-position">
<meta name="assert" content="Changing the 'align-self' property's value of a grid item from 'baseline' will exclude such item from its baseline context, which implies recomputing all the baseline offsets and aligning the items left in such context.">
<style>
#container {
position: relative;
display: inline-grid;
grid: 100px / 50px 50px 50px;
background: grey;
align-items: baseline;
font-family: Ahem;
}
#item1 {
font-size: 20px;
background: blue;
}
#item2 {
font-size: 40px;
background: green;
}
#item3 {
font-size: 30px;
background: red;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<script src="support/style-change.js"></script>
<script>
function runTest() {
let before = {
item1: {"data-offset-y": 16 },
item2: {"data-offset-y": 0 },
item3: {"data-offset-y": 8 }
}
let after = {
item1: {"data-offset-y": 8 },
item2: {"data-offset-y": 60 },
item3: {"data-offset-y": 0 }
}
evaluateStyleChangeMultiple("before", before);
item2.style.alignSelf = "end";
evaluateStyleChangeMultiple("after", after);
done();
}
</script>
<body onload="runTest()">
<div id="container">
<div id="item1" data-expected-width="50" data-expected-height="20" data-offset-x="0">É</div>
<div id="item2" data-expected-width="50" data-expected-height="40" data-offset-x="50">É</div>
<div id="item3" data-expected-width="50" data-expected-height="30" data-offset-x="100">É</div>
</div>
<div id="log"></div>
</body>

View file

@ -0,0 +1,64 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: Changing Self-Alignment properties to interfere in Baseline Alignment</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-align">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#self-alignment">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#align-self-property">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#typedef-baseline-position">
<meta name="assert" content="Changing the 'align-self' property's value of a grid item to 'baseline' will include such item into a baseline context, which implies recomputing all the baseline offsets and aligning the items in such context.">
<style>
#container {
position: relative;
display: inline-grid;
grid: 100px / 50px 50px 50px;
background: grey;
align-items: baseline;
font-family: Ahem;
}
#item1 {
font-size: 20px;
background: blue;
}
#item2 {
font-size: 40px;
background: green;
align-self: center;
}
#item3 {
font-size: 30px;
background: red;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<script src="support/style-change.js"></script>
<script>
function runTest() {
let before = {
item1: {"data-offset-y": 8 },
item2: {"data-offset-y": 30 },
item3: {"data-offset-y": 0 }
}
let after = {
item1: {"data-offset-y": 16 },
item2: {"data-offset-y": 0 },
item3: {"data-offset-y": 8 }
}
evaluateStyleChangeMultiple("before", before);
item2.style.alignSelf = "baseline";
evaluateStyleChangeMultiple("after", after);
done();
}
</script>
<body onload="runTest()">
<div id="container">
<div id="item1" data-expected-width="50" data-expected-height="20" data-offset-x="0">É</div>
<div id="item2" data-expected-width="50" data-expected-height="40" data-offset-x="50">É</div>
<div id="item3" data-expected-width="50" data-expected-height="30" data-offset-x="100">É</div>
</div>
<div id="log"></div>
</body>

View file

@ -0,0 +1,65 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: Changing the value of Self-Alignment properties</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-align">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#self-alignment">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-self-property">
<link rel="help" href="https://drafts.csswg.org/css-align/#typedef-baseline-position">
<meta name="assert" content="Changing the 'align-self' property's value of a grid item from 'baseline' will exclude such item from its baseline context, which implies recomputing all the baseline offsets and aligning the items left in such context.">
<style>
#container {
position: relative;
display: inline-grid;
grid: 50px 50px 50px / 100px;
background: grey;
justify-items: baseline;
font-family: Ahem;
text-orientation: sideways;
}
#container > div { writing-mode: vertical-lr; }
#item1 {
font-size: 20px;
background: blue;
}
#item2 {
font-size: 40px;
background: green;
}
#item3 {
font-size: 30px;
background: red;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<script src="support/style-change.js"></script>
<script>
function runTest() {
let before = {
item1: {"data-offset-x": 4 },
item2: {"data-offset-x": 0 },
item3: {"data-offset-x": 2 }
}
let after = {
item1: {"data-offset-x": 2 },
item2: {"data-offset-x": 60 },
item3: {"data-offset-x": 0 }
}
evaluateStyleChangeMultiple("before", before);
item2.style.justifySelf = "end";
evaluateStyleChangeMultiple("after", after);
done();
}
</script>
<body onload="runTest()">
<div id="container">
<div id="item1" data-expected-width="20" data-expected-height="50" data-offset-y="0">É</div>
<div id="item2" data-expected-width="40" data-expected-height="50" data-offset-y="50">É</div>
<div id="item3" data-expected-width="30" data-expected-height="50" data-offset-y="100">É</div>
</div>
<div id="log"></div>
</body>

View file

@ -0,0 +1,65 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: Changing the Self-Alignment properties to interfere in Baseline Alignment</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#grid-align">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#self-alignment">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#justify-self-property">
<link rel="help" href="https://drafts.csswg.org/css-align/#typedef-baseline-position">
<meta name="assert" content="Changing the 'justify-self' property's value of a grid item to 'baseline' will include such item into a baseline context, which implies recomputing all the baseline offsets and aligning the items in such context.">
<style>
#container {
position: relative;
display: inline-grid;
grid: 50px 50px 50px / 100px;
background: grey;
justify-items: baseline;
font-family: Ahem;
}
#container > div { writing-mode: vertical-lr; }
#item1 {
font-size: 20px;
background: blue;
}
#item2 {
font-size: 40px;
background: green;
justify-self: center;
}
#item3 {
font-size: 30px;
background: red;
}
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<script src="support/style-change.js"></script>
<script>
function runTest() {
let before = {
item1: {"data-offset-x": 5 },
item2: {"data-offset-x": 30 },
item3: {"data-offset-x": 0 }
};
let after = {
item1: {"data-offset-x": 10 },
item2: {"data-offset-x": 0 },
item3: {"data-offset-x": 5 }
};
evaluateStyleChangeMultiple("before", before);
item2.style.justifySelf = "baseline";
evaluateStyleChangeMultiple("after", after);
done();
}
</script>
<body onload="runTest()">
<div id="container">
<div id="item1" data-expected-width="20" data-expected-height="50" data-offset-y="0">É</div>
<div id="item2" data-expected-width="40" data-expected-height="50" data-offset-y="50">É</div>
<div id="item3" data-expected-width="30" data-expected-height="50" data-offset-y="100">É</div>
</div>
<div id="log"></div>
</body>

View file

@ -0,0 +1,89 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Grid Layout Test: Self-Baseline alignment and sizing cyclic dependency</title>
<link rel="author" title="Javier Fernandez Garcia-Boente" href="mailto:jfernandez@igalia.com">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#alignment">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#column-align">
<link rel="help" href="https://drafts.csswg.org/css-grid-1/#row-align">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-align-items">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#propdef-justify-items">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#baseline-alignment">
<link rel="help" href="https://drafts.csswg.org/css-align-3/#valdef-justify-self-baseline">
<link rel="stylesheet" href="../../support/grid.css">
<link rel="stylesheet" href="../../support/alignment.css">
<meta name="assert" content="Items not participating in baseline may later participate if there is an extra pass of the track sizing algorithm.">
<!-- https://github.com/w3c/csswg-drafts/issues/3046 -->
<style>
.grid {
position: relative;
display: inline-grid;
background: grey;
text-orientation: sideways;
font-family: Ahem;
}
.row { grid: minmax(0px, 1fr) / 50px 50px 100px }
.column { grid: 50px 50px 100px / minmax(0px, 1fr); }
.item1 {
font-size: 30px;
background: blue;
}
.item2 {
font-size: 20px;
background: red;
}
.item3 {
font-size: 80px;
background: green;
}
.height50 { height: 50px; }
.relativeHeight { height: 50%; }
.relativeWidth { width: 50%; }
</style>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/check-layout-th.js"></script>
<body onload="checkLayout('.grid')">
<pre>flex rows - column-axis baseline - the blue orthogonal item didn't participate in the first iteration</pre>
<div class="grid row alignItemsBaseline">
<div class="item1 verticalLR" data-offset-x="0" data-offset-y="34" data-expected-width="50" data-expected-height="30">É</div>
<div class="item2" data-offset-x="50" data-offset-y="48" data-expected-width="50" data-expected-height="20">É</div>
<div class="item3" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="80">É</div>
</div>
<pre>flex row - column-axis baseline - the blue relative sized item didn't participate in the first iterarion</pre>
<div class="grid row alignItemsBaseline ">
<div class="item1 relativeHeight" data-offset-x="0" data-offset-y="40" data-expected-width="50" data-expected-height="40"></div>
<div class="item2" data-offset-x="50" data-offset-y="64" data-expected-width="50" data-expected-height="20">É</div>
<div class="item3 verticalLR" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="80">É</div>
</div>
<pre>flex row - both the blue relative sized and red orthogonal didn't participate in the first iteration</pre>
<div class="grid row alignItemsBaseline">
<div class="item1 relativeHeight" data-offset-x="0" data-offset-y="24" data-expected-width="50" data-expected-height="40"></div>
<div class="item2 verticalLR" data-offset-x="50" data-offset-y="44" data-expected-width="50" data-expected-height="20">É</div>
<div class="item3" data-offset-x="100" data-offset-y="0" data-expected-width="100" data-expected-height="80">É</div>
</div>
<pre>flex column - row-axis baseline - the blue orthogonal item didn't participate in the first iteration</pre>
<div class="grid column justifyItemsBaseline">
<div class="item1" data-offset-x="16" data-offset-y="0" data-expected-width="30" data-expected-height="50">É</div>
<div class="item2 verticalLR" data-offset-x="12" data-offset-y="50" data-expected-width="20" data-expected-height="50">É</div>
<div class="item3 verticalLR" data-offset-x="0" data-offset-y="100" data-expected-width="80" data-expected-height="100">É</div>
</div>
<pre>flex column - column-axis baseline - the blue relative sized item didn't participate in the first iterarion</pre>
<div class="grid column justifyItemsBaseline">
<div class="item1 relativeWidth height50" data-offset-x="16" data-offset-y="0" data-expected-width="40" data-expected-height="50"></div>
<div class="item2 verticalLR" data-offset-x="12" data-offset-y="50" data-expected-width="20" data-expected-height="50">É</div>
<div class="item3 verticalLR" data-offset-x="0" data-offset-y="100" data-expected-width="80" data-expected-height="100">É</div>
</div>
<pre>flex columns - both the blue relative sized and red orthogonal didn't participate in the first iteration</pre>
<div class="grid column justifyItemsBaseline">
<div class="item1 relativeWidth height50" data-offset-x="16" data-offset-y="0" data-expected-width="40" data-expected-height="50"></div>
<div class="item2" data-offset-x="16" data-offset-y="50" data-expected-width="20" data-expected-height="50">É</div>
<div class="item3 verticalLR" data-offset-x="0" data-offset-y="100" data-expected-width="80" data-expected-height="100">É</div>
</div>
</body>

View file

@ -3,3 +3,12 @@ function evaluateStyleChange(element, phase, expectedProperty, expectedResult) {
element.setAttribute(expectedProperty, expectedResult);
checkLayout("." + phase, false);
}
function evaluateStyleChangeMultiple(phase, expectedResult) {
for (var item in expectedResult) {
var element = document.getElementById(item);
element.className += " " + phase;
for (var key in expectedResult[item])
element.setAttribute(key, expectedResult[item][key]);
}
checkLayout("." + phase, false);
}

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<title>Multicol under vertical-rl scrolling container</title>
<p>Passes if there are two green squares</p>
<div id="scroller" style="width: 200px; height: 200px; overflow: scroll; border: 1px solid black">
<div style="width: 580px; height: 500px; position: relative">
<div style="position: absolute; right: 0">
<div style="width: 80px; height: 80px; background: green"></div>
<div style="height: 20px"></div>
<div style="width: 80px; height: 80px; background: green"></div>
</div>
</div>
</div>
<script>
// Scroll all the way to the right.
scroller.scrollLeft = 800;
</script>

View file

@ -0,0 +1,11 @@
<!DOCTYPE html>
<title>Multicol under vertical-rl scrolling container</title>
<link rel="match" href="multicol-under-vertical-rl-scroll-ref.html">
<link rel="help" href="https://drafts.csswg.org/css-multicol">
<p>Passes if there are two green squares</p>
<div style="width: 200px; height: 200px; overflow: scroll; writing-mode: vertical-rl; border: 1px solid black">
<div style="columns: 2; column-gap: 20px; width: 80px; height: 180px">
<div style="width: 160px; background: green"></div>
</div>
<div style="width: 500px; height: 500px"></div>
</div>

View file

@ -72,4 +72,18 @@ test(function(){
assert_equals(getComputedStyle(inner).getPropertyValue('--inherited-length-5'), '42px');
}, "Reference to syntax-incompatible variable results in inherited value");
test(function(){
CSS.registerProperty({name: '--inherited-em', syntax: '<length>', initialValue: '0px', inherits: true});
outer.style = 'font-size: 11px; --inherited-em: 10em;';
inner.style = 'font-size: 22px; --unregistered:var(--inherited-em);';
assert_equals(getComputedStyle(inner).getPropertyValue('--unregistered'), '110px');
}, "Font-relative units are absolutized before before inheritance");
test(function(){
CSS.registerProperty({name: '--calc-length', syntax: '<length>', initialValue: '0px', inherits: true});
outer.style = '--calc-length: calc(10px + 10px);';
inner.style = '--unregistered:var(--calc-length);';
assert_equals(getComputedStyle(inner).getPropertyValue('--unregistered'), '20px');
}, "Calc expressions are resolved before inheritance");
</script>

View file

@ -4,12 +4,12 @@
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
function register_length(name) {
function register_length(name, inherits=true) {
CSS.registerProperty({
name: name,
syntax: '<length>',
initialValue: '0px',
inherits: false
inherits: inherits
});
}
@ -22,6 +22,9 @@
register_length('--font-size-rem-via-var');
register_length('--font-size-ex-via-var');
register_length('--font-size-ch-via-var');
register_length('--font-size-em-inherited', true);
register_length('--font-size-ex-inherited', true);
register_length('--font-size-ch-inherited', true);
</script>
<style>
:root {
@ -43,12 +46,20 @@
--font-size-ch-via-var: var(--unregistered-ch);
}
#parent {
--font-size-em-inherited: 4em;
--font-size-ex-inherited: 4ex;
--font-size-ch-inherited: 4ch;
}
#target {
font-size: 11px;
}
</style>
<div id=parent>
<div id=target></div>
</div>
<div id=ref></div>
<script>
@ -170,4 +181,25 @@
assert_property_equals('--font-size-rem-via-var', expected10rem, root);
}, 'Lengths with rem units are detected via var references');
test(function() {
let expected4em = compute_dimension('4em', 'unset');
target.style = 'font-size: var(--font-size-em-inherited);';
assert_property_equals('font-size', expected4em);
assert_property_equals('--font-size-em-inherited', expected4em);
}, 'Inherited lengths with em units may be used');
test(function() {
let expected4ex = compute_dimension('4ex', 'unset');
target.style = 'font-size: var(--font-size-ex-inherited);';
assert_property_equals('font-size', expected4ex);
assert_property_equals('--font-size-ex-inherited', expected4ex);
}, 'Inherited lengths with ex units may be used');
test(function() {
let expected4ch = compute_dimension('4ch', 'unset');
target.style = 'font-size: var(--font-size-ch-inherited);';
assert_property_equals('font-size', expected4ch);
assert_property_equals('--font-size-ch-inherited', expected4ch);
}, 'Inherited lengths with ch units may be used');
</script>

View file

@ -96,5 +96,43 @@ test(function(){
assert_equals(computedStyle.getPropertyValue('--registered-length-list-3'), '1px, 10px, 2px, 1px, 20px, 10px, 2px');
}, 'Registered lists may be concatenated');
test(function(){
CSS.registerProperty({
name: '--length-em',
syntax: '<length>',
initialValue: '0px',
inherits: false
});
element.style = 'font-size: 11px; --length-em: 10em; --unregistered:var(--length-em);';
let computedStyle = getComputedStyle(element);
assert_equals(computedStyle.getPropertyValue('--unregistered'), '110px');
element.style = '';
}, 'Font-relative units are absolutized when substituting');
test(function(){
CSS.registerProperty({
name: '--length-calc',
syntax: '<length>',
initialValue: '0px',
inherits: false
});
element.style = 'font-size: 11px; --length-calc: calc(10em + 10px); --unregistered:var(--length-calc);';
let computedStyle = getComputedStyle(element);
assert_equals(computedStyle.getPropertyValue('--unregistered'), '120px');
element.style = '';
}, 'Calc expressions are resolved when substituting');
test(function(){
CSS.registerProperty({
name: '--length-calc-list',
syntax: '<length>#',
initialValue: '0px',
inherits: false
});
element.style = 'font-size: 11px; --length-calc-list: 10em, calc(10em + 10px); --unregistered:var(--length-calc-list);';
let computedStyle = getComputedStyle(element);
assert_equals(computedStyle.getPropertyValue('--unregistered'), '110px, 120px');
element.style = '';
}, 'Lists with relative units are absolutized when substituting');
</script>

View file

@ -0,0 +1,40 @@
<!DOCTYPE html>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<link rel="author" title="David Grogan" href="dgrogan@chromium.org">
<link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#orthogonal-flows">
<meta name="flags" content="" />
<meta name="assert" content="caption margins are resolved against table's height when table has vertical flow" />
<style>
x-table {
display: table;
width: 300px;
height: 200px;
writing-mode: vertical-lr;
outline: 2px dashed blue;
}
x-caption {
display: table-caption;
height: 50px;
width: 120px;
writing-mode: horizontal-tb;
outline: 1px solid black;
}
</style>
<x-table>
<x-caption id=captionMarginLeft style="margin-left:20%">caption</x-caption>
</x-table>
<x-table>
<x-caption id=captionMarginTop style="margin:auto 0">caption</x-caption>
</x-table>
<p>This is a script test because of how ridiculously differently the current
engines render these cases.</p>
<script>
let caption_margin_left = getComputedStyle(id=captionMarginLeft).marginLeft;
test(() => assert_equals(caption_margin_left, "40px"), "Caption percent margins are resolved against table's height for vertical-lr tables");
let caption_margin_top = getComputedStyle(captionMarginTop).marginTop;
test(() => assert_equals(caption_margin_top, "75px"), "Caption with auto top/bottom margins is centered vertically for vertical-lr tables");
</script>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html>
<head>
<title>CSS Text Test: minimum rendered width of tab character</title>
<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com">
<style>
span { background-color: yellow; display: inline-block; letter-spacing: -.1em; }
pre { position: absolute; top: 0; }
</style>
</head>
<body>
<pre>
</pre>
<pre>
</pre>
<script>
let pre = document.getElementsByTagName("pre")[0];
let test = "";
for (i = 7.0; i <= 8.125; i += 0.125) {
test += `<span style="width:${i}ch">${i}ch</span>\n`;
}
pre.innerHTML = test;
pre = document.getElementsByTagName("pre")[1];
test = "";
for (i = 0; i < 5; i++) {
test += `\tfoo\n`;
}
for (i = 0; i < 5; i++) {
test += `\t\tfoo\n`;
}
pre.innerHTML = test;
</script>
</body>
</html>

View file

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html>
<head>
<title>CSS Text Test: minimum rendered width of tab character</title>
<link rel="author" title="Jonathan Kew" href="mailto:jkew@mozilla.com">
<link rel="reviewer" title="Xidorn Quan" href="https://www.upsuper.org/">
<link rel="help" href="https://drafts.csswg.org/css-text-3/#white-space-phase-2">
<link rel="match" href="tab-min-rendered-width-1-ref.html">
<meta name="assert" content="If [rendered width of tab would be] less than 0.5ch, then the subsequent tab stop is used instead.">
<style>
span { background-color: yellow; display: inline-block; letter-spacing: -.1em; }
pre { position: absolute; top: 0; }
</style>
</head>
<body>
<pre>
</pre>
<script>
let pre = document.getElementsByTagName("pre")[0];
let test = "";
for (i = 7.0; i <= 8.125; i += 0.125) {
test += `<span style="width:${i}ch">${i}ch</span>&#9;foo\n`;
}
pre.innerHTML = test;
</script>
</body>
</html>

View file

@ -0,0 +1,229 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Transitions Test: TransitionEvent interface</title>
<link rel="help" href="https://drafts.csswg.org/css-transitions-1/#interface-transitionevent">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="transitionevent-interface.js"></script>
<script>
test(function() {
var event = new TransitionEvent("");
assert_true(event instanceof window.TransitionEvent);
}, "the event is an instance of TransitionEvent");
test(function() {
var event = new TransitionEvent("");
assert_true(event instanceof window.Event);
}, "the event inherts from Event");
test(function() {
assert_throws(new TypeError(), function() {
new TransitionEvent();
}, 'First argument is required, so was expecting a TypeError.');
}, 'Missing type argument');
test(function() {
var event = new TransitionEvent("test");
assert_equals(event.type, "test");
}, "type argument is string");
test(function() {
var event = new TransitionEvent(null);
assert_equals(event.type, "null");
}, "type argument is null");
test(function() {
var event = new TransitionEvent(undefined);
assert_equals(event.type, "undefined");
}, "event type set to undefined");
test(function() {
var event = new TransitionEvent("test");
assert_equals(event.propertyName, "");
}, "propertyName has default value of empty string");
test(function() {
var event = new TransitionEvent("test");
assert_equals(event.elapsedTime, 0.0);
}, "elapsedTime has default value of 0.0");
test(function() {
var event = new TransitionEvent("test");
assert_readonly(event, "propertyName", "readonly attribute value");
}, "propertyName is readonly");
test(function() {
var event = new TransitionEvent("test");
assert_readonly(event, "elapsedTime", "readonly attribute value");
}, "elapsedTime is readonly");
test(function() {
var event = new TransitionEvent("test", null);
assert_equals(event.propertyName, "");
assert_equals(event.elapsedTime, 0.0);
}, "animationEventInit argument is null");
test(function() {
var event = new TransitionEvent("test", undefined);
assert_equals(event.propertyName, "");
assert_equals(event.elapsedTime, 0.0);
}, "animationEventInit argument is undefined");
test(function() {
var event = new TransitionEvent("test", {});
assert_equals(event.propertyName, "");
assert_equals(event.elapsedTime, 0.0);
}, "animationEventInit argument is empty dictionary");
test(function() {
var event = new TransitionEvent("test", {pseudoElement: "::testPseudo"});
assert_equals(event.pseudoElement, "::testPseudo");
}, "TransitionEvent.pseudoElement initialized from the dictionary");
test(function() {
var event = new TransitionEvent("test", {propertyName: "sample"});
assert_equals(event.propertyName, "sample");
}, "propertyName set to 'sample'");
test(function() {
var event = new TransitionEvent("test", {propertyName: undefined});
assert_equals(event.propertyName, "");
}, "propertyName set to undefined");
test(function() {
var event = new TransitionEvent("test", {propertyName: null});
assert_equals(event.propertyName, "null");
}, "propertyName set to null");
test(function() {
var event = new TransitionEvent("test", {propertyName: false});
assert_equals(event.propertyName, "false");
}, "propertyName set to false");
test(function() {
var event = new TransitionEvent("test", {propertyName: true});
assert_equals(event.propertyName, "true");
}, "propertyName set to true");
test(function() {
var event = new TransitionEvent("test", {propertyName: 0.5});
assert_equals(event.propertyName, "0.5");
}, "propertyName set to a number");
test(function() {
var event = new TransitionEvent("test", {propertyName: []});
assert_equals(event.propertyName, "");
}, "propertyName set to []");
test(function() {
var event = new TransitionEvent("test", {propertyName: [1, 2, 3]});
assert_equals(event.propertyName, "1,2,3");
}, "propertyName set to [1, 2, 3]");
test(function() {
var event = new TransitionEvent("test", {propertyName: {sample: 0.5}});
assert_equals(event.propertyName, "[object Object]");
}, "propertyName set to an object");
test(function() {
var event = new TransitionEvent("test",
{propertyName: {valueOf: function () { return 'sample'; }}});
assert_equals(event.propertyName, "[object Object]");
}, "propertyName set to an object with a valueOf function");
test(function() {
var event = new TransitionEvent("test", {elapsedTime: 0.5});
assert_equals(event.elapsedTime, 0.5);
}, "elapsedTime set to 0.5");
test(function() {
var event = new TransitionEvent("test", {elapsedTime: -0.5});
assert_equals(event.elapsedTime, -0.5);
}, "elapsedTime set to -0.5");
test(function() {
var event = new TransitionEvent("test", {elapsedTime: undefined});
assert_equals(event.elapsedTime, 0);
}, "elapsedTime set to undefined");
test(function() {
var event = new TransitionEvent("test", {elapsedTime: null});
assert_equals(event.elapsedTime, 0);
}, "elapsedTime set to null");
test(function() {
var event = new TransitionEvent("test", {elapsedTime: false});
assert_equals(event.elapsedTime, 0);
}, "elapsedTime set to false");
test(function() {
var event = new TransitionEvent("test", {elapsedTime: true});
assert_equals(event.elapsedTime, 1);
}, "elapsedTime set to true");
test(function() {
var event = new TransitionEvent("test", {elapsedTime: ""});
assert_equals(event.elapsedTime, 0);
}, "elapsedTime set to ''");
test(function() {
var event = new TransitionEvent("test", {elapsedTime: []});
assert_equals(event.elapsedTime, 0);
}, "elapsedTime set to []");
test(function() {
var event = new TransitionEvent("test", {elapsedTime: [0.5]});
assert_equals(event.elapsedTime, 0.5);
}, "elapsedTime set to [0.5]");
test(function() {
var event = new TransitionEvent(
"test", {elapsedTime: { valueOf: function() { return 0.5; }}});
assert_equals(event.elapsedTime, 0.5);
}, "elapsedTime set to an object with a valueOf function");
test(function() {
assert_throws(new TypeError(), function() {
new TransitionEvent("test", {elapsedTime: NaN});
}, 'elapsedTime cannot be NaN so was expecting a TypeError');
}, "elapsedTime cannot be set to NaN");
test(function() {
assert_throws(new TypeError(), function() {
new TransitionEvent("test", {elapsedTime: Infinity});
}, 'elapsedTime cannot be Infinity so was expecting a TypeError');
}, "elapsedTime cannot be set to Infinity");
test(function() {
assert_throws(new TypeError(), function() {
new TransitionEvent("test", {elapsedTime: -Infinity});
}, 'elapsedTime cannot be -Infinity so was expecting a TypeError');
}, "elapsedTime cannot be set to -Infinity");
test(function() {
assert_throws(new TypeError(), function() {
new TransitionEvent("test", {elapsedTime: "sample"});
}, 'elapsedTime cannot be a string so was expecting a TypeError');
}, "elapsedTime cannot be set to 'sample'");
test(function() {
assert_throws(new TypeError(), function() {
new TransitionEvent("test", {elapsedTime: [0.5, 1.0]});
}, 'elapsedTime cannot be a multi-element array so was expecting a TypeError');
}, "elapsedTime cannot be set to [0.5, 1.0]");
test(function() {
assert_throws(new TypeError(), function() {
new TransitionEvent("test", {elapsedTime: { sample: 0.5}});
}, 'elapsedTime cannot be an object so was expecting a TypeError');
}, "elapsedTime cannot be set to an object");
test(function() {
var eventInit = {propertyName: "sample", elapsedTime: 0.5};
var event = new TransitionEvent("test", eventInit);
assert_equals(event.propertyName, "sample");
assert_equals(event.elapsedTime, 0.5);
}, "TransitionEventInit properties set value");
</script>

View file

@ -793,14 +793,6 @@ asserts that one `assert_func(actual, expected_array_N, extra_arg1, ..., extra_a
allows multiple behaviours. Test authors should not use this method simply to hide
UA bugs.
### `assert_exists(object, property_name, description)`
**deprecated**
asserts that object has an own property `property_name`
### `assert_not_exists(object, property_name, description)`
**deprecated**
assert that object does not have own property `property_name`
## Metadata ##
It is possible to add optional metadata to tests; this can be done in

View file

@ -0,0 +1,30 @@
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<!--
This test is adopted from Olli Pettay's test case at
http://mozilla.pettay.fi/shadow_focus.html
-->
<div id="host"></div>
<input id="lightInput">
<script>
const root = host.attachShadow({ mode: "closed" });
root.innerHTML = "<input id='shadowInput'>";
async_test((test) => {
root.getElementById("shadowInput").focus();
window.addEventListener("focus", test.step_func_done((e) => {
assert_equals(e.relatedTarget, host);
}, "relatedTarget should be pointing to shadow host."), true);
lightInput.focus();
}, "relatedTarget should not leak at capturing phase, at window object.");
async_test((test) => {
root.getElementById("shadowInput").focus();
lightInput.addEventListener("focus", test.step_func_done((e) => {
assert_equals(e.relatedTarget, host);
}, "relatedTarget should be pointing to shadow host."), true);
lightInput.focus();
}, "relatedTarget should not leak at target.");
</script>

View file

@ -12,7 +12,7 @@
EventSource.prototype.ReturnTrue = function() { return true }
var source = new EventSource("resources/message.py")
assert_true(source.ReturnTrue())
assert_exists(window, "EventSource")
assert_own_property(window, "EventSource")
source.close()
})
</scrIpt>

View file

@ -19,7 +19,7 @@ async_test(function(t) {
}
function step2_processSubframeMsg(msg) {
assert_not_exists(msg, 'error');
assert_false(msg.hasOwnProperty('error'), 'unexpected property found: "error"');
assert_equals(msg.blob_type, 'text/html');
assert_equals(msg.blob_size, 147);

View file

@ -20,7 +20,7 @@ async_test(t => {
const events = [];
const callback = t.step_func(event => {
// fullscreenElement should have changed before either event is fired.
assert_equals(document.fullscreenElement, null, `fullscreenElement in {event.type} event`);
assert_equals(document.fullscreenElement, null, `fullscreenElement in ${event.type} event`);
events.push(event.type);
if (event.type == 'fullscreenchange') {
step_timeout(t.unreached_func('timer callback'));

View file

@ -7,12 +7,12 @@
<iframe allowfullscreen></iframe>
<iframe allowfullscreen></iframe>
<script>
async_test(function(t)
{
// wait for load event to avoid https://bugzil.la/1493878
window.onload = function() {
async_test(function(t) {
var iframes = document.getElementsByTagName("iframe");
trusted_request(t, iframes[0].contentDocument.body, document.body);
iframes[0].contentDocument.onfullscreenchange = t.step_func(function()
{
iframes[0].contentDocument.onfullscreenchange = t.step_func(function() {
assert_equals(document.fullscreenElement, iframes[0]);
trusted_request(t, iframes[1].contentDocument.body, iframes[0].contentDocument.body);
iframes[1].contentDocument.onfullscreenchange = t.step_func_done(function() {
@ -21,4 +21,5 @@ async_test(function(t)
iframes[1].contentDocument.onfullscreenerror = t.unreached_func("fullscreenchange error");
});
});
};
</script>

View file

@ -6,8 +6,9 @@
<div id="log"></div>
<iframe></iframe>
<script>
async_test(function(t)
{
// wait for load event to avoid https://bugzil.la/1493878
window.onload = function() {
async_test(function(t) {
var iframe = document.querySelector("iframe");
document.onfullscreenchange = t.unreached_func("document fullscreenchange event");
document.onfullscreenerror = t.unreached_func("document fullscreenerror event");
@ -16,4 +17,5 @@ async_test(function(t)
assert_false(iframe.contentDocument.fullscreenEnabled, "fullscreen enabled flag");
trusted_request(t, iframe.contentDocument.body, document.body);
});
};
</script>

View file

@ -6,6 +6,8 @@
<div id="log"></div>
<iframe allowfullscreen></iframe>
<script>
// wait for load event to avoid https://bugzil.la/1493878
window.onload = function() {
async_test(t => {
const iframe = document.querySelector('iframe');
const iframeDoc = iframe.contentDocument;
@ -39,4 +41,5 @@ async_test(t => {
trusted_request(t, iframeBody, iframeBody);
});
};
</script>

View file

@ -28,6 +28,9 @@ async_test(t => {
}, 'Timing of fullscreenchange and resize events');
async_test(t => {
// Gecko throttles requestAnimationFrame before the first paint, so
// wrap the test to work around that.
requestAnimationFrame(t.step_func(() => {
var promise = document.createElement('a').requestFullscreen();
var promise_executed = false;
if (promise) {
@ -44,5 +47,6 @@ async_test(t => {
step_timeout(t.unreached_func('timer callback'));
requestAnimationFrame(t.step_func_done());
});
}));
}, 'Timing of fullscreenerror event');
</script>

View file

@ -5,6 +5,8 @@
<script src="../trusted-click.js"></script>
<iframe allowfullscreen></iframe>
<script>
// wait for load event to avoid https://bugzil.la/1493878
window.onload = function() {
async_test(t => {
const iframe = document.querySelector('iframe');
const iframeDoc = iframe.contentDocument;
@ -34,4 +36,5 @@ async_test(t => {
});
});
});
};
</script>

View file

@ -14,21 +14,32 @@ iframe {
<div id="log"></div>
<div id="ancestor"><iframe></iframe></div>
<script>
function assert_dir_properties(style, propBase, value, state) {
for (let dir of ["Top", "Right", "Bottom", "Left"]) {
let prop = propBase.replace('{}', dir);
assert_equals(style[prop], value, `${state} ${prop} style`);
}
}
async_test(t => {
const ancestor = document.getElementById('ancestor');
const iframe = ancestor.firstChild;
const initialStyle = getComputedStyle(iframe);
assert_equals(initialStyle.border, '1px solid rgb(0, 0, 255)', 'initial border style');
assert_equals(initialStyle.padding, '1px', 'initial padding style');
assert_dir_properties(initialStyle, 'border{}Width', '1px', 'initial');
assert_dir_properties(initialStyle, 'border{}Style', 'solid', 'initial');
assert_dir_properties(initialStyle, 'border{}Color', 'rgb(0, 0, 255)', 'initial');
assert_dir_properties(initialStyle, 'padding{}', '1px', 'initial');
assert_equals(initialStyle.transform, 'matrix(0.5, 0, 0, 0.5, 0, 0)', 'initial transform style');
trusted_request(t, iframe);
document.addEventListener('fullscreenchange', t.step_func_done(() => {
const fullscreenStyle = getComputedStyle(iframe);
assert_equals(fullscreenStyle.border, '0px none rgb(0, 0, 0)', 'fullscreen border style');
assert_equals(fullscreenStyle.padding, '0px', 'fullscreen padding style');
assert_dir_properties(fullscreenStyle, 'border{}Width', '0px', 'fullscreen');
assert_dir_properties(fullscreenStyle, 'border{}Style', 'none', 'fullscreen');
assert_dir_properties(fullscreenStyle, 'border{}Color', 'rgb(0, 0, 0)', 'fullscreen');
assert_dir_properties(fullscreenStyle, 'padding{}', '0px', 'fullscreen');
assert_equals(fullscreenStyle.transform, 'none', 'fullscreen transform style');
}));
});

View file

@ -44,7 +44,7 @@ function reportload() {
test(function () {
assert_equals( history.length, histlength + 1, 'make sure that you loaded the test in a new tab/window' );
}, 'history.length should update when setting location.hash');
test(function () { assert_true( !!history.pushState, 'critical test; ignore any failures after this' ); }, 'history.pushState must exist'); //assert_exists does not allow prototype inheritance
test(function () { assert_true( !!history.pushState, 'critical test; ignore any failures after this' ); }, 'history.pushState must exist'); //assert_own_property does not allow prototype inheritance
test(function () { assert_true( !!iframe.contentWindow.history.pushState, 'critical test; ignore any failures after this' ); }, 'history.pushState must exist within iframes');
test(function () {
assert_equals( iframe.contentWindow.history.state, null );
@ -250,7 +250,7 @@ function reportload() {
assert_equals( ev.state.numdata, 1, 'state numeric data was not correct' );
assert_equals( ev.state.strdata, 'string data', 'state string data was not correct' );
assert_true( !!ev.state.datedata.getTime, 'state date data was not correct' );
assert_exists( ev.state, 'regdata', 'state regex data was not correct' );
assert_own_property( ev.state, 'regdata', 'state regex data was not correct' );
assert_equals( ev.state.regdata.source, 'a', 'state regex pattern data was not correct' );
assert_true( ev.state.regdata.global, 'state regex flag data was not correct' );
assert_equals( ev.state.regdata.lastIndex, 0, 'state regex lastIndex data was not correct' );

View file

@ -43,7 +43,7 @@ function reportload() {
test(function () {
assert_equals( history.length, histlength + 1, 'make sure that you loaded the test in a new tab/window' );
}, 'history.length should update when setting location.hash');
test(function () { assert_true( !!history.replaceState, 'critical test; ignore any failures after this' ); }, 'history.replaceState must exist'); //assert_exists does not allow prototype inheritance
test(function () { assert_true( !!history.replaceState, 'critical test; ignore any failures after this' ); }, 'history.replaceState must exist'); //assert_own_property does not allow prototype inheritance
test(function () { assert_true( !!iframe.contentWindow.history.replaceState, 'critical test; ignore any failures after this' ); }, 'history.replaceState must exist within iframes');
test(function () {
assert_equals( iframe.contentWindow.history.state, null );
@ -225,7 +225,7 @@ function reportload() {
assert_equals( ev.state.numdata, 1, 'state numeric data was not correct' );
assert_equals( ev.state.strdata, 'string data', 'state string data was not correct' );
assert_true( !!ev.state.datedata.getTime, 'state date data was not correct' );
assert_exists( ev.state, 'regdata', 'state regex data was not correct' );
assert_own_property( ev.state, 'regdata', 'state regex data was not correct' );
assert_equals( ev.state.regdata.source, 'a', 'state regex pattern data was not correct' );
assert_true( ev.state.regdata.global, 'state regex flag data was not correct' );
assert_equals( ev.state.regdata.lastIndex, 0, 'state regex lastIndex data was not correct' );

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<style>
table {
border-collapse: collapse;
}
td {
border: 5px solid black;
width: 100px;
height: 100px;
}
</style>
Passes if there is a grid containing 2x2 squares.
<table>
<tbody>
<tr><td></td><td></td></tr>
<tr><td></td><td></td></tr>
</tbody>
</table>

Some files were not shown because too many files have changed in this diff Show more