Update web-platform-tests to revision 993a932dca2b378a44dc55f4ee80812f65d8fb4e

This commit is contained in:
WPT Sync Bot 2020-02-20 08:20:07 +00:00
parent f5ff38b875
commit af74a5d2cf
331 changed files with 3327 additions and 3531 deletions

View file

@ -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

View file

@ -0,0 +1,4 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-anonymous-block.html]
[Hit test beside line of text inside anonymous block]
expected: FAIL

View file

@ -0,0 +1,2 @@
[image-set-rendering.html]
expected: FAIL

View file

@ -1,2 +0,0 @@
[ch-unit-015.html]
expected: FAIL

View file

@ -1,4 +0,0 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -1,7 +0,0 @@
[offsetTopLeft-border-box.html]
[container: 1]
expected: FAIL
[container: 0]
expected: FAIL

View file

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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,4 @@
[fetch-via-serviceworker--fallback.https.sub.html]
[Sec-Fetch headers after SW fallback]
expected: FAIL

View file

@ -1,4 +0,0 @@
[fetch-via-serviceworker--fallback.tentative.https.sub.html]
[Sec-Fetch headers after SW fallback]
expected: FAIL

View file

@ -0,0 +1,4 @@
[fetch-via-serviceworker--respondWith.https.sub.html]
[Sec-Fetch headers after SW fallback]
expected: FAIL

View file

@ -1,4 +0,0 @@
[fetch-via-serviceworker--respondWith.tentative.https.sub.html]
[Sec-Fetch headers after SW fallback]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,2 @@
[font.https.sub.html]
expected: ERROR

View file

@ -1,5 +0,0 @@
[font.tentative.https.sub.html]
expected: ERROR
[font]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,2 @@
[navigation.https.sub.html]
expected: TIMEOUT

View file

@ -1,2 +0,0 @@
[navigation.tentative.https.sub.html]
expected: TIMEOUT

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,2 @@
[report.https.sub.html]
expected: TIMEOUT

View file

@ -1,2 +0,0 @@
[report.tentative.https.sub.html]
expected: TIMEOUT

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,2 @@
[sharedworker.https.sub.html]
expected: ERROR

View file

@ -1,5 +0,0 @@
[sharedworker.tentative.https.sub.html]
expected: ERROR
[sharedworker]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,4 @@
[xslt.https.sub.html]
[Same-Origin xslt]
expected: FAIL

View file

@ -1,10 +0,0 @@
[xslt.tentative.https.sub.html]
[Same-Origin xslt]
expected: FAIL
[Cross-site xslt]
expected: FAIL
[Same-site xslt]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -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

View file

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

View file

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

View file

@ -0,0 +1,4 @@
[document-cookie.html]
[document.cookie 2]
expected: FAIL

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,4 @@
[form-double-submit.html]
[default submit action should supersede onclick submit()]
expected: FAIL

View file

@ -1,4 +0,0 @@
[077.html]
[ adding several types of scripts through the DOM and removing some of them confuses scheduler ]
expected: FAIL

View file

@ -1,2 +0,0 @@
[script-onerror-insertion-point-2.html]
expected: TIMEOUT

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,5 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -0,0 +1,7 @@
[abrupt-completion.html]
[DedicatedWorker should correctly handle abrupt completion]
expected: FAIL
[SharedWorker should correctly handle abrupt completion]
expected: FAIL

View file

@ -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

View file

@ -0,0 +1,5 @@
[send-data-sharedarraybuffer.any.html]
expected: CRASH
[send-data-sharedarraybuffer.any.worker.html]
expected: CRASH

View file

@ -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");
}); });

View file

@ -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:

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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.

View file

@ -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)

View file

@ -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>

View file

@ -0,0 +1 @@
Content-Security-Policy: img-src 'none'

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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 {

View file

@ -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 {

View file

@ -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 {

View file

@ -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;

View file

@ -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;

View file

@ -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