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]
|
||||
expected: FAIL
|
||||
|
||||
[looks up handleEvent method on every event dispatch]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -21,6 +21,3 @@
|
|||
[test the top of layer]
|
||||
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 ]
|
||||
expected: NOTRUN
|
||||
|
||||
[<iframe>: separate response Content-Type: text/html;" text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[<iframe>: separate response Content-Type: text/plain */*]
|
||||
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
|
||||
|
||||
|
|
|
@ -53,3 +53,9 @@
|
|||
[combined text/javascript ]
|
||||
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
|
||||
[Cross-Site embed]
|
||||
expected: NOTRUN
|
||||
|
||||
[Same-Site embed]
|
||||
expected: NOTRUN
|
||||
|
||||
[Same-Origin embed]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Wrapper: Navigate to cross-site embed]
|
||||
expected: NOTRUN
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[fetch-preflight.tentative.https.sub.html]
|
||||
[fetch-preflight.https.sub.html]
|
||||
[Same-site fetch with preflight]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[fetch.tentative.sub.html]
|
||||
[fetch.sub.html]
|
||||
[http->https fetch (cross-scheme => cross-site): sec-fetch-dest]
|
||||
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
|
||||
[back to same-origin-initiated navigation]
|
||||
expected: TIMEOUT
|
||||
|
||||
[back to same-site-initiated navigation]
|
||||
expected: TIMEOUT
|
||||
|
||||
[back to cross-site-initiated navigation]
|
||||
expected: FAIL
|
||||
|
||||
[back to cross-site-initiated navigation 1: sec-fetch-site]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -18,6 +12,9 @@
|
|||
[back to same-site-initiated navigation 1: sec-fetch-dest]
|
||||
expected: FAIL
|
||||
|
||||
[back to same-origin-initiated navigation]
|
||||
expected: TIMEOUT
|
||||
|
||||
[back to cross-site-initiated navigation 1: sec-fetch-dest]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -30,6 +27,9 @@
|
|||
[back to same-origin-initiated navigation 1: sec-fetch-mode]
|
||||
expected: FAIL
|
||||
|
||||
[back to cross-site-initiated navigation]
|
||||
expected: FAIL
|
||||
|
||||
[back to same-site-initiated navigation 1: sec-fetch-site]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[iframe.tentative.sub.html]
|
||||
[iframe.sub.html]
|
||||
[Secure, cross-site (cross-scheme, same-host) iframe: sec-fetch-dest]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[img.tentative.https.sub.html]
|
||||
[img.https.sub.html]
|
||||
[Cross-site image: sec-fetch-mode]
|
||||
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
|
||||
[Same-Origin object]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +1,4 @@
|
|||
[prefetch.tentative.https.sub.html]
|
||||
[prefetch.https.sub.html]
|
||||
expected: TIMEOUT
|
||||
[<link rel='prefetch' href='https://www.web-platform.test:8443/...'>]
|
||||
expected: TIMEOUT
|
|
@ -1,4 +1,4 @@
|
|||
[preload.tentative.https.sub.html]
|
||||
[preload.https.sub.html]
|
||||
expected: TIMEOUT
|
||||
[<link rel='preload' as='fetch' href='https://web-platform.test:8443/...'>]
|
||||
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]
|
||||
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]
|
||||
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
|
||||
[Https downgrade-upgrade prefetch => No headers]
|
||||
expected: TIMEOUT
|
|
@ -1,30 +1,6 @@
|
|||
[multiple-redirect-https-downgrade-upgrade.tentative.sub.html]
|
||||
[multiple-redirect-https-downgrade-upgrade.sub.html]
|
||||
expected: ERROR
|
||||
[Https downgrade-upgrade object]
|
||||
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]
|
||||
[Https downgrade-upgrade top level navigation: sec-fetch-dest]
|
||||
expected: FAIL
|
||||
|
||||
[Https downgrade-upgrade script => No headers: sec-fetch-dest]
|
||||
|
@ -33,6 +9,30 @@
|
|||
[Https downgrade-upgrade iframe: sec-fetch-dest]
|
||||
expected: FAIL
|
||||
|
||||
[Https downgrade-upgrade top level navigation: sec-fetch-dest]
|
||||
[Https downgrade-upgrade script => No headers: sec-fetch-site]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[redirect-http-upgrade-prefetch.optional.tentative.sub.html]
|
||||
[redirect-http-upgrade-prefetch.optional.sub.html]
|
||||
expected: TIMEOUT
|
||||
[Http upgrade prefetch => No headers]
|
||||
expected: TIMEOUT
|
|
@ -1,17 +1,17 @@
|
|||
[redirect-http-upgrade.tentative.sub.html]
|
||||
[redirect-http-upgrade.sub.html]
|
||||
expected: ERROR
|
||||
[Http upgrade embed]
|
||||
expected: TIMEOUT
|
||||
|
||||
[Http upgrade object]
|
||||
expected: NOTRUN
|
||||
|
||||
[Http upgrade fetch() api]
|
||||
expected: NOTRUN
|
||||
|
||||
[Http upgrade top level navigation: sec-fetch-site]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
||||
|
@ -24,15 +24,15 @@
|
|||
[Http upgrade top level navigation: sec-fetch-mode]
|
||||
expected: FAIL
|
||||
|
||||
[Http upgrade script => No headers: sec-fetch-site]
|
||||
expected: FAIL
|
||||
|
||||
[Http upgrade script => No headers: sec-fetch-dest]
|
||||
expected: FAIL
|
||||
|
||||
[Http upgrade iframe: sec-fetch-dest]
|
||||
expected: FAIL
|
||||
[Http upgrade object]
|
||||
expected: NOTRUN
|
||||
|
||||
[Http upgrade top level navigation: sec-fetch-dest]
|
||||
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
|
||||
[Https downgrade prefetch => No headers]
|
||||
expected: TIMEOUT
|
|
@ -1,8 +1,5 @@
|
|||
[redirect-https-downgrade.tentative.sub.html]
|
||||
[redirect-https-downgrade.sub.html]
|
||||
expected: ERROR
|
||||
[redirect-https-downgrade]
|
||||
expected: FAIL
|
||||
|
||||
[Https downgrade fetch() api]
|
||||
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]
|
||||
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]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[serviceworker.tentative.https.sub.html]
|
||||
[serviceworker.https.sub.html]
|
||||
[metadata for service worker scripts]
|
||||
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]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[track.tentative.https.sub.html]
|
||||
[track.https.sub.html]
|
||||
expected: TIMEOUT
|
||||
[Same-Site track]
|
||||
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.]
|
||||
expected: FAIL
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
[worker.tentative.https.sub.html]
|
||||
[worker.https.sub.html]
|
||||
[undefined: sec-fetch-mode]
|
||||
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]
|
||||
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
|
||||
|
||||
[Embedded credentials are treated as network errors in frames.]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
||||
[Embedded credentials are treated as network errors in new windows.]
|
||||
expected: FAIL
|
||||
|
@ -13,3 +13,9 @@
|
|||
[Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.]
|
||||
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]
|
||||
expected: TIMEOUT
|
||||
[Contenteditable element should support autofocus]
|
||||
expected: FAIL
|
||||
|
||||
[Element with tabindex should support autofocus]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus including no focusable descendants should be skipped]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Area element should support autofocus]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
[Host element with delegatesFocus should support autofocus]
|
||||
expected: NOTRUN
|
||||
|
||||
[Non-HTMLElement should not support autofocus]
|
||||
expected: NOTRUN
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[iframe_sandbox_popups_escaping-1.html]
|
||||
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]
|
||||
expected: TIMEOUT
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
[iframe_sandbox_popups_escaping-3.html]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[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]
|
||||
type: testharness
|
||||
expected: TIMEOUT
|
||||
[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]
|
||||
expected: TIMEOUT
|
||||
[Fulfillment handler on fulfilled promise]
|
||||
expected: FAIL
|
||||
|
||||
[Rejection handler on pending-then-rejected promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
[Sanity check: this all works as expected with no promises involved]
|
||||
expected: FAIL
|
||||
|
@ -16,5 +15,5 @@
|
|||
expected: FAIL
|
||||
|
||||
[Fulfillment handler on pending-then-fulfilled promise]
|
||||
expected: TIMEOUT
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -171,6 +171,15 @@
|
|||
[Missing imports argument]
|
||||
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]
|
||||
expected: TIMEOUT
|
||||
|
@ -339,6 +348,15 @@
|
|||
[Importing memory with an incorrectly-typed value: ""]
|
||||
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]
|
||||
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]
|
||||
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]
|
||||
expected: ERROR
|
||||
[dedicated worker in shared worker in dedicated worker]
|
||||
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) {
|
||||
|
||||
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
|
||||
code: |
|
||||
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
|
||||
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.
|
||||
|
||||
```bash
|
||||
# Install json5 module if needed.
|
||||
pip install --user json5
|
||||
|
||||
# Generate the test files under gen/ (HTMLs and .headers files).
|
||||
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"
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from __future__ import print_function
|
||||
|
||||
import os, sys, json, re
|
||||
import os, sys, json, json5, re
|
||||
import collections
|
||||
|
||||
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]+)')
|
||||
with open(path_to_spec, "r") as f:
|
||||
try:
|
||||
return json.load(f, object_pairs_hook=collections.OrderedDict)
|
||||
return json5.load(f, object_pairs_hook=collections.OrderedDict)
|
||||
except ValueError as ex:
|
||||
print(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');
|
||||
s.innerText = script.innerText;
|
||||
s.nonce = 'abc';
|
||||
assert_equals(s.nonce, 'abc');
|
||||
assert_equals(s.getAttribute('nonce'), null);
|
||||
document.head.appendChild(s);
|
||||
assert_equals(s.nonce, 'abc');
|
||||
assert_equals(s.getAttribute('nonce'), null);
|
||||
|
@ -119,12 +121,11 @@
|
|||
#cssTest[nonce=abc] { background: url(/security/resources/abe.png); }
|
||||
</style>
|
||||
<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\")");
|
||||
}));
|
||||
test(t => {
|
||||
const script = document.querySelector('#cssTest');
|
||||
t.add_cleanup(() => script.remove());
|
||||
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 leak via CSS side-channels.");
|
||||
</script>
|
|
@ -73,6 +73,8 @@
|
|||
var s = document.createElement('script');
|
||||
s.innerText = script.innerText;
|
||||
s.nonce = 'abc';
|
||||
assert_equals(s.nonce, 'abc');
|
||||
assert_equals(s.getAttribute('nonce'), null);
|
||||
document.head.appendChild(s);
|
||||
assert_equals(s.nonce, 'abc');
|
||||
assert_equals(s.getAttribute('nonce'), null);
|
||||
|
@ -160,12 +162,11 @@
|
|||
#cssTest[nonce=abc] { background: url(/security/resources/abe.png); }
|
||||
</style>
|
||||
<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');
|
||||
}));
|
||||
test(t => {
|
||||
const script = document.querySelector('#cssTest');
|
||||
t.add_cleanup(() => script.remove());
|
||||
var style = getComputedStyle(script);
|
||||
assert_equals(style['display'], 'block');
|
||||
assert_equals(style['background-image'], 'none');
|
||||
}, "Nonces don't leak via CSS side-channels.");
|
||||
</script>
|
|
@ -96,21 +96,3 @@
|
|||
assert_equals(innerScript.getAttribute('nonce'), 'abc', "Post-insertion content");
|
||||
}, "createElement.setAttribute.");
|
||||
</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");
|
||||
}, "createElement.setAttribute.");
|
||||
</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-weight: 400;
|
||||
src: url(/fonts/Revalia.woff) format('woff');
|
||||
unicode-range: U+0061;
|
||||
unicode-range: U+0061, U+0020;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'deep-b-only';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(/fonts/AD.woff) format('woff');
|
||||
unicode-range: U+0062;
|
||||
unicode-range: U+0062, U+0020;
|
||||
}
|
||||
|
||||
div {
|
||||
|
|
|
@ -8,14 +8,14 @@
|
|||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(/fonts/Revalia.woff) format('woff');
|
||||
unicode-range: U+0061;
|
||||
unicode-range: U+0061, U+0020;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'deep-b-only';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(/fonts/AD.woff) format('woff');
|
||||
unicode-range: U+0062;
|
||||
unicode-range: U+0062, U+0020;
|
||||
}
|
||||
|
||||
div {
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url(/fonts/Revalia.woff) format('woff');
|
||||
unicode-range: U+0061;
|
||||
unicode-range: U+0061, U+0020;
|
||||
}
|
||||
|
||||
div {
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
font-family: base;
|
||||
}
|
||||
.ref .amp {
|
||||
font-family: swoosh;
|
||||
font-family: swoosh, base;
|
||||
}
|
||||
div {
|
||||
font-size: 5em;
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
font-family: base;
|
||||
}
|
||||
.ref .amp {
|
||||
font-family: swoosh;
|
||||
font-family: swoosh, base;
|
||||
}
|
||||
div {
|
||||
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