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] [Revoke blob URL after creating Request, will fetch]
expected: FAIL expected: FAIL
[Revoke blob URL after calling fetch, fetch should succeed]
expected: FAIL
[url-with-fetch.any.html] [url-with-fetch.any.html]
[Untitled] [Untitled]
@ -37,6 +34,3 @@
[Revoke blob URL after creating Request, will fetch] [Revoke blob URL after creating Request, will fetch]
expected: FAIL 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] [animationName has default value of empty string]
expected: FAIL 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] [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] [301C WAVE DASH may NOT appear at line start if ja and strict]
expected: expected:
if os == "linux": FAIL 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] [properties-value-inherit-002.html]
expected: TIMEOUT
[outline-width length(px) / values] [outline-width length(px) / values]
expected: FAIL expected: TIMEOUT
[border-left-width length(em) / values] [border-left-width length(em) / values]
expected: FAIL expected: FAIL
@ -24,13 +25,13 @@
expected: FAIL expected: FAIL
[opacity number[0,1\](zero-to-one) / values] [opacity number[0,1\](zero-to-one) / values]
expected: FAIL expected: TIMEOUT
[line-height number(integer) / values] [line-height number(integer) / values]
expected: FAIL expected: FAIL
[outline-offset length(px) / values] [outline-offset length(px) / values]
expected: FAIL expected: TIMEOUT
[font-size length(pt) / values] [font-size length(pt) / values]
expected: FAIL expected: FAIL
@ -39,7 +40,7 @@
expected: FAIL expected: FAIL
[vertical-align length(in) / values] [vertical-align length(in) / values]
expected: FAIL expected: TIMEOUT
[max-height percentage(%) / values] [max-height percentage(%) / values]
expected: FAIL expected: FAIL
@ -75,7 +76,7 @@
expected: FAIL expected: FAIL
[vertical-align percentage(%) / values] [vertical-align percentage(%) / values]
expected: FAIL expected: TIMEOUT
[background-position length(in) / events] [background-position length(in) / events]
expected: FAIL expected: FAIL
@ -99,10 +100,10 @@
expected: FAIL expected: FAIL
[vertical-align length(em) / values] [vertical-align length(em) / values]
expected: FAIL expected: TIMEOUT
[clip rectangle(rectangle) / values] [clip rectangle(rectangle) / values]
expected: FAIL expected: TIMEOUT
[word-spacing length(em) / values] [word-spacing length(em) / values]
expected: FAIL expected: FAIL
@ -126,7 +127,7 @@
expected: FAIL expected: FAIL
[outline-offset length(ex) / values] [outline-offset length(ex) / values]
expected: FAIL expected: TIMEOUT
[min-width length(cm) / values] [min-width length(cm) / values]
expected: FAIL expected: FAIL
@ -141,16 +142,16 @@
expected: FAIL expected: FAIL
[vertical-align length(pc) / values] [vertical-align length(pc) / values]
expected: FAIL expected: TIMEOUT
[vertical-align length(cm) / values] [vertical-align length(cm) / values]
expected: FAIL expected: TIMEOUT
[max-height length(ex) / values] [max-height length(ex) / values]
expected: FAIL expected: FAIL
[vertical-align length(ex) / values] [vertical-align length(ex) / values]
expected: FAIL expected: TIMEOUT
[min-height percentage(%) / values] [min-height percentage(%) / values]
expected: FAIL expected: FAIL
@ -159,7 +160,7 @@
expected: FAIL expected: FAIL
[outline-offset length(mm) / values] [outline-offset length(mm) / values]
expected: FAIL expected: TIMEOUT
[font-weight font-weight(keyword) / values] [font-weight font-weight(keyword) / values]
expected: FAIL expected: FAIL
@ -168,7 +169,7 @@
expected: FAIL expected: FAIL
[outline-offset length(pt) / values] [outline-offset length(pt) / values]
expected: FAIL expected: TIMEOUT
[line-height length(mm) / values] [line-height length(mm) / values]
expected: FAIL expected: FAIL
@ -201,7 +202,7 @@
expected: FAIL expected: FAIL
[vertical-align length(pt) / values] [vertical-align length(pt) / values]
expected: FAIL expected: TIMEOUT
[border-left-color color(rgba) / values] [border-left-color color(rgba) / values]
expected: FAIL expected: FAIL
@ -270,10 +271,10 @@
expected: FAIL expected: FAIL
[outline-offset length(in) / values] [outline-offset length(in) / values]
expected: FAIL expected: TIMEOUT
[outline-width length(pt) / values] [outline-width length(pt) / values]
expected: FAIL expected: TIMEOUT
[border-top-width length(pc) / values] [border-top-width length(pc) / values]
expected: FAIL expected: FAIL
@ -291,7 +292,7 @@
expected: FAIL expected: FAIL
[outline-width length(in) / values] [outline-width length(in) / values]
expected: FAIL expected: TIMEOUT
[word-spacing length(pt) / values] [word-spacing length(pt) / values]
expected: FAIL expected: FAIL
@ -303,7 +304,7 @@
expected: FAIL expected: FAIL
[outline-color color(rgba) / values] [outline-color color(rgba) / values]
expected: FAIL expected: TIMEOUT
[background-position length(ex) / events] [background-position length(ex) / events]
expected: FAIL expected: FAIL
@ -327,7 +328,7 @@
expected: FAIL expected: FAIL
[outline-width length(ex) / values] [outline-width length(ex) / values]
expected: FAIL expected: TIMEOUT
[font-size length(pc) / values] [font-size length(pc) / values]
expected: FAIL expected: FAIL
@ -339,7 +340,7 @@
expected: FAIL expected: FAIL
[outline-width length(cm) / values] [outline-width length(cm) / values]
expected: FAIL expected: TIMEOUT
[max-width percentage(%) / values] [max-width percentage(%) / values]
expected: FAIL expected: FAIL
@ -354,19 +355,19 @@
expected: FAIL expected: FAIL
[outline-width length(mm) / values] [outline-width length(mm) / values]
expected: FAIL expected: TIMEOUT
[border-left-width length(pc) / values] [border-left-width length(pc) / values]
expected: FAIL expected: FAIL
[outline-width length(pc) / values] [outline-width length(pc) / values]
expected: FAIL expected: TIMEOUT
[font-weight font-weight(numeric) / values] [font-weight font-weight(numeric) / values]
expected: FAIL expected: FAIL
[vertical-align length(px) / values] [vertical-align length(px) / values]
expected: FAIL expected: TIMEOUT
[letter-spacing length(px) / values] [letter-spacing length(px) / values]
expected: FAIL expected: FAIL
@ -393,7 +394,7 @@
expected: FAIL expected: FAIL
[outline-width length(em) / values] [outline-width length(em) / values]
expected: FAIL expected: TIMEOUT
[border-right-width length(em) / values] [border-right-width length(em) / values]
expected: FAIL expected: FAIL
@ -405,10 +406,10 @@
expected: FAIL expected: FAIL
[outline-offset length(em) / values] [outline-offset length(em) / values]
expected: FAIL expected: TIMEOUT
[outline-offset length(cm) / values] [outline-offset length(cm) / values]
expected: FAIL expected: TIMEOUT
[background-position length(mm) / events] [background-position length(mm) / events]
expected: FAIL expected: FAIL
@ -420,13 +421,13 @@
expected: FAIL expected: FAIL
[z-index integer(integer) / values] [z-index integer(integer) / values]
expected: FAIL expected: TIMEOUT
[border-left-width length(pt) / values] [border-left-width length(pt) / values]
expected: FAIL expected: FAIL
[vertical-align length(mm) / values] [vertical-align length(mm) / values]
expected: FAIL expected: TIMEOUT
[border-bottom-width length(pc) / values] [border-bottom-width length(pc) / values]
expected: FAIL expected: FAIL
@ -447,7 +448,7 @@
expected: FAIL expected: FAIL
[outline-offset length(pc) / values] [outline-offset length(pc) / values]
expected: FAIL expected: TIMEOUT
[max-height length(pc) / values] [max-height length(pc) / values]
expected: FAIL expected: FAIL
@ -473,39 +474,135 @@
[min-width length(ex) / values] [min-width length(ex) / values]
expected: FAIL 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] [word-spacing length(in) / values]
expected: FAIL expected: FAIL
[text-indent length(cm) / values]
expected: FAIL
[text-indent length(pt) / values] [text-indent length(pt) / values]
expected: FAIL expected: FAIL
[text-shadow shadow(shadow) / values]
expected: FAIL
[word-spacing percentage(%) / values] [word-spacing percentage(%) / values]
expected: FAIL expected: FAIL
[text-indent length(in) / values] [outline-width length(pc) / events]
expected: TIMEOUT
[height percentage(%) / values]
expected: FAIL expected: FAIL
[text-indent length(em) / values] [vertical-align length(px) / events]
expected: TIMEOUT
[padding-right length(em) / values]
expected: FAIL 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 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] [right intermediate]
expected: FAIL expected: FAIL
[min-width intermediate]
expected: FAIL
[background-position end] [background-position end]
expected: FAIL expected: FAIL
@ -35,42 +32,81 @@
[font-weight intermediate] [font-weight intermediate]
expected: FAIL expected: FAIL
[clip intermediate]
expected: FAIL
[border-right-width intermediate]
expected: FAIL
[border-left-width intermediate]
expected: FAIL
[min-height intermediate] [min-height intermediate]
expected: FAIL expected: FAIL
[border-top-width intermediate]
expected: FAIL
[max-width intermediate]
expected: FAIL
[max-height intermediate] [max-height intermediate]
expected: FAIL expected: FAIL
[outline-offset intermediate] [outline-offset intermediate]
expected: FAIL expected: FAIL
[border-spacing intermediate]
expected: FAIL
[left intermediate]
expected: FAIL
[outline-width intermediate] [outline-width intermediate]
expected: FAIL expected: FAIL
[bottom intermediate]
expected: FAIL
[outline-width end] [outline-width end]
expected: FAIL 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 type: testharness
[single-byte-decoder.html?document] [single-byte-decoder.html?document]
expected: CRASH expected: TIMEOUT
[windows-1254: iso_8859-9 (document.characterSet and document.inputEncoding)] [windows-1254: iso_8859-9 (document.characterSet and document.inputEncoding)]
expected: FAIL 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] [Multiple history traversals, last would be aborted]
expected: FAIL 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] [Set HTTP URL frame location.protocol to data]
expected: FAIL 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.] [Should get an error event for a text/plain response.]
expected: FAIL 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] [picture: source (max-width:500px) valid image, img valid image, resize to narrow]
expected: FAIL 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] [off is an allowed autocomplete field name]
expected: FAIL 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] [document.open() after parser is aborted]
expected: FAIL 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&] [request.formData() with input: &&&a=b&&&&c=d&]
expected: FAIL 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] [request.formData() with input: a=b&c=d]
expected: FAIL 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] [urlencoded-parser.any.worker.html]
[request.formData() with input: a&b&c] [request.formData() with input: a&b&c]
@ -22,6 +25,12 @@
[response.formData() with input: a&b&c] [response.formData() with input: a&b&c]
expected: FAIL 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 expected: FAIL

View file

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

View file

@ -68,6 +68,12 @@
[getter order for imports object: Module argument] [getter order for imports object: Module argument]
expected: FAIL expected: FAIL
[stray argument: BufferSource argument]
expected: FAIL
[stray argument: Module argument]
expected: FAIL
[instantiate.any.worker.html] [instantiate.any.worker.html]
[Invalid arguments] [Invalid arguments]
@ -139,3 +145,9 @@
[getter order for imports object: Module argument] [getter order for imports object: Module argument]
expected: FAIL 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] [Explicit value "3" for type f32]
expected: FAIL expected: FAIL
[Stray argument]
expected: FAIL
[constructor.any.worker.html] [constructor.any.worker.html]
[Explicit value object with toString for type f32] [Explicit value object with toString for type f32]
@ -187,3 +190,6 @@
[Explicit value "3" for type f32] [Explicit value "3" for type f32]
expected: FAIL 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] [Branding]
expected: FAIL expected: FAIL
[Stray argument]
expected: FAIL
[valueOf.any.html] [valueOf.any.html]
[Branding] [Branding]
expected: FAIL expected: FAIL
[Stray argument]
expected: FAIL

View file

@ -38,6 +38,9 @@
[Basic] [Basic]
expected: FAIL expected: FAIL
[Stray argument]
expected: FAIL
[grow.any.worker.html] [grow.any.worker.html]
[Out-of-range argument: 68719476736] [Out-of-range argument: 68719476736]
@ -79,3 +82,6 @@
[Basic] [Basic]
expected: FAIL 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"); assert_equals(event.animationName, "sample");
}, "animationName set to '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() { test(function() {
var event = new AnimationEvent("test", {elapsedTime: 0.5}); var event = new AnimationEvent("test", {elapsedTime: 0.5});
assert_equals(event.elapsedTime, 0.5); assert_equals(event.elapsedTime, 0.5);
}, "elapsedTime set to 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() { test(function() {
var eventInit = {animationName: "sample", elapsedTime: 0.5}; var eventInit = {animationName: "sample", elapsedTime: 0.5};
var event = new AnimationEvent("test", eventInit); 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"); document.documentElement.classList.remove("reftest-wait");
}); });
}); });
inner.style.backgroundClip = "border-box";
</script> </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); element.setAttribute(expectedProperty, expectedResult);
checkLayout("." + phase, false); 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'); assert_equals(getComputedStyle(inner).getPropertyValue('--inherited-length-5'), '42px');
}, "Reference to syntax-incompatible variable results in inherited value"); }, "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> </script>

View file

@ -4,12 +4,12 @@
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script> <script>
function register_length(name) { function register_length(name, inherits=true) {
CSS.registerProperty({ CSS.registerProperty({
name: name, name: name,
syntax: '<length>', syntax: '<length>',
initialValue: '0px', initialValue: '0px',
inherits: false inherits: inherits
}); });
} }
@ -22,6 +22,9 @@
register_length('--font-size-rem-via-var'); register_length('--font-size-rem-via-var');
register_length('--font-size-ex-via-var'); register_length('--font-size-ex-via-var');
register_length('--font-size-ch-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> </script>
<style> <style>
:root { :root {
@ -43,12 +46,20 @@
--font-size-ch-via-var: var(--unregistered-ch); --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 { #target {
font-size: 11px; font-size: 11px;
} }
</style> </style>
<div id=target></div> <div id=parent>
<div id=target></div>
</div>
<div id=ref></div> <div id=ref></div>
<script> <script>
@ -170,4 +181,25 @@
assert_property_equals('--font-size-rem-via-var', expected10rem, root); assert_property_equals('--font-size-rem-via-var', expected10rem, root);
}, 'Lengths with rem units are detected via var references'); }, '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> </script>

View file

@ -96,5 +96,43 @@ test(function(){
assert_equals(computedStyle.getPropertyValue('--registered-length-list-3'), '1px, 10px, 2px, 1px, 20px, 10px, 2px'); assert_equals(computedStyle.getPropertyValue('--registered-length-list-3'), '1px, 10px, 2px, 1px, 20px, 10px, 2px');
}, 'Registered lists may be concatenated'); }, '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> </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 allows multiple behaviours. Test authors should not use this method simply to hide
UA bugs. 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 ## ## Metadata ##
It is possible to add optional metadata to tests; this can be done in 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 } EventSource.prototype.ReturnTrue = function() { return true }
var source = new EventSource("resources/message.py") var source = new EventSource("resources/message.py")
assert_true(source.ReturnTrue()) assert_true(source.ReturnTrue())
assert_exists(window, "EventSource") assert_own_property(window, "EventSource")
source.close() source.close()
}) })
</scrIpt> </scrIpt>

View file

@ -19,7 +19,7 @@ async_test(function(t) {
} }
function step2_processSubframeMsg(msg) { 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_type, 'text/html');
assert_equals(msg.blob_size, 147); assert_equals(msg.blob_size, 147);

View file

@ -20,7 +20,7 @@ async_test(t => {
const events = []; const events = [];
const callback = t.step_func(event => { const callback = t.step_func(event => {
// fullscreenElement should have changed before either event is fired. // 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); events.push(event.type);
if (event.type == 'fullscreenchange') { if (event.type == 'fullscreenchange') {
step_timeout(t.unreached_func('timer callback')); step_timeout(t.unreached_func('timer callback'));

View file

@ -7,12 +7,12 @@
<iframe allowfullscreen></iframe> <iframe allowfullscreen></iframe>
<iframe allowfullscreen></iframe> <iframe allowfullscreen></iframe>
<script> <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"); var iframes = document.getElementsByTagName("iframe");
trusted_request(t, iframes[0].contentDocument.body, document.body); 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]); assert_equals(document.fullscreenElement, iframes[0]);
trusted_request(t, iframes[1].contentDocument.body, iframes[0].contentDocument.body); trusted_request(t, iframes[1].contentDocument.body, iframes[0].contentDocument.body);
iframes[1].contentDocument.onfullscreenchange = t.step_func_done(function() { iframes[1].contentDocument.onfullscreenchange = t.step_func_done(function() {
@ -20,5 +20,6 @@ async_test(function(t)
}); });
iframes[1].contentDocument.onfullscreenerror = t.unreached_func("fullscreenchange error"); iframes[1].contentDocument.onfullscreenerror = t.unreached_func("fullscreenchange error");
}); });
}); });
};
</script> </script>

View file

@ -6,8 +6,9 @@
<div id="log"></div> <div id="log"></div>
<iframe></iframe> <iframe></iframe>
<script> <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"); var iframe = document.querySelector("iframe");
document.onfullscreenchange = t.unreached_func("document fullscreenchange event"); document.onfullscreenchange = t.unreached_func("document fullscreenchange event");
document.onfullscreenerror = t.unreached_func("document fullscreenerror event"); document.onfullscreenerror = t.unreached_func("document fullscreenerror event");
@ -15,5 +16,6 @@ async_test(function(t)
iframe.contentDocument.onfullscreenerror = t.step_func_done(); iframe.contentDocument.onfullscreenerror = t.step_func_done();
assert_false(iframe.contentDocument.fullscreenEnabled, "fullscreen enabled flag"); assert_false(iframe.contentDocument.fullscreenEnabled, "fullscreen enabled flag");
trusted_request(t, iframe.contentDocument.body, document.body); trusted_request(t, iframe.contentDocument.body, document.body);
}); });
};
</script> </script>

View file

@ -6,7 +6,9 @@
<div id="log"></div> <div id="log"></div>
<iframe allowfullscreen></iframe> <iframe allowfullscreen></iframe>
<script> <script>
async_test(t => { // wait for load event to avoid https://bugzil.la/1493878
window.onload = function() {
async_test(t => {
const iframe = document.querySelector('iframe'); const iframe = document.querySelector('iframe');
const iframeDoc = iframe.contentDocument; const iframeDoc = iframe.contentDocument;
const iframeBody = iframeDoc.body; const iframeBody = iframeDoc.body;
@ -38,5 +40,6 @@ async_test(t => {
iframeDoc.onfullscreenerror = t.unreached_func('iframe fullscreenerror event'); iframeDoc.onfullscreenerror = t.unreached_func('iframe fullscreenerror event');
trusted_request(t, iframeBody, iframeBody); trusted_request(t, iframeBody, iframeBody);
}); });
};
</script> </script>

View file

@ -28,6 +28,9 @@ async_test(t => {
}, 'Timing of fullscreenchange and resize events'); }, 'Timing of fullscreenchange and resize events');
async_test(t => { 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 = document.createElement('a').requestFullscreen();
var promise_executed = false; var promise_executed = false;
if (promise) { if (promise) {
@ -44,5 +47,6 @@ async_test(t => {
step_timeout(t.unreached_func('timer callback')); step_timeout(t.unreached_func('timer callback'));
requestAnimationFrame(t.step_func_done()); requestAnimationFrame(t.step_func_done());
}); });
}));
}, 'Timing of fullscreenerror event'); }, 'Timing of fullscreenerror event');
</script> </script>

View file

@ -5,7 +5,9 @@
<script src="../trusted-click.js"></script> <script src="../trusted-click.js"></script>
<iframe allowfullscreen></iframe> <iframe allowfullscreen></iframe>
<script> <script>
async_test(t => { // wait for load event to avoid https://bugzil.la/1493878
window.onload = function() {
async_test(t => {
const iframe = document.querySelector('iframe'); const iframe = document.querySelector('iframe');
const iframeDoc = iframe.contentDocument; const iframeDoc = iframe.contentDocument;
@ -33,5 +35,6 @@ async_test(t => {
assert_equals(iframeDoc.fullscreenElement, iframeDoc.body, "iframe's final fullscreen element"); assert_equals(iframeDoc.fullscreenElement, iframeDoc.body, "iframe's final fullscreen element");
}); });
}); });
}); });
};
</script> </script>

View file

@ -14,21 +14,32 @@ iframe {
<div id="log"></div> <div id="log"></div>
<div id="ancestor"><iframe></iframe></div> <div id="ancestor"><iframe></iframe></div>
<script> <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 => { async_test(t => {
const ancestor = document.getElementById('ancestor'); const ancestor = document.getElementById('ancestor');
const iframe = ancestor.firstChild; const iframe = ancestor.firstChild;
const initialStyle = getComputedStyle(iframe); const initialStyle = getComputedStyle(iframe);
assert_equals(initialStyle.border, '1px solid rgb(0, 0, 255)', 'initial border style'); assert_dir_properties(initialStyle, 'border{}Width', '1px', 'initial');
assert_equals(initialStyle.padding, '1px', 'initial padding style'); 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'); assert_equals(initialStyle.transform, 'matrix(0.5, 0, 0, 0.5, 0, 0)', 'initial transform style');
trusted_request(t, iframe); trusted_request(t, iframe);
document.addEventListener('fullscreenchange', t.step_func_done(() => { document.addEventListener('fullscreenchange', t.step_func_done(() => {
const fullscreenStyle = getComputedStyle(iframe); const fullscreenStyle = getComputedStyle(iframe);
assert_equals(fullscreenStyle.border, '0px none rgb(0, 0, 0)', 'fullscreen border style'); assert_dir_properties(fullscreenStyle, 'border{}Width', '0px', 'fullscreen');
assert_equals(fullscreenStyle.padding, '0px', 'fullscreen padding style'); 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'); assert_equals(fullscreenStyle.transform, 'none', 'fullscreen transform style');
})); }));
}); });

View file

@ -44,7 +44,7 @@ function reportload() {
test(function () { test(function () {
assert_equals( history.length, histlength + 1, 'make sure that you loaded the test in a new tab/window' ); 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'); }, '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_true( !!iframe.contentWindow.history.pushState, 'critical test; ignore any failures after this' ); }, 'history.pushState must exist within iframes');
test(function () { test(function () {
assert_equals( iframe.contentWindow.history.state, null ); 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.numdata, 1, 'state numeric data was not correct' );
assert_equals( ev.state.strdata, 'string data', 'state string 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_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_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_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' ); assert_equals( ev.state.regdata.lastIndex, 0, 'state regex lastIndex data was not correct' );

View file

@ -43,7 +43,7 @@ function reportload() {
test(function () { test(function () {
assert_equals( history.length, histlength + 1, 'make sure that you loaded the test in a new tab/window' ); 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'); }, '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_true( !!iframe.contentWindow.history.replaceState, 'critical test; ignore any failures after this' ); }, 'history.replaceState must exist within iframes');
test(function () { test(function () {
assert_equals( iframe.contentWindow.history.state, null ); 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.numdata, 1, 'state numeric data was not correct' );
assert_equals( ev.state.strdata, 'string data', 'state string 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_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_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_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' ); 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