diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini new file mode 100644 index 00000000000..f64b45fea6b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-002.html] + [Hit test float] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini deleted file mode 100644 index f29da48a2a0..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-003.html] - [Miss float below something else] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini deleted file mode 100644 index 4bfb0c2053a..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-004.html] - [Miss float below something else] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini new file mode 100644 index 00000000000..baa9f1a7541 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-005.html] + [Miss clipped float] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-001.html.ini new file mode 100644 index 00000000000..286b53b6e31 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-001.html.ini @@ -0,0 +1,4 @@ +[image-as-flexitem-size-001.html] + [.flexbox > img 4] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-001v.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-001v.html.ini new file mode 100644 index 00000000000..3684416f5b5 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-001v.html.ini @@ -0,0 +1,4 @@ +[image-as-flexitem-size-001v.html] + [.flexbox > img 4] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-002.html.ini new file mode 100644 index 00000000000..dbe4233a739 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-002.html.ini @@ -0,0 +1,4 @@ +[image-as-flexitem-size-002.html] + [.flexbox > img 4] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-002v.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-002v.html.ini new file mode 100644 index 00000000000..a0b5e69c4be --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-002v.html.ini @@ -0,0 +1,4 @@ +[image-as-flexitem-size-002v.html] + [.flexbox > img 4] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-003.html.ini new file mode 100644 index 00000000000..8fde903bd12 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-003.html.ini @@ -0,0 +1,19 @@ +[image-as-flexitem-size-003.html] + [.flexbox > img 16] + expected: FAIL + + [.flexbox > img 11] + expected: FAIL + + [.flexbox > img 10] + expected: FAIL + + [.flexbox > img 13] + expected: FAIL + + [.flexbox > img 12] + expected: FAIL + + [.flexbox > img 4] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-003v.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-003v.html.ini new file mode 100644 index 00000000000..0865c9cb19c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-003v.html.ini @@ -0,0 +1,19 @@ +[image-as-flexitem-size-003v.html] + [.flexbox > img 16] + expected: FAIL + + [.flexbox > img 11] + expected: FAIL + + [.flexbox > img 10] + expected: FAIL + + [.flexbox > img 13] + expected: FAIL + + [.flexbox > img 12] + expected: FAIL + + [.flexbox > img 4] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-004.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-004.html.ini new file mode 100644 index 00000000000..da649930a95 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-004.html.ini @@ -0,0 +1,34 @@ +[image-as-flexitem-size-004.html] + [.flexbox > img 15] + expected: FAIL + + [.flexbox > img 11] + expected: FAIL + + [.flexbox > img 10] + expected: FAIL + + [.flexbox > img 13] + expected: FAIL + + [.flexbox > img 8] + expected: FAIL + + [.flexbox > img 5] + expected: FAIL + + [.flexbox > img 4] + expected: FAIL + + [.flexbox > img 7] + expected: FAIL + + [.flexbox > img 6] + expected: FAIL + + [.flexbox > img 1] + expected: FAIL + + [.flexbox > img 3] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-004v.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-004v.html.ini new file mode 100644 index 00000000000..2a0b3330dc4 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-004v.html.ini @@ -0,0 +1,34 @@ +[image-as-flexitem-size-004v.html] + [.flexbox > img 15] + expected: FAIL + + [.flexbox > img 11] + expected: FAIL + + [.flexbox > img 10] + expected: FAIL + + [.flexbox > img 13] + expected: FAIL + + [.flexbox > img 8] + expected: FAIL + + [.flexbox > img 5] + expected: FAIL + + [.flexbox > img 4] + expected: FAIL + + [.flexbox > img 7] + expected: FAIL + + [.flexbox > img 6] + expected: FAIL + + [.flexbox > img 1] + expected: FAIL + + [.flexbox > img 3] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-005.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-005.html.ini new file mode 100644 index 00000000000..ccc0bc2253a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-005.html.ini @@ -0,0 +1,43 @@ +[image-as-flexitem-size-005.html] + [.flexbox > img 15] + expected: FAIL + + [.flexbox > img 16] + expected: FAIL + + [.flexbox > img 11] + expected: FAIL + + [.flexbox > img 10] + expected: FAIL + + [.flexbox > img 13] + expected: FAIL + + [.flexbox > img 18] + expected: FAIL + + [.flexbox > img 8] + expected: FAIL + + [.flexbox > img 5] + expected: FAIL + + [.flexbox > img 4] + expected: FAIL + + [.flexbox > img 7] + expected: FAIL + + [.flexbox > img 6] + expected: FAIL + + [.flexbox > img 1] + expected: FAIL + + [.flexbox > img 3] + expected: FAIL + + [.flexbox > img 2] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-005v.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-005v.html.ini new file mode 100644 index 00000000000..3ae5a431843 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-005v.html.ini @@ -0,0 +1,43 @@ +[image-as-flexitem-size-005v.html] + [.flexbox > img 15] + expected: FAIL + + [.flexbox > img 16] + expected: FAIL + + [.flexbox > img 11] + expected: FAIL + + [.flexbox > img 10] + expected: FAIL + + [.flexbox > img 13] + expected: FAIL + + [.flexbox > img 18] + expected: FAIL + + [.flexbox > img 8] + expected: FAIL + + [.flexbox > img 5] + expected: FAIL + + [.flexbox > img 4] + expected: FAIL + + [.flexbox > img 7] + expected: FAIL + + [.flexbox > img 6] + expected: FAIL + + [.flexbox > img 1] + expected: FAIL + + [.flexbox > img 3] + expected: FAIL + + [.flexbox > img 2] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-006.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-006.html.ini new file mode 100644 index 00000000000..3dc2eb00fc7 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-006.html.ini @@ -0,0 +1,43 @@ +[image-as-flexitem-size-006.html] + [.flexbox > img 15] + expected: FAIL + + [.flexbox > img 14] + expected: FAIL + + [.flexbox > img 17] + expected: FAIL + + [.flexbox > img 12] + expected: FAIL + + [.flexbox > img 18] + expected: FAIL + + [.flexbox > img 9] + expected: FAIL + + [.flexbox > img 8] + expected: FAIL + + [.flexbox > img 5] + expected: FAIL + + [.flexbox > img 4] + expected: FAIL + + [.flexbox > img 7] + expected: FAIL + + [.flexbox > img 6] + expected: FAIL + + [.flexbox > img 1] + expected: FAIL + + [.flexbox > img 3] + expected: FAIL + + [.flexbox > img 2] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-006v.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-006v.html.ini new file mode 100644 index 00000000000..9eb2855ec46 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-006v.html.ini @@ -0,0 +1,43 @@ +[image-as-flexitem-size-006v.html] + [.flexbox > img 15] + expected: FAIL + + [.flexbox > img 14] + expected: FAIL + + [.flexbox > img 17] + expected: FAIL + + [.flexbox > img 12] + expected: FAIL + + [.flexbox > img 18] + expected: FAIL + + [.flexbox > img 9] + expected: FAIL + + [.flexbox > img 8] + expected: FAIL + + [.flexbox > img 5] + expected: FAIL + + [.flexbox > img 4] + expected: FAIL + + [.flexbox > img 7] + expected: FAIL + + [.flexbox > img 6] + expected: FAIL + + [.flexbox > img 1] + expected: FAIL + + [.flexbox > img 3] + expected: FAIL + + [.flexbox > img 2] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-007.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-007.html.ini new file mode 100644 index 00000000000..495ce451b17 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-007.html.ini @@ -0,0 +1,4 @@ +[image-as-flexitem-size-007.html] + [.flexbox > img 4] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-007v.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-007v.html.ini new file mode 100644 index 00000000000..416bfb37196 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/image-as-flexitem-size-007v.html.ini @@ -0,0 +1,4 @@ +[image-as-flexitem-size-007v.html] + [.flexbox > img 4] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini new file mode 100644 index 00000000000..4c79907309b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini @@ -0,0 +1,4 @@ +[CaretPosition-001.html] + [Element at (400, 100)] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini new file mode 100644 index 00000000000..e38782d8c85 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini @@ -0,0 +1,4 @@ +[elementFromPoint-001.html] + [CSSOM View - 5 - extensions to the Document interface] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini deleted file mode 100644 index e181af5397f..00000000000 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[elementsFromPoint-invalid-cases.html] - [The root element is the last element returned for otherwise empty queries within the viewport] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/matchMedia-display-none-iframe.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/matchMedia-display-none-iframe.html.ini deleted file mode 100644 index e6e1f29e274..00000000000 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/matchMedia-display-none-iframe.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[matchMedia-display-none-iframe.html] - expected: ERROR diff --git a/tests/wpt/metadata-layout-2020/css/selectors/is-where-error-recovery.tentative.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/is-where-error-recovery.tentative.html.ini new file mode 100644 index 00000000000..fb4b13050d0 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/is-where-error-recovery.tentative.html.ini @@ -0,0 +1,4 @@ +[is-where-error-recovery.tentative.html] + [CSS Selectors: :is() and :where() error recovery] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/selectors/parsing/is.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/parsing/is.html.ini new file mode 100644 index 00000000000..941fc56bf74 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/parsing/is.html.ini @@ -0,0 +1,19 @@ +[is.html] + [":is(#a)" should be a valid selector] + expected: FAIL + + [".a.b ~ :is(.c.d ~ .e.f)" should be a valid selector] + expected: FAIL + + [".a.b ~ .c.d:is(span.e + .f, .g.h > .i.j .k)" should be a valid selector] + expected: FAIL + + [":is(:hover,:focus)" should be a valid selector] + expected: FAIL + + ["a:is(:not(:hover))" should be a valid selector] + expected: FAIL + + [":is(ul,ol,.list) > [hidden\]" should be a valid selector] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/selectors/parsing/where.html.ini b/tests/wpt/metadata-layout-2020/css/selectors/parsing/where.html.ini new file mode 100644 index 00000000000..188d18b9618 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/selectors/parsing/where.html.ini @@ -0,0 +1,19 @@ +[where.html] + [":where(#a)" should be a valid selector] + expected: FAIL + + [":where(:hover,:focus)" should be a valid selector] + expected: FAIL + + [".a.b ~ .c.d:where(span.e + .f, .g.h > .i.j .k)" should be a valid selector] + expected: FAIL + + [":where(ul,ol,.list) > [hidden\]" should be a valid selector] + expected: FAIL + + ["a:where(:not(:hover))" should be a valid selector] + expected: FAIL + + [".a.b ~ :where(.c.d ~ .e.f)" should be a valid selector] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/custom-elements/form-associated/form-elements-namedItem.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/form-associated/form-elements-namedItem.html.ini new file mode 100644 index 00000000000..68ebf17de8b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/custom-elements/form-associated/form-elements-namedItem.html.ini @@ -0,0 +1,4 @@ +[form-elements-namedItem.html] + [Form associated custom elements should work with document.forms.elements.namedItem()] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/fetch/connection-pool/network-partition-key.html.ini b/tests/wpt/metadata-layout-2020/fetch/connection-pool/network-partition-key.html.ini new file mode 100644 index 00000000000..890d1fb5747 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/connection-pool/network-partition-key.html.ini @@ -0,0 +1,29 @@ +[network-partition-key.html] + expected: TIMEOUT + [Iframes] + expected: FAIL + + [CSP sandbox] + expected: NOTRUN + + [Workers] + expected: TIMEOUT + + [Cross-site resources without credentials] + expected: FAIL + + [about:blank from opaque origin iframe] + expected: NOTRUN + + [Without credentials] + expected: FAIL + + [Workers with cross-site resources] + expected: NOTRUN + + [Cross-site resources with credentials] + expected: FAIL + + [With credentials] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini index 449b7d8c20f..116edd217dc 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini @@ -315,27 +315,24 @@ [ + + + + diff --git a/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-checker.html b/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-checker.html new file mode 100644 index 00000000000..b058f611242 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-checker.html @@ -0,0 +1,30 @@ + + + + + Network Partition Checker + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-iframe-checker.html b/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-iframe-checker.html new file mode 100644 index 00000000000..f76ed184471 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-iframe-checker.html @@ -0,0 +1,22 @@ + + + + + Iframe Network Partition Checker + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-key.js b/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-key.js new file mode 100644 index 00000000000..bd66109380f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-key.js @@ -0,0 +1,47 @@ +// Runs multiple fetches that validate connections see only a single partition_id. +// Requests are run in parallel so that they use multiple connections to maximize the +// chance of exercising all matching connections in the connection pool. Only returns +// once all requests have completed to make cleaning up server state non-racy. +function check_partition_ids(location) { + const NUM_FETCHES = 20; + + var base_url = 'SUBRESOURCE_PREFIX:&dispatch=check_partition'; + + // Not a perfect parse of the query string, but good enough for this test. + var include_credentials = base_url.search('include_credentials=true') != -1; + var exclude_credentials = base_url.search('include_credentials=false') != -1; + if (include_credentials != !exclude_credentials) + throw new Exception('Credentials mode not specified'); + + + // Run NUM_FETCHES in parallel. + var fetches = []; + for (i = 0; i < NUM_FETCHES; ++i) { + var fetch_params = { + credentials: 'omit', + mode: 'cors', + headers: { + 'Header-To-Force-CORS': 'cors' + }, + }; + + // Use a unique URL for each request, in case the caching layer serializes multiple + // requests for the same URL. + var url = `${base_url}&${token()}`; + + fetches.push(fetch(url, fetch_params).then( + function (response) { + return response.text().then(function(text) { + assert_equals(text, 'ok', `Socket unexpectedly reused`); + }); + })); + } + + // Wait for all promises to complete. + return Promise.allSettled(fetches).then(function (results) { + results.forEach(function (result) { + if (result.status != 'fulfilled') + throw result.reason; + }); + }); +} diff --git a/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-key.py b/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-key.py new file mode 100644 index 00000000000..44ddae7a75d --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-key.py @@ -0,0 +1,118 @@ +#!/usr/bin/env python + +import datetime +import json +import mimetypes +import os +import sys +import time + +# Test server that tracks the last partition_id was used with each connection for each uuid, and +# lets consumers query if multiple different partition_ids have been been used for any socket. +# +# Server assumes that ports aren't reused, so a client address and a server port uniquely identify +# a connection. If that constraint is ever violated, the test will be flaky. No sockets being +# closed for the duration of the test is sufficient to ensure that, though even if sockets are +# closed, the OS should generally prefer to use new ports for new connections, if any are +# available. +def main(request, response): + response.headers.set(b"Cache-Control", b"no-store") + dispatch = request.GET.first(b"dispatch", None) + uuid = request.GET.first(b"uuid", None) + partition_id = request.GET.first(b"partition_id", None) + + if not uuid or not dispatch or not partition_id: + return simple_response(request, response, 404, b"Not found", b"Invalid query parameters") + + # Unless nocheck_partition is true, check partition_id against server_state, and update server_state. + stash = request.server.stash + test_failed = False + if request.GET.first(b"nocheck_partition", None) != "True": + # Need to grab the lock to access the Stash, since requests are made in parallel. + with stash.lock: + # Don't use server hostname here, since H2 allows multiple hosts to reuse a connection. + # Server IP is not currently available, unfortunately. + address_key = str(request.client_address) + "|" + str(request.url_parts.port) + server_state = stash.take(uuid) or { "test_failed": False } + if address_key in server_state and server_state[address_key] != partition_id: + server_state["test_failed"] = True + server_state[address_key] = partition_id + test_failed = server_state["test_failed"] + stash.put(uuid, server_state) + + origin = request.headers.get(b"Origin") + if origin: + response.headers.set(b"Access-Control-Allow-Origin", origin) + response.headers.set(b"Access-Control-Allow-Credentials", b"true") + + if request.method == u"OPTIONS": + return handle_preflight(request, response) + + if dispatch == u"fetch_file": + return handle_fetch_file(request, response, partition_id, uuid) + + if dispatch == u"check_partition": + if test_failed: + return simple_response(request, response, 200, b"OK", b"Multiple partition IDs used on a socket") + return simple_response(request, response, 200, b"OK", b"ok") + + if dispatch == u"clean_up": + stash.take(uuid) + if test_failed: + return simple_response(request, response, 200, b"OK", b"Test failed, but cleanup completed.") + return simple_response(request, response, 200, b"OK", b"cleanup complete") + + return simple_response(request, response, 404, b"Not Found", b"Unrecognized dispatch parameter: " + dispatch) + +def handle_preflight(request, response): + response.status = (200, b"OK") + response.headers.set(b"Access-Control-Allow-Methods", b"GET") + response.headers.set(b"Access-Control-Allow-Headers", b"header-to-force-cors") + response.headers.set(b"Access-Control-Max-Age", b"86400") + return b"Preflight request" + +def simple_response(request, response, status_code, status_message, body, content_type="text/plain"): + response.status = (status_code, status_message) + response.headers.set(b"Content-Type", content_type) + return body + +def handle_fetch_file(request, response, partition_id, uuid): + subresource_origin = request.GET.first(b"subresource_origin", None) + rel_path = request.GET.first(b"path", None) + + # This needs to be passed on to subresources so they all have access to it. + include_credentials = request.GET.first(b"include_credentials", None) + if not subresource_origin or not rel_path or not include_credentials: + return simple_response(request, response, 404, b"Not found", b"Invalid query parameters") + + cur_path = os.path.realpath(__file__) + base_path = os.path.abspath(os.path.join(os.path.dirname(cur_path), os.pardir, os.pardir, os.pardir)) + path = os.path.abspath(os.path.join(base_path, rel_path)) + + # Basic security check. + if not path.startswith(base_path): + return simple_response(request, response, 404, b"Not found", b"Invalid path") + + sandbox = request.GET.first(b"sandbox", None) + if sandbox == "true": + response.headers.set(b"Content-Security-Policy", "sandbox allow-scripts") + + file = open(path, mode="r") + body = file.read() + file.close() + + subresource_path = "/" + os.path.relpath(__file__, base_path).replace('\\','/') + subresource_params = "?partition_id=" + partition_id + "&uuid=" + uuid + "&subresource_origin=" + subresource_origin + "&include_credentials=" + include_credentials + body = body.replace("SUBRESOURCE_PREFIX:", subresource_origin + subresource_path + subresource_params) + + other_origin = request.GET.first(b"other_origin", None) + if other_origin: + body = body.replace("OTHER_PREFIX:", other_origin + subresource_path + subresource_params) + + mimetypes.init() + mimetype_pair = mimetypes.guess_type(path) + mimetype = mimetype_pair[0] + + if mimetype == None or mimetype_pair[1] != None: + return simple_response(request, response, 500, b"Server Error", b"Unknown MIME type") + return simple_response(request, response, 200, b"OK", body, mimetype) diff --git a/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-worker-checker.html b/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-worker-checker.html new file mode 100644 index 00000000000..e6b7ea7673f --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-worker-checker.html @@ -0,0 +1,24 @@ + + + + + Worker Network Partition Checker + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-worker.js b/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-worker.js new file mode 100644 index 00000000000..1745edfacb1 --- /dev/null +++ b/tests/wpt/web-platform-tests/fetch/connection-pool/resources/network-partition-worker.js @@ -0,0 +1,15 @@ +// This tests the partition key of fetches to subresouce_origin made by the worker and +// imported scripts from subresource_origin. +importScripts('SUBRESOURCE_PREFIX:&dispatch=fetch_file&path=common/utils.js'); +importScripts('SUBRESOURCE_PREFIX:&dispatch=fetch_file&path=resources/testharness.js'); +importScripts('SUBRESOURCE_PREFIX:&dispatch=fetch_file&path=fetch/connection-pool/resources/network-partition-key.js'); + +async function fetch_and_reply() { + try { + await check_partition_ids(); + self.postMessage({result: 'success'}); + } catch (e) { + self.postMessage({result: 'error', details: e.message}); + } +} +fetch_and_reply(); diff --git a/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-different-site-iframe-contentwindow.html b/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-different-site-iframe-contentwindow.html new file mode 100644 index 00000000000..b16280acbd7 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-different-site-iframe-contentwindow.html @@ -0,0 +1,36 @@ + + +activeElement when focusing different-site iframe's contentWindow + + + diff --git a/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-different-site-iframe.html b/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-different-site-iframe.html new file mode 100644 index 00000000000..b974252555a --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-different-site-iframe.html @@ -0,0 +1,27 @@ + + +activeElement when focusing different-site iframe + + + diff --git a/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-same-site-iframe-contentwindow.html b/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-same-site-iframe-contentwindow.html new file mode 100644 index 00000000000..b4a14e721f8 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-same-site-iframe-contentwindow.html @@ -0,0 +1,27 @@ + + +activeElement when focusing same-site iframe's contentWindow + + + diff --git a/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-same-site-iframe.html b/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-same-site-iframe.html new file mode 100644 index 00000000000..55918ebf07f --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/activeelement-after-focusing-same-site-iframe.html @@ -0,0 +1,27 @@ + + +activeElement when focusing same-site iframe + + + diff --git a/tests/wpt/web-platform-tests/focus/activeelement-after-immediately-focusing-different-site-iframe-contentwindow.html b/tests/wpt/web-platform-tests/focus/activeelement-after-immediately-focusing-different-site-iframe-contentwindow.html new file mode 100644 index 00000000000..4cb3c68db63 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/activeelement-after-immediately-focusing-different-site-iframe-contentwindow.html @@ -0,0 +1,27 @@ + + +activeElement when immediately focusing different-site iframe's contentWindow + + + diff --git a/tests/wpt/web-platform-tests/focus/activeelement-after-immediately-focusing-different-site-iframe.html b/tests/wpt/web-platform-tests/focus/activeelement-after-immediately-focusing-different-site-iframe.html new file mode 100644 index 00000000000..67bf733bc1e --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/activeelement-after-immediately-focusing-different-site-iframe.html @@ -0,0 +1,16 @@ + + +activeElement when immediately focusing different-site iframe + + + diff --git a/tests/wpt/web-platform-tests/focus/activeelement-after-immediately-focusing-same-site-iframe-contentwindow.html b/tests/wpt/web-platform-tests/focus/activeelement-after-immediately-focusing-same-site-iframe-contentwindow.html new file mode 100644 index 00000000000..81dbfd28d03 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/activeelement-after-immediately-focusing-same-site-iframe-contentwindow.html @@ -0,0 +1,27 @@ + + +activeElement when immediately focusing same-site iframe's contentWindow + + + diff --git a/tests/wpt/web-platform-tests/focus/activeelement-after-immediately-focusing-same-site-iframe.html b/tests/wpt/web-platform-tests/focus/activeelement-after-immediately-focusing-same-site-iframe.html new file mode 100644 index 00000000000..a035af072d3 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/activeelement-after-immediately-focusing-same-site-iframe.html @@ -0,0 +1,16 @@ + + +activeElement when immediately focusing same-site iframe + + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-inner-contentwindow.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-inner-contentwindow.html new file mode 100644 index 00000000000..bc78e6e0538 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-inner-contentwindow.html @@ -0,0 +1,18 @@ + + + + + Inner document + + +

Inner

+ + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-inner.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-inner.html new file mode 100644 index 00000000000..bc78e6e0538 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-inner.html @@ -0,0 +1,18 @@ + + + + + Inner document + + +

Inner

+ + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-outer-contentwindow.sub.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-outer-contentwindow.sub.html new file mode 100644 index 00000000000..fd66cbaa55c --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-outer-contentwindow.sub.html @@ -0,0 +1,29 @@ + + +activeElement when focusing different-site iframe's contenWindow + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-outer.sub.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-outer.sub.html new file mode 100644 index 00000000000..bcbedb2f74e --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-different-site-iframe-outer.sub.html @@ -0,0 +1,29 @@ + + +activeElement when focusing different-site iframe + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-same-site-iframe-inner-contentwindow.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-same-site-iframe-inner-contentwindow.html new file mode 100644 index 00000000000..bc78e6e0538 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-same-site-iframe-inner-contentwindow.html @@ -0,0 +1,18 @@ + + + + + Inner document + + +

Inner

+ + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-same-site-iframe-inner.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-same-site-iframe-inner.html new file mode 100644 index 00000000000..bc78e6e0538 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-same-site-iframe-inner.html @@ -0,0 +1,18 @@ + + + + + Inner document + + +

Inner

+ + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-same-site-iframe-outer-contentwindow.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-same-site-iframe-outer-contentwindow.html new file mode 100644 index 00000000000..63e2ac60196 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-same-site-iframe-outer-contentwindow.html @@ -0,0 +1,29 @@ + + +activeElement when focusing same-site iframe's contentWindow + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-same-site-iframe-outer.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-same-site-iframe-outer.html new file mode 100644 index 00000000000..333b436ea11 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-focusing-same-site-iframe-outer.html @@ -0,0 +1,29 @@ + + +activeElement when focusing same-site iframe + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-different-site-iframe-inner-contentwindow.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-different-site-iframe-inner-contentwindow.html new file mode 100644 index 00000000000..bc78e6e0538 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-different-site-iframe-inner-contentwindow.html @@ -0,0 +1,18 @@ + + + + + Inner document + + +

Inner

+ + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-different-site-iframe-inner.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-different-site-iframe-inner.html new file mode 100644 index 00000000000..bc78e6e0538 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-different-site-iframe-inner.html @@ -0,0 +1,18 @@ + + + + + Inner document + + +

Inner

+ + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-different-site-iframe-outer-contentwindow.sub.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-different-site-iframe-outer-contentwindow.sub.html new file mode 100644 index 00000000000..10240504fe9 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-different-site-iframe-outer-contentwindow.sub.html @@ -0,0 +1,29 @@ + + +activeElement when immediately focusing different-site iframe's contentWindow + + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-different-site-iframe-outer.sub.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-different-site-iframe-outer.sub.html new file mode 100644 index 00000000000..3485f1b8e4b --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-different-site-iframe-outer.sub.html @@ -0,0 +1,29 @@ + + +activeElement when immediately focusing different-site iframe + + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-inner-contentwindow.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-inner-contentwindow.html new file mode 100644 index 00000000000..bc78e6e0538 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-inner-contentwindow.html @@ -0,0 +1,18 @@ + + + + + Inner document + + +

Inner

+ + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-inner.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-inner.html new file mode 100644 index 00000000000..bc78e6e0538 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-inner.html @@ -0,0 +1,18 @@ + + + + + Inner document + + +

Inner

+ + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-outer-contentwindow.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-outer-contentwindow.html new file mode 100644 index 00000000000..3849f6ea2cc --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-outer-contentwindow.html @@ -0,0 +1,29 @@ + + +activeElement when focusing same-site iframe's contentWindow + + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-outer-contenwindow.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-outer-contenwindow.html new file mode 100644 index 00000000000..bafc26065c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-outer-contenwindow.html @@ -0,0 +1,29 @@ + + +activeElement when focusing same-site iframe's contentWindow + + + diff --git a/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-outer.html b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-outer.html new file mode 100644 index 00000000000..f22fa98076f --- /dev/null +++ b/tests/wpt/web-platform-tests/focus/support/activeelement-after-immediately-focusing-same-site-iframe-outer.html @@ -0,0 +1,29 @@ + + +activeElement when focusing same-site iframe + + + diff --git a/tests/wpt/web-platform-tests/focus/support/focus-restoration-in-different-site-iframes-outer.sub.html b/tests/wpt/web-platform-tests/focus/support/focus-restoration-in-different-site-iframes-outer.sub.html index 91ffed11075..ecc1af286d9 100644 --- a/tests/wpt/web-platform-tests/focus/support/focus-restoration-in-different-site-iframes-outer.sub.html +++ b/tests/wpt/web-platform-tests/focus/support/focus-restoration-in-different-site-iframes-outer.sub.html @@ -12,11 +12,11 @@ window.onmessage = function(e) { other = window.open("focus-restoration-in-different-site-iframes-other.html", "otherwindow", "resizable=yes"); } else if (e.data == "other") { other.close(); - setTimeout(function() { + opener.step_timeout(function() { document.getElementsByTagName("iframe")[0].contentWindow.postMessage("getlog", "*"); }, 2000); } else { - setTimeout(function() { + opener.step_timeout(function() { opener.postMessage(getLog() + e.data, "*"); }, 1000); } diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorManaged-convertToBlob-roundtrip.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorManaged-convertToBlob-roundtrip.html index 1fe8ac5eaeb..efb2665a8a5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorManaged-convertToBlob-roundtrip.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-colorManaged-convertToBlob-roundtrip.html @@ -78,7 +78,7 @@ function runConvertToBlobTest(testScenario) { var ctx = srcCanvas.getContext('2d', testScenario.canvasColorParam); var compositeOverBlack = (testScenario.encodeOptions.type == "image/jpeg"); drawPatternOnCanvsa(ctx, testScenario.alpha, compositeOverBlack); - var refPixels = ctx.getImageData(0, 0, 2, 2).dataUnion; + var refPixels = ctx.getImageData(0, 0, 2, 2).data; var t = async_test("Test canvas convertToBlob(): " + testScenarioToString(testScenario)); @@ -88,7 +88,7 @@ function runConvertToBlobTest(testScenario) { var dstCanvas = createCanvas(testScenario); var dstCtx = dstCanvas.getContext('2d', testScenario.canvasColorParam); dstCtx.drawImage(image, 0, 0); - var actualPixels = dstCtx.getImageData(0, 0, 2, 2).dataUnion; + var actualPixels = dstCtx.getImageData(0, 0, 2, 2).data; testPixels(actualPixels, refPixels, testScenario); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html index 7483800b41e..72b8e278c60 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createImageBitmap-e_srgb.html @@ -43,8 +43,8 @@ function testPixels(ctx, tests, sourceType) if (sourceType === 'video') tolerance = 0.03; for (var i = 0; i < tests.length; i++) { - actual = ctx.getImageData(tests[i][0], tests[i][1], 1, 1).dataUnion; - assert_implements(actual, 'ImageData dataUnion not supported'); + actual = ctx.getImageData(tests[i][0], tests[i][1], 1, 1).data; + assert_implements(actual, 'ImageData data not supported'); expected = tests[i][2]; assert_equals(actual.length, expected.length); for (var j = 0; j < actual.length; j++) @@ -171,10 +171,10 @@ function compareBitmaps(bitmap1, bitmap2) ctx2.clearRect(0, 0, canvas2.width, canvas2.height); ctx1.drawImage(bitmap1, 0, 0); ctx2.drawImage(bitmap2, 0, 0); - var data1 = ctx1.getImageData(0, 0, 50, 50).dataUnion; - assert_implements(data1, 'ImageData dataUnion not supported'); - var data2 = ctx2.getImageData(0, 0, 50, 50).dataUnion; - assert_implements(data2, 'ImageData dataUnion not supported'); + var data1 = ctx1.getImageData(0, 0, 50, 50).data; + assert_implements(data1, 'ImageData data not supported'); + var data2 = ctx2.getImageData(0, 0, 50, 50).data; + assert_implements(data2, 'ImageData data not supported'); var dataMatched = true; for (var i = 0; i < data1.length; i++) { if (data1[i] != data2[i]) { diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html index f153a983d93..c72dc97cd0c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-createPutGetImageData-colorManaged.html @@ -14,7 +14,7 @@ function checkImageData(canvasColorSettings, imageData) { assert_equals(imageData.data.length, 4 * xWidth * xHeight); } else { assert_equals("float32", imageDataColorSettings.storageFormat); - assert_equals(imageData.dataUnion.length, 4 * xWidth * xHeight); + assert_equals(imageData.data.length, 4 * xWidth * xHeight); } } diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html index e7a83fc1f75..9907c4e2cf5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-draw-high-bit-depth-images.html @@ -29,14 +29,14 @@ function runTest(testScenario) { var refCtx = refCanvas.getContext( '2d', testScenario.canvasColorParams); refCtx.drawImage(_8bitImage, 0, 0); - var refPixels = refCtx.getImageData(0, 0, 2, 2).dataUnion; + var refPixels = refCtx.getImageData(0, 0, 2, 2).data; var testCanvas = document.createElement("canvas"); testCanvas.width = testCanvas.height = 2; var testCtx = testCanvas.getContext( '2d', testScenario.canvasColorParams); testCtx.drawImage(_16bitImage, 0, 0); - var testPixels = testCtx.getImageData(0, 0, 2, 2).dataUnion; + var testPixels = testCtx.getImageData(0, 0, 2, 2).data; assert_array_approx_equals(refPixels, testPixels, tolerance); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-e_srgb.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-e_srgb.html index 7620d93d5f1..0cfa729a60b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-e_srgb.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-e_srgb.html @@ -16,7 +16,7 @@ function testPixels(ctx, tests) { var actual, expected, tolerance = 0.01; for (var i = 0; i < tests.length; i++) { - actual = ctx.getImageData(tests[i].x, tests[i].y, 1, 1).dataUnion; + actual = ctx.getImageData(tests[i].x, tests[i].y, 1, 1).data; expected = tests[i].color; assert_true(actual.length === expected.length); for (var j = 0; j < actual.length; j++) diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-offscreenCanvas.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-offscreenCanvas.html index 144dca0e775..7edbc5ee3c9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-offscreenCanvas.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-drawImage-offscreenCanvas.html @@ -90,8 +90,8 @@ function initializeOffscreenCanvasTransparent(canvasColorSpace, canvasPixelForma function testPixels(testCtx, refCtx, pixelFormat, isTrnasparent) { - var actual = testCtx.getImageData(0, 0, 4, 4).dataUnion; - var expected = refCtx.getImageData(0, 0, 4, 4).dataUnion; + var actual = testCtx.getImageData(0, 0, 4, 4).data; + var expected = refCtx.getImageData(0, 0, 4, 4).data; var tolerance = 4; if (pixelFormat === 'float16') diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-getImageData-e_srgb.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-getImageData-e_srgb.html index c38da7c95c0..73682eb631d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-getImageData-e_srgb.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/canvas-getImageData-e_srgb.html @@ -27,7 +27,7 @@ function drawSRGBThenGetImageData_e_sRGB() { {colorSpace: 'srgb', pixelFormat:'float16'}); ctx.fillStyle = 'rgba(51, 102, 153, 0.8)'; ctx.fillRect(0, 0, 10, 10); - var pixel = ctx.getImageData(5, 5, 1, 1).dataUnion; + var pixel = ctx.getImageData(5, 5, 1, 1).data; // Check against the same color in e-sRGB. 0.01 protects the test against // color conversion deviations. assert_array_approx_equals(pixel, [0.2, 0.4, 0.6, 0.8], 0.01); @@ -41,12 +41,12 @@ function putImageData_e_sRGBThenGetImageData_e_sRGB_InRange() { {colorSpace: 'srgb', pixelFormat:'float16'}) var imageData = ctx.createImageData(1, 1, {colorSpace: 'srgb', storageFormat:'float32'}); - imageData.dataUnion[0] = 0.2; - imageData.dataUnion[1] = 0.4; - imageData.dataUnion[2] = 0.6; - imageData.dataUnion[3] = 0.8; + imageData.data[0] = 0.2; + imageData.data[1] = 0.4; + imageData.data[2] = 0.6; + imageData.data[3] = 0.8; ctx.putImageData(imageData, 5, 5); - var pixel = ctx.getImageData(5, 5, 1, 1).dataUnion; + var pixel = ctx.getImageData(5, 5, 1, 1).data; // Check against the same color in e-sRGB. 0.001 protects the test against // rounding errors. assert_array_approx_equals(pixel, [0.2, 0.4, 0.6, 0.8], 0.01); @@ -60,12 +60,12 @@ function putImageData_e_sRGBThenGetImageData_e_sRGB_OutOfRange() { {colorSpace: 'srgb', pixelFormat:'float16'}) var imageData = ctx.createImageData(1, 1, {colorSpace: 'srgb', storageFormat:'float32'}); - imageData.dataUnion[0] = 1.3; - imageData.dataUnion[1] = -1.13; - imageData.dataUnion[2] = 0.7; - imageData.dataUnion[3] = 1.8; + imageData.data[0] = 1.3; + imageData.data[1] = -1.13; + imageData.data[2] = 0.7; + imageData.data[3] = 1.8; ctx.putImageData(imageData, 5, 5); - var pixel = ctx.getImageData(5, 5, 1, 1).dataUnion; + var pixel = ctx.getImageData(5, 5, 1, 1).data; // Check against the same color in e-sRGB. 0.001 protects the test against // rounding errors. assert_array_approx_equals(pixel, [1.3, -1.13, 0.7, 1.8], 0.01); @@ -85,7 +85,7 @@ function putImageDataSRGBThenGetImageData_e_sRGB() { imageData.data[2] = 153; imageData.data[3] = 204; ctx.putImageData(imageData, 5, 5); - var pixel = ctx.getImageData(5, 5, 1, 1).dataUnion; + var pixel = ctx.getImageData(5, 5, 1, 1).data; // Check against the same color in e-sRGB. 0.01 protects the test against // color conversion deviations. assert_array_approx_equals(pixel, [0.2, 0.4, 0.6, 0.8], 0.01); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorManagedBehavior.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorManagedBehavior.html index dda9f9cc28f..d106904f2e2 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorManagedBehavior.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imageData-colorManagedBehavior.html @@ -51,7 +51,7 @@ function checkImageDataColorSettings(canvasColorSettings, imageData) { function checkImageDataColorValues(canvasColorSettings, imageData, isBlank = '', width = xWidth, height = xHeight, isWCG_U8toSRGB_U8 = '') { - var data = imageData.dataUnion; + var data = imageData.data; if (isBlank === 'isBlank') { testBlankPixels(data, width, height); } else { @@ -105,10 +105,10 @@ function PreparePredefinedImageDataObjects() { for (var i = 0; i < xWidth * xHeight; i++) for (var j = 0; j < 4; j++) { - srgbImageDataU8.dataUnion[i*4+j] = srgbPixels[i][j]; - e_srgbImageDataU16.dataUnion[i*4+j] = + srgbImageDataU8.data[i*4+j] = srgbPixels[i][j]; + e_srgbImageDataU16.data[i*4+j] = Math.round(e_srgbPixels[i][j] * 65535); - e_srgbImageDataF32.dataUnion[i*4+j] = e_srgbPixels[i][j]; + e_srgbImageDataF32.data[i*4+j] = e_srgbPixels[i][j]; } } @@ -282,7 +282,7 @@ function runTestCreateImageDataWHC(canvasColorSettings, imageDataColorSettings) imageDataColorSettings.storageFormat, "storageFormat should match"); var blankData = new Array(4 * width * height).fill(0); - assert_array_equals(imageData.dataUnion, blankData, + assert_array_equals(imageData.data, blankData, "ImageData should be transparent black"); } @@ -317,7 +317,7 @@ runTestCreateImageDataWHCTests(); // CanvasColorSpace which is given in imageDataColorSettings. function runTestCreateImageDataDWHC(canvasColorSettings, imageData) { - var data = imageData.dataUnion; + var data = imageData.data; width = xWidth; height = xHeight; var colorSettings = imageData.getColorSettings(); @@ -332,7 +332,7 @@ function runTestCreateImageDataDWHC(canvasColorSettings, imageData) { assert_equals(newColorSettings.storageFormat, colorSettings.storageFormat, "storageFormat should match"); - assert_array_equals(newImageData.dataUnion, imageData.dataUnion, + assert_array_equals(newImageData.data, imageData.data, "ImageData should be transparent black"); } diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imagedata-no-color-settings-crash.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imagedata-no-color-settings-crash.html index d7fe956e4b8..b21eaf72abe 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imagedata-no-color-settings-crash.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/imagedata-no-color-settings-crash.html @@ -10,7 +10,7 @@ test(function() { var imageData = ctx.createImageData(dataFloat32, 1, 1, {}); ctx.putImageData(imageData, 5, 5); - var data = ctx.getImageData(5,5,1,1).dataUnion; + var data = ctx.getImageData(5,5,1,1).data; }, "Putting a float-32 ImageData with no color settings on a context 2D should not crash."); test(function() { @@ -21,6 +21,6 @@ test(function() { var imageData = ctx.createImageData(dataUint16, 1, 1, {}); ctx.putImageData(imageData, 5, 5); - var data = ctx.getImageData(5,5,1,1).dataUnion; + var data = ctx.getImageData(5,5,1,1).data; }, "Putting a uint-16 ImageData with no color settings on a context 2D should not crash."); \ No newline at end of file diff --git a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/transferFromImageBitmap.html b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/transferFromImageBitmap.html index 6855dc705b7..ff8abeb897f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/transferFromImageBitmap.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/manual/wide-gamut-canvas/transferFromImageBitmap.html @@ -41,7 +41,7 @@ function generateExpectedResult(testScenario, canvas) ctx.fillRect(0, 1, 1, 1); ctx.fillStyle = generateFillStyle(27, 27, 27, testScenario.alpha); ctx.fillRect(1, 1, 1, 1); - return ctx.getImageData(0, 0, 2, 2).dataUnion; + return ctx.getImageData(0, 0, 2, 2).data; } function generateTestName(testScenario) { @@ -79,7 +79,7 @@ function runTransferFromImageBitmapTest(testScenario) { {colorSpace: testScenario.colorSpace, pixelFormat: testScenario.pixelFormat}); ctx.drawImage(dstCanvas, 0, 0); - var actualPixels = ctx.getImageData(0, 0, 2, 2).dataUnion; + var actualPixels = ctx.getImageData(0, 0, 2, 2).data; testPixels(actualPixels, expectedPixels, testScenario); }); }, generateTestName(testScenario)); diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-navigation.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-navigation.https.html index 680cc6af29a..fe42015913b 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-navigation.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-navigation.https.html @@ -110,40 +110,38 @@ for (const testcase of CASES) { function desc(s) { return s === '' ? '(none)' : s; } - async_test(async (t) => { - try { - const targetUrl = REMOTE_FRAME_URL + testcase.target; - const parent = - await loadFrames(t, testcase.parent, withEmptyFrame, targetUrl); - + // These tests are very slow, so they must be run in parallel using + // async_test. + async_test(t => { + const targetUrl = REMOTE_FRAME_URL + testcase.target; + loadFrames(t, testcase.parent, withEmptyFrame, targetUrl) + .then(t.step_func(parent => { const contextUrl = parent.src ? parent.src : 'about:blank'; - const reports = await observeReports(parent.contentWindow); - assert_equals(reports.length, testcase.reports.length); - - for (let i = 0; i < reports.length; i += 1) { - const report = reports[i]; - switch (testcase.reports[i]) { - case 'CORP': - checkCorpReport(report, contextUrl, targetUrl, 'enforce'); - break; - case 'CORP-RO': - checkCorpReport(report, contextUrl, targetUrl, 'reporting'); - break; - case 'NAV': - checkCoepMismatchReport(report, contextUrl, targetUrl, 'enforce'); - break; - case 'NAV-RO': - checkCoepMismatchReport(report, contextUrl, targetUrl, 'reporting'); - break; - default: - assert_unreached( - 'Unexpected report expeaction: ' + testcase.reports[i]); + observeReports(parent.contentWindow).then(t.step_func(reports => { + assert_equals(reports.length, testcase.reports.length); + for (let i = 0; i < reports.length; i += 1) { + const report = reports[i]; + switch (testcase.reports[i]) { + case 'CORP': + checkCorpReport(report, contextUrl, targetUrl, 'enforce'); + break; + case 'CORP-RO': + checkCorpReport(report, contextUrl, targetUrl, 'reporting'); + break; + case 'NAV': + checkCoepMismatchReport(report, contextUrl, targetUrl, 'enforce'); + break; + case 'NAV-RO': + checkCoepMismatchReport(report, contextUrl, targetUrl, 'reporting'); + break; + default: + assert_unreached( + 'Unexpected report expeaction: ' + testcase.reports[i]); + } } - } - t.done(); - } catch (e) { - t.step(() => { throw e; }); - } + t.done(); + })).catch(t.step_func(e => { throw e; })); + })).catch(t.step_func(e => { throw e; })); }, `parent: ${desc(testcase.parent)}, target: ${desc(testcase.target)}, ` + `with empty frame: ${withEmptyFrame}`); } diff --git a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html index 02c719da737..416732497bd 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-embedder-policy/reporting-to-endpoint.https.html @@ -77,100 +77,82 @@ function checkNavigationReportExistence(reports, blockedUrl, contextUrl, disposi assert_unreached(`A report whose blockedURL is ${blockedUrl} and url is ${contextUrl} is not found.`); } -async_test(async (t) => { - try { - const iframe = document.createElement('iframe'); - t.add_cleanup(() => iframe.remove()); +promise_test(async t => { + const iframe = document.createElement('iframe'); + t.add_cleanup(() => iframe.remove()); - iframe.src = `resources/reporting-empty-frame.html` - document.body.appendChild(iframe); - await new Promise(resolve => { - iframe.addEventListener('load', resolve, {once: true}); - }); + iframe.src = `resources/reporting-empty-frame.html` + document.body.appendChild(iframe); + await new Promise(resolve => { + iframe.addEventListener('load', resolve, {once: true}); + }); - const url = `${REMOTE_ORIGIN}/common/text-plain.txt?${token()}`; - const init = { mode: 'no-cors', cache: 'no-store' }; - // The response comes from cross-origin, and doesn't have a CORP - // header, so it is blocked. - iframe.contentWindow.fetch(url, init).catch(() => {}); + const url = `${REMOTE_ORIGIN}/common/text-plain.txt?${token()}`; + const init = { mode: 'no-cors', cache: 'no-store' }; + // The response comes from cross-origin, and doesn't have a CORP + // header, so it is blocked. + iframe.contentWindow.fetch(url, init).catch(() => {}); - // Wait 3 seconds for reports to settle. - await wait(3000); + // Wait 3 seconds for reports to settle. + await wait(3000); - checkCorpReportExistence(reports, url, iframe.src, '', 'enforce'); - checkCorpReportExistence( + checkCorpReportExistence(reports, url, iframe.src, '', 'enforce'); + checkCorpReportExistence( reportsForReportOnly, url, iframe.src, '', 'reporting'); - - t.done(); - } catch (e) { - t.step(() => { throw e }); - } }, 'subresource CORP'); -async_test(async (t) => { - try { - const iframe = document.createElement('iframe'); - t.add_cleanup(() => iframe.remove()); +promise_test(async t => { + const iframe = document.createElement('iframe'); + t.add_cleanup(() => iframe.remove()); - iframe.src = `resources/reporting-empty-frame.html` - document.body.appendChild(iframe); - await new Promise(resolve => { - iframe.addEventListener('load', resolve, {once: true}); - }); + iframe.src = `resources/reporting-empty-frame.html` + document.body.appendChild(iframe); + await new Promise(resolve => { + iframe.addEventListener('load', resolve, {once: true}); + }); - const w = iframe.contentWindow; + const w = iframe.contentWindow; - function attachFrame(url) { - const frame = w.document.createElement('iframe'); - frame.src = url; - w.document.body.appendChild(frame); - } - - const url = `${REMOTE_ORIGIN}/common/blank.html?${token()}`; - // The nested frame comes from cross-origin and doesn't have a CORP - // header, so it is blocked. - attachFrame(url); - - // Wait 3 seconds for reports to settle. - await wait(3000); - - checkCorpReportExistence(reports, url, iframe.src, 'iframe', 'enforce'); - checkCorpReportExistence( - reportsForReportOnly, url, iframe.src, 'iframe', 'reporting'); - - t.done(); - } catch (e) { - t.step(() => { throw e }); + function attachFrame(url) { + const frame = w.document.createElement('iframe'); + frame.src = url; + w.document.body.appendChild(frame); } + + const url = `${REMOTE_ORIGIN}/common/blank.html?${token()}`; + // The nested frame comes from cross-origin and doesn't have a CORP + // header, so it is blocked. + attachFrame(url); + + // Wait 3 seconds for reports to settle. + await wait(3000); + + checkCorpReportExistence(reports, url, iframe.src, 'iframe', 'enforce'); + checkCorpReportExistence( + reportsForReportOnly, url, iframe.src, 'iframe', 'reporting'); }, 'navigation CORP'); -async_test(async (t) => { - try { - const iframe = document.createElement('iframe'); - t.add_cleanup(() => iframe.remove()); +promise_test(async (t) => { + const iframe = document.createElement('iframe'); + t.add_cleanup(() => iframe.remove()); - iframe.src = 'resources/reporting-empty-frame.html'; - const targetUrl = `/common/blank.html?${token()}`; - iframe.addEventListener('load', () => { - const nested = iframe.contentDocument.createElement('iframe'); - nested.src = targetUrl; - // |nested| doesn't have COEP whereas |iframe| has, so it is blocked. - iframe.contentDocument.body.appendChild(nested); - }, {once: true}); + iframe.src = 'resources/reporting-empty-frame.html'; + const targetUrl = `/common/blank.html?${token()}`; + iframe.addEventListener('load', t.step_func(() => { + const nested = iframe.contentDocument.createElement('iframe'); + nested.src = targetUrl; + // |nested| doesn't have COEP whereas |iframe| has, so it is blocked. + iframe.contentDocument.body.appendChild(nested); + }), {once: true}); - document.body.appendChild(iframe); + document.body.appendChild(iframe); - // Wait 3 seconds for reports to settle. - await wait(3000); + // Wait 3 seconds for reports to settle. + await wait(3000); - checkNavigationReportExistence(reports, targetUrl, iframe.src, 'enforce'); - checkNavigationReportExistence( - reportsForReportOnly, targetUrl, iframe.src, 'reporting'); - - t.done(); - } catch (e) { - t.step(() => { throw e }); - } + checkNavigationReportExistence(reports, targetUrl, iframe.src, 'enforce'); + checkNavigationReportExistence( + reportsForReportOnly, targetUrl, iframe.src, 'reporting'); }, 'COEP violation on nested frame navigation'); $ diff --git a/tests/wpt/web-platform-tests/html/dom/elements/images/image.py b/tests/wpt/web-platform-tests/html/dom/elements/images/image.py index 1aec0819263..b8bb34e6180 100644 --- a/tests/wpt/web-platform-tests/html/dom/elements/images/image.py +++ b/tests/wpt/web-platform-tests/html/dom/elements/images/image.py @@ -4,7 +4,7 @@ from wptserve.utils import isomorphic_decode def main(request, response): - key = request.GET['id'] + key = request.GET[b'id'] alreadyServedRequest = False try: alreadyServedRequest = request.server.stash.take(key) @@ -19,10 +19,10 @@ def main(request, response): pass response.writer.write_status(200) - response.writer.write_header(b"etag", "abcdef") + response.writer.write_header(b"etag", b"abcdef") response.writer.write_header(b"content-length", len(body)) - response.writer.write_header(b"content-type", "image/png") - response.writer.write_header(b"cache-control", "public, max-age=31536000, no-cache") + response.writer.write_header(b"content-type", b"image/png") + response.writer.write_header(b"cache-control", b"public, max-age=31536000, no-cache") response.writer.end_headers() response.writer.write(body) diff --git a/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-hover.html b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-hover.html new file mode 100644 index 00000000000..461917a9a0d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/legend-hover.html @@ -0,0 +1,21 @@ + + + + + + + +
+ Legend +
+ diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/images/blocked-by-csp-ref.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/images/blocked-by-csp-ref.html new file mode 100644 index 00000000000..f37d8a3ec94 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/images/blocked-by-csp-ref.html @@ -0,0 +1,5 @@ + +Test reference + +It should say PASS below:
+PASS diff --git a/tests/wpt/web-platform-tests/html/rendering/replaced-elements/images/blocked-by-csp.html b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/images/blocked-by-csp.html new file mode 100644 index 00000000000..2416e5dfd08 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/rendering/replaced-elements/images/blocked-by-csp.html @@ -0,0 +1,8 @@ + +Images behave the same when blocked by CSP as when failing to load/broken + + + + +It should say PASS below:
+PASS diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-sharedworker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-sharedworker.html new file mode 100644 index 00000000000..9bfe5a1f312 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-sharedworker.html @@ -0,0 +1,10 @@ + +Testing evaluation order + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-worker-setup.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-worker-setup.js new file mode 100644 index 00000000000..88fc22ba7f7 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-worker-setup.js @@ -0,0 +1,4 @@ +importScripts("/resources/testharness.js"); +importScripts("module/evaluation-order-setup.mjs"); +importScripts("module/evaluation-order-1-nothrow-worker.mjs"); +importScripts("module/evaluation-order-1-nothrow.mjs"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-worker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-worker.html new file mode 100644 index 00000000000..4ddfb61d507 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow-worker.html @@ -0,0 +1,10 @@ + +Testing evaluation order + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow.html new file mode 100644 index 00000000000..b08372efd71 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-nothrow.html @@ -0,0 +1,19 @@ + +Testing evaluation order + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-sharedworker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-sharedworker.html new file mode 100644 index 00000000000..0ad18a8fba8 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-sharedworker.html @@ -0,0 +1,10 @@ + +Testing evaluation order + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker-setup.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker-setup.js new file mode 100644 index 00000000000..f5bb6ecaf96 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker-setup.js @@ -0,0 +1,4 @@ +importScripts("/resources/testharness.js"); +importScripts("module/evaluation-order-setup.mjs"); +importScripts("module/evaluation-order-1-worker.mjs"); +importScripts("module/evaluation-order-1.mjs"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker.html new file mode 100644 index 00000000000..7760e087c2d --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1-worker.html @@ -0,0 +1,10 @@ + +Testing evaluation order + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1.html new file mode 100644 index 00000000000..7bf7132081e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/evaluation-order-1.html @@ -0,0 +1,19 @@ + +Testing evaluation order + + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-1.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-1.html index 73a6ce3db00..50933da2c1d 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-1.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-1.html @@ -9,6 +9,7 @@ window.log = []; window.addEventListener("error", ev => log.push(ev.error)); + window.addEventListener("onunhandledrejection", unreachable); const test_load = async_test( "Parse errors in different files should be reported " + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-2.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-2.html index 0d67cb819a9..51adb09d11a 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-2.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-2.html @@ -9,6 +9,7 @@ window.log = []; window.addEventListener("error", ev => log.push(ev.error)); + window.addEventListener("onunhandledrejection", unreachable); const test_load = async_test( "Instantiation errors in different files should be reported " + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-3.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-3.html index 5c0adff6ea8..bc52119bfe4 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-3.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/choice-of-error-3.html @@ -9,6 +9,7 @@ window.log = []; window.addEventListener("error", ev => log.push(ev.error)); + window.addEventListener("onunhandledrejection", unreachable); const test_load = async_test( "Evaluation errors are cached in intermediate module scripts"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-1.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-1.html index 6f119e30064..2480a60d6d4 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-1.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-1.html @@ -9,6 +9,7 @@ window.log = []; window.addEventListener("error", ev => log.push(ev.error)); + window.addEventListener("onunhandledrejection", unreachable); const test_load = async_test( "network error has higher priority than parse error"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-2.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-2.html index a7df1df0c86..673bf28ca20 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-2.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-2.html @@ -9,6 +9,7 @@ window.log = []; window.addEventListener("error", ev => log.push(ev.error)); + window.addEventListener("onunhandledrejection", unreachable); const test_load = async_test( "parse error has higher priority than instantiation error"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-3.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-3.html index 9b00df38915..8a16266f4cd 100644 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-3.html +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/error-type-3.html @@ -9,6 +9,7 @@ window.log = []; window.addEventListener("error", ev => log.push(ev.error)); + window.addEventListener("onunhandledrejection", unreachable); const test_load = async_test( "instantiation error has higher priority than evaluation error"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-sharedworker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-sharedworker.html new file mode 100644 index 00000000000..77ece9e4922 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-nothrow-sharedworker.html @@ -0,0 +1,10 @@ + +Testing evaluation order + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-sharedworker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-sharedworker.html new file mode 100644 index 00000000000..cc7f0302bfc --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-1-sharedworker.html @@ -0,0 +1,10 @@ + +Testing evaluation order + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-sharedworker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-sharedworker.html new file mode 100644 index 00000000000..06456390021 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-2-import-sharedworker.html @@ -0,0 +1,10 @@ + +Testing evaluation order + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-sharedworker.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-sharedworker.html new file mode 100644 index 00000000000..cd1f5edfa22 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-3-dynamic-sharedworker.html @@ -0,0 +1,11 @@ + + +Testing evaluation order + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4-tla.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4-tla.html new file mode 100644 index 00000000000..da07faf42d6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4-tla.html @@ -0,0 +1,33 @@ + +Testing evaluation order + + + + + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4.1.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4.1.mjs new file mode 100644 index 00000000000..f3347c1d28e --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4.1.mjs @@ -0,0 +1,8 @@ +log.push("step-4.1-1"); +queueMicrotask(() => log.push("microtask-4.1")); +log.push("step-4.1-2"); + +await import("./evaluation-order-4.2.mjs"); + +// Not happening as we throw in the above module. +log.push("step-4.1-3"); diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4.2.mjs b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4.2.mjs new file mode 100644 index 00000000000..96a5cca3a63 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/evaluation-order-4.2.mjs @@ -0,0 +1,5 @@ +log.push("step-4.2-1"); +queueMicrotask(() => log.push("microtask-4.2")); +log.push("step-4.2-2"); + +throw new Error("error"); diff --git a/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html index f269dcbcb93..e54bf5d5388 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html +++ b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html @@ -10,7 +10,9 @@ async_test(t => { const iframe = document.createElement("iframe"); + iframe.onunhandledrejection = t.unreached_func("Unhandled promise rejection detected"); iframe.onerror = t.unreached_func("Error loading iframe"); + let onLoadWasCalled = false; iframe.onload = t.step_func(() => { assert_equals(iframe.contentDocument.body.textContent, "Initial body contents\n"); diff --git a/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-import.html b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-import.html index f59c3c0abe7..20645f4d788 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-import.html +++ b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-import.html @@ -6,17 +6,20 @@ + Initial body contents diff --git a/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-promise.html b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-promise.html index 5fc30a8b0e7..4f1281bcce4 100644 --- a/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-promise.html +++ b/tests/wpt/web-platform-tests/html/webappapis/dynamic-markup-insertion/document-write/module-tla-promise.html @@ -9,18 +9,14 @@ async_test(t => { document.test = t; const iframe = document.createElement("iframe"); - iframe.onerror = t.unreached_func("Error loading iframe"); - let onLoadWasCalled = false; - iframe.onload = t.step_func(() => { - assert_equals(iframe.contentDocument.body.textContent, "Initial body contents\n"); - iframe.onload = null; - onLoadWasCalled = true; - }); - document.addEventListener("documentWriteDone", t.step_func_done(() => { - assert_true(onLoadWasCalled); + + document.addEventListener("documentWriteDone", t.step_func(() => { assert_equals(iframe.contentDocument.body.textContent, "Initial body contents\n"); })); + iframe.onload = t.step_func_done(() => { + assert_equals(iframe.contentDocument.body.textContent, "Initial body contents\n"); + }); iframe.src = "module-tla-promise-iframe.html"; document.body.appendChild(iframe); diff --git a/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-backspace.tentative.html b/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-backspace.tentative.html index 11b1830efb9..7f56fe6660e 100644 --- a/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-backspace.tentative.html +++ b/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-backspace.tentative.html @@ -1,5 +1,6 @@ + InputEvent.getTargetRanges() at Backspace @@ -269,6 +270,25 @@ promise_test(async () => { checkGetTargetRangesOfInputOnDeleteSomething(); }, 'Backspace at "

a[]bc

"'); +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def

"; + let p1 = editor.firstChild; + let abc = p1.firstChild; + let p2 = p1.nextSibling; + let def = p2.firstChild; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "

abcdef

"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "

abc

[]def

"'); + // Invisible leading white-spaces in current block and invisible trailing // white-spaces in the previous block should be deleted for avoiding they // becoming visible when the blocks are joined. Perhaps, they should be @@ -389,6 +409,58 @@ promise_test(async () => { checkGetTargetRangesOfInputOnDeleteSomething(); }, 'Backspace at "

abc [

] def

"'); +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def

"; + let abc = editor.querySelector("p").firstChild; + let def = editor.querySelector("b").firstChild; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "

abcdef

"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "

abc

[]def

"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def

"; + let abc = editor.querySelector("p > b").firstChild; + let def = editor.querySelector("P + p > b").firstChild; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_in_array(editor.innerHTML, ["

abcdef

", + "

abcdef

"]); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "

abc

[]def

"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def

"; + let abc = editor.querySelector("i").firstChild; + let def = editor.querySelector("b").firstChild; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "

abcdef

"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "

abc

[]def

"'); + // Invisible leading white-spaces in the current block should be deleted // for avoiding they becoming visible when the blocks are joined, but // preformatted trailing white-spaces in the first block shouldn't be @@ -786,6 +858,25 @@ promise_test(async () => { checkGetTargetRangesOfInputOnDeleteSomething(); }, 'Backspace at "

abc{
}def

"'); +promise_test(async () => { + reset(); + editor.innerHTML = "
abc

def
ghi

"; + let p = editor.querySelector("p"); + let def = p.firstChild; + let abc = editor.firstChild.firstChild; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_in_array(editor.innerHTML, ["
abcdef

ghi

", + "
abcdef

ghi

"]); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "
abc

[]def
ghi

"'); + // Joining parent block and child block should remove invisible preceding // white-spaces of the child block and invisible leading white-spaces in // the child block, and they should be contained in a range of @@ -799,7 +890,8 @@ promise_test(async () => { let abc = editor.firstChild.firstChild; selection.collapse(def, 3); await sendBackspaceKey(); - assert_equals(editor.innerHTML, "
abcdef

ghi

"); + assert_in_array(editor.innerHTML, ["
abcdef

ghi

", + "
abcdef

ghi

"]); checkGetTargetRangesOfBeforeinputOnDeleteSomething({ startContainer: abc, startOffset: 3, @@ -809,10 +901,79 @@ promise_test(async () => { checkGetTargetRangesOfInputOnDeleteSomething(); }, 'Backspace at "
abc

[]def
ghi

"'); +promise_test(async () => { + reset(); + editor.innerHTML = "
abc

def

"; + let abc = editor.querySelector("div").firstChild; + let def = editor.querySelector("b").firstChild; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "
abcdef
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "
abc

[]def

"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abc

def

"; + let abc = editor.querySelector("b").firstChild; + let def = editor.querySelector("p > b").firstChild; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_in_array(editor.innerHTML, ["
abcdef
", + "
abcdef
"]); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "
abc

[]def

"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abc

def

"; + let abc = editor.querySelector("i").firstChild; + let def = editor.querySelector("b").firstChild; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "
abcdef
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "
abc

[]def

"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def
"; + let abc = editor.querySelector("p").firstChild; + let def = editor.querySelector("p").nextSibling; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "

abcdef

"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "

abc

[]def
"'); + // Joining child block and parent block should remove invisible trailing // white-spaces of the child block and invisible following white-spaces // in the parent block, and they should be contained by a range of -// `getTaregetRanges()`, but maybe needs discussion. +// `getTargetRanges()`, but maybe needs discussion. // https://github.com/w3c/input-events/issues/112 promise_test(async () => { reset(); @@ -831,6 +992,143 @@ promise_test(async () => { checkGetTargetRangesOfInputOnDeleteSomething(); }, 'Backspace at "

abc

[]def
"'); +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def
"; + let abc = editor.querySelector("b").firstChild; + let def = editor.querySelector("p").nextSibling; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "

abcdef

"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "

abc

[]def
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def
"; + let abc = editor.querySelector("b").firstChild; + let def = editor.querySelector("div > b").firstChild; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_in_array(editor.innerHTML, ["

abcdef

", + "

abcdef

"]); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "

abc

[]def
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def
"; + let abc = editor.querySelector("b").firstChild; + let def = editor.querySelector("i").firstChild; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "

abcdef

"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "

abc

[]def
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abcghi
"; + let abc = editor.querySelector("div").firstChild; + let def = editor.querySelector("li").firstChild; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "
abcdefghi
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "
abcghi
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abcghi
"; + let def = editor.querySelector("li").firstChild; + let ghi = editor.querySelector("ul").nextSibling; + selection.collapse(ghi, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "
abc
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: def, + startOffset: 3, + endContainer: ghi, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "
abc[]ghi
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abcjkl
"; + let abc = editor.querySelector("div").firstChild; + let def = editor.querySelector("li").firstChild; + selection.collapse(def, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "
abcdefjkl
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "
abcjkl
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abcjkl
"; + let def = editor.querySelector("li").firstChild; + let ghi = editor.querySelector("li + li").firstChild; + selection.collapse(ghi, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "
abcjkl
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: def, + startOffset: 3, + endContainer: ghi, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "
abcjkl
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abcjkl
"; + let ghi = editor.querySelector("li + li").firstChild; + let jkl = editor.querySelector("ul").nextSibling; + selection.collapse(jkl, 0); + await sendBackspaceKey(); + assert_equals(editor.innerHTML, "
abc
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: ghi, + startOffset: 3, + endContainer: jkl, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Backspace at "
abc[]jkl
"'); + // Backspace in empty paragraph should remove the empty paragraph. In this // case, it should be treated as joining with the previous paragraph. // The target range should include the invisible
element in the empty diff --git a/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-forwarddelete.tentative.html b/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-forwarddelete.tentative.html index b31afacb62d..333a87a9d95 100644 --- a/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-forwarddelete.tentative.html +++ b/tests/wpt/web-platform-tests/input-events/input-events-get-target-ranges-forwarddelete.tentative.html @@ -1,5 +1,6 @@ + InputEvent.getTargetRanges() at Delete (forward delete) @@ -269,6 +270,25 @@ promise_test(async () => { checkGetTargetRangesOfInputOnDeleteSomething(); }, 'Delete at "

ab[]c

"'); +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def

"; + let p1 = editor.firstChild; + let abc = p1.firstChild; + let p2 = p1.nextSibling; + let def = p2.firstChild; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "

abcdef

"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "

abc[]

def

"'); + // Invisible trailing white-spaces in current block and invisible leading // white-spaces in the following block should be deleted for avoiding they // becoming visible when the blocks are joined. Perhaps, they should be @@ -388,6 +408,58 @@ promise_test(async () => { checkGetTargetRangesOfInputOnDeleteSomething(); }, 'Delete at "

abc [

] def

"'); +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def

"; + let abc = editor.querySelector("p").firstChild; + let def = editor.querySelector("b").firstChild; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "

abcdef

"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "

abc[]

def

"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def

"; + let abc = editor.querySelector("p > b").firstChild; + let def = editor.querySelector("P + p > b").firstChild; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_in_array(editor.innerHTML, ["

abcdef

", + "

abcdef

"]); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "

abc[]

def

"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def

"; + let abc = editor.querySelector("i").firstChild; + let def = editor.querySelector("b").firstChild; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "

abcdef

"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "

abc[]

def

"'); + // Invisible leading white-spaces in the following block should be deleted // for avoiding they becoming visible when the blocks are joined, but // preformatted trailing white-spaces in the first block shouldn't be @@ -763,6 +835,25 @@ promise_test(async () => { checkGetTargetRangesOfInputOnDeleteSomething(); }, 'Delete at "
abc[]

def
"'); +promise_test(async () => { + reset(); + editor.innerHTML = "
abc

def
ghi

"; + let p = editor.querySelector("p"); + let def = p.firstChild; + let abc = editor.firstChild.firstChild; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_in_array(editor.innerHTML, ["
abcdef

ghi

", + "
abcdef

ghi

"]); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "
abc

[]def
ghi

"'); + // Joining parent block and child block should remove invisible preceding // white-spaces of the child block and invisible leading white-spaces in // the child block, and they should be contained in a range of @@ -786,6 +877,75 @@ promise_test(async () => { checkGetTargetRangesOfInputOnDeleteSomething(); }, 'Delete at "
abc[]

def
ghi

"'); +promise_test(async () => { + reset(); + editor.innerHTML = "
abc

def

"; + let abc = editor.querySelector("div").firstChild; + let def = editor.querySelector("b").firstChild; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "
abcdef
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "
abc[]

def

"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abc

def

"; + let abc = editor.querySelector("b").firstChild; + let def = editor.querySelector("p > b").firstChild; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_in_array(editor.innerHTML, ["
abcdef
", + "
abcdef
"]); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "
abc[]

def

"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abc

def

"; + let abc = editor.querySelector("i").firstChild; + let def = editor.querySelector("b").firstChild; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "
abcdef
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "
abc[]

def

"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def
"; + let abc = editor.querySelector("p").firstChild; + let def = editor.querySelector("p").nextSibling; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "

abcdef

"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "

abc[]

def
"'); + // Joining child block and parent block should remove invisible trailing // white-spaces of the child block and invisible following white-spaces // in the parent block, and they should be contained by a range of @@ -808,6 +968,143 @@ promise_test(async () => { checkGetTargetRangesOfInputOnDeleteSomething(); }, 'Delete at "

abc[]

def
"'); +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def
"; + let abc = editor.querySelector("b").firstChild; + let def = editor.querySelector("p").nextSibling; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "

abcdef

"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "

abc[]

def
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def
"; + let abc = editor.querySelector("b").firstChild; + let def = editor.querySelector("div > b").firstChild; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_in_array(editor.innerHTML, ["

abcdef

", + "

abcdef

"]); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "

abc[]

def
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "

abc

def
"; + let abc = editor.querySelector("b").firstChild; + let def = editor.querySelector("i").firstChild; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "

abcdef

"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "

abc[]

def
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abcghi
"; + let abc = editor.querySelector("div").firstChild; + let def = editor.querySelector("li").firstChild; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "
abcdefghi
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "
abc[]ghi
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abcghi
"; + let def = editor.querySelector("li").firstChild; + let ghi = editor.querySelector("ul").nextSibling; + selection.collapse(def, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "
abc
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: def, + startOffset: 3, + endContainer: ghi, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "
abcghi
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abcjkl
"; + let abc = editor.querySelector("div").firstChild; + let def = editor.querySelector("li").firstChild; + selection.collapse(abc, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "
abcdefjkl
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: abc, + startOffset: 3, + endContainer: def, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "
abc[]jkl
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abcjkl
"; + let def = editor.querySelector("li").firstChild; + let ghi = editor.querySelector("li + li").firstChild; + selection.collapse(def, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "
abcjkl
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: def, + startOffset: 3, + endContainer: ghi, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "
abcjkl
"'); + +promise_test(async () => { + reset(); + editor.innerHTML = "
abcjkl
"; + let ghi = editor.querySelector("li + li").firstChild; + let jkl = editor.querySelector("ul").nextSibling; + selection.collapse(ghi, 3); + await sendDeleteKey(); + assert_equals(editor.innerHTML, "
abc
"); + checkGetTargetRangesOfBeforeinputOnDeleteSomething({ + startContainer: ghi, + startOffset: 3, + endContainer: jkl, + endOffset: 0, + }); + checkGetTargetRangesOfInputOnDeleteSomething(); +}, 'Delete at "
abcjkl
"'); + // Delete in empty paragraph should remove the empty paragraph. In this // case, it should be treated as joining with the previous paragraph. // The target range should include the invisible
element in the empty diff --git a/tests/wpt/web-platform-tests/interfaces/encoding.idl b/tests/wpt/web-platform-tests/interfaces/encoding.idl index bae48f11993..7585cb3717c 100644 --- a/tests/wpt/web-platform-tests/interfaces/encoding.idl +++ b/tests/wpt/web-platform-tests/interfaces/encoding.idl @@ -44,11 +44,6 @@ interface TextEncoder { }; TextEncoder includes TextEncoderCommon; -interface mixin GenericTransformStream { - readonly attribute ReadableStream readable; - readonly attribute WritableStream writable; -}; - [Exposed=(Window,Worker)] interface TextDecoderStream { constructor(optional DOMString label = "utf-8", optional TextDecoderOptions options = {}); diff --git a/tests/wpt/web-platform-tests/interfaces/intersection-observer.idl b/tests/wpt/web-platform-tests/interfaces/intersection-observer.idl index fa1de190387..52db1c4baa9 100644 --- a/tests/wpt/web-platform-tests/interfaces/intersection-observer.idl +++ b/tests/wpt/web-platform-tests/interfaces/intersection-observer.idl @@ -8,7 +8,7 @@ callback IntersectionObserverCallback = undefined (sequence thresholds; undefined observe(Element target); diff --git a/tests/wpt/web-platform-tests/interfaces/sanitizer-api.tentative.idl b/tests/wpt/web-platform-tests/interfaces/sanitizer-api.tentative.idl index 25cba22ecfc..600ae0514a3 100644 --- a/tests/wpt/web-platform-tests/interfaces/sanitizer-api.tentative.idl +++ b/tests/wpt/web-platform-tests/interfaces/sanitizer-api.tentative.idl @@ -8,4 +8,6 @@ [CallWith=ScriptState, RaisesException] DOMString sanitizeToString(DOMString input); }; -dictionary SanitizerConfig {}; +dictionary SanitizerConfig { + sequence? dropElements; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/streams.idl b/tests/wpt/web-platform-tests/interfaces/streams.idl index 1df6827189d..99c3a5dee91 100644 --- a/tests/wpt/web-platform-tests/interfaces/streams.idl +++ b/tests/wpt/web-platform-tests/interfaces/streams.idl @@ -219,3 +219,8 @@ interface CountQueuingStrategy { readonly attribute unrestricted double highWaterMark; readonly attribute Function size; }; + +interface mixin GenericTransformStream { + readonly attribute ReadableStream readable; + readonly attribute WritableStream writable; +}; diff --git a/tests/wpt/web-platform-tests/interfaces/webxr-hand-input.idl b/tests/wpt/web-platform-tests/interfaces/webxr-hand-input.idl index 260c00365ac..a7eb3b1a0e8 100644 --- a/tests/wpt/web-platform-tests/interfaces/webxr-hand-input.idl +++ b/tests/wpt/web-platform-tests/interfaces/webxr-hand-input.idl @@ -48,9 +48,9 @@ interface XRJointSpace: XRSpace {}; partial interface XRFrame { XRJointPose? getJointPose(XRJointSpace joint, XRSpace baseSpace); - void fillJointRadii(sequence jointSpaces, Float32Array radii); + boolean fillJointRadii(sequence jointSpaces, Float32Array radii); - void fillPoses(sequence spaces, XRSpace baseSpace, Float32Array transforms); + boolean fillPoses(sequence spaces, XRSpace baseSpace, Float32Array transforms); }; interface XRJointPose: XRPose { diff --git a/tests/wpt/web-platform-tests/layout-instability/move-distance-clamped.html b/tests/wpt/web-platform-tests/layout-instability/move-distance-clamped.html new file mode 100644 index 00000000000..6c5f9597f9a --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/move-distance-clamped.html @@ -0,0 +1,47 @@ + +Layout Instability: distance fraction not more than 1.0 + + + + + + +
+ diff --git a/tests/wpt/web-platform-tests/layout-instability/visibility-hidden.html b/tests/wpt/web-platform-tests/layout-instability/visibility-hidden.html new file mode 100644 index 00000000000..ec1c3316380 --- /dev/null +++ b/tests/wpt/web-platform-tests/layout-instability/visibility-hidden.html @@ -0,0 +1,24 @@ + +Layout Instability: visibility:hidden + + + + + + diff --git a/tests/wpt/web-platform-tests/lint.ignore b/tests/wpt/web-platform-tests/lint.ignore index a3b91f1a992..d299867133c 100644 --- a/tests/wpt/web-platform-tests/lint.ignore +++ b/tests/wpt/web-platform-tests/lint.ignore @@ -219,7 +219,6 @@ SET TIMEOUT: webvtt/* SET TIMEOUT: workers/* SET TIMEOUT: xhr/resources/init.htm SET TIMEOUT: xhr/resources/xmlhttprequest-timeout.js -SET TIMEOUT: focus/support/focus-restoration-in-different-site-iframes-outer.sub.html # generate_tests implementation and sample usage GENERATE_TESTS: resources/test/tests/functional/generate-callback.html diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/display-and-column-properties.html b/tests/wpt/web-platform-tests/mathml/crashtests/display-and-column-properties.html new file mode 100644 index 00000000000..c40a2a05497 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/display-and-column-properties.html @@ -0,0 +1,30 @@ + + + + MathML elements with display and column properties + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/mathml/crashtests/multicol-on-token-elements.html b/tests/wpt/web-platform-tests/mathml/crashtests/multicol-on-token-elements.html new file mode 100644 index 00000000000..9fc00eb6911 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/crashtests/multicol-on-token-elements.html @@ -0,0 +1,11 @@ + +mi +mi +mn +mn +mo +mo +ms +ms +mtext +mtext diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/blur-filter-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/blur-filter-ref.html new file mode 100644 index 00000000000..21fc165b7da --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/blur-filter-ref.html @@ -0,0 +1,13 @@ + + + + +Blur filter (reference) + + +

Rectangles should be blurred.

+
+
+ + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/blur-filter.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/blur-filter.html new file mode 100644 index 00000000000..9540a017d2e --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/blur-filter.html @@ -0,0 +1,21 @@ + + + + +Blur filter + + + + + +

Rectangles should be blurred.

+
+ +
+
+ +
+ + + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/clip-path-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/clip-path-ref.html new file mode 100644 index 00000000000..57935564bf0 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/clip-path-ref.html @@ -0,0 +1,13 @@ + + + + +Clip property (reference) + + +

Rectangles should be clipped to a polygon.

+
+
+ + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/clip-path.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/clip-path.html new file mode 100644 index 00000000000..5ff62ee7d4d --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/clip-path.html @@ -0,0 +1,21 @@ + + + + +Clip property + + + + + +

Rectangles should be clipped to a polygon.

+
+ +
+
+ +
+ + + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/clip-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/clip-ref.html new file mode 100644 index 00000000000..7882ac8c31e --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/clip-ref.html @@ -0,0 +1,13 @@ + + + + +Clip property (reference) + + +

Rectangles should be clipped.

+
+
+ + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/clip.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/clip.html new file mode 100644 index 00000000000..633e20cb78a --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/clip.html @@ -0,0 +1,21 @@ + + + + +Clip property + + + + + +

Rectangles should be clipped.

+
+ +
+
+ +
+ + + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/display-2.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/display-2.html new file mode 100644 index 00000000000..e0d41e4412f --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/display-2.html @@ -0,0 +1,134 @@ + + + + +Verify that one can override the layout of MathML elements with the CSS display property + + + + + + + + + + +
+ + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/transform-ref.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/transform-ref.html new file mode 100644 index 00000000000..005e8a78828 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/transform-ref.html @@ -0,0 +1,13 @@ + + + + +Transform property (reference) + + +

Rectangles should be rotated.

+
+
+ + + diff --git a/tests/wpt/web-platform-tests/mathml/relations/css-styling/transform.html b/tests/wpt/web-platform-tests/mathml/relations/css-styling/transform.html new file mode 100644 index 00000000000..b50d6c80045 --- /dev/null +++ b/tests/wpt/web-platform-tests/mathml/relations/css-styling/transform.html @@ -0,0 +1,21 @@ + + + + +Transform property + + + + + +

Rectangles should be rotated.

+
+ +
+
+ +
+ + + + diff --git a/tests/wpt/web-platform-tests/mathml/support/box-comparison.js b/tests/wpt/web-platform-tests/mathml/support/box-comparison.js index a574b01706b..b30ad279dfe 100644 --- a/tests/wpt/web-platform-tests/mathml/support/box-comparison.js +++ b/tests/wpt/web-platform-tests/mathml/support/box-comparison.js @@ -71,23 +71,24 @@ function compareSizeWithAndWithoutStyle(tag, style) { if (!FragmentHelper.isValidChildOfMrow(tag)) throw `Invalid argument: ${tag}`; + // FIXME only needed as workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1658135 document.body.insertAdjacentHTML("beforeend", `
\ -
${MathMLFragments[tag]}
\ -
${MathMLFragments[tag]}
\ +
${MathMLFragments[tag]}
\ +
${MathMLFragments[tag]}
\
`); var div = document.body.lastElementChild; var styleDiv = div.firstElementChild; - var styleMath = styleDiv.firstElementChild; - var styleElement = FragmentHelper.element(styleMath); + var styleParent = styleDiv.firstElementChild.firstElementChild; + var styleElement = FragmentHelper.element(styleParent); styleElement.setAttribute("style", style); - var styleMathBox = styleMath.getBoundingClientRect(); + var styleParentBox = styleParent.getBoundingClientRect(); var styleElementBox = styleElement.getBoundingClientRect(); var noStyleDiv = div.lastElementChild; - var noStyleMath = noStyleDiv.firstElementChild; - var noStyleElement = FragmentHelper.element(noStyleMath); - var noStyleMathBox = noStyleMath.getBoundingClientRect(); + var noStyleParent = noStyleDiv.firstElementChild.firstElementChild; + var noStyleElement = FragmentHelper.element(noStyleParent); + var noStyleParentBox = noStyleParent.getBoundingClientRect(); var noStyleElementBox = noStyleElement.getBoundingClientRect(); var preferredWidthDelta = @@ -98,8 +99,8 @@ function compareSizeWithAndWithoutStyle(tag, style) { return { preferred_width_delta: preferredWidthDelta, - width_delta: styleMathBox.width - noStyleMathBox.width, - height_delta: styleMathBox.height - noStyleMathBox.height, + width_delta: styleParentBox.width - noStyleParentBox.width, + height_delta: styleParentBox.height - noStyleParentBox.height, element_width_delta: styleElementBox.width - noStyleElementBox.width, element_height_delta: styleElementBox.height - noStyleElementBox.height }; diff --git a/tests/wpt/web-platform-tests/network-error-logging/support/report.py b/tests/wpt/web-platform-tests/network-error-logging/support/report.py index 671b3a28921..65433e7840b 100644 --- a/tests/wpt/web-platform-tests/network-error-logging/support/report.py +++ b/tests/wpt/web-platform-tests/network-error-logging/support/report.py @@ -2,6 +2,8 @@ import time import json import re +from wptserve.utils import isomorphic_decode + def retrieve_from_stash(request, key, timeout, min_count, default_value): t0 = time.time() while time.time() - t0 < timeout: @@ -44,7 +46,7 @@ def main(request, response): new_reports = json.loads(request.body) for report in new_reports: report[u"metadata"] = { - b"content_type": request.headers[b"Content-Type"], + u"content_type": isomorphic_decode(request.headers[b"Content-Type"]), } with request.server.stash.lock: reports = request.server.stash.take(key=key) diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_iframe-touch-action-none_touch.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_iframe-touch-action-none_touch.html new file mode 100644 index 00000000000..1c9651d8c16 --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_iframe-touch-action-none_touch.html @@ -0,0 +1,63 @@ + + + iframe touch-action:none attribute + + + + + + + + + + +

iframe touch-action:none attribute

+

+

Test Description: Drag your finger in the green rectangle below then tap the "Done" button.

+
+ + + + + diff --git a/tests/wpt/web-platform-tests/pointerevents/resources/iframe-touch-action-none-subframe.html b/tests/wpt/web-platform-tests/pointerevents/resources/iframe-touch-action-none-subframe.html new file mode 100644 index 00000000000..bcfb5e06588 --- /dev/null +++ b/tests/wpt/web-platform-tests/pointerevents/resources/iframe-touch-action-none-subframe.html @@ -0,0 +1,26 @@ + + + + + diff --git a/tests/wpt/web-platform-tests/resources/test-only-api.js b/tests/wpt/web-platform-tests/resources/test-only-api.js index 3fdf1cea6eb..ef66e0e733f 100644 --- a/tests/wpt/web-platform-tests/resources/test-only-api.js +++ b/tests/wpt/web-platform-tests/resources/test-only-api.js @@ -47,11 +47,14 @@ function loadScript(path) { * Only call this function if isChromiumBased === true. * * @param {Array.} resources - A list of scripts to load: Mojo JS - * bindings should be of the form '/gen/../*.mojom.js', the ordering of which - * does not matter. Do not include mojo_bindings.js in this list. + * bindings should be of the form '/gen/../*.mojom.js' or + * '/gen/../*.mojom-lite.js' (requires `lite` to be true); the order does not + * matter. Do not include 'mojo_bindings.js' or 'mojo_bindings_lite.js'. + * @param {boolean=} lite - Whether the lite bindings (*.mojom-lite.js) are used + * (default is false). * @returns {Promise} */ -async function loadMojoResources(resources) { +async function loadMojoResources(resources, lite = false) { if (!isChromiumBased) { throw new Error('MojoJS not enabled; start Chrome with --enable-blink-features=MojoJS,MojoJSTest'); } @@ -70,13 +73,26 @@ async function loadMojoResources(resources) { if (path.endsWith('/mojo_bindings.js')) { throw new Error('Do not load mojo_bindings.js explicitly.'); } - if (! /^\/gen\/.*\.mojom\.js$/.test(path)) { - throw new Error(`Unrecognized resource path: ${path}`); + if (path.endsWith('/mojo_bindings_lite.js')) { + throw new Error('Do not load mojo_bindings_lite.js explicitly.'); + } + if (lite) { + if (! /^\/gen\/.*\.mojom-lite\.js$/.test(path)) { + throw new Error(`Unrecognized resource path: ${path}`); + } + } else { + if (! /^\/gen\/.*\.mojom\.js$/.test(path)) { + throw new Error(`Unrecognized resource path: ${path}`); + } } } - await loadScript(genPrefix + '/gen/layout_test_data/mojo/public/js/mojo_bindings.js'); - mojo.config.autoLoadMojomDeps = false; + if (lite) { + await loadScript(genPrefix + '/gen/layout_test_data/mojo/public/js/mojo_bindings_lite.js'); + } else { + await loadScript(genPrefix + '/gen/layout_test_data/mojo/public/js/mojo_bindings.js'); + mojo.config.autoLoadMojomDeps = false; + } for (const path of resources) { await loadScript(genPrefix + path); diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-config.tentative.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-config.tentative.html index c780bbe21b7..5c115a467cb 100644 --- a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-config.tentative.html +++ b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-config.tentative.html @@ -8,52 +8,81 @@ diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitize.tentative.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitize.tentative.html index 219eff41891..44961e02f4e 100644 --- a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitize.tentative.html +++ b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitize.tentative.html @@ -13,9 +13,12 @@ d.appendChild(fragment); return d.innerHTML; } - const s = new Sanitizer({}); testcases.forEach(c => test(t => { + let s = new Sanitizer(c.config_input); + assert_true(s.creationOptions instanceof Object); + assert_object_equals(s.creationOptions, c.config_value); + fragment = s.sanitize(c.value); assert_true(fragment instanceof DocumentFragment); assert_equals(getString(fragment), c.result); diff --git a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitizeToString.tentative.html b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitizeToString.tentative.html index 98bb4a46018..7efbc3ca7bd 100644 --- a/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitizeToString.tentative.html +++ b/tests/wpt/web-platform-tests/sanitizer-api/sanitizer-sanitizeToString.tentative.html @@ -8,9 +8,10 @@ diff --git a/tests/wpt/web-platform-tests/sanitizer-api/support/testcases.sub.js b/tests/wpt/web-platform-tests/sanitizer-api/support/testcases.sub.js index d1af1c9b5a9..a3cc6d38c8c 100644 --- a/tests/wpt/web-platform-tests/sanitizer-api/support/testcases.sub.js +++ b/tests/wpt/web-platform-tests/sanitizer-api/support/testcases.sub.js @@ -1,17 +1,24 @@ const testcases = [ - {value: "test", result: "test", message: "string"}, - {value: "bla", result: "bla", message: "html fragment"}, - {value: "test", result: "test", message: "document"}, - {value: "
test", result: "
test
", message: "html without close tag"}, - {value: " diff --git a/tests/wpt/web-platform-tests/shadow-dom/declarative/element-internals-shadowroot.tentative.html b/tests/wpt/web-platform-tests/shadow-dom/declarative/element-internals-shadowroot.tentative.html index 0f01cc41acf..aeaa322a31c 100644 --- a/tests/wpt/web-platform-tests/shadow-dom/declarative/element-internals-shadowroot.tentative.html +++ b/tests/wpt/web-platform-tests/shadow-dom/declarative/element-internals-shadowroot.tentative.html @@ -41,4 +41,90 @@ test(() => { assert_true(constructed); }, 'ElementInternals.shadowRoot allows access to closed shadow root'); +test(() => { + let constructed = false; + const element = document.createElement('x-1'); + assert_throws_dom('NotSupportedError', () => element.attachInternals(),'attachInternals cannot be called before definition exists'); + customElements.define('x-1', class extends HTMLElement { + constructor() { + super(); + assert_true(!!this.attachInternals()); + constructed = true; + } + }); + assert_false(constructed); + assert_throws_dom('NotSupportedError', () => element.attachInternals(),'attachInternals cannot be called before constructor'); + customElements.upgrade(element); + assert_true(constructed); + assert_throws_dom('NotSupportedError', () => element.attachInternals(),'attachInternals already called'); +}, 'ElementInternals cannot be called before constructor, upgrade case'); + +test(() => { + let constructed = false; + const element = document.createElement('x-2'); + customElements.define('x-2', class extends HTMLElement { + constructor() { + super(); + // Don't attachInternals() here + constructed = true; + } + }); + assert_throws_dom('NotSupportedError', () => element.attachInternals(),'attachInternals cannot be called before constructor'); + assert_false(constructed); + customElements.upgrade(element); + assert_true(constructed); + assert_true(!!element.attachInternals(),'After the constructor, ok to call from outside'); +}, 'ElementInternals *can* be called after constructor, upgrade case'); + +test(() => { + let constructed = false; + customElements.define('x-3', class extends HTMLElement { + constructor() { + super(); + assert_true(!!this.attachInternals()); + constructed = true; + } + }); + const element = document.createElement('x-3'); + assert_true(constructed); + assert_throws_dom('NotSupportedError', () => element.attachInternals(), 'attachInternals already called'); +}, 'ElementInternals cannot be called after constructor calls it, create case'); + +test(() => { + let constructed = false; + const element = document.createElement('x-5'); + customElements.define('x-5', class extends HTMLElement { + static disabledFeatures = [ 'internals' ]; + constructor() { + super(); + assert_throws_dom('NotSupportedError', () => this.attachInternals(), 'attachInternals forbidden by disabledFeatures, constructor'); + constructed = true; + } + }); + assert_false(constructed); + assert_throws_dom('NotSupportedError', () => element.attachInternals(), 'attachInternals forbidden by disabledFeatures, pre-upgrade'); + customElements.upgrade(element); + assert_true(constructed); + assert_throws_dom('NotSupportedError', () => element.attachInternals(), 'attachInternals forbidden by disabledFeatures, post-upgrade'); +}, 'ElementInternals disabled by disabledFeatures'); + +test(() => { + let constructed = false; + const element = document.createElement('x-6'); + const sr = element.attachShadow({mode: 'closed'}); + assert_true(sr instanceof ShadowRoot); + customElements.define('x-6', class extends HTMLElement { + constructor() { + super(); + assert_throws_dom('NotSupportedError', () => this.attachShadow({mode:'open'}), 'attachShadow already called'); + const elementInternals = this.attachInternals(); + assert_equals(elementInternals.shadowRoot, null, 'ElementInternals.shadowRoot should not be available for pre-attached shadow'); + constructed = true; + } + }); + assert_false(constructed); + customElements.upgrade(element); + assert_true(constructed,'Failed to construct - test failed'); + assert_equals(element.shadowRoot, null, 'shadow root is closed'); +}, 'ElementInternals.shadowRoot doesn\'t reveal pre-attached closed shadowRoot'); diff --git a/tests/wpt/web-platform-tests/tools/certs/cacert.key b/tests/wpt/web-platform-tests/tools/certs/cacert.key index c36ebcbc910..7b83e8f0e9e 100644 --- a/tests/wpt/web-platform-tests/tools/certs/cacert.key +++ b/tests/wpt/web-platform-tests/tools/certs/cacert.key @@ -1,30 +1,30 @@ -----BEGIN ENCRYPTED PRIVATE KEY----- -MIIFHzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIwt8BG3xFhxYCAggA -MB0GCWCGSAFlAwQBKgQQSn81QCB6EGEMiE6pZO1i9gSCBND1XL0OV5alXhRx/wna -TuDqgFVyDjKbFWkm4gV394chFtOBSlODjAJnDyn25YUCYAf4pj44OQ13YpxFoFtR -lvqA4TKdETHAONdij2CKIfZONO02Z5qURzySYQ2T4GRANS+UtO5KWD2vS0V4xVHL -p+BLLoxQM2TgO5vG9/SiktTY7QI7wS7prqUPiUkROOATMR24E+tNlzmCXVRVpMp6 -m8PUecEO4sobYE8KdUgXCiWNb23nok5mM38BTWgxs/6H/ARCPvAUutyqo/gsHMNv -uaOhev/yWTlF207/E/EtaS2pQcS0MT9sR7rK5KRLsoxpYrmPnEiid4nVvXPSmFAH -cRCivlb9+VhhJZTtpLCUPgIj7ek9ljZZsr9lw10FELHJNYgQD/2/hkkhdZMQTF/d -I+Yeq89t13PlyrGQUmL5k+XvmiCbWQWfNGw6p4vWznz6iB1P9L5IuWliQRXW4P3U -gh/3hRc+C1sDCzCqV1Tr4GFQ7gFTsM5a2AroiT9bJGONGmILPYf6X7UQINruvmBt -gBLeGJWAtdSN+1Fy7qLz/TbfEYCe0pBChVy1mKuSDXQ3mzWQA4UIJMBeIXkTtEPM -ijL0Q8SLpt6MTrH8bP78IgrzynugVNvX3gFeVscsGQSUNJvIK+pqgYE1YuwrzNWd -hpXbQCSgJaLajlyldrXCRudYchqCw4j4Y55BPN4mdgqW6P/9rOyyX9T5Lu/06HZH -ceRQtsZR5+Qy+aLVL/TJ6nAGp1huVj+Gmz0P+DVb75eqnF7dHBJNqwrrKjq3aIIc -YrXrKUa1OLkJAm1USHoIKTQS3tG/2xseVdRMCmC8HlaxzXxWxng/ho2L3pQ4MI+e -5FLqoZruNKUzB9IakfEscEHxleqi+r29gz0FIUWIJU4hPpnE3xL/RF6jP3/f99uJ -oOhKYVPZLRVgPP7bzO8dzvoF2qiqMRB6lWR7IrOAlHASkfzCkapaOGWgoKf9MqBO -BptdCA5me2Im5Yrn8DggTogr1o2ZRnvWtZ4S8Ynms4G7P1NM0Da92W08JLLH4/iU -4IimrFl7dPOn3jvKzr5hhGTmmxcVbO/XXnhY5qTqxlaB1fwq424vzQ7XeRMnlPeI -NQ/oqO/4Kzz0DrezIz36cXtW4hZt+xNzbvy0FQEqBvWJa3+44nP751owIUG+Af4g -EIj04smQz1AgiX+ojnvX8udSRsSfpylsUo8K4oF1uZuY3QlzoRgrb0cjR826YL5v -byd1pJrgxz0oRxduhzR/bHa4mtVmrHiCOYoBjvzEbfQMhnunri8W3HjNDLu50Pdp -u6xRzUuwL56aF7dqfUafez99KT2eFJBqPmSWnFyfVpL5iFW23KKPD9Oe/jxHWPLh -/zLqvHaZk4TCT6E0KCn9mv/S6JSoOt+lD6gUnerLqhOnFTKmrZkWCzfchu8Y8NVJ -nUCdOq/zKZVT1h8p0E8qLVYpTqRGQ4lgPkJt0i1qYJy5FXWmTnZQRdOKeWVh5vwK -q63ueNwEMGpYCKgm+Gm1StmAQc/eLVL2KmES1BTgTBq1olyiYMHKyIkes1paSvHh -kkirSf+XJxbQBXw6MpofKHQ5K9sdEfh8jofGwHudwdkrsXoIv/WTYANyg2h//6xh -qPtyTnrApHAKTsnVbbMt/+4tnw== +MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQIkaenDsgd4ocCAggA +MAwGCCqGSIb3DQIJBQAwFAYIKoZIhvcNAwcECJAqFIqfz3yoBIIEyJzn9rsqRfFD +I75CcWTCXZM+f0oTgtBAmx2ZUVn46M9hOq1DGZo1QNcIV53MP+m3QPTwo2AZRsx+ +Q0YobCtHqQRtl3WjLmpWZTA8W/f15A/+N0IQDZy+hxfrYgbhcgT9EhaRMs8NH5Iu +GaMCmZDNm0RborKLdAtR3EtlFI3WZPejVv5r9HRl6TDHBjpfM+nB3Its11OfUoKO +QZQyqiAzZpGmwkxPvPVDVk9kKwR6k5ypvANRNS73txQojfDUdLh/Zz2B136Qk8iZ +f42gI/jbZQD81BT+9t+kfI5BDPYocsGQHSZ/l55NcBPnE3TtfPBWMXJ2T2IrA6LN +x7C6J5GGwBZ2RYQnim/1tOc6lrx2iGRfBlJa360JfO7jNLyssnChLMeQ1t3KmEN8 +ALxV9jMqN1w58px4qzbj4wVGHIEKb5o1/VhymhwuXBBYY4ztKKv9EKOu+ZMJfPtu +XILgXUuwnv1jetUXT+SbwVcGj4DoE+LSV7pB65jdmwQePH0icjkFmUXMVW/Pml/J +KBPuM4Ju4Wxt1+mLXp9maKICK3jJ8Gok2gi5x4axEHx3l8JOAIl+qA5gJ1N24yPl +1pkJcoEByU1pL32jtDMEn1Isf+pBl9vj5MdKs6EDh+ZrJhovc5puSDfENY1bv/Q6 +IqzLu45TQX6MTqkmGoE8wMJ9MP6otLYEY836+gk5F1cdf9Yw/FiIS3oha8mzj9F3 +BUKZj6ot5/q6Fcr9AQU94hwuJpl7iKAeR3DkDl26lVhbtxtZy0v18bXcqL+iFtMX +vlc8jAX2Aj8W5OgiAFq069W63Q9pa8HmkAQBoi62yRivJlcXpEoE0hn7en/Hmje1 +58OoiSGHM7c+FyYqBzXJg7j+hU5gn2hKm+PQD+Vyic/TC9mOJozuuOSMd8F94/4q +2FX9wAyCsyfq6JtJZVjcLu/Xu1h8LfFEyFGDehL6wj1/T3+lkFjc06QY+m7giWmn +J7ksUZOvZcpV8Z2LGMPZf2h+oOgfQ2df2qKCGz/2e4w5cu3wlZqd3+CxJU9cephZ +KJl8NRd3LI8SCbVGS21/tRRj65d3jbHgkbN15zbyinWeoggCpKbK/04Pue3aHs77 +NlmPVQyI6Pevl8eJM1YdXrbQCO0zXSg6FdUMm6ACknjRYXgD8rb8HLDj69M5mj5q +sCayfF0dsh20758w6E6BCtNo1RQyrvIc54SFWBXFwuxfpJmGgbp1jxQSx4ixRZ7i +zj3JHhlq8ldczaKqiRHhrr3utwVvH5+X9Yw8Bh9wzUrSOFu4TTMPfA7Dl+RjXxg2 +ymX81nv8uSnLc9cnHptug/pIpJh6xBLMcl0rmT7h3hH0u3ahrnu+oAp+M3zNHrsa +kUxOYe8bn9X2fVqN5rKCQe8OEpczXgtjS5C2DErciIWJhqaUTg3lAfN9xuaz4/KC +4APc+d7aVMef1tsd3T9JaTdh2KxjgOzE3Af/d+VwOxFMv71+hUXF5zgK/bkg6LPk +VGiRcShSbM7VbcAaCBMqY/7gz1m134FglMWCVmv9GCDR4AdAlD9KlQ9q0cfGaNJS +jj86YIu3Z4kzd4pPsjy4bX9k9OOPZ/eO6oSDB2+LqFGn0vHj/zAxfEcWJDm30KhN +Nkbwd5VFFkXdiQmePxAiGA== -----END ENCRYPTED PRIVATE KEY----- diff --git a/tests/wpt/web-platform-tests/tools/certs/cacert.pem b/tests/wpt/web-platform-tests/tools/certs/cacert.pem index f450f014d9f..a8ce54be557 100644 --- a/tests/wpt/web-platform-tests/tools/certs/cacert.pem +++ b/tests/wpt/web-platform-tests/tools/certs/cacert.pem @@ -1,16 +1,16 @@ -----BEGIN CERTIFICATE----- -MIJAhzCCP2+gAwIBAgIDC+NXMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl -Yi1wbGF0Zm9ybS10ZXN0czAeFw0yMDA3MzAyMDEyNDhaFw0yMjEwMDgyMDEyNDha +MIJAhzCCP2+gAwIBAgIDBsfzMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl +Yi1wbGF0Zm9ybS10ZXN0czAeFw0yMDA5MTIwMDI1MzBaFw0yMTA5MTIwMDI1MzBa MB0xGzAZBgNVBAMMEndlYi1wbGF0Zm9ybS10ZXN0czCCASIwDQYJKoZIhvcNAQEB -BQADggEPADCCAQoCggEBAONFL+vCrQenoebExCh0nArZa2+BRz3NmEkS0z7EBtc0 -i6FDQr3lwo+b2zDSqllvrpQHCFReuSagHAW1wPRo0mHicdvhHOCfFc2+bBPXS4db -8cUNUOc4ClRqOLPwGu+yPteWv/OJPx4nS9COU3HWj+KIAINtKtlxoRe6XbXs2D5J -3iMfJcI3ZINVWmnhAlMTKqzMLjn8ouIDAsyCf7aZj+JS39B4GN1CzBbomXEeJHad -36PChji2R+k7LJPK/4gwOsfSpiTfOoF0FK1IxZwQ9cWRhqEEgcFpt4CZSR0HadlG -MYnrgG4a0v/A1BbBQYDe1M0UPttUOHy2+7XHaEdB/vUCAwEAAaOCPc4wgj3KMAwG -A1UdEwQFMAMBAf8wHQYDVR0OBBYEFLN13aCb8lr+F42Asfynt8EreSkrMEcGA1Ud -IwRAMD6AFLN13aCb8lr+F42Asfynt8EreSkroSGkHzAdMRswGQYDVQQDDBJ3ZWIt -cGxhdGZvcm0tdGVzdHOCAwvjVzALBgNVHQ8EBAMCAgQwgh+bBgNVHR4Egh+SMIIf +BQADggEPADCCAQoCggEBAJ4nWe+DDK0SJZPqgT0i9Cfx7Wg4v1vN+q4yh/sPNmQ+ +wcNbSu7/UwzhBj4SsP/Wpu4DYpnsn19IW3sAsIpkeLvTNGJThV9uc63UHKuT12wx +LrXAVQogX7Ieou/WRKUUW+S6AMEP9Daa92UA0WPjlplW+l4HgDNStbXJEFF5zCZC +ZvVO7hI4CzZxbx/o0komKTEklKcSoigsSMs/n9DUWqd+rd6lVQRIqKbowPzs65C2 +6BxT6YqVwD4QxGnRCv+T4EFxfT2GOmn9e5I3O6oN9pgOinzo8QG9ae9izhFHOnaG ++rgRWl430Djg9wQtv8BBSgxgT2swe6PYr9drE1w7Zi0CAwEAAaOCPc4wgj3KMAwG +A1UdEwQFMAMBAf8wHQYDVR0OBBYEFBItKeGCg0NYb1P7c2KraTOzvBwVMEcGA1Ud +IwRAMD6AFBItKeGCg0NYb1P7c2KraTOzvBwVoSGkHzAdMRswGQYDVQQDDBJ3ZWIt +cGxhdGZvcm0tdGVzdHOCAwbH8zALBgNVHQ8EBAMCAgQwgh+bBgNVHR4Egh+SMIIf jqCCH4owE4IRd2ViLXBsYXRmb3JtLnRlc3QwF4IVb3A4LndlYi1wbGF0Zm9ybS50 ZXN0MBeCFW9wNy53ZWItcGxhdGZvcm0udGVzdDAXghVvcDkud2ViLXBsYXRmb3Jt LnRlc3QwF4IVb3A0LndlYi1wbGF0Zm9ybS50ZXN0MBeCFW5vdC13ZWItcGxhdGZv @@ -337,11 +337,11 @@ d2ViLXBsYXRmb3JtLnRlc3SCOnhuLS1sdmUtNmxhZC54bi0tbjhqNmRzNTNsd3dr cnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3SCQXhuLS1uOGo2ZHM1M2x3d2ty cWh2MjhhLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0 gkV4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54bi0tbjhqNmRzNTNsd3drcnFodjI4 -YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwDQYJKoZIhvcNAQELBQADggEBAHjDIDWw -i7O1qdt/nBYLqerRN8HqAY6CRWENg50zWKGIPCr2lz2vLDfASy4pUH2ZgPVXWCrN -Nkw2gHUtMYf1KdY6FOVvRvEWbccsUUR/mPDpjxXkbiALo1WHm/h7NSMg4aqyZi8q -IJfWwVOgxCOYj5AroHguRG5NvyQ0pcvrVAYUN03DvnV0AT4jxzDi6mo9zLkpgmsM -GLE4LaHgJfkbhuaX2g0tPSee7pJeXAz/2BaGWyPtb0XGTn5GEPLNDlMKuNCVZewX -k1Ukk3EAUph+VJXTro3qscP4AJRknLLfoM7LIwPgVrN+4bvHA3w0XIlnreQ25dhF -1Z567hdoFFgoHdY= +YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwDQYJKoZIhvcNAQELBQADggEBABJT/1Fz +fcRod/d4XOiprc0e64D9Ohd91E6grSPdIt/xEt5NEUY+E2F4RSuEYcznruGmnYjG +SqRaCk6GKRQRNopYH869EqvfvAuLwpL4ZhJZYlEkq2TVY9FHHyDIuSAZ0LbpNvcQ +68W1hIs9jEJX/WGnaJtOFqrEBY5Ep22+Elm1I+mJmsEbyiKvyw9ovZGGG0HnHODs +PwkQdfsNEgXnH2OcHZpDqt8xc9VWH2gNnJg2XfxfesUHcGhFY4joki+QiMdQRoHs +gc8D0R7QauBhc4NLWwat8EIRjKavmZvr+6QN2kGM4w/LYdX/JW121JWP5PbdwS29 +aRxZsfc6+YK+O+k= -----END CERTIFICATE----- diff --git a/tests/wpt/web-platform-tests/tools/certs/web-platform.test.key b/tests/wpt/web-platform-tests/tools/certs/web-platform.test.key index 0d422053f76..c4f5dc3f2cf 100644 --- a/tests/wpt/web-platform-tests/tools/certs/web-platform.test.key +++ b/tests/wpt/web-platform-tests/tools/certs/web-platform.test.key @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEugIBADANBgkqhkiG9w0BAQEFAASCBKQwggSgAgEAAoIBAQDIC2Z1QbJG1A+y -gY1nqcGHWaXyNIFx4uwS0h88ayz8kE6c2JEvUqfMYVuC40f1chv63rsruV9Pusn+ -fptnshAyOcbko5R6Hpw5hHFPGztfhmPMn8swt+FO8FpJNCyx0X5bRG6+N/UyQpra -WsLpuYUNlIUCirZGBLFX6Uwk2gQWzxY9NUSBue8azNm3l6NskbyURReX27SxaKpW -3Q8Yt3ay0j0QM6DD7KZ4Dvk9zlbLPStFB2lukV3a+M+YpAyG8jYR5Py40ZkJ4RIc -yWLvel3dERHraxSAU2hTWsScxCli7mMhDbUtoCfkpP4Wh0H2hT5dIc/ATDbO39dJ -l2vmphtNAgMBAAECggEAHQKKOTbtw5e9LwXam83iYt59UkKLAxkFYzVVkk14mKfU -vqopY9N4wgrcWn7bUJzbseXa/txDFizgXie+IauQ7bezQDT4szz9KtoqFG6+jXvP -vTzvGoGQCwKQFU2bra3TxSiHZs52oHNIQaIn4f0lbnK7V0MGa+ECVt1eTXnQXf4o -M1dkN6NHvizwG9YWZf3EdgVRmSnFl2IoiCkw4kjh76iHD02OgOpMtFEKScirxGbo -OFZGcQ3nID0rcGlPqA0IeM1LblS8qFH2DlE+I4cDDoLsHIREZaE6BZtttdvGnGo6 -2fNv6U5K/NFVonWXWQF9EIunm509LrIOcfttmOoMAQKBgQD30rrNOfeRxJ1F2Ucf -1dEY0sI1KHJHkXYITWfsair39CqmObehICUN62vlp7dvcSJQ7H5QNNymbUoSWq5I -jtUTpNV4GGpGREenx4CrXsJBcosoKX6SGuUrUk/kpvurgGaMphNEMnCjO9oEo6R2 -xPTy1mJN1HhOPrkgOnYyLOS3uQKBgQDOpRonk2i8+WZbmupP+jIiyrq0yudOEDlQ -vEQxBqLKzCn+fgKFtu+9po5tXmnuweXvDZYPi+fISV1mrlEhdFL+ERt4rVQQexPb -PdCR8R6Bi/pr7XE5ucAiGXYZPsssNa+5D7YU1wgvBthExHgUEQCdyb7bXlZB4nz8 -xLxjadGiNQKBgCVaV9mTASOxdNsQUs4Tlj6dlbQZcpAi9p1tvVo+7lcNMFh5npnk -lHEyqMKmstlTPg7gdnF0ZkWXd3CoxlgdXzRkxeAiHfKVXA+H3Hb4A2OF9j+JcZBo -CV6sO2qFWK2S3uIYLhM7XwrbfJLyb1mPejQX6B0/BxsUDSc0aJhLd/XRAn91Cw7F -W7j3UEuplxUgN5YuHqWhwUtB6+6KzBfTrO6H7xvaCYVkNzmTMcN6Lv/RPAIAZLGa -HKQrzWIZxqItULWxMf9dWs9ChnO4ukpoXynoNmCgwNxg1dT9e25o3ig14jKln0CC -jUkVWcslKCLbOsYemSaBGe3BY4dnpAcQR991AoGAR5F0Q8rd8WleWFDJAOY2t5jR -oqQ98iH2pQ23fFxwnebnPnyMsX0bG+zXuHtGpEEuFOGc7xqjNTm8MigLcLZ0PAzO -tscuFcjPG6QwWVjylC2/7+DiAiOHrhsx8jEXMc63Rb9fn3ILH55ZOeZig+A3+ZLk -pDcbFQ8tKaSChRCy6c0= +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDuGifF9hdWxBC2 +YF7bXIO7xXEREIQw97SL8LEuc7gHfG+0PCya8YNsDssxVdf0xb9Z0XbP4ApKn+Vg +6aTiTHFYXrQdlyU/o5sVbC3dDInFA3BKBhDOIltHAqIcq1HlFJrq+5wheh+Wv22F +i2Ceix8cVImA6aJdWLVds/bSLQgLPR0Ez1EP2FHaXZCZvtgFXk2oym6oei1OopZB +l/AF9sOybD/U2cao6xIX6EIkwgLXrC+Bh7lJLKvX6I8nGKUF3KFwO5RsU50j7d5S +3U+38QsB8n46QNGgCMAWwe0GoVRnH3SVgR9zGVsS02NLUi3ciGzHnahjYP3Tj8wM +AR5KH+UbAgMBAAECggEBAIPNKrMklKrNActS8W9QeQOaOgqOL/7DP8gvRoVGPVq3 +gUYuASsMAgnw7n2y3UZ7qH7ZuoE7rba9aEYLT+CNHDkkw2OV5WKi+BgVuBWi+Sh7 +zM7NKMRStGBMjtx74WuDynXFLhpB9faGpOPF0Ygxztjp2uvnaJ9vmYXzNvAFSWye +KHfj72vFTvLsyrwhEMz0+t6pviiXTZdqTBkZbkbEUN73YQFEsiCNxzoL8SAn4klh +wFPJdC2AWGXd+FQYUkiYeoocGN01cSlVPCJgv7hwjPCM8ZPXwZWhUxg2RgQHgn8q +mbPzk8m3gCgrHh5pMmm/V0Zwm3Y4SAEqcmXn9zDtl2ECgYEA+Pw5vKogtT0OC2aK +SH4MRq9BU+LoC4XkoFilxvZ4n54hEwovau2f4l+fOhL37kWkzgMPHp15tfw3dhb4 +9KUVI7Lu4eNqcjxa0FWnmLxaJMKVo4/fuD3283Fy3feT4p8m8gowUT4fT9PaAQY1 +qwO6W2Y8KyAzb1EMDnjc0KYu5QkCgYEA9M9v3B901kPyi3IYZe/NYM7aUgluWodF +ge5+6oX7uRsjBeQZgRvXz+8/gswpYkh4anHwqm2uiyy6NrNIRqY5oYpjf1131e/7 +rgkzKNqlscflHdbIw9Gg1PnPKb6qt/nBJtUebE7zOmaRIJq6ItPwB/8jsCm7zWqa +hbnohqbNBgMCgYEAxjt6dH03AVUU43rGSiUg/P33kyQq/1GgzxEFG72MF/k79/65 +9fYuv3rGOOR1RN1p8yN4XDWge4XNWlW77Huqsvt5OZtoWn83BnvLrcz4MCBEJy8b +PYMIJJaEj7jXoyx3Q2ldQrGlGFdhUENzYy7apn5lFSjUCqKKaNNNa0mEOJECgYAU +Y1o7iNsgJRSEDIJ/qtL95vxDrMll/LILOiOTwIjQR7RI/1AocnsstA4kBIDF0KdG +piqW5v+MU7NGbvPr/lf6Xh4fM1eRl6TsP5PlKSB3h+BK9eJOfJzaX9ui7GAnZkNx +ynn4JzMWgAhCIOCzmdb5s4PzXeZoGyK3VF5LKIUWpQKBgFem49WIPYZwuJKO+Gjt +9CdlY5bUyb1z//lxpSxX99YWn4Azo5cNjKI5wo+k/0b7DT1grUqiviv50UxE7XoW ++0DZvgDXvWrr/7c92ARazNGr/gTe2D7TWyIKhyQ9Zrv1dH1NIEjouvXzkLsfB0tY +eiC3cV07lWvFpXUGIzkzIqpQ -----END PRIVATE KEY----- diff --git a/tests/wpt/web-platform-tests/tools/certs/web-platform.test.pem b/tests/wpt/web-platform-tests/tools/certs/web-platform.test.pem index e7b1b018466..438f504b2b6 100644 --- a/tests/wpt/web-platform-tests/tools/certs/web-platform.test.pem +++ b/tests/wpt/web-platform-tests/tools/certs/web-platform.test.pem @@ -1,43 +1,43 @@ Certificate: Data: Version: 3 (0x2) - Serial Number: 779096 (0xbe358) - Signature Algorithm: sha256WithRSAEncryption + Serial Number: 444404 (0x6c7f4) + Signature Algorithm: sha256WithRSAEncryption Issuer: CN=web-platform-tests Validity - Not Before: Jul 30 20:12:48 2020 GMT - Not After : Oct 8 20:12:48 2022 GMT + Not Before: Sep 12 00:25:31 2020 GMT + Not After : Sep 12 00:25:31 2021 GMT Subject: CN=web-platform.test Subject Public Key Info: Public Key Algorithm: rsaEncryption - Public-Key: (2048 bit) + RSA Public-Key: (2048 bit) Modulus: - 00:c8:0b:66:75:41:b2:46:d4:0f:b2:81:8d:67:a9: - c1:87:59:a5:f2:34:81:71:e2:ec:12:d2:1f:3c:6b: - 2c:fc:90:4e:9c:d8:91:2f:52:a7:cc:61:5b:82:e3: - 47:f5:72:1b:fa:de:bb:2b:b9:5f:4f:ba:c9:fe:7e: - 9b:67:b2:10:32:39:c6:e4:a3:94:7a:1e:9c:39:84: - 71:4f:1b:3b:5f:86:63:cc:9f:cb:30:b7:e1:4e:f0: - 5a:49:34:2c:b1:d1:7e:5b:44:6e:be:37:f5:32:42: - 9a:da:5a:c2:e9:b9:85:0d:94:85:02:8a:b6:46:04: - b1:57:e9:4c:24:da:04:16:cf:16:3d:35:44:81:b9: - ef:1a:cc:d9:b7:97:a3:6c:91:bc:94:45:17:97:db: - b4:b1:68:aa:56:dd:0f:18:b7:76:b2:d2:3d:10:33: - a0:c3:ec:a6:78:0e:f9:3d:ce:56:cb:3d:2b:45:07: - 69:6e:91:5d:da:f8:cf:98:a4:0c:86:f2:36:11:e4: - fc:b8:d1:99:09:e1:12:1c:c9:62:ef:7a:5d:dd:11: - 11:eb:6b:14:80:53:68:53:5a:c4:9c:c4:29:62:ee: - 63:21:0d:b5:2d:a0:27:e4:a4:fe:16:87:41:f6:85: - 3e:5d:21:cf:c0:4c:36:ce:df:d7:49:97:6b:e6:a6: - 1b:4d + 00:ee:1a:27:c5:f6:17:56:c4:10:b6:60:5e:db:5c: + 83:bb:c5:71:11:10:84:30:f7:b4:8b:f0:b1:2e:73: + b8:07:7c:6f:b4:3c:2c:9a:f1:83:6c:0e:cb:31:55: + d7:f4:c5:bf:59:d1:76:cf:e0:0a:4a:9f:e5:60:e9: + a4:e2:4c:71:58:5e:b4:1d:97:25:3f:a3:9b:15:6c: + 2d:dd:0c:89:c5:03:70:4a:06:10:ce:22:5b:47:02: + a2:1c:ab:51:e5:14:9a:ea:fb:9c:21:7a:1f:96:bf: + 6d:85:8b:60:9e:8b:1f:1c:54:89:80:e9:a2:5d:58: + b5:5d:b3:f6:d2:2d:08:0b:3d:1d:04:cf:51:0f:d8: + 51:da:5d:90:99:be:d8:05:5e:4d:a8:ca:6e:a8:7a: + 2d:4e:a2:96:41:97:f0:05:f6:c3:b2:6c:3f:d4:d9: + c6:a8:eb:12:17:e8:42:24:c2:02:d7:ac:2f:81:87: + b9:49:2c:ab:d7:e8:8f:27:18:a5:05:dc:a1:70:3b: + 94:6c:53:9d:23:ed:de:52:dd:4f:b7:f1:0b:01:f2: + 7e:3a:40:d1:a0:08:c0:16:c1:ed:06:a1:54:67:1f: + 74:95:81:1f:73:19:5b:12:d3:63:4b:52:2d:dc:88: + 6c:c7:9d:a8:63:60:fd:d3:8f:cc:0c:01:1e:4a:1f: + e5:1b Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Subject Key Identifier: - D4:78:96:D1:22:40:93:76:CE:17:EB:B6:70:B6:09:05:E0:A3:17:F8 + 69:30:CF:1C:78:FD:0E:13:3A:FC:91:6A:B2:1D:18:B3:F8:4F:C8:09 X509v3 Authority Key Identifier: - keyid:B3:75:DD:A0:9B:F2:5A:FE:17:8D:80:B1:FC:A7:B7:C1:2B:79:29:2B + keyid:12:2D:29:E1:82:83:43:58:6F:53:FB:73:62:AB:69:33:B3:BC:1C:15 X509v3 Key Usage: Digital Signature, Non Repudiation, Key Encipherment @@ -46,33 +46,33 @@ Certificate: X509v3 Subject Alternative Name: DNS:web-platform.test, DNS:op8.web-platform.test, DNS:op7.web-platform.test, DNS:op9.web-platform.test, DNS:op4.web-platform.test, DNS:not-web-platform.test, DNS:op6.web-platform.test, DNS:op3.web-platform.test, DNS:op2.web-platform.test, DNS:op1.web-platform.test, DNS:www.web-platform.test, DNS:op5.web-platform.test, DNS:op88.web-platform.test, DNS:op98.web-platform.test, DNS:op85.web-platform.test, DNS:op89.web-platform.test, DNS:op66.web-platform.test, DNS:op72.web-platform.test, DNS:op24.web-platform.test, DNS:op41.web-platform.test, DNS:op79.web-platform.test, DNS:op91.web-platform.test, DNS:op59.web-platform.test, DNS:op39.web-platform.test, DNS:op60.web-platform.test, DNS:op58.web-platform.test, DNS:op28.web-platform.test, DNS:www1.web-platform.test, DNS:op14.web-platform.test, DNS:op69.web-platform.test, DNS:op40.web-platform.test, DNS:op74.web-platform.test, DNS:op31.web-platform.test, DNS:op18.web-platform.test, DNS:op73.web-platform.test, DNS:op77.web-platform.test, DNS:op12.web-platform.test, DNS:op54.web-platform.test, DNS:op63.web-platform.test, DNS:op71.web-platform.test, DNS:op95.web-platform.test, DNS:op16.web-platform.test, DNS:op36.web-platform.test, DNS:op27.web-platform.test, DNS:op29.web-platform.test, DNS:op94.web-platform.test, DNS:op44.web-platform.test, DNS:op33.web-platform.test, DNS:op84.web-platform.test, DNS:op32.web-platform.test, DNS:op61.web-platform.test, DNS:op70.web-platform.test, DNS:www2.web-platform.test, DNS:op43.web-platform.test, DNS:op78.web-platform.test, DNS:op26.web-platform.test, DNS:op76.web-platform.test, DNS:op52.web-platform.test, DNS:op99.web-platform.test, DNS:op86.web-platform.test, DNS:op46.web-platform.test, DNS:op17.web-platform.test, DNS:op90.web-platform.test, DNS:op93.web-platform.test, DNS:op10.web-platform.test, DNS:op55.web-platform.test, DNS:op47.web-platform.test, DNS:op51.web-platform.test, DNS:op45.web-platform.test, DNS:op80.web-platform.test, DNS:op68.web-platform.test, DNS:op49.web-platform.test, DNS:op57.web-platform.test, DNS:op35.web-platform.test, DNS:op67.web-platform.test, DNS:op92.web-platform.test, DNS:op15.web-platform.test, DNS:op13.web-platform.test, DNS:op75.web-platform.test, DNS:op64.web-platform.test, DNS:op97.web-platform.test, DNS:op37.web-platform.test, DNS:op56.web-platform.test, DNS:op62.web-platform.test, DNS:op82.web-platform.test, DNS:op25.web-platform.test, DNS:op11.web-platform.test, DNS:op50.web-platform.test, DNS:op38.web-platform.test, DNS:op83.web-platform.test, DNS:op81.web-platform.test, DNS:op20.web-platform.test, DNS:op21.web-platform.test, DNS:op23.web-platform.test, DNS:op42.web-platform.test, DNS:op22.web-platform.test, DNS:op65.web-platform.test, DNS:op96.web-platform.test, DNS:op87.web-platform.test, DNS:op19.web-platform.test, DNS:op53.web-platform.test, DNS:op30.web-platform.test, DNS:op48.web-platform.test, DNS:op34.web-platform.test, DNS:op6.not-web-platform.test, DNS:op3.not-web-platform.test, DNS:op2.not-web-platform.test, DNS:op5.not-web-platform.test, DNS:www.not-web-platform.test, DNS:www.www.web-platform.test, DNS:op7.not-web-platform.test, DNS:op4.not-web-platform.test, DNS:op8.not-web-platform.test, DNS:op9.not-web-platform.test, DNS:op1.not-web-platform.test, DNS:op36.not-web-platform.test, DNS:op53.not-web-platform.test, DNS:op50.not-web-platform.test, DNS:op24.not-web-platform.test, DNS:op31.not-web-platform.test, DNS:op95.not-web-platform.test, DNS:op83.not-web-platform.test, DNS:www2.not-web-platform.test, DNS:op73.not-web-platform.test, DNS:op19.not-web-platform.test, DNS:op21.not-web-platform.test, DNS:op81.not-web-platform.test, DNS:op70.not-web-platform.test, DNS:op78.not-web-platform.test, DNS:op40.not-web-platform.test, DNS:op25.not-web-platform.test, DNS:op65.not-web-platform.test, DNS:www.www2.web-platform.test, DNS:op80.not-web-platform.test, DNS:op52.not-web-platform.test, DNS:op68.not-web-platform.test, DNS:op45.not-web-platform.test, DNS:op71.not-web-platform.test, DNS:op72.not-web-platform.test, DNS:op90.not-web-platform.test, DNS:op89.not-web-platform.test, DNS:op49.not-web-platform.test, DNS:op77.not-web-platform.test, DNS:op79.not-web-platform.test, DNS:op82.not-web-platform.test, DNS:www.www1.web-platform.test, DNS:op12.not-web-platform.test, DNS:op39.not-web-platform.test, DNS:op44.not-web-platform.test, DNS:www1.not-web-platform.test, DNS:op58.not-web-platform.test, DNS:op14.not-web-platform.test, DNS:op30.not-web-platform.test, DNS:op62.not-web-platform.test, DNS:op61.not-web-platform.test, DNS:op92.not-web-platform.test, DNS:op29.not-web-platform.test, DNS:op98.not-web-platform.test, DNS:op64.not-web-platform.test, DNS:op26.not-web-platform.test, DNS:op22.not-web-platform.test, DNS:op94.not-web-platform.test, DNS:op38.not-web-platform.test, DNS:op33.not-web-platform.test, DNS:op23.not-web-platform.test, DNS:op57.not-web-platform.test, DNS:op54.not-web-platform.test, DNS:op85.not-web-platform.test, DNS:op46.not-web-platform.test, DNS:op97.not-web-platform.test, DNS:op32.not-web-platform.test, DNS:op60.not-web-platform.test, DNS:op96.not-web-platform.test, DNS:op51.not-web-platform.test, DNS:op41.not-web-platform.test, DNS:op35.not-web-platform.test, DNS:op99.not-web-platform.test, DNS:op42.not-web-platform.test, DNS:op67.not-web-platform.test, DNS:op37.not-web-platform.test, DNS:op48.not-web-platform.test, DNS:op55.not-web-platform.test, DNS:op56.not-web-platform.test, DNS:op84.not-web-platform.test, DNS:op34.not-web-platform.test, DNS:op69.not-web-platform.test, DNS:op11.not-web-platform.test, DNS:op93.not-web-platform.test, DNS:www1.www.web-platform.test, DNS:op86.not-web-platform.test, DNS:op13.not-web-platform.test, DNS:op20.not-web-platform.test, DNS:op76.not-web-platform.test, DNS:op27.not-web-platform.test, DNS:op17.not-web-platform.test, DNS:op75.not-web-platform.test, DNS:op15.not-web-platform.test, DNS:op47.not-web-platform.test, DNS:op18.not-web-platform.test, DNS:op63.not-web-platform.test, DNS:op28.not-web-platform.test, DNS:op43.not-web-platform.test, DNS:op66.not-web-platform.test, DNS:www2.www.web-platform.test, DNS:op91.not-web-platform.test, DNS:op74.not-web-platform.test, DNS:op59.not-web-platform.test, DNS:op88.not-web-platform.test, DNS:op87.not-web-platform.test, DNS:op10.not-web-platform.test, DNS:op16.not-web-platform.test, DNS:www1.www2.web-platform.test, DNS:www2.www2.web-platform.test, DNS:www2.www1.web-platform.test, DNS:www1.www1.web-platform.test, DNS:www.www.not-web-platform.test, DNS:xn--lve-6lad.web-platform.test, DNS:www1.www.not-web-platform.test, DNS:www.www2.not-web-platform.test, DNS:www2.www.not-web-platform.test, DNS:www.www1.not-web-platform.test, DNS:www2.www2.not-web-platform.test, DNS:www2.www1.not-web-platform.test, DNS:www1.www1.not-web-platform.test, DNS:www1.www2.not-web-platform.test, DNS:xn--lve-6lad.www.web-platform.test, DNS:xn--lve-6lad.not-web-platform.test, DNS:www.xn--lve-6lad.web-platform.test, DNS:www2.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.www2.web-platform.test, DNS:xn--lve-6lad.www1.web-platform.test, DNS:www1.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.www.not-web-platform.test, DNS:www.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www1.not-web-platform.test, DNS:www2.xn--lve-6lad.not-web-platform.test, DNS:www1.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.www2.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--lve-6lad.xn--lve-6lad.not-web-platform.test, DNS:www.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www2.not-web-platform.test, DNS:www1.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:www2.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.www1.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--lve-6lad.not-web-platform.test, DNS:xn--lve-6lad.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.web-platform.test, DNS:xn--n8j6ds53lwwkrqhv28a.xn--n8j6ds53lwwkrqhv28a.not-web-platform.test Signature Algorithm: sha256WithRSAEncryption - 87:1a:f7:82:48:e1:85:0a:cd:c9:eb:26:3a:f0:d2:70:1e:cc: - 1e:1e:8f:61:ed:41:a5:72:4c:0b:dd:7f:9f:6d:eb:f6:96:6c: - f5:41:3d:78:6e:69:74:bb:49:d4:d1:8b:e1:5f:c9:1e:43:7f: - 19:6b:db:fe:37:52:d7:3a:88:a9:29:df:64:63:ae:82:2d:e1: - 8f:19:10:13:8a:73:c6:8d:ae:ca:99:50:89:49:90:a5:4f:cf: - ec:13:5b:2f:eb:dc:a0:d2:53:15:1a:d1:93:4c:47:f0:9b:6f: - 65:1a:51:e2:4b:73:56:de:57:2a:11:ad:5a:68:92:ad:36:be: - b8:f5:b9:72:28:b8:ec:d7:55:d1:0d:e1:40:27:b9:e4:2b:c0: - de:a1:e9:38:25:4e:b6:43:dc:1a:0b:38:96:2b:14:5f:88:1a: - 75:92:fc:bf:76:3a:23:96:37:7f:f4:83:62:8e:fd:5f:29:06: - 0c:52:2b:e5:23:95:9b:0f:b0:1e:1a:bb:99:b4:3c:1b:83:c9: - 4d:f5:b7:2c:6b:98:fa:67:48:63:8a:9e:1e:6c:ef:cb:d4:eb: - 82:a8:49:21:68:a2:d1:34:35:b0:9b:ef:a8:51:22:8b:3a:fd: - 87:8e:5a:d6:1f:b2:1c:64:c3:10:e2:7d:b6:c9:ce:27:97:16: - 1a:a6:66:4f + 70:a3:c2:d4:02:32:83:2c:57:4e:cf:42:0e:d6:50:c1:40:2f: + 75:84:54:26:ed:21:7b:5e:97:94:ed:ff:43:15:33:4c:fe:eb: + b8:d9:a2:ac:ca:ad:59:e7:52:cf:74:59:62:df:a6:01:e5:d5: + 53:04:6c:97:87:7e:2c:da:44:dd:64:ec:cc:1a:ab:38:99:65: + e1:f6:94:59:b7:65:b3:a6:e5:21:7d:96:04:0e:87:d9:13:32: + 27:50:11:7a:01:7d:6e:a9:42:b1:78:40:4f:0a:89:18:0b:8d: + 7a:a2:73:39:88:8c:49:da:17:91:6b:c7:2f:ee:7e:79:4e:f5: + aa:97:1a:28:c6:5d:89:eb:5e:bc:68:ac:e9:dd:c8:6f:89:50: + 34:c2:fe:69:70:7a:ce:6b:ef:09:fb:f6:9d:a1:d8:eb:2f:e6: + 44:1d:1d:f6:e4:97:e4:0e:3e:a5:cc:8b:5b:5b:8c:7c:8c:57: + b9:d3:c4:a2:ac:98:c2:91:8b:b9:7f:5a:a6:fb:e4:fb:5b:0b: + 11:c2:e2:4a:62:d0:98:d0:f9:77:c6:eb:72:b5:92:0d:e6:5d: + 3c:20:f9:d6:0e:60:2c:45:0f:b9:67:e7:b7:05:9c:a1:a0:e0: + 3b:40:52:56:fb:64:12:85:f7:56:9e:2d:8c:12:a0:c1:58:27: + 56:0d:af:d8 -----BEGIN CERTIFICATE----- -MIIgvDCCH6SgAwIBAgIDC+NYMA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl -Yi1wbGF0Zm9ybS10ZXN0czAeFw0yMDA3MzAyMDEyNDhaFw0yMjEwMDgyMDEyNDha +MIIgvDCCH6SgAwIBAgIDBsf0MA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl +Yi1wbGF0Zm9ybS10ZXN0czAeFw0yMDA5MTIwMDI1MzFaFw0yMTA5MTIwMDI1MzFa MBwxGjAYBgNVBAMMEXdlYi1wbGF0Zm9ybS50ZXN0MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAyAtmdUGyRtQPsoGNZ6nBh1ml8jSBceLsEtIfPGss/JBO -nNiRL1KnzGFbguNH9XIb+t67K7lfT7rJ/n6bZ7IQMjnG5KOUeh6cOYRxTxs7X4Zj -zJ/LMLfhTvBaSTQssdF+W0Ruvjf1MkKa2lrC6bmFDZSFAoq2RgSxV+lMJNoEFs8W -PTVEgbnvGszZt5ejbJG8lEUXl9u0sWiqVt0PGLd2stI9EDOgw+ymeA75Pc5Wyz0r -RQdpbpFd2vjPmKQMhvI2EeT8uNGZCeESHMli73pd3RER62sUgFNoU1rEnMQpYu5j -IQ21LaAn5KT+FodB9oU+XSHPwEw2zt/XSZdr5qYbTQIDAQABo4IeBDCCHgAwCQYD -VR0TBAIwADAdBgNVHQ4EFgQU1HiW0SJAk3bOF+u2cLYJBeCjF/gwHwYDVR0jBBgw -FoAUs3XdoJvyWv4XjYCx/Ke3wSt5KSswCwYDVR0PBAQDAgXgMBMGA1UdJQQMMAoG +AAOCAQ8AMIIBCgKCAQEA7honxfYXVsQQtmBe21yDu8VxERCEMPe0i/CxLnO4B3xv +tDwsmvGDbA7LMVXX9MW/WdF2z+AKSp/lYOmk4kxxWF60HZclP6ObFWwt3QyJxQNw +SgYQziJbRwKiHKtR5RSa6vucIXoflr9thYtgnosfHFSJgOmiXVi1XbP20i0ICz0d +BM9RD9hR2l2Qmb7YBV5NqMpuqHotTqKWQZfwBfbDsmw/1NnGqOsSF+hCJMIC16wv +gYe5SSyr1+iPJxilBdyhcDuUbFOdI+3eUt1Pt/ELAfJ+OkDRoAjAFsHtBqFUZx90 +lYEfcxlbEtNjS1It3Ihsx52oY2D904/MDAEeSh/lGwIDAQABo4IeBDCCHgAwCQYD +VR0TBAIwADAdBgNVHQ4EFgQUaTDPHHj9DhM6/JFqsh0Ys/hPyAkwHwYDVR0jBBgw +FoAUEi0p4YKDQ1hvU/tzYqtpM7O8HBUwCwYDVR0PBAQDAgXgMBMGA1UdJQQMMAoG CCsGAQUFBwMBMIIdjwYDVR0RBIIdhjCCHYKCEXdlYi1wbGF0Zm9ybS50ZXN0ghVv cDgud2ViLXBsYXRmb3JtLnRlc3SCFW9wNy53ZWItcGxhdGZvcm0udGVzdIIVb3A5 LndlYi1wbGF0Zm9ybS50ZXN0ghVvcDQud2ViLXBsYXRmb3JtLnRlc3SCFW5vdC13 @@ -231,10 +231,10 @@ NmxhZC54bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRl c3SCQXhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3d2tycWh2 MjhhLndlYi1wbGF0Zm9ybS50ZXN0gkV4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54 bi0tbjhqNmRzNTNsd3drcnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QwDQYJ -KoZIhvcNAQELBQADggEBAIca94JI4YUKzcnrJjrw0nAezB4ej2HtQaVyTAvdf59t -6/aWbPVBPXhuaXS7SdTRi+FfyR5Dfxlr2/43Utc6iKkp32RjroIt4Y8ZEBOKc8aN -rsqZUIlJkKVPz+wTWy/r3KDSUxUa0ZNMR/Cbb2UaUeJLc1beVyoRrVpokq02vrj1 -uXIouOzXVdEN4UAnueQrwN6h6TglTrZD3BoLOJYrFF+IGnWS/L92OiOWN3/0g2KO -/V8pBgxSK+UjlZsPsB4au5m0PBuDyU31tyxrmPpnSGOKnh5s78vU64KoSSFootE0 -NbCb76hRIos6/YeOWtYfshxkwxDifbbJzieXFhqmZk8= +KoZIhvcNAQELBQADggEBAHCjwtQCMoMsV07PQg7WUMFAL3WEVCbtIXtel5Tt/0MV +M0z+67jZoqzKrVnnUs90WWLfpgHl1VMEbJeHfizaRN1k7MwaqziZZeH2lFm3ZbOm +5SF9lgQOh9kTMidQEXoBfW6pQrF4QE8KiRgLjXqiczmIjEnaF5Frxy/ufnlO9aqX +GijGXYnrXrxorOndyG+JUDTC/mlwes5r7wn79p2h2Osv5kQdHfbkl+QOPqXMi1tb +jHyMV7nTxKKsmMKRi7l/Wqb75PtbCxHC4kpi0JjQ+XfG63K1kg3mXTwg+dYOYCxF +D7ln57cFnKGg4DtAUlb7ZBKF91aeLYwSoMFYJ1YNr9g= -----END CERTIFICATE----- diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py index 880e2bd43eb..486070ad86d 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome.py @@ -69,7 +69,6 @@ def executor_kwargs(test_type, server_config, cache_manager, run_info_data, # browsing context, whereas the CLI flag works for workers, too. chrome_options["args"] = [] - chrome_options["args"].append("--ignore-certificate-errors") chrome_options["args"].append("--ignore-certificate-errors-spki-list=%s" % ','.join(chrome_spki_certs.IGNORE_CERTIFICATE_ERRORS_SPKI_LIST)) diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_spki_certs.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_spki_certs.py index e8971e7acde..289453bd080 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_spki_certs.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/browsers/chrome_spki_certs.py @@ -2,7 +2,7 @@ # DO NOT EDIT MANUALLY. # tools/certs/web-platform.test.pem -WPT_FINGERPRINT = 'VPzsk0tdACJMqhsnPpMDesIkQYZrI2RGR+UlPK4emE4=' +WPT_FINGERPRINT = 'Jjw17d8tPl/0TWUbC9g897DgEswu02sENyt5VUgT0wI=' # signed-exchange/resources/127.0.0.1.sxg.pem SXG_WPT_FINGERPRINT = '0Rt4mT6SJXojEMHTnKnlJ/hBKMBcI4kteBlhR1eTTdk=' diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/chromium.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/chromium.py index 0c2fc408138..cef01c4ffc5 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/chromium.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/chromium.py @@ -41,20 +41,38 @@ class ChromiumFormatter(base.BaseFormatter): # Browser log for the current test under execution. self.test_log = [] - def _append_test_message(self, test, subtest, status, expected, message): + def _append_test_message(self, test, subtest, wpt_actual_status, message): """ - Appends the message data for a test. + Appends the message data for a test or subtest. :param str test: the name of the test - :param str subtest: the name of the subtest with the message - :param str status: the subtest status - :param str expected: the expected subtest statuses + :param str subtest: the name of the subtest with the message. Will be + None if this is called for a test. + :param str wpt_actual_status: the test status as reported by WPT :param str message: the string to append to the message for this test Example: - [subtest foo] [FAIL expected PASS] message + [test_or_subtest_name] + expected: FAIL + message: some test message eg assert failure """ - self.messages[test].append("[%s] [%s expected %s] %s" % - (subtest, status, expected, message)) + # NOTE: throughout this function we output a key called "expected" but + # fill it in with the actual status. This is by design. The goal of this + # output is to look exactly like WPT's expectation metadata so that it + # can be easily diff-ed. + if subtest: + result = " [%s]\n expected: %s\n" % (subtest, wpt_actual_status) + if message: + result += " message: %s\n" % message + self.messages[test].append(result) + else: + # No subtest, so this is the top-level test. The result must be + # prepended to the list of messages, so that the message for the + # test comes before any subtest messages. + test_name_last_part = test.split("/")[-1] + result = "[%s]\n expected: %s\n" % (test_name_last_part, wpt_actual_status) + if message: + result += " message: %s\n" % message + self.messages[test].insert(0, result) def _append_artifact(self, cur_dict, artifact_name, artifact_value): """ @@ -175,15 +193,18 @@ class ChromiumFormatter(base.BaseFormatter): def test_status(self, data): test_name = data["test"] - actual_status = self._map_status_name(data["status"]) + wpt_actual_status = data["status"] + actual_status = self._map_status_name(wpt_actual_status) expected_statuses = self._get_expected_status_from_data(actual_status, data) is_unexpected = actual_status not in expected_statuses if is_unexpected and test_name not in self.tests_with_subtest_fails: self.tests_with_subtest_fails.add(test_name) - self._append_test_message(test_name, data.get("subtest", ""), - actual_status, expected_statuses, - data.get("message", "")) + # We should always get a subtest in the data dict, but it's technically + # possible that it's missing. Be resilient here. + subtest_name = data.get("subtest", "UNKNOWN SUBTEST") + self._append_test_message(test_name, subtest_name, + wpt_actual_status, data.get("message", "")) def test_end(self, data): test_name = data["test"] @@ -203,8 +224,7 @@ class ChromiumFormatter(base.BaseFormatter): if actual_status == "PASS": actual_status = "FAIL" - self._append_test_message(test_name, "", - actual_status, expected_statuses, + self._append_test_message(test_name, None, wpt_actual_status, data.get("message", "")) self._store_test_result(test_name, actual_status, diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/tests/test_chromium.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/tests/test_chromium.py index 59f39c1e71b..8f8e732d473 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/tests/test_chromium.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/formatters/tests/test_chromium.py @@ -158,15 +158,15 @@ def test_subtest_messages(capfd): t1_artifacts = output_json["tests"]["t1"]["artifacts"] assert t1_artifacts["log"] == [ - "[t1_a] [FAIL expected PASS] t1_a_message", - "[t1_b] [PASS expected PASS] t1_b_message", - "[] [FAIL expected PASS] ", + "[t1]\n expected: PASS\n", + " [t1_a]\n expected: FAIL\n message: t1_a_message\n", + " [t1_b]\n expected: PASS\n message: t1_b_message\n", ] assert t1_artifacts["wpt_subtest_failure"] == ["true"] t2_artifacts = output_json["tests"]["t2"]["artifacts"] assert t2_artifacts["log"] == [ - "[t2_a] [PASS expected PASS] ", - "[] [TIMEOUT expected PASS] t2_message", + "[t2]\n expected: TIMEOUT\n message: t2_message\n", + " [t2_a]\n expected: PASS\n", ] assert "wpt_subtest_failure" not in t2_artifacts.keys() @@ -195,7 +195,7 @@ def test_subtest_failure(capfd): # The test status is reported as a pass here because the harness was able to # run the test to completion. - logger.test_end("t1", status="PASS", expected="PASS") + logger.test_end("t1", status="PASS", expected="PASS", message="top_message") logger.suite_end() # check nothing got output to stdout/stderr @@ -211,10 +211,10 @@ def test_subtest_failure(capfd): test_obj = output_json["tests"]["t1"] t1_artifacts = test_obj["artifacts"] assert t1_artifacts["log"] == [ - "[t1_a] [FAIL expected PASS] t1_a_message", - "[t1_b] [PASS expected PASS] t1_b_message", - "[t1_c] [TIMEOUT expected PASS] t1_c_message", - "[] [FAIL expected PASS] ", + "[t1]\n expected: PASS\n message: top_message\n", + " [t1_a]\n expected: FAIL\n message: t1_a_message\n", + " [t1_b]\n expected: PASS\n message: t1_b_message\n", + " [t1_c]\n expected: TIMEOUT\n message: t1_c_message\n", ] assert t1_artifacts["wpt_subtest_failure"] == ["true"] # The status of the test in the output is a failure because subtests failed, @@ -252,7 +252,7 @@ def test_expected_subtest_failure(capfd): # The test status is reported as a pass here because the harness was able to # run the test to completion. - logger.test_end("t1", status="PASS", expected="PASS") + logger.test_end("t1", status="OK", expected="OK") logger.suite_end() # check nothing got output to stdout/stderr @@ -267,11 +267,12 @@ def test_expected_subtest_failure(capfd): test_obj = output_json["tests"]["t1"] t1_log = test_obj["artifacts"]["log"] + print("Lpz t1log=%s" % t1_log) assert t1_log == [ - "[t1_a] [FAIL expected FAIL] t1_a_message", - "[t1_b] [PASS expected PASS] t1_b_message", - "[t1_c] [TIMEOUT expected TIMEOUT] t1_c_message", - "[] [PASS expected PASS] ", + "[t1]\n expected: OK\n", + " [t1_a]\n expected: FAIL\n message: t1_a_message\n", + " [t1_b]\n expected: PASS\n message: t1_b_message\n", + " [t1_c]\n expected: TIMEOUT\n message: t1_c_message\n", ] # The status of the test in the output is a pass because the subtest # failures were all expected. @@ -316,8 +317,8 @@ def test_unexpected_subtest_pass(capfd): test_obj = output_json["tests"]["t1"] t1_artifacts = test_obj["artifacts"] assert t1_artifacts["log"] == [ - "[t1_a] [PASS expected FAIL] t1_a_message", - "[] [FAIL expected PASS] ", + "[t1]\n expected: PASS\n", + " [t1_a]\n expected: PASS\n message: t1_a_message\n", ] assert t1_artifacts["wpt_subtest_failure"] == ["true"] # Since the subtest status is unexpected, we fail the test. But we report diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/request.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/request.py index 28f407c8065..dbfe067ba7f 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/request.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/request.py @@ -169,6 +169,10 @@ class Request(object): Regexp match object from matching the request path to the route selected for the request. + .. attribute:: client_address + + Contains a tuple of the form (host, port) representing the client's address. + .. attribute:: protocol_version HTTP version specified in the request. @@ -245,6 +249,7 @@ class Request(object): def __init__(self, request_handler): self.doc_root = request_handler.server.router.doc_root self.route_match = None # Set by the router + self.client_address = request_handler.client_address self.protocol_version = request_handler.protocol_version self.method = request_handler.command diff --git a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py index 56342ed287d..d6718df3f52 100644 --- a/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py +++ b/tests/wpt/web-platform-tests/tools/wptserve/wptserve/server.py @@ -528,6 +528,7 @@ class H2HandlerCopy(object): self.h2_stream_id = req_frame.stream_id self.server = handler.server self.protocol_version = handler.protocol_version + self.client_address = handler.client_address self.raw_requestline = '' self.rfile = rfile self.request = handler.request diff --git a/tests/wpt/web-platform-tests/web-bundle/subresource-loading/subresource-loading-from-web-bundle.tentative.html b/tests/wpt/web-platform-tests/web-bundle/subresource-loading/subresource-loading-from-web-bundle.tentative.html index 1e0e78a3204..574a25b6816 100644 --- a/tests/wpt/web-platform-tests/web-bundle/subresource-loading/subresource-loading-from-web-bundle.tentative.html +++ b/tests/wpt/web-platform-tests/web-bundle/subresource-loading/subresource-loading-from-web-bundle.tentative.html @@ -15,6 +15,18 @@ assert_equals(module.result, 'OK'); }, "Subresource loading with WebBundle"); + promise_test(async () => { + const response = await fetch('http://web-platform.test:8001/root.js'); + const text = await response.text(); + assert_equals(text, "export * from './submodule.js';\n"); + }, "Subresource loading with WebBundle (Fetch API)"); + + promise_test(t => { + const url = + '/common/redirect.py?location=http://web-platform.test:8001/root.js'; + return promise_rejects_js(t, TypeError, import(url)); + }, "Subresource loading with WebBundle shouldn't affect redirect"); + promise_test(async () => { const link = document.createElement("link"); link.rel = "webbundle"; diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-connectionSetup.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-connectionSetup.html new file mode 100644 index 00000000000..11fc4e4fa0c --- /dev/null +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-connectionSetup.html @@ -0,0 +1,106 @@ + +Test RTCPeerConnection.prototype.addIceCandidate + + + + diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate.html index c68e442a2d5..5fcb6e864a8 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate.html @@ -2,6 +2,7 @@ Test RTCPeerConnection.prototype.addIceCandidate + + + + diff --git a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setDescription-transceiver.html b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setDescription-transceiver.html index a8056d473cd..9bbab30d56e 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setDescription-transceiver.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCPeerConnection-setDescription-transceiver.html @@ -248,18 +248,14 @@ const offer = await pc1.createOffer(); await pc1.setLocalDescription(offer); - assert_false(pc1.getTransceivers()[0].stopped, 'Transceiver is not stopped'); - await pc2.setRemoteDescription(offer); pc2.getTransceivers()[0].stop(); const answer = await pc2.createAnswer(); await pc1.setRemoteDescription(answer); - assert_true(pc1.getTransceivers()[0].stopped, 'Transceiver is stopped'); - assert_equals(pc1.getReceivers().length, 0, 'getReceivers does not expose a receiver of a stopped transceiver'); - assert_equals(pc1.getSenders().length, 0, 'getSenders does not expose a sender of a stopped transceiver'); - }, 'setRemoteDescription should stop the transceiver if its corresponding m section is rejected'); + assert_equals(pc1.getTransceivers()[0].currentDirection, 'inactive', 'A stopped m-line should give an inactive transceiver'); + }, 'setRemoteDescription should set transceiver inactive if its corresponding m section is rejected'); /* TODO diff --git a/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html b/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html index 412736b1d19..2e1dcbb0d95 100644 --- a/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html +++ b/tests/wpt/web-platform-tests/webrtc/RTCRtpTransceiver.https.html @@ -199,7 +199,6 @@ direction: "sendrecv", mid: null, currentDirection: null, - stopped: false }, { receiver: {track: {kind: "video", readyState: "live", muted: true}}, @@ -207,7 +206,6 @@ direction: "sendrecv", mid: null, currentDirection: null, - stopped: false } ]); }; @@ -232,7 +230,6 @@ direction: "sendrecv", mid: null, currentDirection: null, - stopped: false }, { receiver: {track: {kind: "video"}}, @@ -240,7 +237,6 @@ direction: "sendrecv", mid: null, currentDirection: null, - stopped: false } ]); }; @@ -265,7 +261,6 @@ direction: "sendrecv", mid: null, currentDirection: null, - stopped: false }, { receiver: {track: {kind: "video"}}, @@ -273,7 +268,6 @@ direction: "sendrecv", mid: null, currentDirection: null, - stopped: false } ]); }; @@ -293,7 +287,6 @@ direction: "recvonly", mid: null, currentDirection: null, - stopped: false }, { receiver: {track: {kind: "video"}}, @@ -301,7 +294,6 @@ direction: "recvonly", mid: null, currentDirection: null, - stopped: false } ]); }; @@ -336,7 +328,6 @@ sender: {track: null}, direction: "recvonly", currentDirection: null, - stopped: false } ]); }; @@ -365,7 +356,6 @@ // rtcweb-jsep says this is recvonly, w3c-webrtc does not... direction: "recvonly", currentDirection: null, - stopped: false } ]); }; @@ -435,7 +425,6 @@ sender: {track: null}, direction: "recvonly", currentDirection: null, - stopped: false } ]); @@ -466,7 +455,6 @@ sender: {track: {kind: "audio"}}, direction: "sendrecv", currentDirection: null, - stopped: false } ]); @@ -486,7 +474,6 @@ sender: {track: {kind: "audio"}}, direction: "sendrecv", currentDirection: "sendonly", - stopped: false, mid: lastMid } ]); @@ -500,7 +487,6 @@ sender: {track: {kind: "audio"}}, direction: "sendrecv", currentDirection: "sendonly", - stopped: false, mid: lastMid } ]); @@ -1253,15 +1239,14 @@ assert_equals(pc1.getSenders().length, 0, 'getSenders does not expose a sender of a stopped transceiver'); await onended; - + // The transceiver has [[stopping]] = true, [[stopped]] = false hasPropsAndUniqueMids(pc1.getTransceivers(), [ { sender: {track: {kind: "audio"}}, receiver: {track: {kind: "audio", readyState: "ended"}}, - stopped: true, - currentDirection: null, - direction: "sendrecv" + currentDirection: "sendrecv", + direction: "stopped" } ]); @@ -1297,15 +1282,16 @@ await onended; + // pc2's transceiver was stopped remotely, so has + // [[stopping]] = true, [[stopped]] = true. hasProps(pc2.getTransceivers(), [ { sender: {track: {kind: "audio"}}, receiver: {track: {kind: "audio", readyState: "ended"}}, - stopped: true, mid: null, - currentDirection: null, - direction: "sendrecv" + currentDirection: "stopped", + direction: "stopped" } ]); @@ -1335,13 +1321,14 @@ let offer = await pc1.createOffer(); - pc1.getTransceivers()[0].stop(); - + const transceiverThatWasStopped = pc1.getTransceivers()[0]; + transceiverThatWasStopped.stop(); await pc2.setRemoteDescription(offer) trickle(t, pc1, pc2); await pc1.setLocalDescription(offer); let answer = await pc2.createAnswer(); + const negotiationNeededAwaiter = negotiationNeeded(pc1); const trackEvents = await setRemoteDescriptionReturnTrackEvents(pc1, answer); // Spec language doesn't say anything about checking whether the transceiver // is stopped here. @@ -1353,16 +1340,20 @@ } ]); + assert_equals(transceiverThatWasStopped, pc1.getTransceivers()[0]); + // The transceiver should still be [[stopping]]=true, [[stopped]]=false. hasPropsAndUniqueMids(pc1.getTransceivers(), [ { - stopped: true, + currentDirection: "sendrecv", + direction: "stopped" } ]); - await negotiationNeeded(pc1); + await negotiationNeededAwaiter; trickle(t, pc2, pc1); + await pc2.setLocalDescription(answer); await iceConnected(pc1); @@ -1374,22 +1365,8 @@ answer = await pc2.createAnswer(); await pc2.setLocalDescription(answer); await pc1.setRemoteDescription(answer); - - hasProps(pc1.getTransceivers(), - [ - { - stopped: true, - mid: null - } - ]); - - hasProps(pc2.getTransceivers(), - [ - { - stopped: true, - mid: null - } - ]); + assert_equals(pc1.getTransceivers().length, 0); + assert_equals(pc2.getTransceivers().length, 0); }; const checkStopAfterSetLocalOffer = async t => { @@ -1413,6 +1390,7 @@ pc1.getTransceivers()[0].stop(); let answer = await pc2.createAnswer(); + const negotiationNeededAwaiter = negotiationNeeded(pc1); const trackEvents = await setRemoteDescriptionReturnTrackEvents(pc1, answer); // Spec language doesn't say anything about checking whether the transceiver // is stopped here. @@ -1427,10 +1405,11 @@ hasPropsAndUniqueMids(pc1.getTransceivers(), [ { - stopped: true, + direction: "stopped", + currentDirection: "sendrecv" } ]); - await negotiationNeeded(pc1); + await negotiationNeededAwaiter; trickle(t, pc2, pc1); await pc2.setLocalDescription(answer); @@ -1445,21 +1424,8 @@ await pc2.setLocalDescription(answer); await pc1.setRemoteDescription(answer); - hasProps(pc1.getTransceivers(), - [ - { - stopped: true, - mid: null - } - ]); - - hasProps(pc2.getTransceivers(), - [ - { - stopped: true, - mid: null - } - ]); + assert_equals(pc1.getTransceivers().length, 0); + assert_equals(pc2.getTransceivers().length, 0); }; const checkStopAfterSetRemoteOffer = async t => { @@ -1479,22 +1445,35 @@ await pc2.setRemoteDescription(offer) await pc1.setLocalDescription(offer); - // Stop on _answerer_side now. Should take effect in answer. + // Stop on _answerer_ side now. Should not stop transceiver in answer, + // but cause firing of negotiationNeeded at pc2, and disabling + // of the transceiver with direction = inactive in answer. pc2.getTransceivers()[0].stop(); + assert_equals(pc2.getTransceivers()[0].direction, 'stopped'); const answer = await pc2.createAnswer(); const trackEvents = await setRemoteDescriptionReturnTrackEvents(pc1, answer); hasProps(trackEvents, []); - hasProps(pc1.getTransceivers(), + hasProps(pc2.getTransceivers(), [ { - stopped: true, - mid: null + direction: "stopped", + currentDirection: null, } ]); + const negotiationNeededAwaiter = negotiationNeeded(pc2); await pc2.setLocalDescription(answer); + hasProps(pc2.getTransceivers(), + [ + { + direction: "stopped", + currentDirection: "inactive", + } + ]); + + await negotiationNeededAwaiter; }; const checkStopAfterCreateAnswer = async t => { @@ -1532,16 +1511,25 @@ hasPropsAndUniqueMids(pc2.getTransceivers(), [ { - stopped: true, + direction: "stopped", + currentDirection: null, } ]); trickle(t, pc2, pc1); - // The negotiaionneeded event is fired during processing of + // The negotiationneeded event is fired during processing of // setLocalDescription() - const negotiationNeededWaiter = negotiationNeeded(pc2); + const negotiationNeededAwaiter = negotiationNeeded(pc2); await pc2.setLocalDescription(answer); - await negotiationNeededWaiter; + hasPropsAndUniqueMids(pc2.getTransceivers(), + [ + { + direction: "stopped", + currentDirection: "sendrecv", + } + ]); + + await negotiationNeededAwaiter; await iceConnected(pc1); await iceConnected(pc2); @@ -1552,19 +1540,22 @@ await pc2.setLocalDescription(answer); await pc1.setRemoteDescription(answer); + // Since this offer/answer exchange was initiated from pc1, + // pc2 still doesn't get to say that it has a stopped transceiver, + // but does get to set it to inactive. hasProps(pc1.getTransceivers(), [ { - stopped: true, - mid: null + direction: "sendrecv", + currentDirection: "inactive", } ]); hasProps(pc2.getTransceivers(), [ { - stopped: true, - mid: null + direction: "stopped", + currentDirection: "inactive", } ]); }; @@ -1607,7 +1598,8 @@ hasPropsAndUniqueMids(pc2.getTransceivers(), [ { - stopped: true, + direction: "stopped", + currentDirection: "sendrecv", } ]); @@ -1615,28 +1607,17 @@ await iceConnected(pc1); await iceConnected(pc2); - offer = await pc1.createOffer(); - await pc1.setLocalDescription(offer); - await pc2.setRemoteDescription(offer); - answer = await pc2.createAnswer(); - await pc2.setLocalDescription(answer); - await pc1.setRemoteDescription(answer); + // Initiate an offer/answer exchange from pc2 in order + // to negotiate the stopped transceiver. + offer = await pc2.createOffer(); + await pc2.setLocalDescription(offer); + await pc1.setRemoteDescription(offer); + answer = await pc1.createAnswer(); + await pc1.setLocalDescription(answer); + await pc2.setRemoteDescription(answer); - hasProps(pc1.getTransceivers(), - [ - { - stopped: true, - mid: null - } - ]); - - hasProps(pc2.getTransceivers(), - [ - { - stopped: true, - mid: null - } - ]); + assert_equals(pc1.getTransceivers().length, 0); + assert_equals(pc2.getTransceivers().length, 0); }; const checkStopAfterClose = async t => { @@ -1683,7 +1664,6 @@ sender: {track}, direction: "sendrecv", currentDirection: null, - stopped: false } ]); @@ -1703,7 +1683,6 @@ direction: "sendonly", mid: null, currentDirection: null, - stopped: false } ]); @@ -1713,7 +1692,11 @@ pc.getTransceivers()[0].stop(); await pc.setLocalDescription({type: "rollback"}); - hasProps(pc.getTransceivers(), [{ stopped: true }]); + hasProps(pc.getTransceivers(), [ + { + direction: "stopped", + } + ]); }; const checkRollbackAndSetRemoteOfferWithDifferentType = async t => { @@ -1744,7 +1727,6 @@ direction: "sendrecv", mid: null, currentDirection: null, - stopped: false } ]); @@ -1756,7 +1738,6 @@ direction: "sendrecv", mid: null, currentDirection: null, - stopped: false } ]); @@ -1770,14 +1751,12 @@ direction: "sendrecv", mid: null, currentDirection: null, - stopped: false }, { receiver: {track: {kind: "video"}}, sender: {track: null}, direction: "recvonly", currentDirection: "recvonly", - stopped: false } ]); @@ -1788,7 +1767,6 @@ sender: {track: videoTrack}, direction: "sendrecv", currentDirection: "sendonly", - stopped: false } ]); @@ -1823,7 +1801,6 @@ hasProps(removedTransceiver, { - stopped: true, mid: null, currentDirection: null } @@ -1834,7 +1811,6 @@ hasProps(removedTransceiver, { receiver: {track: {readyState: "ended"}}, - stopped: true, mid: null, currentDirection: null } @@ -1849,7 +1825,6 @@ sender: {track: null}, direction: "recvonly", currentDirection: null, - stopped: false } ]); @@ -1869,7 +1844,6 @@ direction: "sendrecv", mid: mid0, currentDirection: null, - stopped: false } ]); @@ -1889,7 +1863,6 @@ direction: "recvonly", mid: mid0, currentDirection: null, - stopped: false } ]); @@ -1903,7 +1876,6 @@ direction: "sendrecv", mid: mid0, currentDirection: null, - stopped: false } ]); @@ -1917,7 +1889,6 @@ direction: "sendrecv", mid: null, currentDirection: null, - stopped: false } ]); @@ -1954,7 +1925,6 @@ direction: "sendrecv", mid: mid0, currentDirection: "sendrecv", - stopped: false } ]); @@ -1990,21 +1960,20 @@ direction: "sendrecv", mid: null, currentDirection: null, - stopped: true } ]); // stop() cannot be rolled back! + // Transceiver should have [[stopping]]=true, [[stopped]]=false await pc2.setRemoteDescription({type: "rollback"}); hasProps(pc2.getTransceivers(), [ { receiver: {track: {kind: "audio"}}, sender: {track: {kind: "audio"}}, - direction: "sendrecv", + direction: "stopped", mid: null, - currentDirection: null, - stopped: true + currentDirection: "sendrecv", } ]); }; @@ -2062,7 +2031,6 @@ { mid: null, currentDirection: null, - stopped: true } ]); @@ -2071,7 +2039,6 @@ { mid: null, currentDirection: null, - stopped: true } ]); @@ -2087,7 +2054,6 @@ hasProps(pc1.getTransceivers(), [ { - stopped: true }, { sender: {track: track2} @@ -2103,7 +2069,6 @@ hasProps(pc2.getTransceivers(), [ { - stopped: true }, { sender: {track} @@ -2181,7 +2146,6 @@ }, { mid: null, - stopped: true }, { sender: {track: null}, @@ -2206,7 +2170,6 @@ [ {}, { - stopped: true }, { mid: mid1, diff --git a/tests/wpt/web-platform-tests/webstorage/set.window.js b/tests/wpt/web-platform-tests/webstorage/set.window.js index 1c20907939a..8e671d2dedd 100644 --- a/tests/wpt/web-platform-tests/webstorage/set.window.js +++ b/tests/wpt/web-platform-tests/webstorage/set.window.js @@ -43,7 +43,7 @@ assert_equals(storage[key], proto); assert_equals(storage.getItem(key), null); assert_equals(storage[key] = value, value); - // Hidden because no [LegacyOverrideBuiltins]. + // Hidden because no [LegacyOverrideBuiltIns]. assert_equals(storage[key], proto); assert_equals(Object.getOwnPropertyDescriptor(storage, key), undefined); assert_equals(storage.getItem(key), value); @@ -62,7 +62,7 @@ storage.setItem(key, existing); - // Hidden because no [LegacyOverrideBuiltins]. + // Hidden because no [LegacyOverrideBuiltIns]. assert_equals(storage[key], proto); assert_equals(Object.getOwnPropertyDescriptor(storage, key), undefined); assert_equals(storage.getItem(key), existing); @@ -93,7 +93,7 @@ assert_equals(storage[key], proto); assert_equals(storage.getItem(key), null); assert_equals(storage[key] = value, value); - // Property is hidden because no [LegacyOverrideBuiltins]. + // Property is hidden because no [LegacyOverrideBuiltIns]. assert_equals(storage[key], proto); assert_equals(Object.getOwnPropertyDescriptor(storage, key), undefined); assert_equals(storage.getItem(key), value);