mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +01:00
Update web-platform-tests to revision 993a932dca2b378a44dc55f4ee80812f65d8fb4e
This commit is contained in:
parent
f5ff38b875
commit
af74a5d2cf
331 changed files with 3327 additions and 3531 deletions
|
@ -1,5 +0,0 @@
|
||||||
[2d.pattern.image.broken.html]
|
|
||||||
type: testharness
|
|
||||||
[Canvas test: 2d.pattern.image.broken]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-floats-002.html]
|
||||||
|
[Hit test float]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[hit-test-floats-005.html]
|
|
||||||
[Miss clipped float]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[hit-test-anonymous-block.html]
|
||||||
|
[Hit test beside line of text inside anonymous block]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[image-set-rendering.html]
|
||||||
|
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
||||||
[ch-unit-015.html]
|
|
||||||
expected: FAIL
|
|
|
@ -1,4 +0,0 @@
|
||||||
[CaretPosition-001.html]
|
|
||||||
[Element at (400, 100)]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -8,6 +8,3 @@
|
||||||
[throws if handleEvent is thruthy and not callable]
|
[throws if handleEvent is thruthy and not callable]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[looks up handleEvent method on every event dispatch]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,3 @@
|
||||||
[test the top of layer]
|
[test the top of layer]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[test some point of the element: top left corner]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
[offsetTopLeft-border-box.html]
|
|
||||||
[container: 1]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[container: 0]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[HTMLMediaElement.html]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -312,12 +312,21 @@
|
||||||
[fetch(): separate response Content-Type: text/plain ]
|
[fetch(): separate response Content-Type: text/plain ]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/plain */*]
|
[<iframe>: separate response Content-Type: text/plain */*]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
|
[<iframe>: combined response Content-Type: text/html;" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html */*]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[<iframe>: combined response Content-Type: text/html;x=" text/plain]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -53,3 +53,9 @@
|
||||||
[combined text/javascript ]
|
[combined text/javascript ]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[separate text/javascript;charset=windows-1252 error text/javascript]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[separate text/javascript x/x]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,5 @@
|
||||||
[embed.tentative.https.sub.html]
|
[embed.https.sub.html]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[Cross-Site embed]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
[Same-Site embed]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
[Same-Origin embed]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[Wrapper: Navigate to cross-site embed]
|
[Wrapper: Navigate to cross-site embed]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[fetch-preflight.tentative.https.sub.html]
|
[fetch-preflight.https.sub.html]
|
||||||
[Same-site fetch with preflight]
|
[Same-site fetch with preflight]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[fetch-via-serviceworker--fallback.https.sub.html]
|
||||||
|
[Sec-Fetch headers after SW fallback]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[fetch-via-serviceworker--fallback.tentative.https.sub.html]
|
|
||||||
[Sec-Fetch headers after SW fallback]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[fetch-via-serviceworker--respondWith.https.sub.html]
|
||||||
|
[Sec-Fetch headers after SW fallback]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[fetch-via-serviceworker--respondWith.tentative.https.sub.html]
|
|
||||||
[Sec-Fetch headers after SW fallback]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[fetch.tentative.https.sub.html]
|
[fetch.https.sub.html]
|
||||||
[CORS mode: sec-fetch-site]
|
[CORS mode: sec-fetch-site]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[fetch.tentative.sub.html]
|
[fetch.sub.html]
|
||||||
[http->https fetch (cross-scheme => cross-site): sec-fetch-dest]
|
[http->https fetch (cross-scheme => cross-site): sec-fetch-dest]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[font.https.sub.html]
|
||||||
|
expected: ERROR
|
|
@ -1,5 +0,0 @@
|
||||||
[font.tentative.https.sub.html]
|
|
||||||
expected: ERROR
|
|
||||||
[font]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,14 +1,8 @@
|
||||||
[history.tentative.https.sub.html]
|
[history.https.sub.html]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[back to same-origin-initiated navigation]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[back to same-site-initiated navigation]
|
[back to same-site-initiated navigation]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[back to cross-site-initiated navigation]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[back to cross-site-initiated navigation 1: sec-fetch-site]
|
[back to cross-site-initiated navigation 1: sec-fetch-site]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -18,6 +12,9 @@
|
||||||
[back to same-site-initiated navigation 1: sec-fetch-dest]
|
[back to same-site-initiated navigation 1: sec-fetch-dest]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[back to same-origin-initiated navigation]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
[back to cross-site-initiated navigation 1: sec-fetch-dest]
|
[back to cross-site-initiated navigation 1: sec-fetch-dest]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -30,6 +27,9 @@
|
||||||
[back to same-origin-initiated navigation 1: sec-fetch-mode]
|
[back to same-origin-initiated navigation 1: sec-fetch-mode]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[back to cross-site-initiated navigation]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
[back to same-site-initiated navigation 1: sec-fetch-site]
|
[back to same-site-initiated navigation 1: sec-fetch-site]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[iframe.tentative.sub.html]
|
[iframe.sub.html]
|
||||||
[Secure, cross-site (cross-scheme, same-host) iframe: sec-fetch-dest]
|
[Secure, cross-site (cross-scheme, same-host) iframe: sec-fetch-dest]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[img.tentative.https.sub.html]
|
[img.https.sub.html]
|
||||||
[Cross-site image: sec-fetch-mode]
|
[Cross-site image: sec-fetch-mode]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[navigation.https.sub.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -1,2 +0,0 @@
|
||||||
[navigation.tentative.https.sub.html]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -1,4 +1,4 @@
|
||||||
[object.tentative.https.sub.html]
|
[object.https.sub.html]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[Same-Origin object]
|
[Same-Origin object]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
|
@ -1,4 +1,4 @@
|
||||||
[prefetch.tentative.https.sub.html]
|
[prefetch.https.sub.html]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[<link rel='prefetch' href='https://www.web-platform.test:8443/...'>]
|
[<link rel='prefetch' href='https://www.web-platform.test:8443/...'>]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
|
@ -1,4 +1,4 @@
|
||||||
[preload.tentative.https.sub.html]
|
[preload.https.sub.html]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[<link rel='preload' as='fetch' href='https://web-platform.test:8443/...'>]
|
[<link rel='preload' as='fetch' href='https://web-platform.test:8443/...'>]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
|
@ -1,4 +1,4 @@
|
||||||
[cross-site-redirect.tentative.https.sub.html]
|
[cross-site-redirect.https.sub.html]
|
||||||
[Cross-Site -> Cross-Site redirect: sec-fetch-site]
|
[Cross-Site -> Cross-Site redirect: sec-fetch-site]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[multiple-redirect-cross-site.tentative.https.sub.html]
|
[multiple-redirect-cross-site.https.sub.html]
|
||||||
[Same-Origin -> Cross-Site -> Same-Origin redirect: sec-fetch-mode]
|
[Same-Origin -> Cross-Site -> Same-Origin redirect: sec-fetch-mode]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[multiple-redirect-https-downgrade-upgrade-prefetch.optional.tentative.sub.html]
|
[multiple-redirect-https-downgrade-upgrade-prefetch.optional.sub.html]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[Https downgrade-upgrade prefetch => No headers]
|
[Https downgrade-upgrade prefetch => No headers]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
|
@ -1,30 +1,6 @@
|
||||||
[multiple-redirect-https-downgrade-upgrade.tentative.sub.html]
|
[multiple-redirect-https-downgrade-upgrade.sub.html]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
[Https downgrade-upgrade object]
|
[Https downgrade-upgrade top level navigation: sec-fetch-dest]
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
[Https downgrade-upgrade fetch() api]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
[Https downgrade-upgrade embed]
|
|
||||||
expected: TIMEOUT
|
|
||||||
|
|
||||||
[Https downgrade-upgrade top level navigation: sec-fetch-mode]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Https downgrade-upgrade script => No headers: sec-fetch-site]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Https downgrade-upgrade iframe: sec-fetch-site]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Https downgrade-upgrade iframe: sec-fetch-mode]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Https downgrade-upgrade script => No headers: sec-fetch-mode]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Https downgrade-upgrade top level navigation: sec-fetch-site]
|
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Https downgrade-upgrade script => No headers: sec-fetch-dest]
|
[Https downgrade-upgrade script => No headers: sec-fetch-dest]
|
||||||
|
@ -33,6 +9,30 @@
|
||||||
[Https downgrade-upgrade iframe: sec-fetch-dest]
|
[Https downgrade-upgrade iframe: sec-fetch-dest]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Https downgrade-upgrade top level navigation: sec-fetch-dest]
|
[Https downgrade-upgrade script => No headers: sec-fetch-site]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Https downgrade-upgrade iframe: sec-fetch-site]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Https downgrade-upgrade object]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Https downgrade-upgrade top level navigation: sec-fetch-mode]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Https downgrade-upgrade script => No headers: sec-fetch-mode]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Https downgrade-upgrade fetch() api]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Https downgrade-upgrade iframe: sec-fetch-mode]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Https downgrade-upgrade top level navigation: sec-fetch-site]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Https downgrade-upgrade embed]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[multiple-redirect-same-site.tentative.https.sub.html]
|
[multiple-redirect-same-site.https.sub.html]
|
||||||
[undefined: sec-fetch-mode]
|
[undefined: sec-fetch-mode]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[redirect-http-upgrade-prefetch.optional.tentative.sub.html]
|
[redirect-http-upgrade-prefetch.optional.sub.html]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[Http upgrade prefetch => No headers]
|
[Http upgrade prefetch => No headers]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
|
@ -1,17 +1,17 @@
|
||||||
[redirect-http-upgrade.tentative.sub.html]
|
[redirect-http-upgrade.sub.html]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
[Http upgrade embed]
|
[Http upgrade embed]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Http upgrade object]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
[Http upgrade fetch() api]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
[Http upgrade top level navigation: sec-fetch-site]
|
[Http upgrade top level navigation: sec-fetch-site]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Http upgrade iframe: sec-fetch-dest]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Http upgrade script => No headers: sec-fetch-dest]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
[Http upgrade script => No headers: sec-fetch-mode]
|
[Http upgrade script => No headers: sec-fetch-mode]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
@ -24,15 +24,15 @@
|
||||||
[Http upgrade top level navigation: sec-fetch-mode]
|
[Http upgrade top level navigation: sec-fetch-mode]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Http upgrade script => No headers: sec-fetch-site]
|
[Http upgrade object]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
[Http upgrade script => No headers: sec-fetch-dest]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Http upgrade iframe: sec-fetch-dest]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Http upgrade top level navigation: sec-fetch-dest]
|
[Http upgrade top level navigation: sec-fetch-dest]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[Http upgrade script => No headers: sec-fetch-site]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Http upgrade fetch() api]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[redirect-https-downgrade-prefetch.optional.tentative.sub.html]
|
[redirect-https-downgrade-prefetch.optional.sub.html]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[Https downgrade prefetch => No headers]
|
[Https downgrade prefetch => No headers]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
|
@ -1,8 +1,5 @@
|
||||||
[redirect-https-downgrade.tentative.sub.html]
|
[redirect-https-downgrade.sub.html]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
[redirect-https-downgrade]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Https downgrade fetch() api]
|
[Https downgrade fetch() api]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[same-origin-redirect.tentative.https.sub.html]
|
[same-origin-redirect.https.sub.html]
|
||||||
[Same-Origin -> Cross-Site redirect: sec-fetch-site]
|
[Same-Origin -> Cross-Site redirect: sec-fetch-site]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[same-site-redirect.tentative.https.sub.html]
|
[same-site-redirect.https.sub.html]
|
||||||
[Same-Site -> Same-Site redirect: sec-fetch-dest]
|
[Same-Site -> Same-Site redirect: sec-fetch-dest]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[report.https.sub.html]
|
||||||
|
expected: TIMEOUT
|
|
@ -1,2 +0,0 @@
|
||||||
[report.tentative.https.sub.html]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -1,4 +1,4 @@
|
||||||
[script.tentative.https.sub.html]
|
[script.https.sub.html]
|
||||||
[Cross-site script: sec-fetch-mode]
|
[Cross-site script: sec-fetch-mode]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[serviceworker.tentative.https.sub.html]
|
[serviceworker.https.sub.html]
|
||||||
[metadata for service worker scripts]
|
[metadata for service worker scripts]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
[sharedworker.https.sub.html]
|
||||||
|
expected: ERROR
|
|
@ -1,5 +0,0 @@
|
||||||
[sharedworker.tentative.https.sub.html]
|
|
||||||
expected: ERROR
|
|
||||||
[sharedworker]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[style.tentative.https.sub.html]
|
[style.https.sub.html]
|
||||||
[Cross-Site style: sec-fetch-dest]
|
[Cross-Site style: sec-fetch-dest]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[track.tentative.https.sub.html]
|
[track.https.sub.html]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
[Same-Site track]
|
[Same-Site track]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
|
@ -1,4 +1,4 @@
|
||||||
[trailing-dot.tentative.https.sub.html]
|
[trailing-dot.https.sub.html]
|
||||||
[Fetching a resource from a cross-site host, spelled with a trailing dot.]
|
[Fetching a resource from a cross-site host, spelled with a trailing dot.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[worker.tentative.https.sub.html]
|
[worker.https.sub.html]
|
||||||
[undefined: sec-fetch-mode]
|
[undefined: sec-fetch-mode]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[xslt.https.sub.html]
|
||||||
|
[Same-Origin xslt]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
[xslt.tentative.https.sub.html]
|
|
||||||
[Same-Origin xslt]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Cross-site xslt]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
||||||
[Same-site xslt]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -8,3 +8,6 @@
|
||||||
[X-Content-Type-Options%3A%20nosniff%0C]
|
[X-Content-Type-Options%3A%20nosniff%0C]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Embedded credentials are treated as network errors in frames.]
|
[Embedded credentials are treated as network errors in frames.]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
[Embedded credentials are treated as network errors in new windows.]
|
[Embedded credentials are treated as network errors in new windows.]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
@ -13,3 +13,9 @@
|
||||||
[Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.]
|
[Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[Embedded credentials matching the top-level are not treated as network errors for same-origin URLs.]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
[Embedded credentials matching the top-level are not treated as network errors for relative URLs.]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
[top-level-data-url.window.html]
|
||||||
|
[Navigating a popup using window.open("resources/redirect.py?location=data%3Atext%2Fhtml%2C...", "", "opener")]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Navigating a popup using window.open("data:text/html,...", "", "undefined")]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Navigating a popup using window.open("resources/redirect.py?location=data%3Atext%2Fhtml%2C...", "", "undefined")]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[Navigating a popup using window.open("data:text/html,...", "", "opener")]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[traverse_the_history_1.html]
|
||||||
|
[Multiple history traversals from the same task]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[traverse_the_history_4.html]
|
|
||||||
[Multiple history traversals, last would be aborted]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[document-cookie.html]
|
||||||
|
[document.cookie 2]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,20 +1,16 @@
|
||||||
[supported-elements.html]
|
[supported-elements.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[Contenteditable element should support autofocus]
|
[Contenteditable element should support autofocus]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Element with tabindex should support autofocus]
|
[Element with tabindex should support autofocus]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Area element should support autofocus]
|
[Area element should support autofocus]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Host element with delegatesFocus should support autofocus]
|
[Host element with delegatesFocus should support autofocus]
|
||||||
expected: NOTRUN
|
expected: FAIL
|
||||||
|
|
||||||
[Non-HTMLElement should not support autofocus]
|
|
||||||
expected: NOTRUN
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[iframe_sandbox_popups_escaping-1.html]
|
[iframe_sandbox_popups_escaping-1.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
expected: CRASH
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
[iframe_sandbox_popups_escaping-3.html]
|
[iframe_sandbox_popups_escaping-3.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||||
expected: FAIL
|
expected: TIMEOUT
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
[iframe_sandbox_popups_nonescaping-3.html]
|
[iframe_sandbox_popups_nonescaping-3.html]
|
||||||
type: testharness
|
type: testharness
|
||||||
|
expected: TIMEOUT
|
||||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||||
expected: FAIL
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[original-crossorigin-applied.sub.html]
|
|
||||||
[Test that when deferred image is loaded, it uses the crossorigin attribute specified at parse time.]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
[form-double-submit.html]
|
||||||
|
[default submit action should supersede onclick submit()]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
[077.html]
|
|
||||||
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
|
|
||||||
expected: FAIL
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
[script-onerror-insertion-point-2.html]
|
|
||||||
expected: TIMEOUT
|
|
|
@ -1,10 +1,9 @@
|
||||||
[promise-job-entry.html]
|
[promise-job-entry.html]
|
||||||
expected: TIMEOUT
|
|
||||||
[Fulfillment handler on fulfilled promise]
|
[Fulfillment handler on fulfilled promise]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Rejection handler on pending-then-rejected promise]
|
[Rejection handler on pending-then-rejected promise]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
[Sanity check: this all works as expected with no promises involved]
|
[Sanity check: this all works as expected with no promises involved]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
@ -16,5 +15,5 @@
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
[Fulfillment handler on pending-then-fulfilled promise]
|
[Fulfillment handler on pending-then-fulfilled promise]
|
||||||
expected: TIMEOUT
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -171,6 +171,15 @@
|
||||||
[Missing imports argument]
|
[Missing imports argument]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Importing table with an incorrectly-typed value: WebAssembly.Table object (too large)]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Importing a global with an incorrectly-typed value: WebAssembly.Global object (wrong value type)]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Importing memory with an incorrectly-typed value: WebAssembly.Memory object (too large)]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
||||||
[instantiateStreaming-bad-imports.any.worker.html]
|
[instantiateStreaming-bad-imports.any.worker.html]
|
||||||
expected: TIMEOUT
|
expected: TIMEOUT
|
||||||
|
@ -339,6 +348,15 @@
|
||||||
[Importing memory with an incorrectly-typed value: ""]
|
[Importing memory with an incorrectly-typed value: ""]
|
||||||
expected: NOTRUN
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Importing table with an incorrectly-typed value: WebAssembly.Table object (too large)]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Importing a global with an incorrectly-typed value: WebAssembly.Global object (wrong value type)]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
[Importing memory with an incorrectly-typed value: WebAssembly.Memory object (too large)]
|
||||||
|
expected: NOTRUN
|
||||||
|
|
||||||
|
|
||||||
[instantiateStreaming-bad-imports.any.sharedworker.html]
|
[instantiateStreaming-bad-imports.any.sharedworker.html]
|
||||||
expected: ERROR
|
expected: ERROR
|
||||||
|
|
|
@ -116,3 +116,9 @@
|
||||||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1419 more errors.\n\tMax AbsError of 9.9939854908734560e-1 at index of 38059.\n\t[38059\]\t9.8367528989911079e-3\t-9.8956179618835449e-1\t9.9939854908734560e-1\t1.0099405140102222e+0\t3.8985999999999999e-3\n\tMax RelError of 1.0132291292202573e+0 at index of 151.\n]
|
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1419 more errors.\n\tMax AbsError of 9.9939854908734560e-1 at index of 38059.\n\t[38059\]\t9.8367528989911079e-3\t-9.8956179618835449e-1\t9.9939854908734560e-1\t1.0099405140102222e+0\t3.8985999999999999e-3\n\tMax RelError of 1.0132291292202573e+0 at index of 151.\n]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
[X SNR (19.495586650996575 dB) is not greater than or equal to 65.737. Got 19.495586650996575.]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[30\]\t1.9724091887474060e-1\t9.5236867666244507e-1\t7.5512775778770447e-1\t7.9289436569253091e-1\t3.8985999999999999e-3\n\t[60\]\t-2.2450675070285797e-1\t-5.8084785938262939e-1\t3.5634110867977142e-1\t6.1348441407448528e-1\t3.8985999999999999e-3\n\t[90\]\t-3.7808802723884583e-1\t-5.9811043739318848e-1\t2.2002241015434265e-1\t3.6786251568070089e-1\t3.8985999999999999e-3\n\t[120\]\t7.6881676912307739e-1\t9.4563448429107666e-1\t1.7681771516799927e-1\t1.8698315057805445e-1\t3.8985999999999999e-3\n\t[151\]\t5.4644601186737418e-4\t-4.1306272149085999e-2\t4.1852718160953373e-2\t1.0132291292202573e+0\t3.8985999999999999e-3\n\t...and 1419 more errors.\n\tMax AbsError of 9.8956179618835449e-1 at index of 38059.\n\t[38059\]\t4.8494413328898828e-34\t-9.8956179618835449e-1\t9.8956179618835449e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\tMax RelError of 1.0132291292202573e+0 at index of 151.\n]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[017.html]
|
||||||
|
expected: TIMEOUT
|
||||||
|
[origin of the script that invoked the method, about:blank]
|
||||||
|
expected: TIMEOUT
|
||||||
|
|
7
tests/wpt/metadata/workers/abrupt-completion.html.ini
Normal file
7
tests/wpt/metadata/workers/abrupt-completion.html.ini
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[abrupt-completion.html]
|
||||||
|
[DedicatedWorker should correctly handle abrupt completion]
|
||||||
|
expected: FAIL
|
||||||
|
|
||||||
|
[SharedWorker should correctly handle abrupt completion]
|
||||||
|
expected: FAIL
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
[005.html]
|
[005.html]
|
||||||
expected: ERROR
|
|
||||||
[dedicated worker in shared worker in dedicated worker]
|
[dedicated worker in shared worker in dedicated worker]
|
||||||
expected: FAIL
|
expected: FAIL
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
[send-data-sharedarraybuffer.any.html]
|
||||||
|
expected: CRASH
|
||||||
|
|
||||||
|
[send-data-sharedarraybuffer.any.worker.html]
|
||||||
|
expected: CRASH
|
|
@ -20,7 +20,7 @@ var t = async_test("");
|
||||||
_addTest(function(canvas, ctx) {
|
_addTest(function(canvas, ctx) {
|
||||||
|
|
||||||
var img = document.getElementById('broken.png');
|
var img = document.getElementById('broken.png');
|
||||||
assert_throws_dom("INVALID_STATE_ERR", function() { ctx.createPattern(img, 'repeat'); });
|
_assertSame(ctx.createPattern(img, 'repeat'), null, "ctx.createPattern(img, 'repeat')", "null");
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -2903,7 +2903,7 @@
|
||||||
- broken.png
|
- broken.png
|
||||||
code: |
|
code: |
|
||||||
var img = document.getElementById('broken.png');
|
var img = document.getElementById('broken.png');
|
||||||
@assert throws INVALID_STATE_ERR ctx.createPattern(img, 'repeat');
|
@assert ctx.createPattern(img, 'repeat') === null;
|
||||||
|
|
||||||
- name: 2d.pattern.repeat.empty
|
- name: 2d.pattern.repeat.empty
|
||||||
testing:
|
testing:
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset=utf-8>
|
||||||
|
<title>Clipboard API on detached iframe</title>
|
||||||
|
<link rel='help' href='https://w3c.github.io/clipboard-apis/#async-clipboard-api'>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
|
||||||
|
<iframe id="iframe"></iframe>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
promise_test(async () => {
|
||||||
|
const iframe = document.getElementById('iframe');
|
||||||
|
const iframeNavigator = iframe.contentWindow.navigator;
|
||||||
|
assert_not_equals(navigator.clipboard, null,
|
||||||
|
"parent frame's clipboard should exist with iframe attached");
|
||||||
|
assert_not_equals(iframeNavigator.clipboard, null,
|
||||||
|
"attached child iframe's clipboard should exist");
|
||||||
|
|
||||||
|
iframe.parentNode.removeChild(iframe);
|
||||||
|
assert_not_equals(navigator.clipboard, null,
|
||||||
|
"parent frame's clipboard should exist with iframe detached");
|
||||||
|
assert_equals(iframeNavigator.clipboard, null,
|
||||||
|
"detached child iframe's clipboard should not exist");
|
||||||
|
}, 'Verify navigator.clipboard attached only on attached frames');
|
||||||
|
</script>
|
|
@ -0,0 +1,34 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset=utf-8>
|
||||||
|
<title>navigator.clipboard read on detaching iframe</title>
|
||||||
|
<link rel='help' href='https://w3c.github.io/clipboard-apis/#async-clipboard-api'>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<iframe id="iframe"></iframe>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
// Note: This tests proper behavior on a detaching iframe. text/plain is
|
||||||
|
// chosen for simplicity, and the test should fail the same way no matter what
|
||||||
|
// the input type is.
|
||||||
|
const iframe = document.getElementById('iframe');
|
||||||
|
const iframeClipboard = iframe.contentWindow.navigator.clipboard;
|
||||||
|
const blobInput = new Blob(["test string"], {type: 'text/plain'});
|
||||||
|
const clipboardItemInput = new ClipboardItem({'text/plain': blobInput});
|
||||||
|
// Clipboard API must only be available in focused documents.
|
||||||
|
// reference: https://www.w3.org/TR/clipboard-apis/#privacy-async
|
||||||
|
iframe.focus();
|
||||||
|
|
||||||
|
// An iframe detaching while writing to the clipboard should fail, but not
|
||||||
|
// crash. Note the lack of await here, meaning that the iframe will detach
|
||||||
|
// while the read operation is running.
|
||||||
|
iframeClipboard.read([clipboardItemInput]);
|
||||||
|
iframe.parentNode.removeChild(iframe);
|
||||||
|
}, "Verify read fails on detaching iframe");
|
||||||
|
</script>
|
||||||
|
<p>
|
||||||
|
Note: This is a manual test because it writes/reads to the shared system
|
||||||
|
clipboard and thus cannot be run async with other tests that might interact
|
||||||
|
with the clipboard.
|
||||||
|
</p>
|
|
@ -0,0 +1,34 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset=utf-8>
|
||||||
|
<title>navigator.clipboard write on detaching iframe</title>
|
||||||
|
<link rel='help' href='https://w3c.github.io/clipboard-apis/#async-clipboard-api'>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<iframe id="iframe"></iframe>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
// Note: This tests proper behavior on a detaching iframe. text/plain is
|
||||||
|
// chosen for simplicity, and the test should fail the same way no matter what
|
||||||
|
// the input type is.
|
||||||
|
const iframe = document.getElementById('iframe');
|
||||||
|
const iframeClipboard = iframe.contentWindow.navigator.clipboard;
|
||||||
|
const blobInput = new Blob(["test string"], {type: 'text/plain'});
|
||||||
|
const clipboardItemInput = new ClipboardItem({'text/plain': blobInput});
|
||||||
|
// Clipboard API must only be available in focused documents.
|
||||||
|
// reference: https://www.w3.org/TR/clipboard-apis/#privacy-async
|
||||||
|
iframe.focus();
|
||||||
|
|
||||||
|
// An iframe detaching while writing to the clipboard should fail, but not
|
||||||
|
// crash. Note the lack of await here, meaning that the iframe will detach
|
||||||
|
// while the write operation is running.
|
||||||
|
iframeClipboard.write([clipboardItemInput]);
|
||||||
|
iframe.parentNode.removeChild(iframe);
|
||||||
|
}, "Verify write fails on detaching iframe");
|
||||||
|
</script>
|
||||||
|
<p>
|
||||||
|
Note: This is a manual test because it writes/reads to the shared system
|
||||||
|
clipboard and thus cannot be run async with other tests that might interact
|
||||||
|
with the clipboard.
|
||||||
|
</p>
|
|
@ -0,0 +1,42 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset=utf-8>
|
||||||
|
<title>navigator.clipboard read and write on detached iframe</title>
|
||||||
|
<link rel='help' href='https://w3c.github.io/clipboard-apis/#async-clipboard-api'>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<iframe id="iframe"></iframe>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
// Note: This tests proper detached iframe behavior. text/plain is chosen for
|
||||||
|
// simplicity, and the test should fail the same way no matter what the input
|
||||||
|
// type is.
|
||||||
|
const iframe = document.getElementById('iframe');
|
||||||
|
const iframeClipboard = iframe.contentWindow.navigator.clipboard;
|
||||||
|
const blobInput = new Blob(["test string"], {type: 'text/plain'});
|
||||||
|
const clipboardItemInput = new ClipboardItem({'text/plain': blobInput});
|
||||||
|
// Clipboard API must only be available in focused documents.
|
||||||
|
// reference: https://www.w3.org/TR/clipboard-apis/#privacy-async
|
||||||
|
iframe.focus();
|
||||||
|
|
||||||
|
// Writing and reading should succeed on same-origin iframes.
|
||||||
|
await iframeClipboard.write([clipboardItemInput]);
|
||||||
|
const readResultAttached = await iframeClipboard.read();
|
||||||
|
assert_not_equals(readResultAttached, undefined);
|
||||||
|
assert_equals(readResultAttached.length, 1,
|
||||||
|
"attached iframes should be able to read and write normally");
|
||||||
|
|
||||||
|
iframe.parentNode.removeChild(iframe);
|
||||||
|
// Writing onto a detached iframe's clipboard should fail, but not crash.
|
||||||
|
await iframeClipboard.write([clipboardItemInput]);
|
||||||
|
const readResultDetached = await iframeClipboard.read();
|
||||||
|
assert_equals(readResultDetached, undefined,
|
||||||
|
"reading from detached iframes should output undefined");
|
||||||
|
}, "Verify read and write fail on detached iframe");
|
||||||
|
</script>
|
||||||
|
<p>
|
||||||
|
Note: This is a manual test because it writes/reads to the shared system
|
||||||
|
clipboard and thus cannot be run async with other tests that might interact
|
||||||
|
with the clipboard.
|
||||||
|
</p>
|
|
@ -0,0 +1,38 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset=utf-8>
|
||||||
|
<title>navigator.clipboard readText and writeText on detached iframe</title>
|
||||||
|
<link rel='help' href='https://w3c.github.io/clipboard-apis/#async-clipboard-api'>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<iframe id="iframe"></iframe>
|
||||||
|
<script>
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
promise_test(async t => {
|
||||||
|
const iframe = document.getElementById('iframe');
|
||||||
|
// Clipboard API must only be available in focused documents.
|
||||||
|
// reference: https://www.w3.org/TR/clipboard-apis/#privacy-async
|
||||||
|
iframe.focus();
|
||||||
|
const iframeClipboard = iframe.contentWindow.navigator.clipboard;
|
||||||
|
|
||||||
|
// Writing and reading should succeed on same-origin iframes.
|
||||||
|
const attachedWriteText = "attached write text"
|
||||||
|
await iframeClipboard.writeText(attachedWriteText);
|
||||||
|
const attachedWriteResult = await iframeClipboard.readText();
|
||||||
|
assert_equals(attachedWriteResult, attachedWriteText,
|
||||||
|
"attached iframes should be able to readText and writeText normally");
|
||||||
|
|
||||||
|
iframe.parentNode.removeChild(iframe);
|
||||||
|
// Writing onto a detached iframe's clipboard should fail, but not crash.
|
||||||
|
const detachedWriteText = "detached write text";
|
||||||
|
await iframeClipboard.writeText(detachedWriteText);
|
||||||
|
const readResultDetached = await iframeClipboard.readText();
|
||||||
|
assert_equals(readResultDetached, undefined,
|
||||||
|
"reading from detached iframes should output undefined");
|
||||||
|
}, "Verify readText and writeText fails on detached iframe");
|
||||||
|
</script>
|
||||||
|
<p>
|
||||||
|
Note: This is a manual test because it writes/reads to the shared system
|
||||||
|
clipboard and thus cannot be run async with other tests that might interact
|
||||||
|
with the clipboard.
|
||||||
|
</p>
|
|
@ -47,6 +47,9 @@ project-directory/ (e.g. referrer-policy/)
|
||||||
Note: When the repository already contains generated tests, [remove all generated tests](#removing-all-generated-tests) first.
|
Note: When the repository already contains generated tests, [remove all generated tests](#removing-all-generated-tests) first.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# Install json5 module if needed.
|
||||||
|
pip install --user json5
|
||||||
|
|
||||||
# Generate the test files under gen/ (HTMLs and .headers files).
|
# Generate the test files under gen/ (HTMLs and .headers files).
|
||||||
path/to/common/security-features/tools/generate.py --spec path/to/project-directory/
|
path/to/common/security-features/tools/generate.py --spec path/to/project-directory/
|
||||||
|
|
||||||
|
@ -54,7 +57,9 @@ path/to/common/security-features/tools/generate.py --spec path/to/project-direct
|
||||||
git add path/to/project-directory/gen/ && git commit -m "Add generated tests"
|
git add path/to/project-directory/gen/ && git commit -m "Add generated tests"
|
||||||
```
|
```
|
||||||
|
|
||||||
This will parse the spec JSON (`project-directory/spec.src.json`) and determine which tests to generate (or skip) while using templates.
|
This will parse the spec JSON5 (`project-directory/spec.src.json`) and determine which tests to generate (or skip) while using templates.
|
||||||
|
|
||||||
|
Note: `spec.src.json` is transitioning to JSON5 [#21710](https://github.com/web-platform-tests/wpt/issues/21710).
|
||||||
|
|
||||||
During the generation, the spec is validated by ```common/security-features/tools/spec_validator.py```. This is specially important when you're making changes to `spec.src.json`. Make sure it's a valid JSON (no comments or trailing commas). The validator reports specific errors (missing keys etc.), if any.
|
During the generation, the spec is validated by ```common/security-features/tools/spec_validator.py```. This is specially important when you're making changes to `spec.src.json`. Make sure it's a valid JSON (no comments or trailing commas). The validator reports specific errors (missing keys etc.), if any.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
import os, sys, json, re
|
import os, sys, json, json5, re
|
||||||
import collections
|
import collections
|
||||||
|
|
||||||
script_directory = os.path.dirname(os.path.abspath(__file__))
|
script_directory = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
@ -31,7 +31,7 @@ def load_spec_json(path_to_spec):
|
||||||
re_error_location = re.compile('line ([0-9]+) column ([0-9]+)')
|
re_error_location = re.compile('line ([0-9]+) column ([0-9]+)')
|
||||||
with open(path_to_spec, "r") as f:
|
with open(path_to_spec, "r") as f:
|
||||||
try:
|
try:
|
||||||
return json.load(f, object_pairs_hook=collections.OrderedDict)
|
return json5.load(f, object_pairs_hook=collections.OrderedDict)
|
||||||
except ValueError as ex:
|
except ValueError as ex:
|
||||||
print(ex.message)
|
print(ex.message)
|
||||||
match = re_error_location.search(ex.message)
|
match = re_error_location.search(ex.message)
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<div id=log></div>
|
||||||
|
<script>
|
||||||
|
[["meh", ""],
|
||||||
|
["div", ""],
|
||||||
|
["script", ""],
|
||||||
|
["meh", "http://www.w3.org/2000/svg"],
|
||||||
|
["svg", "http://www.w3.org/2000/svg"], ,
|
||||||
|
["script", "http://www.w3.org/2000/svg"]].forEach(([localName, namespace]) => {
|
||||||
|
test(t => {
|
||||||
|
const element = namespace === "" ? document.createElement(localName) : document.createElementNS(namespace, localName);
|
||||||
|
t.add_cleanup(() => element.remove());
|
||||||
|
assert_equals(element.nonce, "", "Initial IDL attribute value");
|
||||||
|
element.setAttribute("nonce", "x");
|
||||||
|
assert_equals(element.nonce, "x", "IDL attribute is modified after content attribute set");
|
||||||
|
assert_equals(element.getAttribute("nonce"), "x", "Content attribute is modified after content attribute set");
|
||||||
|
document.body.appendChild(element);
|
||||||
|
assert_equals(element.nonce, "x", "IDL attribute is unchanged after element insertion");
|
||||||
|
assert_equals(element.getAttribute("nonce"), "", "Content attribute is changed after element insertion");
|
||||||
|
}, `Basic nonce tests for ${localName} in ${namespace === "" ? "HTML" : "SVG"} namespace`);
|
||||||
|
|
||||||
|
test(t => {
|
||||||
|
const element = namespace === "" ? document.createElement(localName) : document.createElementNS(namespace, localName);
|
||||||
|
element.setAttribute("nonce", "x");
|
||||||
|
assert_equals(element.nonce, "x", "IDL attribute is modified after content attribute set");
|
||||||
|
element.removeAttribute("nonce");
|
||||||
|
assert_equals(element.nonce, "", "IDL attribute is empty after content attribute removal");
|
||||||
|
}, `Ensure that removal of content attribute does not affect IDL attribute for ${localName} in ${namespace === "" ? "HTML" : "SVG"} namespace`);
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -0,0 +1 @@
|
||||||
|
Content-Security-Policy: img-src 'none'
|
|
@ -72,6 +72,8 @@
|
||||||
var s = document.createElement('script');
|
var s = document.createElement('script');
|
||||||
s.innerText = script.innerText;
|
s.innerText = script.innerText;
|
||||||
s.nonce = 'abc';
|
s.nonce = 'abc';
|
||||||
|
assert_equals(s.nonce, 'abc');
|
||||||
|
assert_equals(s.getAttribute('nonce'), null);
|
||||||
document.head.appendChild(s);
|
document.head.appendChild(s);
|
||||||
assert_equals(s.nonce, 'abc');
|
assert_equals(s.nonce, 'abc');
|
||||||
assert_equals(s.getAttribute('nonce'), null);
|
assert_equals(s.getAttribute('nonce'), null);
|
||||||
|
@ -119,12 +121,11 @@
|
||||||
#cssTest[nonce=abc] { background: url(/security/resources/abe.png); }
|
#cssTest[nonce=abc] { background: url(/security/resources/abe.png); }
|
||||||
</style>
|
</style>
|
||||||
<script nonce="abc" id="cssTest">
|
<script nonce="abc" id="cssTest">
|
||||||
async_test(t => {
|
test(t => {
|
||||||
requestAnimationFrame(t.step_func_done(_ => {
|
const script = document.querySelector('#cssTest');
|
||||||
var script = document.querySelector('#cssTest');
|
t.add_cleanup(() => script.remove());
|
||||||
var style = getComputedStyle(script);
|
var style = getComputedStyle(script);
|
||||||
assert_equals(style['display'], 'block');
|
assert_equals(style['display'], 'block');
|
||||||
assert_equals(style['background-image'], "url(\"http://{{domains[]}}:{{ports[http][0]}}/security/resources/abe.png\")");
|
assert_equals(style['background-image'], "url(\"http://{{domains[]}}:{{ports[http][0]}}/security/resources/abe.png\")");
|
||||||
}));
|
|
||||||
}, "Nonces leak via CSS side-channels.");
|
}, "Nonces leak via CSS side-channels.");
|
||||||
</script>
|
</script>
|
|
@ -73,6 +73,8 @@
|
||||||
var s = document.createElement('script');
|
var s = document.createElement('script');
|
||||||
s.innerText = script.innerText;
|
s.innerText = script.innerText;
|
||||||
s.nonce = 'abc';
|
s.nonce = 'abc';
|
||||||
|
assert_equals(s.nonce, 'abc');
|
||||||
|
assert_equals(s.getAttribute('nonce'), null);
|
||||||
document.head.appendChild(s);
|
document.head.appendChild(s);
|
||||||
assert_equals(s.nonce, 'abc');
|
assert_equals(s.nonce, 'abc');
|
||||||
assert_equals(s.getAttribute('nonce'), null);
|
assert_equals(s.getAttribute('nonce'), null);
|
||||||
|
@ -160,12 +162,11 @@
|
||||||
#cssTest[nonce=abc] { background: url(/security/resources/abe.png); }
|
#cssTest[nonce=abc] { background: url(/security/resources/abe.png); }
|
||||||
</style>
|
</style>
|
||||||
<script nonce="abc" id="cssTest">
|
<script nonce="abc" id="cssTest">
|
||||||
async_test(t => {
|
test(t => {
|
||||||
requestAnimationFrame(t.step_func_done(_ => {
|
const script = document.querySelector('#cssTest');
|
||||||
var script = document.querySelector('#cssTest');
|
t.add_cleanup(() => script.remove());
|
||||||
var style = getComputedStyle(script);
|
var style = getComputedStyle(script);
|
||||||
assert_equals(style['display'], 'block');
|
assert_equals(style['display'], 'block');
|
||||||
assert_equals(style['background-image'], 'none');
|
assert_equals(style['background-image'], 'none');
|
||||||
}));
|
|
||||||
}, "Nonces don't leak via CSS side-channels.");
|
}, "Nonces don't leak via CSS side-channels.");
|
||||||
</script>
|
</script>
|
|
@ -96,21 +96,3 @@
|
||||||
assert_equals(innerScript.getAttribute('nonce'), 'abc', "Post-insertion content");
|
assert_equals(innerScript.getAttribute('nonce'), 'abc', "Post-insertion content");
|
||||||
}, "createElement.setAttribute.");
|
}, "createElement.setAttribute.");
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- CSS Leakage -->
|
|
||||||
<style>
|
|
||||||
#cssTest { display: block; }
|
|
||||||
#cssTest[nonce=abc] { background: url(/security/resources/abe.png); }
|
|
||||||
</style>
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<script nonce="abc" id="cssTest">
|
|
||||||
async_test(t => {
|
|
||||||
requestAnimationFrame(t.step_func_done(_ => {
|
|
||||||
var script = document.querySelector('#cssTest');
|
|
||||||
var style = getComputedStyle(script);
|
|
||||||
assert_equals(style['display'], 'block');
|
|
||||||
assert_equals(style['background-image'], "url(\"http://{{domains[]}}:{{ports[http][0]}}/security/resources/abe.png\")");
|
|
||||||
}));
|
|
||||||
}, "Nonces don't leak via CSS side-channels.");
|
|
||||||
</script>
|
|
||||||
</svg>
|
|
|
@ -96,21 +96,3 @@
|
||||||
assert_equals(innerScript.getAttribute('nonce'), '', "Post-insertion content");
|
assert_equals(innerScript.getAttribute('nonce'), '', "Post-insertion content");
|
||||||
}, "createElement.setAttribute.");
|
}, "createElement.setAttribute.");
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- CSS Leakage -->
|
|
||||||
<style>
|
|
||||||
#cssTest { display: block; }
|
|
||||||
#cssTest[nonce=abc] { background: url(/security/resources/abe.png); }
|
|
||||||
</style>
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<script nonce="abc" id="cssTest">
|
|
||||||
async_test(t => {
|
|
||||||
requestAnimationFrame(t.step_func_done(_ => {
|
|
||||||
var script = document.querySelector('#cssTest');
|
|
||||||
var style = getComputedStyle(script);
|
|
||||||
assert_equals(style['display'], 'block');
|
|
||||||
assert_equals(style['background-image'], 'none');
|
|
||||||
}));
|
|
||||||
}, "Nonces don't leak via CSS side-channels.");
|
|
||||||
</script>
|
|
||||||
</svg>
|
|
|
@ -8,14 +8,14 @@
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url(/fonts/Revalia.woff) format('woff');
|
src: url(/fonts/Revalia.woff) format('woff');
|
||||||
unicode-range: U+0061;
|
unicode-range: U+0061, U+0020;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'deep-b-only';
|
font-family: 'deep-b-only';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url(/fonts/AD.woff) format('woff');
|
src: url(/fonts/AD.woff) format('woff');
|
||||||
unicode-range: U+0062;
|
unicode-range: U+0062, U+0020;
|
||||||
}
|
}
|
||||||
|
|
||||||
div {
|
div {
|
||||||
|
|
|
@ -8,14 +8,14 @@
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url(/fonts/Revalia.woff) format('woff');
|
src: url(/fonts/Revalia.woff) format('woff');
|
||||||
unicode-range: U+0061;
|
unicode-range: U+0061, U+0020;
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'deep-b-only';
|
font-family: 'deep-b-only';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url(/fonts/AD.woff) format('woff');
|
src: url(/fonts/AD.woff) format('woff');
|
||||||
unicode-range: U+0062;
|
unicode-range: U+0062, U+0020;
|
||||||
}
|
}
|
||||||
|
|
||||||
div {
|
div {
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
src: url(/fonts/Revalia.woff) format('woff');
|
src: url(/fonts/Revalia.woff) format('woff');
|
||||||
unicode-range: U+0061;
|
unicode-range: U+0061, U+0020;
|
||||||
}
|
}
|
||||||
|
|
||||||
div {
|
div {
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
font-family: base;
|
font-family: base;
|
||||||
}
|
}
|
||||||
.ref .amp {
|
.ref .amp {
|
||||||
font-family: swoosh;
|
font-family: swoosh, base;
|
||||||
}
|
}
|
||||||
div {
|
div {
|
||||||
font-size: 5em;
|
font-size: 5em;
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
font-family: base;
|
font-family: base;
|
||||||
}
|
}
|
||||||
.ref .amp {
|
.ref .amp {
|
||||||
font-family: swoosh;
|
font-family: swoosh, base;
|
||||||
}
|
}
|
||||||
div {
|
div {
|
||||||
font-size: 5em;
|
font-size: 5em;
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<link rel="help" href="https://drafts.csswg.org/css-grid/#overlarge-grids">
|
||||||
|
<link rel="author" title="Tab Atkins-Bittner" href="https://xanthir.com/contact">
|
||||||
|
<link rel="author" title="Elika J Etemad" href="http://inkedblade.net/contact">
|
||||||
|
<meta name="flags" content="should">
|
||||||
|
<script src="/resources/testharness.js"></script>
|
||||||
|
<script src="/resources/testharnessreport.js"></script>
|
||||||
|
<script src="../../support/computed-testcommon.js"></script>
|
||||||
|
<div id=target>
|
||||||
|
<div id=child1></div>
|
||||||
|
<div id=child2></div>
|
||||||
|
</div>
|
||||||
|
<style>
|
||||||
|
#target {
|
||||||
|
display: grid;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
const target = document.querySelector("#target");
|
||||||
|
const child1 = document.querySelector("#child1");
|
||||||
|
const child2 = document.querySelector("#child2");
|
||||||
|
|
||||||
|
test(()=>{
|
||||||
|
target.style.gridTemplateRows = "repeat(9999, 1px)";
|
||||||
|
target.style.gridTemplateColumns = "repeat(9999, 1px)";
|
||||||
|
|
||||||
|
const height = getComputedStyle(target).height;
|
||||||
|
const width = getComputedStyle(target).width;
|
||||||
|
|
||||||
|
assert_equals(height, "9999px", "repeat(9999, 1px) should make grid height 9999px");
|
||||||
|
assert_equals(width, "9999px", "repeat(9999, 1px) should make grid width 9999px");
|
||||||
|
|
||||||
|
target.removeAttribute('style');
|
||||||
|
}, "repeat(9999) should be supported in both axises");
|
||||||
|
|
||||||
|
test(()=>{
|
||||||
|
// Start from no explicit grid, so only implicit tracks happen
|
||||||
|
target.style.gridAutoRows = "1px";
|
||||||
|
target.style.gridAutoColumns = "1px";
|
||||||
|
|
||||||
|
child1.style.gridRowEnd = "10000";
|
||||||
|
child1.style.gridColumnEnd = "10000";
|
||||||
|
|
||||||
|
child2.style.gridRowStart = "-10000";
|
||||||
|
child2.style.gridColumnStart = "-10000";
|
||||||
|
|
||||||
|
const height = getComputedStyle(target).height;
|
||||||
|
const width = getComputedStyle(target).width;
|
||||||
|
|
||||||
|
assert_equals(height, "19998px", "Positioning children at lines -10k and 10k should generate 19998 implicit 1px tracks.");
|
||||||
|
assert_equals(width, "19998px", "Positioning children at lines -10k and 10k should generate 19998 implicit 1px tracks.");
|
||||||
|
|
||||||
|
target.removeAttribute('style');
|
||||||
|
child1.removeAttribute('style');
|
||||||
|
child2.removeAttribute('style');
|
||||||
|
}, "Implicit grid should support lines [-10k, 10k].");
|
||||||
|
</script>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue