diff --git a/tests/wpt/meta-legacy-layout/css/css-animations/transition-ready-time-offscreen.html.ini b/tests/wpt/meta-legacy-layout/css/css-animations/transition-ready-time-offscreen.html.ini new file mode 100644 index 00000000000..5e4fea7a1cb --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-animations/transition-ready-time-offscreen.html.ini @@ -0,0 +1,3 @@ +[transition-ready-time-offscreen.html] + [Transitions start at the same time regardless of on-screen status] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-palette-values-invalid.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-palette-values-invalid.html.ini index 73010235772..46c1576d853 100644 --- a/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-palette-values-invalid.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-palette-values-invalid.html.ini @@ -58,3 +58,15 @@ [CSS Fonts Module Level 4: parsing @font-palette-values 20] expected: FAIL + + [CSS Fonts Module Level 4: parsing @font-palette-values 21] + expected: FAIL + + [CSS Fonts Module Level 4: parsing @font-palette-values 22] + expected: FAIL + + [CSS Fonts Module Level 4: parsing @font-palette-values 23] + expected: FAIL + + [CSS Fonts Module Level 4: parsing @font-palette-values 24] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-palette-values-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-palette-values-valid.html.ini index 52ce500bce9..a20fe78d693 100644 --- a/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-palette-values-valid.html.ini +++ b/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-palette-values-valid.html.ini @@ -97,3 +97,6 @@ [CSS Fonts Module Level 4: parsing @font-palette-values 32] expected: FAIL + + [CSS Fonts Module Level 4: parsing @font-palette-values 33] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containcontainintrinsicsize-png-001c.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containcontainintrinsicsize-png-001c.tentative.html.ini new file mode 100644 index 00000000000..e078cc77738 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containcontainintrinsicsize-png-001c.tentative.html.ini @@ -0,0 +1,2 @@ +[object-fit-containcontainintrinsicsize-png-001c.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containcontainintrinsicsize-png-001e.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containcontainintrinsicsize-png-001e.tentative.html.ini new file mode 100644 index 00000000000..3b918126c8a --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containcontainintrinsicsize-png-001e.tentative.html.ini @@ -0,0 +1,2 @@ +[object-fit-containcontainintrinsicsize-png-001e.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containcontainintrinsicsize-png-001p.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containcontainintrinsicsize-png-001p.tentative.html.ini new file mode 100644 index 00000000000..5605e45ec8e --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containcontainintrinsicsize-png-001p.tentative.html.ini @@ -0,0 +1,2 @@ +[object-fit-containcontainintrinsicsize-png-001p.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containsize-png-001c.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containsize-png-001c.tentative.html.ini new file mode 100644 index 00000000000..24f59f58c2d --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containsize-png-001c.tentative.html.ini @@ -0,0 +1,2 @@ +[object-fit-containsize-png-001c.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containsize-png-001e.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containsize-png-001e.tentative.html.ini new file mode 100644 index 00000000000..e5032671171 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containsize-png-001e.tentative.html.ini @@ -0,0 +1,2 @@ +[object-fit-containsize-png-001e.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containsize-png-001p.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containsize-png-001p.tentative.html.ini new file mode 100644 index 00000000000..64e2b7220b1 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-images/object-fit-containsize-png-001p.tentative.html.ini @@ -0,0 +1,2 @@ +[object-fit-containsize-png-001p.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/css/css-pseudo/selection-over-highlight-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-pseudo/selection-over-highlight-001.html.ini new file mode 100644 index 00000000000..99bac19c151 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/css/css-pseudo/selection-over-highlight-001.html.ini @@ -0,0 +1,2 @@ +[selection-over-highlight-001.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/dom/ranges/Range-isPointInRange-shadowdom.tentative.html.ini b/tests/wpt/meta-legacy-layout/dom/ranges/Range-isPointInRange-shadowdom.tentative.html.ini new file mode 100644 index 00000000000..f7d05f3cb47 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/dom/ranges/Range-isPointInRange-shadowdom.tentative.html.ini @@ -0,0 +1,6 @@ +[Range-isPointInRange-shadowdom.tentative.html] + [isPointInRange() test for collapsed selection] + expected: FAIL + + [isPointInRange() test for non-collapsed selection] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/compression-dictionary/dictionary-clear-site-data-cache.tentative.https.html.ini b/tests/wpt/meta-legacy-layout/fetch/compression-dictionary/dictionary-clear-site-data-cache.tentative.https.html.ini new file mode 100644 index 00000000000..dedfd3a8880 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/fetch/compression-dictionary/dictionary-clear-site-data-cache.tentative.https.html.ini @@ -0,0 +1,3 @@ +[dictionary-clear-site-data-cache.tentative.https.html] + [Clear-Site-Data with "cache" directive must unregister dictionary] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/compression-dictionary/dictionary-clear-site-data-cookies.tentative.https.html.ini b/tests/wpt/meta-legacy-layout/fetch/compression-dictionary/dictionary-clear-site-data-cookies.tentative.https.html.ini new file mode 100644 index 00000000000..2f09565cd35 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/fetch/compression-dictionary/dictionary-clear-site-data-cookies.tentative.https.html.ini @@ -0,0 +1,3 @@ +[dictionary-clear-site-data-cookies.tentative.https.html] + [Clear-Site-Data with "cookies" directive must unregister dictionary] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/compression-dictionary/dictionary-clear-site-data-storage.tentative.https.html.ini b/tests/wpt/meta-legacy-layout/fetch/compression-dictionary/dictionary-clear-site-data-storage.tentative.https.html.ini new file mode 100644 index 00000000000..51dfb7011df --- /dev/null +++ b/tests/wpt/meta-legacy-layout/fetch/compression-dictionary/dictionary-clear-site-data-storage.tentative.https.html.ini @@ -0,0 +1,3 @@ +[dictionary-clear-site-data-storage.tentative.https.html] + [Clear-Site-Data with "storage" directive must not unregister dictionary] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/compression-dictionary/dictionary-clear-site-data.tentative.https.html.ini b/tests/wpt/meta-legacy-layout/fetch/compression-dictionary/dictionary-clear-site-data.tentative.https.html.ini deleted file mode 100644 index a757741d967..00000000000 --- a/tests/wpt/meta-legacy-layout/fetch/compression-dictionary/dictionary-clear-site-data.tentative.https.html.ini +++ /dev/null @@ -1,9 +0,0 @@ -[dictionary-clear-site-data.tentative.https.html] - [Clear-Site-Data with "cache" directive must unregister dictionary] - expected: FAIL - - [Clear-Site-Data with "cookies" directive must unregister dictionary] - expected: FAIL - - [Clear-Site-Data with "storage" directive must not unregister dictionary] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini index f9de5391ad6..fb087c8dd92 100644 --- a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini +++ b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-images.sub.tentative.html.ini @@ -146,3 +146,6 @@ [list-style-image sec-fetch-site - HTTPS downgrade-upgrade] expected: FAIL + + [background-image sec-fetch-user - Not sent to non-trustworthy cross-site destination] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini index 5aef7ce66ce..324db3d9b35 100644 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini @@ -10,6 +10,3 @@ [load event does not fire on window.open('about:blank?foo')] expected: FAIL - - [load event does not fire on window.open('about:blank')] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html.ini deleted file mode 100644 index 49cc2e16746..00000000000 --- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin-fragment.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[navigation-unload-same-origin-fragment.html] - [Tests that a fragment navigation in the unload handler will not block the initial navigation] - expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini new file mode 100644 index 00000000000..7dc346632a4 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini @@ -0,0 +1,3 @@ +[navigation-unload-same-origin.window.html] + [Same-origin navigation started from unload handler must be ignored] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.no-transform.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.no-transform.html.ini new file mode 100644 index 00000000000..7e434389bac --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.no-transform.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.copy.no-shadow.no-transform.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.rotation.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.rotation.html.ini new file mode 100644 index 00000000000..e4e1d2ecfe8 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.rotation.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.copy.no-shadow.rotation.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.html.ini new file mode 100644 index 00000000000..a11a235607e --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.copy.no-shadow.no-transform.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.html.ini new file mode 100644 index 00000000000..11e660c56be --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.copy.no-shadow.rotation.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.no-transform.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.no-transform.html.ini new file mode 100644 index 00000000000..98c792d69be --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.no-transform.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.copy.shadow.no-transform.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.rotation.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.rotation.html.ini new file mode 100644 index 00000000000..7352700efe6 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.rotation.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.copy.shadow.rotation.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform.w.html.ini new file mode 100644 index 00000000000..8b6afbe31c3 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.copy.no-shadow.no-transform.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation.w.html.ini new file mode 100644 index 00000000000..61b8d7e2d9d --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.copy.no-shadow.rotation.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform.html.ini new file mode 100644 index 00000000000..b3ddf29a402 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.copy.shadow.no-transform.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform.w.html.ini new file mode 100644 index 00000000000..ad7a10db034 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.copy.shadow.no-transform.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation.html.ini new file mode 100644 index 00000000000..73cf9337979 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.copy.shadow.rotation.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation.w.html.ini new file mode 100644 index 00000000000..f7dc71e7998 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.copy.shadow.rotation.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.w.html.ini new file mode 100644 index 00000000000..b4350ad384d --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.copy.no-shadow.no-transform.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.w.html.ini new file mode 100644 index 00000000000..46f49fe0224 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.copy.no-shadow.rotation.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform.w.html.ini new file mode 100644 index 00000000000..529082f039d --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.copy.shadow.no-transform.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation.w.html.ini new file mode 100644 index 00000000000..787f83ec5e5 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.global-states.filter.copy.shadow.rotation.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation.html.ini new file mode 100644 index 00000000000..f50e1227588 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation.html.ini @@ -0,0 +1,2 @@ +[2d.layer.globalCompositeOperation.html] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation.w.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation.w.html.ini new file mode 100644 index 00000000000..da6d1e895f8 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation.w.html.ini @@ -0,0 +1,2 @@ +[2d.layer.globalCompositeOperation.w.html] + expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/the-anchor-attribute-xml.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/the-anchor-attribute-xml.tentative.html.ini new file mode 100644 index 00000000000..3d8482ac282 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/dom/elements/global-attributes/the-anchor-attribute-xml.tentative.html.ini @@ -0,0 +1,3 @@ +[the-anchor-attribute-xml.tentative.html] + [the-anchor-attribute-xml] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/track/track-element/no-cuechange-before-play.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/track/track-element/no-cuechange-before-play.html.ini index 246e55deb7e..4caf5931a11 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/track/track-element/no-cuechange-before-play.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/media-elements/track/track-element/no-cuechange-before-play.html.ini @@ -1,4 +1,3 @@ [no-cuechange-before-play.html] - expected: TIMEOUT [Ensure that the 'cuechange' event is not fired before video playback has begun.] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html.ini similarity index 95% rename from tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html.ini rename to tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html.ini index a45a29d3b6b..e2d7f8f30e9 100644 --- a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html.ini @@ -1,4 +1,4 @@ -[iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html] +[iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html] expected: TIMEOUT [Navigation resulted download in sandbox is allowed by allow-downloads.] expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini index a6c31bc671e..fe55ddae3f1 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini @@ -1,4 +1,4 @@ [iframe_sandbox_popups_escaping-3.html] type: testharness [Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index d5fd800f09d..653c5e98f2f 100644 --- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -1,4 +1,4 @@ [iframe_sandbox_popups_nonescaping-3.html] - expected: TIMEOUT + expected: CRASH [Check that popups from a sandboxed iframe do not escape the sandbox] expected: NOTRUN diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.https.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.html.ini similarity index 97% rename from tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.https.html.ini rename to tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.html.ini index abac491b14a..451c172d31f 100644 --- a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.https.html.ini +++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.html.ini @@ -1,4 +1,4 @@ -[iframe_sandbox_window_open_download_allow_downloads.tentative.https.html] +[iframe_sandbox_window_open_download_allow_downloads.tentative.html] expected: TIMEOUT [window.open(download, ) triggering download in sandbox is allowed by allow-downloads.] expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini deleted file mode 100644 index 7682a4830bf..00000000000 --- a/tests/wpt/meta-legacy-layout/html/semantics/forms/form-submission-0/reparent-form-during-planned-navigation-task.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[reparent-form-during-planned-navigation-task.html] - expected: TIMEOUT - [reparent-form-during-planned-navigation-task] - expected: TIMEOUT diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/inline-async-inserted-execorder.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/inline-async-inserted-execorder.html.ini new file mode 100644 index 00000000000..655ca47e4a2 --- /dev/null +++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/inline-async-inserted-execorder.html.ini @@ -0,0 +1,3 @@ +[inline-async-inserted-execorder.html] + [Inline async="" module scripts execute or throw parse errors asynchronously] + expected: FAIL diff --git a/tests/wpt/meta-legacy-layout/url/url-setters-a-area.window.js.ini b/tests/wpt/meta-legacy-layout/url/url-setters-a-area.window.js.ini index c8d1995cb17..a1f221d254d 100644 --- a/tests/wpt/meta-legacy-layout/url/url-setters-a-area.window.js.ini +++ b/tests/wpt/meta-legacy-layout/url/url-setters-a-area.window.js.ini @@ -1375,6 +1375,24 @@ [: Setting .hash = '\x00' Trailing C0 control should be encoded] expected: FAIL + [: Setting .host = 'example.com?stuff:8080' Stuff after a ? delimiter is ignored, trailing 'port'] + expected: FAIL + + [: Setting .host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error] + expected: FAIL + + [: Setting .host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error] + expected: FAIL + + [: Setting .host = '[::1\]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error] + expected: FAIL + + [: Setting .host = '[::1\]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error] + expected: FAIL + + [: Setting .host = '[::1\]' IPv6 without port] + expected: FAIL + [url-setters-a-area.window.html?include=mailto] [: Setting .protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.] diff --git a/tests/wpt/meta-legacy-layout/url/url-setters.any.js.ini b/tests/wpt/meta-legacy-layout/url/url-setters.any.js.ini index e2e0d88293e..fc844abd2cd 100644 --- a/tests/wpt/meta-legacy-layout/url/url-setters.any.js.ini +++ b/tests/wpt/meta-legacy-layout/url/url-setters.any.js.ini @@ -105,6 +105,12 @@ [URL: Setting .pathname = 'p' Drop /. from path] expected: FAIL + [URL: Setting .host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error] + expected: FAIL + + [URL: Setting .host = '[::1\]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error] + expected: FAIL + [url-setters.any.html?include=javascript] @@ -169,3 +175,9 @@ [URL: Setting .pathname = 'p' Drop /. from path] expected: FAIL + + [URL: Setting .host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error] + expected: FAIL + + [URL: Setting .host = '[::1\]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error] + expected: FAIL diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json index b0df3a49711..1c22f02f979 100644 --- a/tests/wpt/meta/MANIFEST.json +++ b/tests/wpt/meta/MANIFEST.json @@ -224,6 +224,13 @@ {} ] ], + "detached-line.html": [ + "a6a7520c0d1ef4e90d4e7edb8aaaf9257e4bb23d", + [ + null, + {} + ] + ], "display-table-column.html": [ "6f34f27fa7efd3e22edc6c76ac9f343487f8b7d6", [ @@ -8186,7 +8193,14 @@ {} ] ] - } + }, + "detached-context-crash.html": [ + "56271f12c3ae76bfd0d11e3abc8d09f15167c906", + [ + null, + {} + ] + ] }, "readable-streams": { "crashtests": { @@ -8197,7 +8211,14 @@ {} ] ] - } + }, + "tee-detached-context-crash.html": [ + "9488da72732e003721fb7e04fef317c77538f4dc", + [ + null, + {} + ] + ] }, "transferable": { "gc-crash.html": [ @@ -8290,6 +8311,13 @@ {} ] ], + "chrome-bug-333487749.html": [ + "1613f4998a0056df23d015bf8ad17fb2faa391a0", + [ + null, + {} + ] + ], "firefox-bug-1688293.html": [ "9ab1a88312683a66798cb52693c2ba4389222ff4", [ @@ -23703,20 +23731,6 @@ null, {} ] - ], - "tag-different-manual.https.html": [ - "e463e97670194be82386ffd249f858f8305d220e", - [ - null, - {} - ] - ], - "tag-same-manual.https.html": [ - "4454944c535a6fa0989b4728f58bc7394e711578", - [ - null, - {} - ] ] }, "orientation-event": { @@ -120136,6 +120150,35 @@ } ] ], + "mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html": [ + "0b12301c4d91e179a5c5431f8fffde90ee47b1a7", + [ + null, + [ + [ + "/css/compositing/mix-blend-mode/reference/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-ref.html", + "==" + ] + ], + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 128 + ], + [ + 0, + 400 + ] + ] + ] + ] + } + ] + ], "mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html": [ "840d2626bc1d350a478369dff0626f2b78830099", [ @@ -121391,6 +121434,19 @@ {} ] ], + "anchor-scroll-overflow-hidden.html": [ + "b57e39956bbbb3f268b25d3dabedb6c97ef22dd0", + [ + null, + [ + [ + "/css/css-anchor-position/anchor-scroll-overflow-hidden-ref.html", + "==" + ] + ], + {} + ] + ], "anchor-scroll-position-try-012.html": [ "7c0b381999d303dcefd8dccbdcad60d9c4b1d29d", [ @@ -121404,6 +121460,19 @@ {} ] ], + "anchor-scroll-scrollable-anchor.html": [ + "c2a256877d4c64b9652d2056d1ba19c0f1e51be9", + [ + null, + [ + [ + "/css/css-anchor-position/anchor-scroll-scrollable-anchor-ref.html", + "==" + ] + ], + {} + ] + ], "anchor-scroll-to-sticky-001.html": [ "a6c3b0572533a2cb689ce23655f0b16ff47ea3b9", [ @@ -147747,7 +147816,7 @@ ] ], "color-scheme-iframe-background-about-blank.tentative.html": [ - "a5a9843ac80d97d529d04f65c9f2250d3ba0dc25", + "f9ab24fdc19b54ab3ba062c4fcc6d0a5a2fbade2", [ null, [ @@ -153567,7 +153636,7 @@ ] ], "pseudo-elements-009.html": [ - "f8e2c197aa716a0865a9f0063c7e449d3fa519a8", + "769a5962ff706db4ba2d5a29afaa348c94061c42", [ null, [ @@ -153576,27 +153645,11 @@ "==" ] ], - { - "fuzzy": [ - [ - null, - [ - [ - 0, - 50 - ], - [ - 0, - 2 - ] - ] - ] - ] - } + {} ] ], "pseudo-elements-010.html": [ - "829af22645942e33a213aca43d27bd3ef3043b0e", + "e2e8f8659c500e1d91798cbd03437621d7ae01af", [ null, [ @@ -153605,27 +153658,11 @@ "==" ] ], - { - "fuzzy": [ - [ - null, - [ - [ - 0, - 50 - ], - [ - 0, - 2 - ] - ] - ] - ] - } + {} ] ], "pseudo-elements-011.html": [ - "083ac6a9abb4a2c9eaf1ce8d8d74153cc10ba1d8", + "26dabbe1dfe58a3350ec4fbf9a9671943a174a8d", [ null, [ @@ -153634,27 +153671,11 @@ "==" ] ], - { - "fuzzy": [ - [ - null, - [ - [ - 0, - 50 - ], - [ - 0, - 2 - ] - ] - ] - ] - } + {} ] ], "pseudo-elements-012.html": [ - "d7071ce5681ddd237b4ef5892a40b2955038bbe6", + "7c36d9270d92be6b017253dd4080b8a1e8c61546", [ null, [ @@ -153663,23 +153684,7 @@ "==" ] ], - { - "fuzzy": [ - [ - null, - [ - [ - 0, - 50 - ], - [ - 0, - 2 - ] - ] - ] - ] - } + {} ] ], "resize-while-content-visibility-hidden.html": [ @@ -185384,14 +185389,14 @@ }, "masonry": { "tentative": { - "align-content": { + "alignment": { "masonry-align-content-001.html": [ - "dfefd998c65c8a071faeef0991f8b9bfe9132a60", + "387ee9da5ebbbc523fda88e7f03e85055e4a8de0", [ null, [ [ - "/css/css-grid/masonry/tentative/align-content/masonry-align-content-001-ref.html", + "/css/css-grid/masonry/tentative/alignment/masonry-align-content-001-ref.html", "==" ] ], @@ -185399,12 +185404,12 @@ ] ], "masonry-align-content-002.html": [ - "75b82654fea45cf8460abbdd0c0b7df8ed8b2afe", + "be7e7a813eb8e45add2a97b8680b8f64036eb7f4", [ null, [ [ - "/css/css-grid/masonry/tentative/align-content/masonry-align-content-002-ref.html", + "/css/css-grid/masonry/tentative/alignment/masonry-align-content-002-ref.html", "==" ] ], @@ -185412,12 +185417,12 @@ ] ], "masonry-align-content-003.html": [ - "ae58e79cb2b4752e08f01e3548705cdf3af1e554", + "818d7e2d84b50c8e15428e59e560a8afb725d4eb", [ null, [ [ - "/css/css-grid/masonry/tentative/align-content/masonry-align-content-003-ref.html", + "/css/css-grid/masonry/tentative/alignment/masonry-align-content-003-ref.html", "==" ] ], @@ -185425,12 +185430,64 @@ ] ], "masonry-align-content-004.html": [ - "3f07aa1fe75b5f0a0e62e559f1d878052ebd31b3", + "747420ba465916276aeb245a2121d241d8cbf866", [ null, [ [ - "/css/css-grid/masonry/tentative/align-content/masonry-align-content-004-ref.html", + "/css/css-grid/masonry/tentative/alignment/masonry-align-content-004-ref.html", + "==" + ] + ], + {} + ] + ], + "masonry-justify-content-001.html": [ + "36ecd4f3b30ed86572ddf3e4a835cbfcdaa8fb6f", + [ + null, + [ + [ + "/css/css-grid/masonry/tentative/alignment/masonry-justify-content-001-ref.html", + "==" + ] + ], + {} + ] + ], + "masonry-justify-content-002.html": [ + "fc3696282c13002fa76fc8d6ccd8875c1a329541", + [ + null, + [ + [ + "/css/css-grid/masonry/tentative/alignment/masonry-justify-content-002-ref.html", + "==" + ] + ], + {} + ] + ], + "masonry-justify-content-003.html": [ + "e2e6ead819ad49de0d9ca0f2d644a32e544ed0c8", + [ + null, + [ + [ + "/css/css-grid/masonry/tentative/alignment/masonry-justify-content-003-ref.html", + "==" + ] + ], + {} + ] + ], + "masonry-justify-content-004.html": [ + "e309ef8870890db60dd556e85cc894400a96694e", + [ + null, + [ + [ + "/css/css-grid/masonry/tentative/alignment/masonry-justify-content-004-ref.html", "==" ] ], @@ -185494,7 +185551,7 @@ }, "fragmentation": { "masonry-fragmentation-001.html": [ - "69182c5425e80f91f883d8c670ff2fe4394ccadc", + "24a5b290610ba71c084dfbab1370d119b00a569a", [ null, [ @@ -185507,7 +185564,7 @@ ] ], "masonry-fragmentation-002.html": [ - "01c4de00b56af8a3c4c082244934ff0aafd5a410", + "76a0540fa92f1715de1a1ff5a67671548d4f15b1", [ null, [ @@ -185520,7 +185577,7 @@ ] ], "masonry-fragmentation-003.html": [ - "fe150e7f8382f9f0cb151400cdc3e9aa0b0846f3", + "7252fc169e2eca745eaad2b91bdb8a9801da242a", [ null, [ @@ -185535,7 +185592,20 @@ }, "gap": { "masonry-gap-001.html": [ - "673bbe40e41f6b35df2403330a8c76af625b2fbd", + "628c00135d867debb9d1d904a1426a42be7329e4", + [ + null, + [ + [ + "/css/css-grid/masonry/tentative/gap/masonry-gap-001-ref.html", + "==" + ] + ], + {} + ] + ], + "masonry-gap-002.html": [ + "6dae0a1a7296dd52c48e5b53d8a903aa2ff4d5c4", [ null, [ @@ -185550,7 +185620,7 @@ }, "grid-placement": { "masonry-grid-placement-named-lines-001.html": [ - "b6745f6973b4c0dfd180b778df5d73ef3ca853e3", + "8bb78e307d39219b11677f029bf75ca7dde4cd07", [ null, [ @@ -185563,7 +185633,7 @@ ] ], "masonry-grid-placement-named-lines-002.html": [ - "0ad0dfcea370dd12f0ebf61c5675552f93b6ce6b", + "4e51f09f94dd20d5d4902ea3c4848b9b905ed946", [ null, [ @@ -185578,7 +185648,7 @@ }, "intrinsic-sizing": { "masonry-intrinsic-sizing-001.html": [ - "0f6cdb14954214e81931aa2a5cf80873dc589d84", + "cc0608eafe7f3f983468205a5bdbeda645f2f411", [ null, [ @@ -185591,7 +185661,7 @@ ] ], "masonry-intrinsic-sizing-002.html": [ - "db83299bf5061f0c7209089facdfef277f129a5c", + "3867bb13c8915dd992cd0081ab54a6dbdfd16d88", [ null, [ @@ -185604,7 +185674,7 @@ ] ], "masonry-intrinsic-sizing-003.html": [ - "e43bc86c9b9571f362e37572be57f0b019ccbfb8", + "48489d3c86985fedb0635f25c82b129190148edb", [ null, [ @@ -185617,7 +185687,7 @@ ] ], "masonry-intrinsic-sizing-004.html": [ - "5365208c00f8220ae6427920eae846c0986cbec7", + "c8bc671bb3b4f5981df78e8e21e0a50bf011fecc", [ null, [ @@ -185630,7 +185700,7 @@ ] ], "masonry-intrinsic-sizing-005.html": [ - "cf9b680869f58373a24a87e105dd518c9bb2ef13", + "83afd5bafa0376e105f38de833aa94b6c2603222", [ null, [ @@ -185643,7 +185713,7 @@ ] ], "masonry-intrinsic-sizing-006.html": [ - "49fd53bb79b1e97c011c61db7aeb863067db0a01", + "ad5480092162584589bbea3608f70688d7e6eb3c", [ null, [ @@ -185671,7 +185741,7 @@ ] ], "masonry-item-placement-001.html": [ - "649e1edb7cb9bd903f795f6e605d12ae566390eb", + "2438df8bac8f31bbf259b83f745d9049b979744a", [ null, [ @@ -185684,7 +185754,7 @@ ] ], "masonry-item-placement-002.html": [ - "7d321bf731684173f483d6ba3abde11da307de8e", + "8833cdfcfc5e894c17cb67a5aad7a0fc6fecb47b", [ null, [ @@ -185697,7 +185767,7 @@ ] ], "masonry-item-placement-003.html": [ - "8a183cffc6bd3f59fb0c7ca58b9a85588bdab3f8", + "bde2fa0e664055066effe3a536d1515db04f185a", [ null, [ @@ -185710,7 +185780,7 @@ ] ], "masonry-item-placement-004.html": [ - "4d1a454a8654648d01dd7ab336514d6a935ab6d5", + "52867cd4a213530e8cb9640b20371a7f35bbaac8", [ null, [ @@ -185723,7 +185793,7 @@ ] ], "masonry-item-placement-005.html": [ - "ddfbc9e54e40d3ae5650a598150a5ead5027fd65", + "7d4993fb3a61a015af6098e1f79d7e5f94d1b17e", [ null, [ @@ -185736,7 +185806,7 @@ ] ], "masonry-item-placement-006.html": [ - "0082d72df26258ec61c988c7d9e46463a10f5a8f", + "467e313d339776a90d994459991724b75210e1b9", [ null, [ @@ -185749,7 +185819,7 @@ ] ], "masonry-item-placement-007.html": [ - "67a02560f45f314bb6843cd8b5e5b046aa8da695", + "4c8053ba666b5c6ddc3b61f74a2233151414e4ff", [ null, [ @@ -185762,7 +185832,7 @@ ] ], "masonry-item-placement-008.html": [ - "c68a9787b8330afd85bb01a7a48b9067df903ba9", + "bdf651d77b4ba77e9393492e9546e2a163a1c288", [ null, [ @@ -185801,62 +185871,8 @@ ] ] }, - "justify-content": { - "masonry-justify-content-001.html": [ - "3d60ac19feb130bf2d1690786c968fb72cac2cf6", - [ - null, - [ - [ - "/css/css-grid/masonry/tentative/justify-content/masonry-justify-content-001-ref.html", - "==" - ] - ], - {} - ] - ], - "masonry-justify-content-002.html": [ - "b1db084d4e7042fa7c641a2c91a1484f38f0e877", - [ - null, - [ - [ - "/css/css-grid/masonry/tentative/justify-content/masonry-justify-content-002-ref.html", - "==" - ] - ], - {} - ] - ], - "masonry-justify-content-003.html": [ - "772984b9e0dac31e12ee7a8859ba9b79c8471875", - [ - null, - [ - [ - "/css/css-grid/masonry/tentative/justify-content/masonry-justify-content-003-ref.html", - "==" - ] - ], - {} - ] - ], - "masonry-justify-content-004.html": [ - "7d04ffeb4b26acd9d74f9e1c8f7c9504e2a27a81", - [ - null, - [ - [ - "/css/css-grid/masonry/tentative/justify-content/masonry-justify-content-004-ref.html", - "==" - ] - ], - {} - ] - ] - }, "masonry-columns-item-containing-block-is-grid-content-width.html": [ - "e48b650253974a22e2dbf68eee6505ca918ddde7", + "b5eb7f4984833c9003a527126015d53c084fc239", [ null, [ @@ -185869,7 +185885,7 @@ ] ], "masonry-not-inhibited-001.html": [ - "54499d3d693a3059204a0a1015638f303ef3caa4", + "1c912feb1fa2509fb620371188c46a68d88c2bda", [ null, [ @@ -185883,7 +185899,7 @@ ], "order": { "masonry-order-001.html": [ - "d01f52ea0421199c37d04408b42d0f6929876301", + "37b3d01fb413354e77acb25b7d65530055c949e4", [ null, [ @@ -185896,7 +185912,7 @@ ] ], "masonry-order-002.html": [ - "abad3d44b8326535bb1f44832011a1a6145a47b9", + "5ebdec27193a454e98fb54ea48508c2b26b3cfa8", [ null, [ @@ -185911,7 +185927,7 @@ }, "subgrid": { "masonry-subgrid-001.html": [ - "de07dfb78d1d3a0aa6ec8728009836aa5c06a9fb", + "c71ba68612e381c26f38bb5b76274c9536823514", [ null, [ @@ -185924,7 +185940,7 @@ ] ], "masonry-subgrid-002.html": [ - "466e95eb03c7ae5eb9d09f8c58b5a3dcb166cf58", + "167f2d4496da2ed304cf6049cbbb4bf937b2c5d4", [ null, [ @@ -187609,7 +187625,7 @@ ] ], "custom-highlight-container-metrics-003.html": [ - "74c276fff64320503d10cf77c92e4f75cdc0c4d1", + "189db49bd3e7c73f2a1affa3a18cb5d3e811afdb", [ null, [ @@ -187618,23 +187634,7 @@ "==" ] ], - { - "fuzzy": [ - [ - null, - [ - [ - 0, - 50 - ], - [ - 0, - 2 - ] - ] - ] - ] - } + {} ] ], "custom-highlight-container-metrics-004.html": [ @@ -187667,7 +187667,7 @@ ] ], "custom-highlight-container-metrics-005.html": [ - "8cfec235558a47156bbc3934c46298332eb0bfc2", + "d7be78d1fdb8f3e6748c14171bb0d2ad143bf028", [ null, [ @@ -187676,23 +187676,7 @@ "==" ] ], - { - "fuzzy": [ - [ - null, - [ - [ - 0, - 50 - ], - [ - 0, - 2 - ] - ] - ] - ] - } + {} ] ], "custom-highlight-container-metrics-006.html": [ @@ -187767,7 +187751,7 @@ ] ], "custom-highlight-dynamic-container-metrics-003.html": [ - "4785fa8fa51c02203af493d004f10f5931f2ac7b", + "38246a15affcaed2b1317a43b9c363fbd2cc6717", [ null, [ @@ -187776,27 +187760,11 @@ "==" ] ], - { - "fuzzy": [ - [ - null, - [ - [ - 0, - 50 - ], - [ - 0, - 2 - ] - ] - ] - ] - } + {} ] ], "custom-highlight-dynamic-container-metrics-004.html": [ - "e2f5f08d688af0b9d59854c879727bb8ceb713da", + "fbdbea32efcbb742083298e05794a0afa931736d", [ null, [ @@ -187805,23 +187773,7 @@ "==" ] ], - { - "fuzzy": [ - [ - null, - [ - [ - 0, - 50 - ], - [ - 0, - 2 - ] - ] - ] - ] - } + {} ] ], "custom-highlight-dynamic-font-metrics-001.html": [ @@ -188608,7 +188560,7 @@ ] ], "custom-highlight-painting-inheritance-003.html": [ - "c46edf4f3e1fd63d6befe96aae3cee94f6815cda", + "e449ebf334ff7f879c03e0795e7c9dc91cd44547", [ null, [ @@ -188617,23 +188569,7 @@ "==" ] ], - { - "fuzzy": [ - [ - null, - [ - [ - 0, - 24 - ], - [ - 0, - 2 - ] - ] - ] - ] - } + {} ] ], "custom-highlight-painting-invalidation-001.html": [ @@ -188926,7 +188862,7 @@ ] ], "custom-highlight-painting-vertical-writing-mode-001.html": [ - "9fe2bdcd5f12b6a2363d0dfa9e8f8fc731db11b1", + "ba25037976c3fac7acb7ac930f9e1ba1cfb97af8", [ null, [ @@ -188935,7 +188871,23 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 255 + ], + [ + 0, + 18 + ] + ] + ] + ] + } ] ], "invalidation": { @@ -191829,6 +191781,32 @@ {} ] ], + "object-fit-containcontainintrinsicsize-png-001c.tentative.html": [ + "b17f59f887f216f11a386077c41156388624ee27", + [ + null, + [ + [ + "/css/css-images/object-fit-containsize-png-001-ref.tentative.html", + "==" + ] + ], + {} + ] + ], + "object-fit-containcontainintrinsicsize-png-001e.tentative.html": [ + "1b121f4eee394f5e6d150574f7b1f83fce4d5cbc", + [ + null, + [ + [ + "/css/css-images/object-fit-containsize-png-001-ref.tentative.html", + "==" + ] + ], + {} + ] + ], "object-fit-containcontainintrinsicsize-png-001i.tentative.html": [ "2da201f3d6da41c680324258f5115e0550901361", [ @@ -191842,6 +191820,45 @@ {} ] ], + "object-fit-containcontainintrinsicsize-png-001p.tentative.html": [ + "c2c1697c63ca3e4e0589fe51411c6b65221f55d6", + [ + null, + [ + [ + "/css/css-images/object-fit-containsize-png-001-ref.tentative.html", + "==" + ] + ], + {} + ] + ], + "object-fit-containsize-png-001c.tentative.html": [ + "43a50adcedcf2bcdf81d86f717ec52e6a96e0f1a", + [ + null, + [ + [ + "/css/css-images/object-fit-containsize-png-001-ref.tentative.html", + "==" + ] + ], + {} + ] + ], + "object-fit-containsize-png-001e.tentative.html": [ + "37e0f1e447110327fd4901a225b255155a5f473a", + [ + null, + [ + [ + "/css/css-images/object-fit-containsize-png-001-ref.tentative.html", + "==" + ] + ], + {} + ] + ], "object-fit-containsize-png-001i.tentative.html": [ "1654cbf36fa15991a16e59608505ff858940a627", [ @@ -191855,6 +191872,19 @@ {} ] ], + "object-fit-containsize-png-001p.tentative.html": [ + "c3072f9838882d21a8032a3f287c7a824c1879fc", + [ + null, + [ + [ + "/css/css-images/object-fit-containsize-png-001-ref.tentative.html", + "==" + ] + ], + {} + ] + ], "object-fit-cover-png-001c.html": [ "2a0071a01ce0cd423b6b03537c8f4e9cfe766ad5", [ @@ -211720,7 +211750,7 @@ ] ], "line-clamp-with-floats-005.tentative.html": [ - "f5c76e24fa659e8c4a9e669b34e26837e36e2ccd", + "9689a83fa7f9e5976c2d5b71f6adc7fd0397e2cc", [ null, [ @@ -211733,7 +211763,7 @@ ] ], "line-clamp-with-floats-006.tentative.html": [ - "d900727d9730c4e3f167c20b498102247346f4f6", + "0a709bff198f3f4c35072559ab67f9892a1bf668", [ null, [ @@ -220478,6 +220508,19 @@ {} ] ], + "selection-over-highlight-001.html": [ + "57078cf83b38e317c4c070347fe43c9e440ff6f9", + [ + null, + [ + [ + "/css/css-pseudo/selection-over-highlight-001-ref.html", + "==" + ] + ], + {} + ] + ], "selection-overlay-and-grammar-001.html": [ "19768c73897155fc03fa063aa9001c5b74521b6e", [ @@ -221512,7 +221555,7 @@ ] ], "ruby-dynamic-insertion-005.html": [ - "a684d665c8918f5b5b87b36fd6a7c469b7a1653d", + "66f7dbdd17922201b01aaaca5c40ca1f169af7f0", [ null, [ @@ -221551,7 +221594,7 @@ ] ], "ruby-dynamic-removal-003.html": [ - "d35b2b968d651ecb7cc4d8a0e461b83f900ddcfc", + "ff6c0b4c83dcb7b5ded921e58c75906657c4dd71", [ null, [ @@ -284392,7 +284435,7 @@ }, "css-view-transitions": { "3d-transform-incoming.html": [ - "983ba1d861a8f58aeac68396eeeec5c7a99a9c63", + "4b1411f25dc641ff94878d11a1f4fc30453a1925", [ null, [ @@ -284404,11 +284447,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/3d-transform-incoming.html", - "/css/css-view-transitions/3d-transform-incoming-ref.html", - "==" - ], + null, [ [ 0, @@ -284425,7 +284464,7 @@ ] ], "3d-transform-outgoing.html": [ - "398fa97ca99bc07e12f31179083c7321099041ee", + "2fe4887bb190248d494321bbdb00a3157462963f", [ null, [ @@ -284437,11 +284476,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/3d-transform-outgoing.html", - "/css/css-view-transitions/3d-transform-outgoing-ref.html", - "==" - ], + null, [ [ 0, @@ -284510,7 +284545,7 @@ ] ], "block-with-overflowing-text.html": [ - "b3f8f42cfdf7ea3eae4833b071eea9b56a6a6e29", + "15d1653bfc29ad2233873062454bc157a1d82530", [ null, [ @@ -284522,11 +284557,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/block-with-overflowing-text.html", - "/css/css-view-transitions/block-with-overflowing-text-ref.html", - "==" - ], + null, [ [ 0, @@ -284543,7 +284574,7 @@ ] ], "break-inside-avoid-child.html": [ - "7b2a83c77691acbae4af3651f637f7d1fa59eb86", + "87d56d33af0e187e302eeaf97e81447c5c8fe025", [ null, [ @@ -284555,11 +284586,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/break-inside-avoid-child.html", - "/css/css-view-transitions/break-inside-avoid-child-ref.html", - "==" - ], + null, [ [ 0, @@ -284589,7 +284616,7 @@ ] ], "capture-with-offscreen-child.html": [ - "8588968d8afba2be185d20422073d43a79a276a1", + "7f8085cae2d23b26125db0b49914cb2f9f41a148", [ null, [ @@ -284601,11 +284628,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/capture-with-offscreen-child.html", - "/css/css-view-transitions/capture-with-offscreen-child-ref.html", - "==" - ], + null, [ [ 0, @@ -284622,7 +284645,7 @@ ] ], "capture-with-opacity-zero-child.html": [ - "888d0d17208fb6252df62e5b67a78186541f35e5", + "2b0563ea31b6c7e875c7eee4e302836437a72ba8", [ null, [ @@ -284634,11 +284657,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/capture-with-opacity-zero-child.html", - "/css/css-view-transitions/capture-with-visibility-hidden-child-ref.html", - "==" - ], + null, [ [ 0, @@ -284668,7 +284687,7 @@ ] ], "capture-with-visibility-mixed-descendants.html": [ - "462d267b94546313eb1605dccac320ab349871dc", + "3a4811ada10ec3d9bf8f2b3df6adec97c9c9ea67", [ null, [ @@ -284680,11 +284699,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/capture-with-visibility-mixed-descendants.html", - "/css/css-view-transitions/capture-with-visibility-mixed-descendants-ref.html", - "==" - ], + null, [ [ 0, @@ -284714,7 +284729,7 @@ ] ], "clip-path-larger-than-border-box-on-child-of-named-element.html": [ - "4cde9cb586bb8b9a575a110758bb420e59842069", + "4a26c50ef82e0d2dad55f56ae602755cea65dfe5", [ null, [ @@ -284726,11 +284741,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html", - "/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element-ref.html", - "==" - ], + null, [ [ 0, @@ -284825,7 +284836,7 @@ ] ], "content-with-transform-new-image.html": [ - "f86f64843c8022d95f0973e73cc73943112f8034", + "a6c444917a46ddc39d864eb4be87e07f2160d007", [ null, [ @@ -284837,11 +284848,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/content-with-transform-new-image.html", - "/css/css-view-transitions/content-with-transform-ref.html", - "==" - ], + null, [ [ 0, @@ -284858,7 +284865,7 @@ ] ], "content-with-transform-old-image.html": [ - "3755910a1b6b18480250094267f9fa4500c4c9d5", + "c6fda7f98852a7395316a1d20c1c3e54b3aeda5d", [ null, [ @@ -284870,11 +284877,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/content-with-transform-old-image.html", - "/css/css-view-transitions/content-with-transform-ref.html", - "==" - ], + null, [ [ 0, @@ -284905,7 +284908,7 @@ ] ], "css-tags-paint-order-with-entry.html": [ - "2ba73758e2379102159403a8f6f25371e4d218e5", + "c8d92ed33f8f8e11e7eead7fd5ddd66add1131e8", [ null, [ @@ -284917,11 +284920,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/css-tags-paint-order-with-entry.html", - "/css/css-view-transitions/css-tags-paint-order-with-entry-ref.html", - "==" - ], + null, [ [ 0, @@ -284964,7 +284963,7 @@ ] ], "dialog-in-rtl-iframe.html": [ - "f5959bf434db9c84c21d7a72917ccb40c018003b", + "05bc98dca97dab1bb3e12f4cad3c032572c163ec", [ null, [ @@ -284976,11 +284975,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/dialog-in-rtl-iframe.html", - "/css/css-view-transitions/dialog-in-rtl-iframe-ref.html", - "==" - ], + null, [ [ 0, @@ -285075,7 +285070,7 @@ ] ], "far-away-capture.html": [ - "97ad9dfb44b0e37c96ff53bf36007f8c060c2396", + "9ac162163956093d90609ef3060b2d13dd4893f2", [ null, [ @@ -285087,11 +285082,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/far-away-capture.html", - "/css/css-view-transitions/far-away-capture-ref.html", - "==" - ], + null, [ [ 0, @@ -285134,7 +285125,7 @@ ] ], "fractional-box-with-overflow-children-new.html": [ - "e50e6654a75578559cfb55ee972cb619a954a579", + "14371aca3fc040d790e31efea1bb150178d59c2c", [ null, [ @@ -285146,11 +285137,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/fractional-box-with-overflow-children-new.html", - "/css/css-view-transitions/fractional-box-with-overflow-children-ref.html", - "==" - ], + null, [ [ 0, @@ -285167,7 +285154,7 @@ ] ], "fractional-box-with-overflow-children-old.html": [ - "acf72e20df5c6e0dcee12f06e4088b31934753b0", + "0d19bf9c296b32fa2b667b70337f24b6187ba6fa", [ null, [ @@ -285179,11 +285166,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/fractional-box-with-overflow-children-old.html", - "/css/css-view-transitions/fractional-box-with-overflow-children-ref.html", - "==" - ], + null, [ [ 0, @@ -285320,7 +285303,7 @@ ] ], "iframe-new-has-scrollbar.html": [ - "67a57bb8852a487e273e59772ab61c710a51efc2", + "81072ac38aa1d8fd98649b23ffe178c633daedb7", [ null, [ @@ -285332,11 +285315,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/iframe-new-has-scrollbar.html", - "/css/css-view-transitions/iframe-new-has-scrollbar-ref.html", - "==" - ], + null, [ [ 0, @@ -285353,7 +285332,7 @@ ] ], "iframe-old-has-scrollbar.html": [ - "96dd75a3dfa7de6c02815ab813d01a00bdb92bad", + "5d266333989b36260f0de9a6350d7a8d3d4d0dca", [ null, [ @@ -285365,11 +285344,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/iframe-old-has-scrollbar.html", - "/css/css-view-transitions/iframe-old-has-scrollbar-ref.html", - "==" - ], + null, [ [ 0, @@ -285386,7 +285361,7 @@ ] ], "iframe-transition.sub.html": [ - "8fa361b0fc38843409dd7f754edf1ec238e3ec42", + "5f26a494b24c7c16781f11d5239fa1d2cc0fa3e7", [ null, [ @@ -285398,11 +285373,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/iframe-transition.sub.html", - "/css/css-view-transitions/iframe-transition-ref.html", - "==" - ], + null, [ [ 0, @@ -285446,7 +285417,7 @@ ] ], "inline-with-offset-from-containing-block.html": [ - "8640899814a08ac38a1ea1e69fc63c7e39c9c231", + "026ecb240a35f1ca1c7044f95f4d09468af9e05f", [ null, [ @@ -285458,11 +285429,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/inline-with-offset-from-containing-block.html", - "/css/css-view-transitions/inline-with-offset-from-containing-block-ref.html", - "==" - ], + null, [ [ 0, @@ -285492,7 +285459,7 @@ ] ], "massive-element-below-and-on-top-of-viewport-partially-onscreen-new.html": [ - "23f5fc22cf405d230c184cbd4d47131dec84fd4b", + "65b14a6c4b85f90ba382dbb93e3fd591c8be85f7", [ null, [ @@ -285504,11 +285471,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-new.html", - "/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285525,7 +285488,7 @@ ] ], "massive-element-below-and-on-top-of-viewport-partially-onscreen-old.html": [ - "fbc8edadc025ed0fb3daee51b2e437accdf55ba6", + "b35222c24a8c06c48ddc9ec6485f689b5616bb7a", [ null, [ @@ -285537,11 +285500,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-old.html", - "/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285549,7 +285508,7 @@ ], [ 0, - 330 + 700 ] ] ] @@ -285558,7 +285517,7 @@ ] ], "massive-element-below-viewport-offscreen-new.html": [ - "611d4da21a64d0fcc356824e4e98599c102e5225", + "a122cd4b3bcc003105ae47124c5b8b5ed003b638", [ null, [ @@ -285570,11 +285529,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-below-viewport-offscreen-new.html", - "/css/css-view-transitions/massive-element-below-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285591,7 +285546,7 @@ ] ], "massive-element-below-viewport-offscreen-old.html": [ - "bda3ebf1b1b86da98d14ddeb19365f52026f74c1", + "567819fadff7b6e846229a8fecb48ffc7e8b198d", [ null, [ @@ -285603,11 +285558,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-below-viewport-offscreen-old.html", - "/css/css-view-transitions/massive-element-below-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285624,7 +285575,7 @@ ] ], "massive-element-below-viewport-partially-onscreen-new.html": [ - "e881e19622790ee313073a413b7d8f3cb2152b77", + "42f97555f5c7bbc5ec322b6fa733bac97d41b7e4", [ null, [ @@ -285636,11 +285587,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html", - "/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285657,7 +285604,7 @@ ] ], "massive-element-below-viewport-partially-onscreen-old.html": [ - "c8c3c53082c4f13fa899c73ed5ba7a162cfc2f02", + "87b9a207956a2eebea49f37011ab31f8ae6b63f8", [ null, [ @@ -285669,11 +285616,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-old.html", - "/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285681,7 +285624,7 @@ ], [ 0, - 445 + 1600 ] ] ] @@ -285690,7 +285633,7 @@ ] ], "massive-element-left-of-viewport-offscreen-new.html": [ - "c8471032a4865cd14d6930febfc353159558e787", + "97a3cb41ff1d2e4f503021e7edc3f03c30be969c", [ null, [ @@ -285702,11 +285645,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-left-of-viewport-offscreen-new.html", - "/css/css-view-transitions/massive-element-left-of-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285723,7 +285662,7 @@ ] ], "massive-element-left-of-viewport-offscreen-old.html": [ - "04ab58f3aa162c2ff5f3173f0ea4cb5e99a2e060", + "a41a73882660a0aea3fd3402113ca1bb5251a2d5", [ null, [ @@ -285735,11 +285674,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-left-of-viewport-offscreen-old.html", - "/css/css-view-transitions/massive-element-left-of-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285756,7 +285691,7 @@ ] ], "massive-element-left-of-viewport-partially-onscreen-new.html": [ - "15cc94ffe714e0fdf09b708c21c773e299e98b15", + "accd909158e0e5d199097efad16fe6fff07aa067", [ null, [ @@ -285768,11 +285703,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html", - "/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285789,7 +285720,7 @@ ] ], "massive-element-left-of-viewport-partially-onscreen-old.html": [ - "0d2aeec59dbf8111403b50c493abc7009222e572", + "e16806e8f37c7327a31e1193df7c86508f4464a9", [ null, [ @@ -285801,11 +285732,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html", - "/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285822,7 +285749,7 @@ ] ], "massive-element-on-top-of-viewport-offscreen-new.html": [ - "6ef8edd3b00de31e94636e54669ea68349317fcd", + "24edbc1ec7a0ba52b91d36a42e74ba2d0685f004", [ null, [ @@ -285834,11 +285761,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-new.html", - "/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285855,7 +285778,7 @@ ] ], "massive-element-on-top-of-viewport-offscreen-old.html": [ - "5e303e8286aca8db216f621ada061853631554b4", + "8dfc8eefe1458e4c669302179f0da0e68dbf136e", [ null, [ @@ -285867,11 +285790,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html", - "/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285888,7 +285807,7 @@ ] ], "massive-element-on-top-of-viewport-partially-onscreen-new.html": [ - "a9e5f5842afe3e68f0dee7a0c8e051aa3324a31d", + "c301e470996b5804839a4b6c4ce633501df43e45", [ null, [ @@ -285900,11 +285819,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html", - "/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285921,7 +285836,7 @@ ] ], "massive-element-on-top-of-viewport-partially-onscreen-old.html": [ - "41dc622914b2ce23351517b434c6926c238c6ed6", + "1f810af745b1455001a6c433903f0a435f52d43e", [ null, [ @@ -285933,11 +285848,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-old.html", - "/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285954,7 +285865,7 @@ ] ], "massive-element-right-and-left-of-viewport-partially-onscreen-new.html": [ - "719701fe888da0cb15cccc233003e645117adccb", + "426751d09397f101cbd981bdfbc4c32731c1ae64", [ null, [ @@ -285966,11 +285877,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-right-and-left-of-viewport-partially-onscreen-new.html", - "/css/css-view-transitions/massive-element-right-and-left-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -285987,7 +285894,7 @@ ] ], "massive-element-right-and-left-of-viewport-partially-onscreen-old.html": [ - "e8eeec3f26041a9f3d619ba31a55ad4eada7c3aa", + "ea10e2471bb3c574d66ea02cca5a1b2d3884ff04", [ null, [ @@ -285999,11 +285906,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-right-and-left-of-viewport-partially-onscreen-old.html", - "/css/css-view-transitions/massive-element-right-and-left-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -286011,7 +285914,7 @@ ], [ 0, - 330 + 700 ] ] ] @@ -286020,7 +285923,7 @@ ] ], "massive-element-right-of-viewport-offscreen-new.html": [ - "89d00a53a86030782e7c23b7dc4ca7a4f1a42d21", + "53749f29b2f9147cd1fbeb4d82fcdc8ecdb55bb0", [ null, [ @@ -286032,11 +285935,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-right-of-viewport-offscreen-new.html", - "/css/css-view-transitions/massive-element-right-of-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -286053,7 +285952,7 @@ ] ], "massive-element-right-of-viewport-offscreen-old.html": [ - "04247af18e51a827ed131bf5cccfb99037c9652f", + "b5337c4491428a828f935782d669554ef011c89f", [ null, [ @@ -286065,11 +285964,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-right-of-viewport-offscreen-old.html", - "/css/css-view-transitions/massive-element-right-of-viewport-offscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -286086,7 +285981,7 @@ ] ], "massive-element-right-of-viewport-partially-onscreen-new.html": [ - "a7b599e5eba8cc3e17a031172fd32803d4412799", + "ac3fe48a0a7835a9085a8dfc3daf9d2dee674673", [ null, [ @@ -286098,11 +285993,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-new.html", - "/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -286119,7 +286010,7 @@ ] ], "massive-element-right-of-viewport-partially-onscreen-old.html": [ - "2498f2e1f17990843508541fea0febad946a8c4f", + "2626910d7836da42c21cd33b24a2b4f04f9e8a65", [ null, [ @@ -286131,11 +286022,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-old.html", - "/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-ref.html", - "==" - ], + null, [ [ 0, @@ -286165,7 +286052,7 @@ ] ], "multiline-span-with-overflowing-text-and-box-decorations.html": [ - "e166b3c9dfe66370a4800ff6cac37e236100d62d", + "8fff184b2a71112466590a356e516000beeacd40", [ null, [ @@ -286177,11 +286064,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations.html", - "/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations-ref.html", - "==" - ], + null, [ [ 0, @@ -286224,7 +286107,7 @@ ] ], "new-and-old-sizes-match.html": [ - "094d6963bfbd509d34c1be635147dfb0baf37cdf", + "70b6515fb5b8189c925127636f7860ae424f0284", [ null, [ @@ -286236,11 +286119,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-and-old-sizes-match.html", - "/css/css-view-transitions/new-and-old-sizes-match-ref.html", - "==" - ], + null, [ [ 0, @@ -286257,7 +286136,7 @@ ] ], "new-content-captures-clip-path.html": [ - "702bb09bc336db351eba8082657c97f028afee8c", + "19af2493d05ed1e0d4fd82a01dcb8f5dc304a731", [ null, [ @@ -286269,11 +286148,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-content-captures-clip-path.html", - "/css/css-view-transitions/new-content-captures-clip-path-ref.html", - "==" - ], + null, [ [ 0, @@ -286290,7 +286165,7 @@ ] ], "new-content-captures-different-size.html": [ - "740199675dd67f1ae11a1e75c85022146632ce43", + "18f323c32075bc9f10d6f007ab18eb2caad3812f", [ null, [ @@ -286302,11 +286177,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-content-captures-different-size.html", - "/css/css-view-transitions/new-content-captures-different-size-ref.html", - "==" - ], + null, [ [ 0, @@ -286363,7 +286234,7 @@ ] ], "new-content-captures-spans.html": [ - "94bef1d6dd7512b84b334a87baa2fa83f656d623", + "5f4807404c7e32a79bc4d6c50cc5cd96332f9af7", [ null, [ @@ -286372,7 +286243,38 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 1 + ], + [ + 0, + 400 + ] + ] + ] + ] + } + ] + ], + "new-content-changes-overflow-left.html": [ + "e362dce76acd0456698c6400143bc60357b4561c", + [ + null, + [ + [ + "/css/css-view-transitions/new-content-changes-overflow-left-ref.html", + "==" + ] + ], + { + "timeout": "long" + } ] ], "new-content-changes-overflow.html": [ @@ -286430,7 +286332,7 @@ ] ], "new-content-has-scrollbars.html": [ - "3246a7e76f34c8f3fbdd06fdceaace6920ad59b7", + "834d0e8f454ebd7f87f5cde66d19d475563d4a3e", [ null, [ @@ -286442,11 +286344,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-content-has-scrollbars.html", - "/css/css-view-transitions/new-content-has-scrollbars-ref.html", - "==" - ], + null, [ [ 0, @@ -286490,7 +286388,7 @@ ] ], "new-content-is-inline.html": [ - "46c96acb0471eace651554d4796673b2e06dd7e6", + "81b261a9bfffaf1ef4be4ac94f90673475450c15", [ null, [ @@ -286502,11 +286400,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-content-is-inline.html", - "/css/css-view-transitions/new-content-is-inline-ref.html", - "==" - ], + null, [ [ 0, @@ -286523,7 +286417,7 @@ ] ], "new-content-object-fit-fill.html": [ - "04a80409c5eb79bf269ed4aa94582186aca4a493", + "a610d688023439155382f48f2b9fb6b4b81d030a", [ null, [ @@ -286535,11 +286429,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-content-object-fit-fill.html", - "/css/css-view-transitions/content-object-fit-fill-ref.html", - "==" - ], + null, [ [ 0, @@ -286621,7 +286511,7 @@ ] ], "new-content-scaling.html": [ - "bccb760fb59560599572722220bf718dfffaf5d7", + "376b7fd11f7e2e86e549c300fcb09cc8767751c4", [ null, [ @@ -286633,11 +286523,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/new-content-scaling.html", - "/css/css-view-transitions/new-content-scaling-ref.html", - "==" - ], + null, [ [ 0, @@ -286773,7 +286659,7 @@ ] ], "object-view-box-old-image.html": [ - "335e48fa70ea79f992f249068cd157664b4d5b77", + "793dfd46c9f4e336829ed60a0a755a573849f443", [ null, [ @@ -286785,11 +286671,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/object-view-box-old-image.html", - "/css/css-view-transitions/object-view-box-ref.html", - "==" - ], + null, [ [ 0, @@ -286820,7 +286702,7 @@ ] ], "old-content-captures-clip-path.html": [ - "7ed5e1ca15defb597f73472dab08efcc90542f8a", + "67aa5bf32f6b83219dba4dc0152dcbc30c002c37", [ null, [ @@ -286832,11 +286714,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-captures-clip-path.html", - "/css/css-view-transitions/old-content-captures-clip-path-ref.html", - "==" - ], + null, [ [ 0, @@ -286853,7 +286731,7 @@ ] ], "old-content-captures-different-size.html": [ - "392247bc9518886890246f1c293f840db4501b53", + "7f3be742b0d400d17e3aba73360a9c9dd6de6c02", [ null, [ @@ -286865,11 +286743,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-captures-different-size.html", - "/css/css-view-transitions/old-content-captures-different-size-ref.html", - "==" - ], + null, [ [ 0, @@ -286887,7 +286761,7 @@ ] ], "old-content-captures-opacity.html": [ - "cd71c9dfaf10d313d9e3ec84b56ad998c3e3042c", + "97b89116445f6c3588e225910c2e859e69832498", [ null, [ @@ -286899,11 +286773,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-captures-opacity.html", - "/css/css-view-transitions/old-content-captures-opacity-ref.html", - "==" - ], + null, [ [ 0, @@ -286920,7 +286790,7 @@ ] ], "old-content-captures-root.html": [ - "51a22bc13608c16430a1acd846c896fd94d60828", + "a1cb3329426aa7ab00946b92833b4440fd38f84c", [ null, [ @@ -286932,11 +286802,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-captures-root.html", - "/css/css-view-transitions/old-content-captures-root-ref.html", - "==" - ], + null, [ [ 0, @@ -286979,7 +286845,7 @@ ] ], "old-content-has-scrollbars.html": [ - "13e26c702d54d0397ef8517b252502de5972a74c", + "b9638ebb10082ee73b47a5a98244f327731b0d6c", [ null, [ @@ -286991,11 +286857,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-has-scrollbars.html", - "/css/css-view-transitions/old-content-has-scrollbars-ref.html", - "==" - ], + null, [ [ 0, @@ -287039,7 +286901,7 @@ ] ], "old-content-is-inline.html": [ - "70ff67c0e0ab78f891acf370ab19bf0e336f8dc7", + "3333a07a02963e45f3e8991ea102533226e0dc41", [ null, [ @@ -287051,11 +286913,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-is-inline.html", - "/css/css-view-transitions/old-content-is-inline-ref.html", - "==" - ], + null, [ [ 0, @@ -287072,7 +286930,7 @@ ] ], "old-content-object-fit-fill.html": [ - "0652b30a070c4f5acaead54ad799f420e582f264", + "51023fa27b6b1a47c03524037e5e32ad8d742a3e", [ null, [ @@ -287084,11 +286942,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-object-fit-fill.html", - "/css/css-view-transitions/content-object-fit-fill-ref.html", - "==" - ], + null, [ [ 0, @@ -287118,7 +286972,7 @@ ] ], "old-content-object-view-box-clip-path-reference.html": [ - "5e6969d9cca716907cdfe89adcdc60a2b8126402", + "827ca027dd5157f236b084e00595575a18ed488c", [ null, [ @@ -287130,11 +286984,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-object-view-box-clip-path-reference.html", - "/css/css-view-transitions/old-content-object-view-box-clip-path-reference-ref.html", - "==" - ], + null, [ [ 0, @@ -287151,7 +287001,7 @@ ] ], "old-content-object-view-box-clip-path.html": [ - "f8945551542e100da2b4fe85bcae3086684fbf63", + "d0d26b9790117bfdaded30cf9f19bb531dd51b42", [ null, [ @@ -287163,11 +287013,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/old-content-object-view-box-clip-path.html", - "/css/css-view-transitions/old-content-object-view-box-clip-path-ref.html", - "==" - ], + null, [ [ 0, @@ -287250,8 +287096,21 @@ {} ] ], + "pseudo-element-preserve-3d.html": [ + "474f743e1c50ac0dacf15980cc75a08e5bf9303f", + [ + null, + [ + [ + "/css/css-view-transitions/pseudo-element-preserve-3d-ref.html", + "==" + ] + ], + {} + ] + ], "pseudo-rendering-invalidation.html": [ - "e1f17186183dd64c8adc32086ee9a9a655c60cb5", + "4d492c40d8761ddda3551448ce725cfbb5a82f4a", [ null, [ @@ -287263,11 +287122,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/pseudo-rendering-invalidation.html", - "/css/css-view-transitions/pseudo-rendering-invalidation-ref.html", - "==" - ], + null, [ [ 0, @@ -287479,7 +287334,7 @@ ] ], "root-captured-as-different-tag.html": [ - "a4d6f11ad4977f7b6cf4e0c584e65d784d76be53", + "1d4d1610d16bd4e6e682acdc19fcad3d48aefa2f", [ null, [ @@ -287491,11 +287346,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/root-captured-as-different-tag.html", - "/css/css-view-transitions/old-content-captures-root-ref.html", - "==" - ], + null, [ [ 0, @@ -287512,7 +287363,7 @@ ] ], "root-scrollbar-with-fixed-background.html": [ - "2fa0132727e7e64ed4189affa9b4043321e2d893", + "3c3429412bf309be9181f5f4f2d75019b80a2dbf", [ null, [ @@ -287521,7 +287372,23 @@ "==" ] ], - {} + { + "fuzzy": [ + [ + null, + [ + [ + 0, + 2 + ], + [ + 0, + 4500 + ] + ] + ] + ] + } ] ], "root-style-change-during-animation.html": [ @@ -287577,7 +287444,7 @@ ] ], "rotated-cat-off-top-edge.html": [ - "c7179b7a011ee31e1121df2149de89bc451a89aa", + "f61b916caa53c076d843851da6a859d2069889a3", [ null, [ @@ -287589,19 +287456,15 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/rotated-cat-off-top-edge.html", - "/css/css-view-transitions/rotated-cat-off-top-edge-ref.html", - "==" - ], + null, [ [ 0, - 5 + 70 ], [ 0, - 1500 + 22000 ] ] ] @@ -287623,7 +287486,7 @@ ] ], "scroller-child-abspos.html": [ - "3b94ffa7bb99b88ee1f8a052e19feab147e577f4", + "d04f87215edfd41131a1d02b84dc4f999f8c7138", [ null, [ @@ -287635,11 +287498,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/scroller-child-abspos.html", - "/css/css-view-transitions/scroller-child-abspos-ref.html", - "==" - ], + null, [ [ 0, @@ -287656,7 +287515,7 @@ ] ], "scroller-child.html": [ - "5cb2f03e704334dad70745a9221a035bd169502a", + "7d4368fe574d0509bf3a11e21815eb7de4bb55a8", [ null, [ @@ -287668,11 +287527,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/scroller-child.html", - "/css/css-view-transitions/scroller-child-ref.html", - "==" - ], + null, [ [ 0, @@ -287689,7 +287544,7 @@ ] ], "scroller.html": [ - "e61d13b3166e7ebab7fb18f6180f9b6efab027b8", + "9d820468918d5f4c2c2d91cb622392e39182a055", [ null, [ @@ -287701,11 +287556,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/scroller.html", - "/css/css-view-transitions/scroller-ref.html", - "==" - ], + null, [ [ 0, @@ -287735,7 +287586,7 @@ ] ], "set-current-time.html": [ - "f7e802d79b4f1a6ede216cc8cb8a9879b67f2a70", + "efe561c6ea549686dfc88ad40e9cac7aa9a9b420", [ null, [ @@ -287747,11 +287598,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/set-current-time.html", - "/css/css-view-transitions/set-current-time-ref.html", - "==" - ], + null, [ [ 0, @@ -287781,7 +287628,7 @@ ] ], "snapshot-containing-block-absolute.html": [ - "4a619f29cc29978828c80bf371da0f53f95b7746", + "91b71f7eec99096a7f9ce7615f418634728cee5f", [ null, [ @@ -287793,11 +287640,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/snapshot-containing-block-absolute.html", - "/css/css-view-transitions/snapshot-containing-block-absolute-ref.html", - "==" - ], + null, [ [ 0, @@ -287814,7 +287657,7 @@ ] ], "snapshot-containing-block-includes-scrollbar-gutter.html": [ - "8e47a056bdc039f6c47d2da041d3edde497a1aa1", + "40feea46ef78a5d431739b581e0fdc5f8761989d", [ null, [ @@ -287826,11 +287669,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/snapshot-containing-block-includes-scrollbar-gutter.html", - "/css/css-view-transitions/snapshot-containing-block-includes-scrollbar-gutter-ref.html", - "==" - ], + null, [ [ 0, @@ -287847,7 +287686,7 @@ ] ], "snapshot-containing-block-static.html": [ - "fc0c7033c9bc278f08433fb429b204421fb7f9d0", + "44fe4cfc5e66e8afff7ad1a21db40d8d1576be37", [ null, [ @@ -287859,11 +287698,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/snapshot-containing-block-static.html", - "/css/css-view-transitions/snapshot-containing-block-static-ref.html", - "==" - ], + null, [ [ 0, @@ -287880,7 +287715,7 @@ ] ], "span-with-overflowing-text-and-box-decorations.html": [ - "a2bf59ecb00771c3bcb68eefd6622ad86df18073", + "262970ad5fba81e630e31a39d1742d09fb98a9e8", [ null, [ @@ -287892,11 +287727,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/span-with-overflowing-text-and-box-decorations.html", - "/css/css-view-transitions/span-with-overflowing-text-and-box-decorations-ref.html", - "==" - ], + null, [ [ 0, @@ -287926,7 +287757,7 @@ ] ], "span-with-overflowing-text.html": [ - "f3f0f534e9e10c57d42ada86aa08d60df044f080", + "5a6268ddf03c43bcdf1dbbda161c35c19365ef3e", [ null, [ @@ -287938,11 +287769,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/span-with-overflowing-text.html", - "/css/css-view-transitions/span-with-overflowing-text-ref.html", - "==" - ], + null, [ [ 0, @@ -287972,7 +287799,7 @@ ] ], "transition-in-empty-iframe.html": [ - "7cd621fbfdc4f8951f38cb1b0bc6735b5303305e", + "101f7c2a632f6b02ed285a0a73c46a3934b54667", [ null, [ @@ -287984,11 +287811,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/transition-in-empty-iframe.html", - "/css/css-view-transitions/transition-in-empty-iframe-ref.html", - "==" - ], + null, [ [ 0, @@ -288057,7 +287880,7 @@ ] ], "web-animations-api-parse-pseudo-argument.html": [ - "40c9a0d0c2ec81624a06523c7b000d1a902507c0", + "dfaac62c17f99e7465a32c452eaed807f289cac6", [ "css/css-view-transitions/web-animations-api-parse-pseudo-argument.html?first-pseudo=::view-transition-group( first )", [ @@ -288069,11 +287892,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -288099,11 +287918,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -288129,11 +287944,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -288159,11 +287970,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -288189,11 +287996,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -288219,11 +288022,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api-parse-pseudo-argument.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -288240,7 +288039,7 @@ ] ], "web-animations-api.html": [ - "c739e416c8c900774cb14ff77b62d27f1ba8c6a6", + "23b1504b240a92e6f2f7a99b6684a621c2631866", [ null, [ @@ -288252,11 +288051,7 @@ { "fuzzy": [ [ - [ - "/css/css-view-transitions/web-animations-api.html", - "/css/css-view-transitions/web-animations-api-ref.html", - "==" - ], + null, [ [ 0, @@ -288340,6 +288135,32 @@ {} ] ], + "iframe-zoom-nested.html": [ + "22a491eb0b58e4cc908336597bdd75f88f5fa18b", + [ + null, + [ + [ + "/css/css-viewport/zoom/reference/iframe-zoom-nested-ref.html", + "==" + ] + ], + {} + ] + ], + "iframe-zoom.sub.html": [ + "a27fb91619b6b82290c3468dd1b966983b7287fa", + [ + null, + [ + [ + "/css/css-viewport/zoom/reference/iframe-zoom-ref.html", + "==" + ] + ], + {} + ] + ], "image-intrinsic-size.html": [ "d152bb24eefb9fd092f3c6232d7b3a21c0bd71c0", [ @@ -313488,34 +313309,6 @@ {} ] ] - }, - "zoom": { - "iframe-zoom-nested.html": [ - "22a491eb0b58e4cc908336597bdd75f88f5fa18b", - [ - null, - [ - [ - "/css/zoom/reference/iframe-zoom-nested-ref.html", - "==" - ] - ], - {} - ] - ], - "iframe-zoom.sub.html": [ - "82a202161b9c296adb008a0f4ddb48acb9d8c911", - [ - null, - [ - [ - "/css/zoom/reference/iframe-zoom-ref.html", - "==" - ] - ], - {} - ] - ] } }, "custom-elements": { @@ -315521,6 +315314,58 @@ {} ] ], + "2d.layer.global-states.copy.no-shadow.no-transform.html": [ + "1720f20589fcd676f93f9871d32f6701820672df", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.copy.no-shadow.rotation.html": [ + "87cd91bb120b52d5c6d2081444a5be759f9b5d75", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.rotation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.copy.shadow.no-transform.html": [ + "e8d01065c1d746407f641fecf5648c96df676145", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.global-states.copy.shadow.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.copy.shadow.rotation.html": [ + "5c7fa379f14932e1377fab595f8b1a3302457d6c", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.global-states.copy.shadow.rotation-expected.html", + "==" + ] + ], + {} + ] + ], "2d.layer.global-states.filter.blending.no-shadow.no-transform.html": [ "188d5ea98be76d827857285197ccae1494d87db9", [ @@ -315625,6 +315470,58 @@ {} ] ], + "2d.layer.global-states.filter.copy.no-shadow.no-transform.html": [ + "ac5c7303a81856c5763f3237d75aeb5e9ddedc04", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.copy.no-shadow.rotation.html": [ + "3158a2fff34ef7327f85ce0c05d2b5bfbba271f4", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.rotation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.copy.shadow.no-transform.html": [ + "839ab13add854c1c3c033568b2a8a37a4a5acb2b", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.copy.shadow.rotation.html": [ + "7c090165f5903101ba0c4d945f0b9bd1efa3ee69", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.rotation-expected.html", + "==" + ] + ], + {} + ] + ], "2d.layer.global-states.filter.no-composite-op.no-shadow.no-transform.html": [ "d2b2d806c4b30ef0fa6d141766b7d0f9cbebc589", [ @@ -315729,6 +315626,19 @@ {} ] ], + "2d.layer.globalCompositeOperation.html": [ + "32809d852c7b2466edc20334f0541320010e0d91", + [ + null, + [ + [ + "/html/canvas/element/layers/2d.layer.globalCompositeOperation-expected.html", + "==" + ] + ], + {} + ] + ], "2d.layer.nested-filters.html": [ "333de67ac9bcbacac96f7266eb3b50a44be311d3", [ @@ -318518,6 +318428,110 @@ {} ] ], + "2d.layer.global-states.copy.no-shadow.no-transform.html": [ + "70b659f52ba565806c813e3d8c86cccf9666f548", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.copy.no-shadow.no-transform.w.html": [ + "1db7f17a94d65c074b8ecfa41dd191f7f5889980", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.copy.no-shadow.rotation.html": [ + "2151535015b670f35cebc61cd9287350ef3e9bd9", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.copy.no-shadow.rotation.w.html": [ + "9c0cac99b913236a4946bbdf29ceb7221bdc2de5", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.copy.shadow.no-transform.html": [ + "42231fa61eeda807201e913fb9d8edb27f144c6a", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.copy.shadow.no-transform.w.html": [ + "20dc667ef8730ecf3216ea17b713b4a801b764da", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.copy.shadow.rotation.html": [ + "77158a9f962d2f0aa5bad8934a4a5b0676e20070", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.copy.shadow.rotation.w.html": [ + "def6bc51e2054f7189125a23dbcd12e78b5ff239", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation-expected.html", + "==" + ] + ], + {} + ] + ], "2d.layer.global-states.filter.blending.no-shadow.no-transform.html": [ "8acbfa668fbc62c168d6d9ec43607b51291947c8", [ @@ -318726,6 +318740,110 @@ {} ] ], + "2d.layer.global-states.filter.copy.no-shadow.no-transform.html": [ + "f08ba940af401dfa88645adcbcf5b329b741e0f4", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.copy.no-shadow.no-transform.w.html": [ + "75fc90bae67cc47cb5606b5b0ece91e05eed0cd3", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.copy.no-shadow.rotation.html": [ + "3f12cf0c4e4dc0444da574fee29fc56de19263b2", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.copy.no-shadow.rotation.w.html": [ + "0a3ecee6698060758615b01ceae626ce0971ecf7", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.copy.shadow.no-transform.html": [ + "b4996deb6f3b5e7380ca32282e595dfd1095e326", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.copy.shadow.no-transform.w.html": [ + "9c13a367b32606080ea265a82a54002874e69ee4", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.copy.shadow.rotation.html": [ + "eab5f8312bbb31753800958d128562a235bfca77", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.global-states.filter.copy.shadow.rotation.w.html": [ + "aebd6cc00d4802fa7dcea4162d85f081f46fa022", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation-expected.html", + "==" + ] + ], + {} + ] + ], "2d.layer.global-states.filter.no-composite-op.no-shadow.no-transform.html": [ "f86b0fd37d73c501c1cdc3b466228b775349b678", [ @@ -318934,6 +319052,32 @@ {} ] ], + "2d.layer.globalCompositeOperation.html": [ + "ab9bc4270b386951eb06b731dc4ae8ae8e0d8661", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation-expected.html", + "==" + ] + ], + {} + ] + ], + "2d.layer.globalCompositeOperation.w.html": [ + "9a403140fc4b20402caf6c00b24b30aa33b72420", + [ + null, + [ + [ + "/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation-expected.html", + "==" + ] + ], + {} + ] + ], "2d.layer.nested-filters.html": [ "adf99bacbe700beaf38f3ea84e3a3f676fe80d91", [ @@ -327437,7 +327581,7 @@ }, "popovers": { "popover-anchor-change-display.tentative.html": [ - "435929a6c1b05adc811fe8df029f2a30e2e79cf3", + "4312a156ceecafcace7e57e11ea1fa8f2eb7efd8", [ null, [ @@ -327450,7 +327594,7 @@ ] ], "popover-anchor-display.tentative.html": [ - "bddc44006dfba675982454f55807c8af39b5a983", + "a713540094a03ab52b5fd315551554581b362913", [ null, [ @@ -327476,7 +327620,7 @@ ] ], "popover-anchor-scroll-display.tentative.html": [ - "2c6b0bafb942bb30c618e58de98dd032e38904f0", + "a301032a5b7b9c7b11c6766e874e4fd57549e1ad", [ null, [ @@ -336268,6 +336412,32 @@ {} ] ], + "paint-context-007.svg": [ + "50360a302e3a3d2ca74b465122d322a25abf743a", + [ + null, + [ + [ + "/svg/painting/reftests/paint-context-007-ref.svg", + "==" + ] + ], + {} + ] + ], + "paint-context-008.svg": [ + "83308f09b1fc95d538ee078ff9acbf7e7def307e", + [ + null, + [ + [ + "/svg/painting/reftests/paint-context-008-ref.svg", + "==" + ] + ], + {} + ] + ], "paint-order-001.svg": [ "c8d60bd5bf68d0dc5f56fb360acdd2bac5aa1aa2", [ @@ -342003,7 +342173,7 @@ }, "support": { ".azure-pipelines.yml": [ - "1a21d2f7a00fed5cd418927b0e1e6a92e2483046", + "ae5c9c0bf1e74e74d0ece499c6cb70f506de8a1a", [] ], ".gitattributes": [ @@ -366323,7 +366493,7 @@ [] ], "script-src-strict_dynamic_hashes.html.headers": [ - "0d824d8b0e1a1441cebd4f9a9a7265a9ca07c6dd", + "4d3d904c6801d91ef8be7a1cdf767412b43ddccb", [] ], "script-src-strict_dynamic_in_img-src.html.headers": [ @@ -367465,7 +367635,7 @@ [] ], "set_cookie.headers": [ - "4226ff4c9975cccb5ea799b769a6e797eea12b8b", + "ddeb0bb3d6d81088f63178a2d8ffb7de001b736b", [] ] } @@ -385174,10 +385344,18 @@ "dc7f77f2b3441ebee25f3e40a9480b668ee79ea4", [] ], + "anchor-scroll-overflow-hidden-ref.html": [ + "b674998a5db1f347af82bde1f5efb4261a3732af", + [] + ], "anchor-scroll-position-try-012-ref.html": [ "fbc0b5fc6da55cfadb1ea610092882b8ff7502a7", [] ], + "anchor-scroll-scrollable-anchor-ref.html": [ + "3528b565fccb1d32dff6fe732c9497446e5f525e", + [] + ], "inset-area-inline-container-ref.html": [ "ecf54f1a9ac2d756cb78f4d2c0690c1ac8b65916", [] @@ -391578,6 +391756,10 @@ "503fc08f57614916ba42660b1dbf5acbe0f267ee", [] ], + "WEB_FEATURES.yml": [ + "69d08754517812caf497fc2a0c3ec412dc1dda84", + [] + ], "abspos": { "flex-abspos-staticpos-align-self-safe-001-ref.html": [ "fb1fb93ea997b1107efa595f17ae5b9c38419a92", @@ -402252,7 +402434,7 @@ [] ], "tentative": { - "align-content": { + "alignment": { "masonry-align-content-001-ref.html": [ "fff6cf21381f2ca635cc52daa0b440ef96e77cc3", [] @@ -402262,12 +402444,28 @@ [] ], "masonry-align-content-003-ref.html": [ - "9780d5f5dcf069295ce97d301e37bc4253b561d0", + "9da15c0f40319f07c5560f9aaf96a2e3e0ffa592", [] ], "masonry-align-content-004-ref.html": [ "de11c836b8d060f94d56831bef9fda471e062ea3", [] + ], + "masonry-justify-content-001-ref.html": [ + "f7d9ccf48f1d9af15826fb12610f18e73d8e645f", + [] + ], + "masonry-justify-content-002-ref.html": [ + "6889af7eaccb0caae8acb8aac40a80d6700ae348", + [] + ], + "masonry-justify-content-003-ref.html": [ + "81d0fba41070bb5b6cba5a71f1bb33ca239d6f02", + [] + ], + "masonry-justify-content-004-ref.html": [ + "43af71fc01f9811cc2906389cf09834a33e6bc3a", + [] ] }, "baseline": { @@ -402304,45 +402502,55 @@ }, "gap": { "masonry-gap-001-ref.html": [ - "031629e926bf103fc3700e01a864c341de8bd44d", + "7157460267ae8556006a3383fbde53618d6dbcd6", + [] + ], + "masonry-gap-002-ref.html": [ + "834a884f7630844d75730d12b4f7871d0911b637", [] ] }, "grid-placement": { "masonry-grid-placement-named-lines-001-ref.html": [ - "c99b117f2ee5d669f99ddc3fc48cd48545387027", + "2aefa719dc4373781ff7e8c5975df68d464557ea", [] ], "masonry-grid-placement-named-lines-002-ref.html": [ - "dd589f90c5ffa06f9353d1dfaa4befa707dbc0b4", + "cfe1369e87d20046b6f0d403290e56dd446dba51", [] ] }, "intrinsic-sizing": { "masonry-intrinsic-sizing-001-ref.html": [ - "898bff16d8e32d4c8f47a6bb091a9fea341a5daa", + "1a9f65aaf698b0b20b2c33b17420795972d6ff8d", [] ], "masonry-intrinsic-sizing-002-ref.html": [ - "4f6519db949ee64dc3fd5e752e930cf3520deff5", + "ddae8e7fe37f8873791cd56d8c6404eafa6fd703", [] ], "masonry-intrinsic-sizing-003-ref.html": [ - "61eb21570df2b883245fcdde2430fa30e7a27ec1", + "044750dc45183a50fb19153977081eb0e7b83eaa", [] ], "masonry-intrinsic-sizing-004-ref.html": [ - "6a5d81fedb2ca1371a55773647a89511488dc0f6", + "302dcad11696895a9f3fb12ac5a38d0d721b2650", [] ], "masonry-intrinsic-sizing-005-ref.html": [ - "e564fb1b3e6baf1d68980a49ac41eca4bb1c3216", + "725f646ebd9160f91dcba65fdbdbb77e0c20e370", [] ], "masonry-intrinsic-sizing-006-ref.html": [ - "e1cb015cfe81f2d2f1ef43a46e822872227324bb", + "1a88c2b4cb665dd4586f662d280475dab3cd0ae6", [] - ] + ], + "support": { + "masonry-intrinsic-sizing-visual.css": [ + "150f0f2679a35a97fc0fb7de792c4473850b73d9", + [] + ] + } }, "item-placement": { "masonry-columns-item-placement-auto-flow-next-001-ref.html": [ @@ -402378,7 +402586,7 @@ [] ], "masonry-item-placement-008-ref.html": [ - "e14ca3173abdda981bf7ba7e3a7d5c4760a72190", + "f3503bf071131f396111956dcc0ebddf5e9bd051", [] ], "masonry-rows-item-placement-auto-flow-next-001-ref.html": [ @@ -402390,24 +402598,6 @@ [] ] }, - "justify-content": { - "masonry-justify-content-001-ref.html": [ - "f7d9ccf48f1d9af15826fb12610f18e73d8e645f", - [] - ], - "masonry-justify-content-002-ref.html": [ - "6889af7eaccb0caae8acb8aac40a80d6700ae348", - [] - ], - "masonry-justify-content-003-ref.html": [ - "81d0fba41070bb5b6cba5a71f1bb33ca239d6f02", - [] - ], - "masonry-justify-content-004-ref.html": [ - "43af71fc01f9811cc2906389cf09834a33e6bc3a", - [] - ] - }, "masonry-not-inhibited-001-ref.html": [ "3e86b8a89b6d050e7bc4c4b5f38509c7aa7aabff", [] @@ -402442,11 +402632,11 @@ [] ], "masonry-track-sizing-overflow-left-side-ref.html": [ - "5a31517183244d714a18e48bec3e65d890a5434d", + "3e973b7fe712ed41c05a2f6929683c4de31d2a6f", [] ], "masonry-track-sizing-overflow-right-side-ref.html": [ - "51e657e2a4292fa97bd2617114509a6bd0ba48d7", + "eb84b2e6bd0406fdb9f4d5c9cbc891f81a042ca2", [] ], "masonry-track-sizing-span-row-ref.html": [ @@ -403060,7 +403250,7 @@ [] ], "custom-highlight-painting-vertical-writing-mode-001-ref.html": [ - "b46c679c9f4d37f7a95369b9185598d07bc0a5ca", + "c2bf7ae7bd181bd7b1d0cbf202208cc58e206e9a", [] ], "invalidation": { @@ -407198,15 +407388,15 @@ [] ], "line-clamp-with-floats-005-ref.html": [ - "46875b4d922c518906e7cad79c6ffef08225d374", + "d20d6c53ddee3de2fe12ea1927eb3182a0f55201", [] ], "line-clamp-with-floats-006-ref.html": [ - "aef0d05c8b41799d0d0dbc990adc1581fffa659e", + "9288c4e36f924c4ab80bb9ad368b87a3a2d01720", [] ], "line-clamp-with-floats-007-ref.html": [ - "b32fd77c1448acb14913e47189de6b7513be3b21", + "6d5390246b4d28365a4e8f238bd02f4fe6be9c21", [] ], "line-clamp-with-floats-008-ref.html": [ @@ -407214,7 +407404,7 @@ [] ], "line-clamp-with-floats-010-ref.html": [ - "44e34b24a8fdf196688582208afc17b40d2da1c4", + "12b8cdc441a64fb4e1a6249ee8aea640c66b82b5", [] ], "overflow-body-no-propagation-ref.html": [ @@ -409468,6 +409658,10 @@ "c93e8cb92450a3f61a9c25b810268a9589212b5b", [] ], + "selection-over-highlight-001-ref.html": [ + "f75017d5ec5d903bd484f0a6881e3ce1cd826c30", + [] + ], "selection-paint-image-notref.html": [ "ba1e97dffd8e3cbf1d113b8a68a099dd3fb36824", [] @@ -409715,7 +409909,7 @@ [] ], "ruby-dynamic-insertion-005-ref.html": [ - "03e5cabe55c7cfd55527a8a79190b8903915969f", + "79a19130ff8ec87a8a1b25982ce037b88ac72ac9", [] ], "ruby-dynamic-removal-001-ref.html": [ @@ -409727,7 +409921,7 @@ [] ], "ruby-dynamic-removal-003-ref.html": [ - "0067c014f5d6663f17b6ed0bcbf9cc75452e740c", + "113598eff2587c110db6f11c9b6a69773de83234", [] ], "ruby-float-handling-001-ref.html": [ @@ -420926,6 +421120,10 @@ "f7bba2d683c740844cfef1d6ac5f03cbf9f39f05", [] ], + "new-content-changes-overflow-left-ref.html": [ + "e86e5197da9d365b931733d890052236f4275567", + [] + ], "new-content-changes-overflow-ref.html": [ "3f69ac695d972d9c9860c0e216f73421d0d9e628", [] @@ -421054,6 +421252,10 @@ "2927b468d08d452afc6a66267bf9786a6b00498e", [] ], + "pseudo-element-preserve-3d-ref.html": [ + "1eefed24b3c0d10b2d073958a6da9963f793f53d", + [] + ], "pseudo-rendering-invalidation-ref.html": [ "6b3b493b6b243f1eca228151c67122db83eca951", [] @@ -421226,7 +421428,31 @@ "line-height-ref.html": [ "c75539243cbb45ab7407d5519748811e0f44eef0", [] - ] + ], + "reference": { + "iframe-zoom-nested-ref.html": [ + "b855278516cb03d0b5ef7921a3fded41f28f684f", + [] + ], + "iframe-zoom-ref.html": [ + "43bc3e24cf832079f56772747f4b493c121a7c59", + [] + ] + }, + "resources": { + "iframe_content.html": [ + "58c4d03a466e2bb045da142e354c565ec122b502", + [] + ], + "nested-iframe-no-zoom.html": [ + "60b1fd648155eb1188ceb4595f79bca14a45660d", + [] + ], + "nested-iframe-with-zoom.html": [ + "e7de64aafb769e106885ea2b4e01fb75331c3e68", + [] + ] + } } }, "css-will-change": { @@ -424011,7 +424237,7 @@ [] ], "WEB_FEATURES.yml": [ - "a545dbadcb86aa32dee062ed7b23f77636883397", + "d5352fb4a11feeec4fc0390130ccbfe2fd51a632", [] ], "add-background-attachment-fixed-during-smooth-scroll-ref.html": [ @@ -424940,7 +425166,7 @@ [] ], "hueRotate.svg": [ - "ed294041e156d0087cd551aa593846bb3ec136fa", + "0ddcb37d70dd68257078d10950f4e4f8680be267", [] ], "import-green.css": [ @@ -425539,7 +425765,7 @@ [] ], "WEB_FEATURES.yml": [ - "47cf05a2c0fc03f3b9d5977cb140de117a607ffb", + "4b29277607ff59f605698b5ab133669a6c7e5879", [] ], "attribute-selectors": { @@ -425736,7 +425962,7 @@ }, "invalidation": { "WEB_FEATURES.yml": [ - "4eaa2f393109a65e8ea78a77b5273cf0357ed202", + "5e6a6d0d5c0c3fcec6b45c11ba6c4adeedb3180b", [] ], "any-link-attribute-removal-ref.html": [ @@ -426386,32 +426612,6 @@ "e7775276038f307b7cdb0a75d19ee24f67619c2a", [] ] - }, - "zoom": { - "reference": { - "iframe-zoom-nested-ref.html": [ - "b855278516cb03d0b5ef7921a3fded41f28f684f", - [] - ], - "iframe-zoom-ref.html": [ - "43bc3e24cf832079f56772747f4b493c121a7c59", - [] - ] - }, - "resources": { - "iframe_content.html": [ - "58c4d03a466e2bb045da142e354c565ec122b502", - [] - ], - "nested-iframe-no-zoom.html": [ - "60b1fd648155eb1188ceb4595f79bca14a45660d", - [] - ], - "nested-iframe-with-zoom.html": [ - "e7de64aafb769e106885ea2b4e01fb75331c3e68", - [] - ] - } } }, "custom-elements": { @@ -426637,7 +426837,7 @@ [] ], "pywebsocket3.rst": [ - "af768d6b354600b32ed1d01463bd1724520c1fc8", + "3f742958b3aab511873f8a6dc3be46fcd74a25a4", [] ] }, @@ -426783,7 +426983,7 @@ [] ], "from-local-system.md": [ - "89533ee210440279675cf653292298e04dcdabe3", + "0d524ea356ae707bb02dddd0aa82b0d02e210c53", [] ], "from-web.md": [ @@ -426841,7 +427041,7 @@ [] ], "file-names.md": [ - "96296c4ff69934a77581a50c5cf7299feadbb838", + "5336bfb528cec59ea3ce1fe78540470980969d0c", [] ], "general-guidelines.md": [ @@ -426923,7 +427123,7 @@ [] ], "testdriver.md": [ - "73af3bb3c8dd72fc283cdc9440fbe05bd768d1d3", + "fcf0199badc12e8cca1d017d266db4abe02544ad", [] ], "testharness-api.md": [ @@ -427279,6 +427479,10 @@ ] }, "scrolling": { + "WEB_FEATURES.yml": [ + "e4fba841b62ac948a7fef93e514b02169057d494", + [] + ], "scroll_support.js": [ "e536b7d7488cf964ec5da5abdc45d5f3852d8909", [] @@ -428023,6 +428227,12 @@ [] ] }, + "edit-context": { + "WEB_FEATURES.yml": [ + "284280066aac2ffc2319ffbcab5c0fbffbb5d962", + [] + ] + }, "include": { "editor-test-utils.js": [ "d0d50d22a666b7d7229429eed7a0cc683aa005a5", @@ -431100,7 +431310,7 @@ [] ], "compression-dictionary-util.js": [ - "46d95041d8c48d71752543d8c8be3a0b752f7e22", + "7d86f594a802c221077ce471393f6c9fabba7f2e", [] ], "echo-headers.py": [ @@ -432294,7 +432504,7 @@ [] ], "fledge-util.sub.js": [ - "32162e933a50ffc83d709e7d83718eeb1bc98914", + "a7d0f63830d63bebf964aed74038b1fbbb2a75e7", [] ], "fledge_http_server_util.py": [ @@ -432334,7 +432544,7 @@ [] ], "trusted-bidding-signals.py": [ - "f9ca9031f1cee643e9e914aa5147ea8b0703ebfe", + "955a7c0bdfadbbcb315dfc7902dd26a109970680", [] ], "trusted-scoring-signals.py": [ @@ -432451,7 +432661,7 @@ [] ], "cross-origin-ancestor-activeelement-after-child-lose-focus-helper.html": [ - "83d39d5c70d2ec2cf63773e834597d67f00f2aa4", + "fe96614517207faf2381b947d713fa9bbc01b886", [] ], "focus-already-focused-iframe-deep-different-site-outer.sub.html": [ @@ -437006,6 +437216,22 @@ "da144975a57d2563394c7b6cedc1d998f8fb5ef1", [] ], + "2d.layer.global-states.copy.no-shadow.no-transform-expected.html": [ + "489d4322823e96b1f205e3088b7b4939c3757c39", + [] + ], + "2d.layer.global-states.copy.no-shadow.rotation-expected.html": [ + "63913ffb0571c916d0c3927ba3265583486bfe2c", + [] + ], + "2d.layer.global-states.copy.shadow.no-transform-expected.html": [ + "021581f8925dcfbca0e02d83a58c6ac1ff2c7ea3", + [] + ], + "2d.layer.global-states.copy.shadow.rotation-expected.html": [ + "dd9a5c2a00141ad61a1e53e56b012cc99ae0316f", + [] + ], "2d.layer.global-states.filter.blending.no-shadow.no-transform-expected.html": [ "482ab25a8552ea83f004e35de28c5ac2a1532a4a", [] @@ -437038,6 +437264,22 @@ "e70fe3e92d87c705328eff2cc4949599b093ed40", [] ], + "2d.layer.global-states.filter.copy.no-shadow.no-transform-expected.html": [ + "21aa241aca8b82feeba45f72b73c1fded973744c", + [] + ], + "2d.layer.global-states.filter.copy.no-shadow.rotation-expected.html": [ + "b2b46ee039cb85c2eba622b7d7e6c320b436b139", + [] + ], + "2d.layer.global-states.filter.copy.shadow.no-transform-expected.html": [ + "d11326d5d68dbde8aa28ed07f5093bbd9c414d71", + [] + ], + "2d.layer.global-states.filter.copy.shadow.rotation-expected.html": [ + "3ac098c344877d9e50c94810a1141f89bdd67e2d", + [] + ], "2d.layer.global-states.filter.no-composite-op.no-shadow.no-transform-expected.html": [ "a445ae2c4a4b0c21c500ee6ab0ad7e470d479ef6", [] @@ -437070,6 +437312,10 @@ "06f6a2dff3ec1533b419a8d1819a9fdf32fc1aa4", [] ], + "2d.layer.globalCompositeOperation-expected.html": [ + "02a8915c0b530b779842e1b10e4e7663e1de8598", + [] + ], "2d.layer.nested-expected.html": [ "65525d4d6a23db56e5717147a60fa8e22d0519a2", [] @@ -438134,6 +438380,22 @@ "da144975a57d2563394c7b6cedc1d998f8fb5ef1", [] ], + "2d.layer.global-states.copy.no-shadow.no-transform-expected.html": [ + "489d4322823e96b1f205e3088b7b4939c3757c39", + [] + ], + "2d.layer.global-states.copy.no-shadow.rotation-expected.html": [ + "63913ffb0571c916d0c3927ba3265583486bfe2c", + [] + ], + "2d.layer.global-states.copy.shadow.no-transform-expected.html": [ + "021581f8925dcfbca0e02d83a58c6ac1ff2c7ea3", + [] + ], + "2d.layer.global-states.copy.shadow.rotation-expected.html": [ + "dd9a5c2a00141ad61a1e53e56b012cc99ae0316f", + [] + ], "2d.layer.global-states.filter.blending.no-shadow.no-transform-expected.html": [ "482ab25a8552ea83f004e35de28c5ac2a1532a4a", [] @@ -438166,6 +438428,22 @@ "e70fe3e92d87c705328eff2cc4949599b093ed40", [] ], + "2d.layer.global-states.filter.copy.no-shadow.no-transform-expected.html": [ + "21aa241aca8b82feeba45f72b73c1fded973744c", + [] + ], + "2d.layer.global-states.filter.copy.no-shadow.rotation-expected.html": [ + "b2b46ee039cb85c2eba622b7d7e6c320b436b139", + [] + ], + "2d.layer.global-states.filter.copy.shadow.no-transform-expected.html": [ + "d11326d5d68dbde8aa28ed07f5093bbd9c414d71", + [] + ], + "2d.layer.global-states.filter.copy.shadow.rotation-expected.html": [ + "3ac098c344877d9e50c94810a1141f89bdd67e2d", + [] + ], "2d.layer.global-states.filter.no-composite-op.no-shadow.no-transform-expected.html": [ "a445ae2c4a4b0c21c500ee6ab0ad7e470d479ef6", [] @@ -438198,6 +438476,10 @@ "06f6a2dff3ec1533b419a8d1819a9fdf32fc1aa4", [] ], + "2d.layer.globalCompositeOperation-expected.html": [ + "02a8915c0b530b779842e1b10e4e7663e1de8598", + [] + ], "2d.layer.nested-expected.html": [ "65525d4d6a23db56e5717147a60fa8e22d0519a2", [] @@ -438581,7 +438863,7 @@ [] ], "layers.yaml": [ - "0f722a46486ec636b47dca18e170a052742f76a2", + "e71155650b0662d894cc9a665334af794effdf94", [] ], "line-styles.yaml": [ @@ -439959,6 +440241,10 @@ [] ], "render-blocking": { + "WEB_FEATURES.yml": [ + "36ab4f3010306b90fc1f47133087e94a3a0d445f", + [] + ], "support": { "dummy-1.js": [ "597772cf641d83b41f0e4238a1fa74a050f29d3c", @@ -443695,6 +443981,10 @@ }, "interaction": { "focus": { + "WEB_FEATURES.yml": [ + "210e2d3f99aea03af1675a0ec7bd222a05ca0236", + [] + ], "document-level-focus-apis": { "support": { "popup.html": [ @@ -443726,6 +444016,10 @@ } }, "sequential-focus-navigation-and-the-tabindex-attribute": { + "WEB_FEATURES.yml": [ + "6d868044c9e8c31421a0ebc33b868974f5cf079c", + [] + ], "resources": { "frameset-using-page.html": [ "e3aedea246e6f38904a4835c99c530a4777f41a6", @@ -443918,6 +444212,10 @@ }, "non-replaced-elements": { "flow-content-0": { + "WEB_FEATURES.yml": [ + "831b257f72b1619f1f48dab7ed0324ddfa71717a", + [] + ], "div-align-ref.html": [ "da8e4d0dc1a866cb0539c8a8f2028fbd3ee1ebc5", [] @@ -444589,6 +444887,10 @@ ] }, "the-details-element": { + "WEB_FEATURES.yml": [ + "769e741180af1e93f5ad453afc40c22adbaa281c", + [] + ], "details-display-property-is-ignored-ref.html": [ "6ebed6075de1e8cf62db7bee756b05d3e425e0ab", [] @@ -446060,6 +446362,10 @@ ] }, "the-object-element": { + "WEB_FEATURES.yml": [ + "d3411c2d8d2f45afdadc68967272102d2fdbbd4b", + [] + ], "object-param-url-ref.html": [ "7eb9256b0f63af643eae5e7337cab7b8c5d9ffd9", [] @@ -446110,6 +446416,10 @@ } }, "constraints": { + "WEB_FEATURES.yml": [ + "93b4c5745fc7461b7e815a1d790243fb2ed4cb71", + [] + ], "support": { "validator.js": [ "aa43b3a2f6afd63b745bdb78fefc1b086628e5ef", @@ -446196,12 +446506,20 @@ ] }, "the-button-element": { + "WEB_FEATURES.yml": [ + "f5a2aeaf4f829af3560e13cede06368e9b03e931", + [] + ], "button-activate-frame.html": [ "37619d79123be6855744ab82d65f2e72fe56bf04", [] ] }, "the-fieldset-element": { + "WEB_FEATURES.yml": [ + "912cb47c6d02d3ca01b930da37cd549afb69a5ee", + [] + ], "accessibility": { "README.md": [ "b238a023dc1344b9b35f0850bf75950e49edfdc7", @@ -446210,6 +446528,10 @@ } }, "the-form-element": { + "WEB_FEATURES.yml": [ + "04c20cb5ece542108f6c82693f6e144c55573f6b", + [] + ], "resources": { "form-no-action-with-base.html": [ "b3599a45e6aee71c086c17fcd6d0bedb72401ee9", @@ -446236,6 +446558,10 @@ } }, "the-input-element": { + "WEB_FEATURES.yml": [ + "4957615f2477552fb6075f1cc6e64915ecd743ce", + [] + ], "auto-direction-ref.html": [ "675ba509144515a44e06f39dd1ac727b4a2d2bc6", [] @@ -446341,7 +446667,17 @@ [] ] }, + "the-output-element": { + "WEB_FEATURES.yml": [ + "2f7f8e8cc2d81246a26de7ab69184036883f6999", + [] + ] + }, "the-select-element": { + "WEB_FEATURES.yml": [ + "9695c9529424d612300127b3350254e15a05c27e", + [] + ], "reset-algorithm-rendering-ref.html": [ "acf192d1d55b7da110d04651093e3ebe0cd48214", [] @@ -446474,6 +446810,10 @@ } }, "the-textarea-element": { + "WEB_FEATURES.yml": [ + "14479d4bb3d44a72130eb7008e93b7b379bab48f", + [] + ], "multiline-placeholder-ref.html": [ "0234ed64c9ad7155a42b254a5fe35a39535cbff8", [] @@ -446624,6 +446964,10 @@ } }, "the-details-element": { + "WEB_FEATURES.yml": [ + "be3924a26adb1663caf3f964fe51d97e3fd695f2", + [] + ], "details-add-summary-ref.html": [ "14f2be232fb4aba0afb4542213331995fcb12575", [] @@ -448590,6 +448934,10 @@ } }, "the-template-element": { + "WEB_FEATURES.yml": [ + "bd821885c7b7d4add4db186a9a94a14181cc3d38", + [] + ], "additions-to-the-css-user-agent-style-sheet": { "css-user-agent-style-sheet-test-001-ref.html": [ "55c8b2e30c9d5353d03a09c195098f70d7b76fd2", @@ -448706,6 +449054,10 @@ [] ], "pseudo-classes": { + "WEB_FEATURES.yml": [ + "604e049f202c94d9bd55edefd7b09f57cd9fedf6", + [] + ], "focus-iframe.html": [ "a269f1c671774b34885af42e233d5ca4a260f62a", [] @@ -449051,6 +449403,12 @@ [] ] }, + "template": { + "WEB_FEATURES.yml": [ + "bd821885c7b7d4add4db186a9a94a14181cc3d38", + [] + ] + }, "template.js": [ "b249fb64c71c16f1b6cefcc59668699f769a2341", [] @@ -450563,6 +450921,10 @@ } }, "structured-clone": { + "WEB_FEATURES.yml": [ + "423a469bf17283e0ec8d32d0e7debdc8eeb1fce2", + [] + ], "structured-clone-battery-of-tests-harness.js": [ "00a86fa74b9a968dabae400f57dd32ffb836aa2c", [] @@ -460783,7 +461145,7 @@ } }, "tox.ini": [ - "12013a1a705fe561e021c7285c66d16185506e06", + "49603ef64bdbe4ef3e0ca35c928bcea3e1926e56", [] ], "wptserver.py": [ @@ -460820,7 +461182,7 @@ [] ], "testdriver.js": [ - "20140b2fc0a0b7c5bb32089b4e8283ffbb6e2a01", + "2d1a89690cc25f87e7d2762c3f5081081a902f7a", [] ], "testdriver.js.headers": [ @@ -460828,7 +461190,7 @@ [] ], "testharness.js": [ - "d8f04bcb334626ceae78ea57493f18d57c90a6aa", + "c5c375e1720be8390abf85340bae915eaab65565", [] ], "testharness.js.headers": [ @@ -460836,7 +461198,7 @@ [] ], "testharnessreport.js": [ - "e5cb40fe0ef652be407d4c48b1c59391864cec7b", + "405a2d8b06f00fe8292e0e9d5b917e193cfd416c", [] ], "testharnessreport.js.headers": [ @@ -461095,6 +461457,10 @@ "118ab130dbd48b1b300e0552e47c2ad4b40e2158", [] ], + "WEB_FEATURES.yml": [ + "0b260aaaecc52767745a7580525a3fc9b390342f", + [] + ], "client-redirect.html": [ "73858969e02e64e97f1cc50a84935eeeb9068dfe", [] @@ -464052,6 +464418,10 @@ [] ], "declarative": { + "WEB_FEATURES.yml": [ + "4e31ed49627c40f145e87e867d5c0395a72783f3", + [] + ], "support": { "declarative-child-frame.html": [ "603c47743b807ecc00a483d328edcacb7ebb8d57", @@ -464078,7 +464448,7 @@ "focus-navigation": { "resources": { "focus-utils.js": [ - "f593267cc31f8d9060b48f95fd91c5629d5b29ee", + "0392cfb88792ee66d93eb7f1430fa6afd846c858", [] ], "shadow-dom.js": [ @@ -465357,6 +465727,10 @@ "2b7a03e245ab82310d4637d3a2a4e1dbe3df38db", [] ], + "WEB_FEATURES.yml": [ + "7a24460e1bfe11d5136571729eded320e2f8e97f", + [] + ], "webspeech.js": [ "f2f51b694c6f3e2e0edcb7c7bebb02ae6dd90249", [] @@ -465420,7 +465794,7 @@ [] ], "helpers.js": [ - "0fd5d814dbb075ad39dd5eefeabc2bc1973fdba8", + "416c4a401efcd8933233a755ab65400cca4cdcb3", [] ], "resources": { @@ -465432,8 +465806,12 @@ "f1599e3a89919adfe0a0de60515ef1d44a898190", [] ], + "embedded_forwarder.js": [ + "c1e5e54443b4c09b6bbf7c1b12d929ccbf4a12e0", + [] + ], "embedded_responder.js": [ - "228a262f16ecefc0804efbeeaa5d6f97c4d919a7", + "3cca86154af7e26db37acb26761d98d9f531cfee", [] ], "embedded_worker.py": [ @@ -465481,7 +465859,7 @@ [] ], "script-with-cookie-header.py": [ - "83129a55595e54225afd7e9161931d8e5f60f0c0", + "ae95b7593fbece5de63b7fc7fb7fe3ec45e16e57", [] ], "set-cookie-header.py": [ @@ -466195,6 +466573,14 @@ "6aa42374c512b528868c55d0339eb4deedf09d69", [] ], + "paint-context-007-ref.svg": [ + "0328272c6aa0907e226cbbbc2008358bee43ef7b", + [] + ], + "paint-context-008-ref.svg": [ + "49d4f8947b003302a76888e6beea385a4019f404", + [] + ], "paint-order-001-ref.svg": [ "7822a80b942fee54a87106d7def13429454cc26e", [] @@ -467055,7 +467441,7 @@ ], "tasks": { "test.yml": [ - "c172e6b7314022829f0dc0f08421198e8a0f0de6", + "86d8a965ff3e8631c032c4fe2788c2609d0c06b1", [] ] }, @@ -467091,7 +467477,7 @@ [] ], "test_valid.py": [ - "62bb09a1c3c0394379bba3f26ce087298adc508e", + "fc67d67eb8d8dfaa760a032e2da0f34dbb7a05f2", [] ] } @@ -467465,7 +467851,7 @@ [] ], "sourcefile.py": [ - "71eab54beae7428d06314f7e03573047d92a27d6", + "6da919b3b668a47aa48ce47383567588fd3af88d", [] ], "spec.py": [ @@ -467604,7 +467990,7 @@ } }, "mypy.ini": [ - "1e58e9625e6749838331c9f85ed1d8a651fc40a4", + "cc22a770b0428ea322416742074a32ae2f47bcf0", [] ], "pytest.ini": [ @@ -467691,7 +468077,7 @@ [] ], "serve.py": [ - "300f8270a6456fd79f3ef9f98d0e0b030246cd10", + "bc282dd44b54ffef0fcb963d67c4016a7c375efb", [] ], "test_functional.py": [ @@ -475363,57 +475749,37 @@ ] }, "pywebsocket3": { - ".gitignore": [ - "70f2867054198471182cc8619663a684d958f6ca", - [] - ], - ".travis.yml": [ - "2065a644dd6b60797128b09998f67b5135b1189e", - [] - ], - "CONTRIBUTING": [ - "f975be126fb4589c865994c59d613e3d41a7a966", - [] - ], "LICENSE": [ "c91bea9025428779e164459c2a120e1a07aa85c8", [] ], "MANIFEST.in": [ - "19256882c56feb72812c99c8a8379979e63e4a0c", + "116235d18f4614556ace2997c43a411ef2a4fb78", + [] + ], + "PKG-INFO": [ + "289dfa8649be1bffba782931f9bc3e511b32fc9e", [] ], "README.md": [ - "8684f2cc7ee36960ef3ba9a7dafeef8db591a6f7", + "b46b416735606968ce983cfa58c29ba223df0b2c", [] ], "example": { "abort_handshake_wsh.py": [ - "1b719ca89737105719c71c2a42eaff0d464478c7", + "1bad8c02f21b9e5c25e0bd3cb4edacb8726fa5ff", [] ], "abort_wsh.py": [ - "d4c240bf2c1cb0bd538ec37bf551c11256396b8c", - [] - ], - "arraybuffer_benchmark.html": [ - "869cd7e1ee653d59f04b802ff34c8d081317ca89", + "c0495c7107688d8957d8c4e8894d4c52a57f8edf", [] ], "bench_wsh.py": [ - "2df50e77db276cca1de472059a074071b81a93cc", - [] - ], - "benchmark.html": [ - "f1e5c97b3a71bcf9ebde7c4fcaf15375389b1c69", - [] - ], - "benchmark.js": [ - "2701472a4faac446b1c8bd2456f271e934db571c", + "9ea2f93159c9ce6e9d2da04df1b84f81003caecf", [] ], "benchmark_helper_wsh.py": [ - "fc175333354cc9c88562cf6fc81ef32609372986", + "9ea9f5642277bdddffbae871936aac46d7069e34", [] ], "cgi-bin": { @@ -475423,19 +475789,15 @@ ] }, "close_wsh.py": [ - "8f0005ffea9905d6c197c0f4dd593c06ff437d3a", - [] - ], - "console.html": [ - "ccd6d8f80676b9991e22dfc7ec85083411ddd0b3", + "2463bc7b31f0b4972f356f0a54d481925f2e92ea", [] ], "cookie_wsh.py": [ - "815209694e3ff2320f5683ee0596ae34428b15eb", + "1ca2c843863a2507f6d97822a49bfdaccb9d6a86", [] ], "echo_client.py": [ - "2ed60b3b592999aeaa3325a45eddacddbc2b66d3", + "5063f00a51f24cc1841afe3e91cc9b51b71ebb29", [] ], "echo_noext_wsh.py": [ @@ -475446,50 +475808,22 @@ "f7b3c6c5311bbb99f334f3357d801a2f42056008", [] ], - "handler_map.txt": [ - "21c4c09aa0091d8baf2908959905867842aeb865", - [] - ], "hsts_wsh.py": [ "e861946921af04594d62026b46f07758ddfe402a", [] ], "internal_error_wsh.py": [ - "04aa684283a603f5b33dda526301999b44792ddf", + "cbc0fd294e1d2166317aabe18382650bb569d08d", [] ], "origin_check_wsh.py": [ "e05767ab932fb582824aaf1a57d9249c304bd51e", [] - ], - "performance_test_iframe.html": [ - "c18b2c08f6a2254a1f9d76507902c1a6b5aee88a", - [] - ], - "performance_test_iframe.js": [ - "270409aa6eb5fd1a11ae2d5ba156bb8aac2fcaac", - [] - ], - "special_headers.cgi": [ - "703cb7401b787ac6e11c6746c6842e57d380956c", - [] - ], - "util.js": [ - "990160cb40c4c7800cd9e76300140b9bfe9f14d0", - [] - ], - "util_main.js": [ - "78add48731f88fe85eeea40e6e019cf17ccce3c8", - [] - ], - "util_worker.js": [ - "dd90449a90a7d782b97023e8d9d5a7aaee94a32f", - [] ] }, - "mod_pywebsocket": { + "pywebsocket3": { "__init__.py": [ - "28d5f5950f347531b9262c31b77d0c29d426e59d", + "8f4ade05828c345c3493a546f547eec12ad7f883", [] ], "_stream_exceptions.py": [ @@ -475497,74 +475831,96 @@ [] ], "common.py": [ - "9cb11f15cb2f582e6c29e698ee5fff2afde8a768", + "a3321e4c68c26a143fd39ec1085170059dc3d1a9", [] ], "dispatch.py": [ - "56cbb3c8a5f3f5e5e28206a405f50753a73aa2c4", + "fd35ceab297820b9b653925e26bc963393a22168", [] ], "extensions.py": [ - "314a949d4550ab6ff5500f5254387d2b35cae535", - [] - ], - "fast_masking.i": [ - "ddaad27f53c46be2a71c704c708fbb3f42f1a3d1", + "4b5b9e8fb27ddfd3d5676b1c2d7fdbfc25f1b857", [] ], "handshake": { "__init__.py": [ - "4bc1c67c578db3d0bda0e833370b0bd13fd1603f", + "275e447552e819d6edeb171a33ffbaeddc421182", [] ], "base.py": [ - "ffad0614d6bc42fdf75c2ee4885212304dcbcb90", + "561f7b650a2e5a86a01c503e974bc87160a05f78", [] ], "hybi.py": [ - "cf931db5a506efe3957bbff6bc3c3c99a56a1233", + "2e26532c3f7ebde5739bd786e5a3cf237e08af32", [] ] }, "http_header_util.py": [ - "21fde59af10c3b6e373fc2d64f19401c6ed7dc38", + "63e698bc16e0b33ca94f8a25f8697aa82b096c2d", [] ], "memorizingfile.py": [ - "d35396761847a6840464840b0e72ebc7ba150e41", + "4ee132fae610f1e8620972cd1bb135520782b0fc", [] ], "msgutil.py": [ - "f58ca78e14ad25e7a44d1ab262e7bd35ceaea5f2", + "dd6a6fc41001477b8098a4126348275f2a5ece75", [] ], "request_handler.py": [ - "5e9c875dc7daff9929a47d448afcb5aa5bad1b2c", + "9d89b47c69b7eddfda6d7a13592204f531e701be", [] ], "server_util.py": [ - "8f9e273e9770844b7cb44616ebf9825886bf44e6", + "3bf07f885bfb782dbd7b257210e13f0eeddd28de", [] ], "standalone.py": [ - "bd32158790f6c077e85f1e4925b620d5c03d8a6b", + "0c324c4221e90967510fb0ca556c3474f7bad3a5", [] ], "stream.py": [ - "82d1ea619c074f1183bc08ae55a8ce0bb7704106", + "dd41850dc46531e2766e2f748ae2efd8c855d221", [] ], "util.py": [ - "04006ecacd51950f9f211492ef52d057bb1aaaa1", + "9c25ab8315228b4fccc1e8bf771da33249dd9b56", [] ], "websocket_server.py": [ - "9f67c9f02d43cf330f29979420c13fce7c334ef7", + "e7485ecbef0285c4537233498733e91bdbc8ad8e", [] ] }, + "pywebsocket3.egg-info": { + "PKG-INFO": [ + "289dfa8649be1bffba782931f9bc3e511b32fc9e", + [] + ], + "SOURCES.txt": [ + "9a74c73196185b5878bdd1bf3158a429ced0d382", + [] + ], + "dependency_links.txt": [ + "8b137891791fe96927ad78e64b0aad7bded08bdc", + [] + ], + "requires.txt": [ + "ffe2fce498955b628014618b28c6bcf152466a4a", + [] + ], + "top_level.txt": [ + "db62422f0bd513ffdad9a89430f684af7056a4e0", + [] + ] + }, + "setup.cfg": [ + "8bfd5a12f85b8fbb6c058cf67dd23da690835ea0", + [] + ], "setup.py": [ - "12c60d861790bc37f7a63df8c2e3fed471ea0ed0", + "ab9a24a3e762606c91ab9a8d626c30535f81c090", [] ], "test": { @@ -475572,92 +475928,70 @@ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", [] ], - "cert": { - "cacert.pem": [ - "4dadae121bdd3adb744383cd3bf08c226f8554ba", - [] - ], - "cert.pem": [ - "25379a72b0dac5f41979c802c663df8b88dea829", - [] - ], - "client_cert.p12": [ - "14e139927982fa9823a57231af113499d6a5a8b0", - [] - ], - "key.pem": [ - "fae858318f29ba6b4623bd5fbc4a08ce73d90311", - [] - ] - }, "client_for_testing.py": [ - "a45e8f5cf2de5c02d7fd1ec6d578b687428f6818", + "6275676371839dcef0ed6aeaa2cab0eae091bd41", [] ], "mock.py": [ - "eeaef52ecf0197f7e57f346a71548252a3861e67", + "c460d9b7f0319e823d88ded1ace9071ee22dfeb6", [] ], "run_all.py": [ - "ea52223cea6d1458adc39dcd2f8b956c885fb419", + "569bdb4c07e81a03017a42390a48954cc0c13748", [] ], "set_sys_path.py": [ - "48d0e116a5843c1adfedb8cc4c5918c5c2003277", + "c35cb6f9721497afbe67c386ee15c6432dba8806", [] ], "test_dispatch.py": [ - "132dd92d76cef648e2516702e3530e918fb6f4b9", + "18a39d1af9df38bdd6ad3d6ea6c44c587c439daa", [] ], "test_endtoend.py": [ - "2789e4a57e2e6ede823f49f29ec0b09c21e2c0b3", + "9718c6a2b290282dec634802731541c1ba706ffe", [] ], "test_extensions.py": [ - "39a111888be9005bd7b684366aebfd1d914f4a32", + "008df24827383d3bd36d0c0fe0885439d4faaee3", [] ], "test_handshake.py": [ - "7f4acf56ff0642dc73e58a99c98f761f9c06e876", + "c8e25ab0994edb83313626fd385e6519746115af", [] ], "test_handshake_hybi.py": [ - "8c658221703460fd418236dfde2feea25ca9e742", + "ee63ed45b4950d9b9ba111bb23eacbc7479ffb71", [] ], "test_http_header_util.py": [ - "f8c8e7a981bb0a0323a087f57615db102d707c57", + "bd9b9bfc2e66a4597c222ae4fedaf89e54868519", [] ], "test_memorizingfile.py": [ - "f7288c510b89bb28931dff9a779183a4991756e6", + "47490859625707822a9f51b18bf9c1acf0d5948b", [] ], "test_mock.py": [ - "073873dde97df03f20df5ac9722f6ad65dd02eac", + "df5353bc5939d487c59c36f4898652d1c0594be1", [] ], "test_msgutil.py": [ - "1122c281b7874bfb3dc1a93f55c4ed3062107825", + "99aa200ba48432e2548c9d4eafa5fb20831ed8b8", [] ], "test_stream.py": [ - "153899d20533eb4cf0a9816c8b3b2bc8c50548bf", + "c165e84688359594bfd43dfa09693f14173a10f9", [] ], "test_util.py": [ - "bf4bd32bbac30c52d99997fecc7bbb83cf7516ad", + "24c4b5bfbdd6a0b2411c14f3a62699e5f8bb7309", [] ], "testdata": { - "README": [ - "c001aa5595cdd13407f5728ecd532a5d12263efa", - [] - ], "handlers": { "abort_by_user_wsh.py": [ - "63cb541bb7ec4044745798ab97ae7ccba57e04f7", + "a6e083184737642a08a1194d1fcbf355c6c0d080", [] ], "blank_wsh.py": [ @@ -475694,11 +476028,7 @@ [] ] } - }, - "hello.pl": [ - "882ef5a10065feb691af5f716b1e4996b397da65", - [] - ] + } } } }, @@ -476354,7 +476684,7 @@ } }, "tox.ini": [ - "a4b747ac4fa1ac03bf483b04363abe8fad8774eb", + "a4ed2cb05e53ae3ca6135c2bc60dce2ee2e3d158", [] ], "wave": { @@ -476839,7 +477169,7 @@ ] }, "tox.ini": [ - "06bdfcd674383b7989ebf15345fd2d503516fd37", + "28cecdebb5a9216acb4424e9fd0d594cc42c575f", [] ], "utils": { @@ -477393,7 +477723,7 @@ ] }, "tox.ini": [ - "4068f708986c4d5453c6447125c2a305ef378165", + "5bae81e9536d097a65d7221a613a8e610bad3806", [] ], "update.py": [ @@ -477477,7 +477807,7 @@ [] ], "tox.ini": [ - "82d3ac6f555ac7625cd0ef096a8dcab301c806c8", + "cd7021a76432177ac9a6076b61d45b184f8c036e", [] ], "wptrunner": { @@ -477499,7 +477829,7 @@ [] ], "chrome.py": [ - "8198bfe11d28afbc775734104371703489c7eab9", + "dfac89cb5ecca44ac6b9fba8c41547cad2d3016b", [] ], "chrome_android.py": [ @@ -477595,7 +477925,7 @@ [] ], "actions.py": [ - "cb9c1a150823ca04f936b477a05770dfd60af4e1", + "6e0c081b48f7529e1175e360784adffa26376868", [] ], "base.py": [ @@ -477611,7 +477941,7 @@ [] ], "executormarionette.py": [ - "0f640d77415996883a35b213ff5fd6e945b24473", + "05a9fc1ae4b87462121cb24a28e251559e5df812", [] ], "executorselenium.py": [ @@ -477627,7 +477957,7 @@ [] ], "executorwebdriver.py": [ - "6df2d96461637ff022d1d0b0759feaf179b40e02", + "3a2f29bdc9df206f09e3e8f284280be881a38e56", [] ], "executorwktr.py": [ @@ -477639,7 +477969,7 @@ [] ], "protocol.py": [ - "e44d1a766665fe5e6de682095367bd416ad297b3", + "3d588738b6e00510cac4c98982ce897ed22db2fa", [] ], "pytestrunner": { @@ -477754,7 +478084,7 @@ [] ], "testdriver-extra.js": [ - "af25bf4111c6adfcccd15cde58c50b395f8e6f0a", + "87d3826bfceb6aa4d3f6d43b49b52d21b4a3669f", [] ], "testdriver-vendor.js": [ @@ -478051,7 +478381,7 @@ ] }, "setup.py": [ - "262395a9bee9ed8d53d69bac8765ff924fdb97de", + "36aa98f1d82579420294c69f0e61b79646fc6345", [] ], "tests": { @@ -478344,7 +478674,7 @@ [] ], "server.py": [ - "8ce36201ee9d3c973076566f1f8b85ce132cb03f", + "18638615425ca8830baa17ab996167179a1142b2", [] ], "sslutils": { @@ -478378,7 +478708,7 @@ [] ], "ws_h2_handshake.py": [ - "af668dd558514a3e1fdb3ebdb60dd392314b589c", + "ab1ab958a03bba94030d61c085a448c00f08a25c", [] ] } @@ -479185,7 +479515,7 @@ [] ], "setters_tests.json": [ - "82adf4cdce270b5b60a45a3845446be7faf14f64", + "3850606d660bbb54cfc52e4dd43e2d7577b3363e", [] ], "toascii.json": [ @@ -481593,7 +481923,7 @@ }, "element_clear": { "__init__.py": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "c84215a636917ba4f27eb0d6c5674497f0636ed7", [] ] }, @@ -481803,7 +482133,7 @@ }, "is_element_enabled": { "__init__.py": [ - "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + "9a6d884000ea8b377f54a38b529a51152d1044ba", [] ] }, @@ -482001,6 +482331,10 @@ "64ee18b6c157488766f5c9d24f8f9dff79ff4387", [] ], + "dom.py": [ + "f77fb4938729a44b75fec2ed3f8697b2f68de1ff", + [] + ], "fixtures.py": [ "7468e8b251f8f6f6e203d2a314f9480e397940e2", [] @@ -482490,7 +482824,7 @@ [] ], "matmul.json": [ - "f3a03e442e98a350e8d31b8992940115623976ee", + "cc1789ee25f5bb738943951dda84c02178e22709", [] ], "max.json": [ @@ -482530,43 +482864,43 @@ [] ], "reduce_l1.json": [ - "7cbc442511845868aeb7ce5b34f33e35a1b8790d", + "c3f2b618e9b0eb905ddd52384d5fbcb8bab9968c", [] ], "reduce_l2.json": [ - "7e59a45d5e2061883b0b7055741df6c2e38af6e6", + "d83eea9dfb93e87868440d23c99e0219dbd8f53b", [] ], "reduce_log_sum.json": [ - "250398d227e7a0e6f8dd6e132eb024242e6681dc", + "061e12ad5165239b0c41d1d1bf4127e3823087f3", [] ], "reduce_log_sum_exp.json": [ - "b7f39abd522465a80a3c924b573316599dedf8c0", + "3577d6aa9ee521ab13ab302b3667a8a595587282", [] ], "reduce_max.json": [ - "967aea8bf4df442260fcee463363bcb85f49679b", + "11ed0ed9191474067744dee982f46a2ee8726827", [] ], "reduce_mean.json": [ - "5a48952c0602e03829ec78fd4c193a30b53aebc3", + "8c26d0a5623e5cd4c21e44c4a4f8cfcf9fc3959c", [] ], "reduce_min.json": [ - "92de75e92ab1c0b750bf31b24912ccbbbd69565a", + "6c26df5db16d92a27909bc2c356ad589e0234a2c", [] ], "reduce_product.json": [ - "691bf4da9b330fee90fc02662a57bc89911fccb9", + "d58af30ec1af61993e2cbb165d5e786cb787cd40", [] ], "reduce_sum.json": [ - "df47a1a2b266e8787faa5afff1522daf3b01f783", + "7027d38b6769937ec714c2735224576ffd966083", [] ], "reduce_sum_square.json": [ - "8ac373e4b36d765dda3de27fc845437f1784a24f", + "bd2ebb341a7c04b7b5cd1feed85512268b0710e7", [] ], "relu.json": [ @@ -482687,6 +483021,10 @@ "dd8ae0cc06d28b29865e61c5365600cbed465f35", [] ], + "RTCRtpReceiver-jitterBufferTarget-stats-helper.js": [ + "31d80926d33b559fd31c5da4b0dea8d18e3ab34c", + [] + ], "coverage": { "RTCDTMFSender.txt": [ "aa30021323870669c8aada66f481168bf4cd4c7b", @@ -482851,10 +483189,6 @@ "be8cb028f08842589d6c2f06391bc5c8469048d2", [] ], - "RTCRtpReceiver-jitterBufferTarget-stats-helper.js": [ - "31d80926d33b559fd31c5da4b0dea8d18e3ab34c", - [] - ], "RTCRtpSynchronizationSource-helper.js": [ "c8a3e45aae9ff952215d68a4a2b5cfdfc6278e4f", [] @@ -482941,23 +483275,23 @@ }, "handlers": { "basic_auth_wsh.py": [ - "72e920a1d82c7ef78907d17810912128598b6ca2", + "84f42711b209005bd29f06e667c7520e190bc1da", [] ], "delayed-passive-close_wsh.py": [ - "7d55b88ecc6db7fd9d3fb7a9722e030d926c807d", + "5da09fd059edc7f522ded06d89a06d2235892e8b", [] ], "echo-cookie_wsh.py": [ - "98620b65524dfcf56914f45db0d2809ef5fd66b5", + "746eafd2cd8c06e976dcf0088662f0ebd49b4cca", [] ], "echo-query_v13_wsh.py": [ - "d670e6e66053f155e8fd6153bf91ddddee076d68", + "7fb4cfe593cd31b5e894ac20c0c5cca760ac44de", [] ], "echo-query_wsh.py": [ - "39219134952272f34518a2458a0bb5c902c7cd4a", + "88696175d239ea45d3166623c3221bc5b0649ee3", [] ], "echo_close_data_wsh.py": [ @@ -482969,15 +483303,15 @@ [] ], "echo_raw_wsh.py": [ - "e1fc26608ff6544f8d73c91697c911b2ca25178f", + "5b434cf26659ee67906003d76a1cd2d56cf71f12", [] ], "echo_wsh.py": [ - "7367b70af16769e8b2a9c070d628ea29bc5ecaa7", + "35a0a6f6ea2d4ae1d82ca8125de8e247c90711bc", [] ], "empty-message_wsh.py": [ - "0eb107f0b12b8b66ad7e35162d447b93ac7a3e91", + "f791ee1842e502c335c41f3df5df59ce257e4459", [] ], "handshake_no_extensions_wsh.py": [ @@ -483001,23 +483335,23 @@ [] ], "msg_channel_wsh.py": [ - "7a66646f2bcbc2860f6f3aff1bf74ba93cb1db9e", + "a45dd99164017f52673d33c50f1a97ab4db5f40b", [] ], "origin_wsh.py": [ - "ce5f3a7f6ae7a7f816471e869584ab2eb01632e5", + "b833db6381482fe335748b9eab6c21d8c8c5eb00", [] ], "passive-close-abort_wsh.py": [ - "ac3f67c8db17f2cfe796431249525bfdf5c435f0", + "6f8a3d1bf17dd0af69741c54a27f24b2d9a09e23", [] ], "protocol_array_wsh.py": [ - "be24ee01fd9aabd0722b7a498289a26eeb532037", + "d8e1229cdb1a5090fea70688f1e2b67d1fa47eef", [] ], "protocol_wsh.py": [ - "10bdf33205b5b759264f038d8b3c7dcf25f47453", + "3a6aeb400bbbc61f717a0621558f6adc175645f6", [] ], "receive-backpressure_wsh.py": [ @@ -483029,11 +483363,11 @@ [] ], "referrer_wsh.py": [ - "9df652dc3cbf12f6364462839e340848dec8e08f", + "2d183d55869ed13e1ed0c41a114f8afffd8f5ec6", [] ], "remote-close_wsh.py": [ - "aadd99ea950d0d8414c432356443d5f3ce3e444e", + "c94870ad87cbcb62b4c99376cf0fdadb997c829f", [] ], "send-backpressure_wsh.py": [ @@ -483057,19 +483391,19 @@ [] ], "simple_handshake_wsh.py": [ - "ad466877fe045be36bfebdcfb30026f2245deae9", + "23893c95f1c9fe343a5c89aae24e01eb6aab3c9c", [] ], "sleep_10_v13_wsh.py": [ - "bdef2f2afdd63d9a655ece424b10dec08bbe6314", + "4faa42aa4524723406b8bbe6ce7b60e715ab6a20", [] ], "stash_responder_blocking_wsh.py": [ - "10ecdfe0da94cfdefed4b4516626c5bde48c1640", + "968156868ae69739b19f975ce408eab1c3e682c0", [] ], "stash_responder_wsh.py": [ - "d18ad3bc967e7d8fb19cecc916408b5d303594c1", + "b401997480fe2ef4eaff588e48f29ddde699f766", [] ], "wrong_accept_key_wsh.py": [ @@ -486821,7 +487155,7 @@ } }, "wpt": [ - "e0abacd85daa2974b16264a5dd1ecd33cb142c68", + "5712156129ffd04ed104f3790cf4e96a5d0b7936", [] ], "wpt.py": [ @@ -510620,7 +510954,7 @@ ] ], "clipboard-item.https.html": [ - "7e148703a2679286d563053904d3accc820900a9", + "78acd1104a96bc78942fa93427bccdaf68f2ba9f", [ null, {} @@ -514604,7 +514938,7 @@ ] ], "frame-ancestors-nested-cross-in-cross-self-block.html": [ - "85b7f0efdc82d15a6fcca24c56cb3075bb377301", + "eb7cbef86652c1a19a764ac4efc5128efee58054", [ null, {} @@ -514639,7 +514973,7 @@ ] ], "frame-ancestors-nested-cross-in-same-self-block.html": [ - "da973397114103c3c9139533d38f0798fe15d4fb", + "8f9d94e7d61a280832752715b6f640e892066df6", [ null, {} @@ -514683,7 +515017,7 @@ ] ], "frame-ancestors-nested-same-in-cross-self-block.html": [ - "bae5992e860943ef3e0d7c08d5522c31256e344c", + "f9d32eb3ed32d5efd2a5163d1fb3f91c64139d05", [ null, {} @@ -514718,7 +515052,7 @@ ] ], "frame-ancestors-nested-same-in-same-self-allow.html": [ - "747c5636967eaac84bdce58c9ffe740af8d681ad", + "a4271dfd9215f847aa2fc9012f8fc8d603d9a8b3", [ null, {} @@ -514760,7 +515094,7 @@ ] ], "frame-ancestors-sandbox-same-origin-self.html": [ - "4a2a19698d3ce4a907ff2b67defbf3a814681d19", + "825f9a8ae3d740f95fbff14cf6260349b03eb917", [ null, {} @@ -517295,6 +517629,13 @@ {} ] ], + "case-insensitive-scheme.sub.html": [ + "7225cd359f2ea0605ce77829853e0333e3e79bc6", + [ + null, + {} + ] + ], "cspro-not-enforced-in-worker.html": [ "784cdc88752f0c97226e59007c514d018f737aeb", [ @@ -518966,7 +519307,7 @@ ] ], "script-src-strict_dynamic_hashes.html": [ - "e4ce1e59446b1e1ed4ad3aa43c46a46d6ce333d1", + "02c5c9642b6b123643f44ab3d76f907618379bde", [ null, {} @@ -522770,7 +523111,7 @@ ] ], "fedcm-endpoint-redirects.https.html": [ - "36a4de7900c1f80f2df249a62ba6c5bd8a1ccf8b", + "71dbce03267e86e00fd90e1b69abf186b0fdd3a3", [ null, { @@ -522779,7 +523120,7 @@ ] ], "fedcm-error-basic.https.html": [ - "49d6ea50df3881eec5032381c400c0f1ffa413dd", + "fd902bcf9042ba4234bcd25b7c62d1a09e7f7c0e", [ null, { @@ -522862,83 +523203,6 @@ ] ], "fedcm-multi-idp": { - "abort-multiple-gets-through-first-idp.https.html": [ - "ed7c1300bd1b95cd3f7d233e7a0ee638829f2990", - [ - null, - {} - ] - ], - "abort-multiple-gets-through-second-idp.https.html": [ - "dfe8969932b8a88ba9f52284c99a0fb1e4628a71", - [ - null, - {} - ] - ], - "get-before-and-after-onload.https.html": [ - "12e0eb4d813eed1cd358ad072ed1c48ed7e78f36", - [ - null, - { - "testdriver": true - } - ] - ], - "get-before-and-during-onload.https.html": [ - "3e2f134f201aa2d1f6a4461cd4b15f737b8d065b", - [ - null, - { - "testdriver": true - } - ] - ], - "get-before-onload-and-during-dom-content-loaded.https.html": [ - "95495948b77379e0650db2216d6f4b5c2b19915e", - [ - null, - { - "testdriver": true - } - ] - ], - "multiple-gets-after-abort.https.html": [ - "899302fb221e94a8df562616fd559a2325f8a15d", - [ - null, - { - "testdriver": true - } - ] - ], - "multiple-gets-after-onload.https.html": [ - "1b5d744e8f60fffdc44d720d7b0a6233f181b531", - [ - null, - { - "testdriver": true - } - ] - ], - "multiple-gets-before-onload.https.html": [ - "8c98bf53b0c579a860d05c6229dcd1bbc0429e16", - [ - null, - { - "testdriver": true - } - ] - ], - "multiple-gets-during-onload.https.html": [ - "bcf70a31c74deacb9a661d03db5a951777b31b08", - [ - null, - { - "testdriver": true - } - ] - ], "single-get-after-onload.https.html": [ "de6a7c5371cc839a41c89318e5f8b0ad00b107e0", [ @@ -523021,6 +523285,17 @@ } ] ], + "fedcm-register": { + "fedcm-no-registered-idps.https.html": [ + "7be2d397e6871961b347e89ca5aebc050a60c7ae", + [ + null, + { + "testdriver": true + } + ] + ] + }, "fedcm-reject-invalid-responses.https.html": [ "f450d568249ec7d7f2ef6f1229d5781344cfb5c5", [ @@ -525146,8 +525421,15 @@ {} ] ], + "anchor-inherited.html": [ + "0f84311d6d784fdb33fd2c6642a838deefb60830", + [ + null, + {} + ] + ], "anchor-invalid-fallback.html": [ - "57c4e47f46787795bfb76d78b7cf0be4777f92f1", + "4768beac62383771ff2e815221d48626ced70c3f", [ null, {} @@ -525714,7 +525996,7 @@ ] ], "at-position-try-cssom.html": [ - "91172c518531316323566c9bba24ecfc0e2e27fd", + "42f82d9d4bd05aa66a9f243fd3772bc7cd9092d0", [ null, {} @@ -525946,6 +526228,13 @@ {} ] ], + "position-try-backdrop.html": [ + "6bf2262c69af6ec2f883435177c49db93c135b67", + [ + null, + {} + ] + ], "position-try-cascade-layer-reorder.html": [ "4f38806f604f612065783c9b3253fb1f6bda0184", [ @@ -526065,6 +526354,20 @@ {} ] ], + "pseudo-element-anchor-dynamic.html": [ + "9e4fa9828ef5c63fa945cf61c702cc95d00a2e27", + [ + null, + {} + ] + ], + "pseudo-element-anchor.html": [ + "a107a0ec17695cdb8f614ed173b3162cb40b6b43", + [ + null, + {} + ] + ], "try-tactic-alignment.html": [ "39595276d5ca34b1db597bec33765c718ff8ccd0", [ @@ -526924,6 +527227,13 @@ null, {} ] + ], + "transition-ready-time-offscreen.html": [ + "cc3151b40bac3d046876827e5413bbf643bde0c7", + [ + null, + {} + ] ] }, "css-backgrounds": { @@ -530447,7 +530757,7 @@ ] ], "custom-property-style-queries.html": [ - "4ae5efca911ca011d6e979ecd3a87f9eaaea7246", + "d9152432ed1162c2f015148bd197663740fc1f83", [ null, {} @@ -530726,6 +531036,13 @@ {} ] ], + "registered-color-style-queries.html": [ + "6e2bfb896bbaa67bcb6933bebf13829c0f0a74e8", + [ + null, + {} + ] + ], "sibling-layout-dependency.html": [ "5e30a998d23b03dd73f1ff290876243bd2eb9417", [ @@ -534828,14 +535145,14 @@ ] ], "font-palette-values-invalid.html": [ - "2056055f3412d5d63cfc079b082dded04cb653a1", + "b93a48fb37df58702d50f05fb9f745749ddb3a25", [ null, {} ] ], "font-palette-values-valid.html": [ - "3c0c0626f5871b4fce1ca9ceec4c01491a83faa5", + "99fceff2344ccead12a0af0c1ab5450070311e56", [ null, {} @@ -538609,7 +538926,7 @@ "masonry": { "tentative": { "masonry-grid-template-columns-computed-withcontent.html": [ - "b36efb664dadc62a2f7f2ffaf1e834c195f13acc", + "0ee2ee78c06c997c5292b336df127c6594349285", [ null, {} @@ -538617,7 +538934,7 @@ ], "parsing": { "masonry-parsing.html": [ - "e3245095fadb760ea5414af7997abc5f296aff1a", + "2204c06f72b8bd15c9662def13c3d89fb64048b4", [ null, {} @@ -543585,7 +543902,7 @@ ] ], "registered-property-computation.html": [ - "f4c718b139baffda6bb7d20254bdca7c37265a56", + "8ca9d4499abc11be534cc41f6ea663181adc8978", [ null, {} @@ -544046,63 +544363,63 @@ ] ], "font-face-001.html": [ - "7e47d18cbaa240af93b4cc598545aeba69ae2d17", + "4496786449f7fa63f7c437ea2ae43cf7df3b7525", [ null, {} ] ], "font-face-002.html": [ - "2e3272c44f7cc27b5cf3e28a4712ef0c3ca65cb6", + "3a20d0b808892db1f4dea21936bcd50e11f3df8f", [ null, {} ] ], "font-face-003.html": [ - "d3f83e4ec3720af544daac1640258e7e3324b3b5", + "4e8d8ff482d49e0ccfaf441f0d70829a3261269a", [ null, {} ] ], "font-face-004.html": [ - "6ac50bd4323339b0ab78a4777015227eaeda7b9a", + "f68e70994fc2af078e92fa221374cd72da133f2e", [ null, {} ] ], "font-face-005.html": [ - "fdf86fb56e298cbdd60d232a99869140710442d2", + "de102f253e60f3fc2e62e68a3fa3c574a56b5d7c", [ null, {} ] ], "font-face-006.html": [ - "8c6e341713376eb633752044f377b5d8917b485f", + "e72d4ec2aa72a84d3394cea05295da8de7e9b1ad", [ null, {} ] ], "font-face-007.html": [ - "ae669f638fe8787fcb96fcce0f1d99d52ced28bf", + "c644a5498673b5bea3a013cae049f3db49f6ae25", [ null, {} ] ], "font-face-008.html": [ - "a40b0247d134ae45fbe1c6ac5814c5886e30c234", + "52c7869f9f8d48a3a093d20f74dd7e66805f6373", [ null, {} ] ], "font-face-009.html": [ - "5d770929cad0b6ce52005937bb1a20099425bea9", + "4e08162dcdbacb5f92a9c998e91e29d35f07d539", [ null, {} @@ -545692,6 +546009,15 @@ ] ] }, + "snap-events-with-pseudo-target.tentative.html": [ + "baa3efc7ba7cd5c4a182b44a7e7d88a107f826fa", + [ + null, + { + "testdriver": true + } + ] + ], "snapchanged": { "snapchanged-after-layout-change.tentative.html": [ "a3ba05fdf5e9ffa42ab5689349e33b3c9a0aee15", @@ -545746,6 +546072,15 @@ {} ] ], + "snapchanged-scrolling-non-snapping-axis.tentative.html": [ + "e39fc0c44ee34c5a3ea56949a224e5186d9ebb2a", + [ + null, + { + "testdriver": true + } + ] + ], "snapchanged-with-proximity-strictness.tentative.html": [ "96cab337398654fd778eb42b6a84167b72c9363d", [ @@ -552319,7 +552654,7 @@ ] ], "CSSTransition-effect.tentative.html": [ - "b58c93d2e69fec8422bb2198807452ef2f36a86e", + "0952a7cd8f135aa774723a04c0f0cde970fcf895", [ null, {} @@ -557428,7 +557763,7 @@ ] ], "event-pseudo-name.html": [ - "a57c1d51087625b5ba1951cccdbfca6fb1e66467", + "d77c8173456d6190c8d663656fa7b94958100b91", [ null, {} @@ -557763,7 +558098,14 @@ {} ] ] - } + }, + "scroll-top-test-with-zoom.html": [ + "290fa602af677f6fb394c3b79a9bb25c2158d23d", + [ + null, + {} + ] + ] } }, "css-will-change": { @@ -561442,7 +561784,7 @@ ] ], "offset-rotate-interpolation.html": [ - "55845108ebf5f3c42a8b0532121199136160d695", + "10c337244f5f5d393d5a7f55387114efbcf3209b", [ null, {} @@ -561967,6 +562309,15 @@ } ] ], + "focus-visible-028.html": [ + "a8b704838bb2b9540edc70f30b548448f5afc852", + [ + null, + { + "testdriver": true + } + ] + ], "focus-visible-script-focus-001.html": [ "df6d9158b7cf3e829343834f1c5a499a15016434", [ @@ -568887,6 +569238,13 @@ } ] ], + "Range-isPointInRange-shadowdom.tentative.html": [ + "a90ddcf584785d0b3c2fd2ecba0a9479ba8567c5", + [ + null, + {} + ] + ], "Range-isPointInRange.html": [ "80db97e844cafc49d83aeca3f12134e9db0cd15f", [ @@ -569549,7 +569907,7 @@ "dpub-aam": { "role": { "roles.html": [ - "b9840976e1f001d182540cadfbe88c3c7c4d0403", + "62e33b95fa786e007371e1de29a25a260a79206d", [ null, { @@ -589555,10 +589913,12 @@ ] ], "setting-null-config-navigates-to-about-blank.https.html": [ - "2595fd64c922b1e16220628fe1fa87fdf7c74f5f", + "c8322dab1996ccabc5ee980fd63bc52c57df9d05", [ null, - {} + { + "timeout": "long" + } ] ], "shared-workers.https.html": [ @@ -597821,39 +598181,67 @@ } }, "compression-dictionary": { - "dictionary-clear-site-data.tentative.https.html": [ - "b583834831f86102b3135e01499178d9dcbe09b3", + "dictionary-clear-site-data-cache.tentative.https.html": [ + "c8bcf7fdf1299519e51f84568b984310706710f2", [ null, - {} + { + "timeout": "long" + } + ] + ], + "dictionary-clear-site-data-cookies.tentative.https.html": [ + "aa1673e88c80922553ff59cb2114d35d6ff37942", + [ + null, + { + "timeout": "long" + } + ] + ], + "dictionary-clear-site-data-storage.tentative.https.html": [ + "22747eb65657e53a4900769fa77d9f35c70093a7", + [ + null, + { + "timeout": "long" + } ] ], "dictionary-decompression.tentative.https.html": [ - "cd2062581603101fc94b095f329420f536b6cbdb", + "c7b3b7c3a5a697f5bc2adcd3123793f8a363b5d5", [ null, - {} + { + "timeout": "long" + } ] ], "dictionary-fetch-with-link-element.tentative.https.html": [ - "71a9b1c0509c95e0422849590190bd5385b50d9d", + "23a271d481873dfe2f7c96fa2616cd46b7f28ad4", [ null, - {} + { + "timeout": "long" + } ] ], "dictionary-fetch-with-link-header.tentative.https.html": [ - "a3ffd8ba74a394d4d0324b3c54918369345bcf1e", + "6f6a792ade6416b0b5cacee4097c9af2a4921947", [ null, - {} + { + "timeout": "long" + } ] ], "dictionary-registration.tentative.https.html": [ - "7921b1294663c0032725a649bb375b4f32e87a3e", + "f0782aff3bd3e640e62463f2aa8154f993b73d35", [ null, - {} + { + "timeout": "long" + } ] ] }, @@ -604243,7 +604631,7 @@ ] ], "auction-config-passed-to-worklets.https.window.js": [ - "9b12d077baf08afe508279a94f9dde9b2fbcf63b", + "7780957739e435825f186500f56a6e102e9c2c32", [ "fledge/tentative/auction-config-passed-to-worklets.https.window.html?1-5", { @@ -604486,7 +604874,7 @@ ] ], "auction-config.https.window.js": [ - "5fa4fa252fde97d02795bf1013ce0df7afdc70e1", + "28ed147071858ee6c5f0f3acdaf1d2d636b1ad4a", [ "fledge/tentative/auction-config.https.window.html?1-5", { @@ -604549,7 +604937,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -604617,7 +605009,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -604685,7 +605081,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -604753,7 +605153,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -604821,7 +605225,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -604889,7 +605297,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -604957,7 +605369,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -605025,14 +605441,18 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" } ], [ - "fledge/tentative/auction-config.https.window.html?46-last", + "fledge/tentative/auction-config.https.window.html?45-50", { "script_metadata": [ [ @@ -605093,7 +605513,83 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" + ] + ], + "timeout": "long" + } + ], + [ + "fledge/tentative/auction-config.https.window.html?50-last", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-20" + ], + [ + "variant", + "?21-25" + ], + [ + "variant", + "?26-30" + ], + [ + "variant", + "?31-35" + ], + [ + "variant", + "?36-40" + ], + [ + "variant", + "?40-45" + ], + [ + "variant", + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -605161,7 +605657,11 @@ ], [ "variant", - "?46-last" + "?45-50" + ], + [ + "variant", + "?50-last" ] ], "timeout": "long" @@ -605348,7 +605848,7 @@ ] ], "component-ads.https.window.js": [ - "6b22585d578959030c508a144dab2ba10dfb11f6", + "8493025429ed83b49f5117f0b3f237e03ccf64a5", [ "fledge/tentative/component-ads.https.window.html?1-5", { @@ -605527,7 +606027,7 @@ ] ], "component-auction.https.window.js": [ - "015c20a5c247925aa5e7a0e18ac5eea676083a48", + "bf804e68579937f8192ba6bf377e0ed6fdedf501", [ "fledge/tentative/component-auction.https.window.html?1-5", { @@ -606463,6 +606963,185 @@ } ] ], + "deprecated-render-url-replacements.https.window.js": [ + "4f8bc1cc7f0f5cd12b78a8cb05f787841b63f120", + [ + "fledge/tentative/deprecated-render-url-replacements.https.window.html?1-5", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-last" + ] + ], + "timeout": "long" + } + ], + [ + "fledge/tentative/deprecated-render-url-replacements.https.window.html?11-15", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-last" + ] + ], + "timeout": "long" + } + ], + [ + "fledge/tentative/deprecated-render-url-replacements.https.window.html?16-last", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-last" + ] + ], + "timeout": "long" + } + ], + [ + "fledge/tentative/deprecated-render-url-replacements.https.window.html?6-10", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-last" + ] + ], + "timeout": "long" + } + ] + ], "direct-from-seller-signals.https.window.js": [ "d0c0e550c4232bd4dad1661b0b418084111a48a6", [ @@ -611332,7 +612011,7 @@ ] ], "trusted-bidding-signals.https.window.js": [ - "d0b9a8208632df959ec5b964c5d9bb4dd0d3ee1b", + "905abf8381eaeaee800be38c25d44e5704be0247", [ "fledge/tentative/trusted-bidding-signals.https.window.html?1-5", { @@ -611415,7 +612094,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -611503,7 +612186,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -611591,7 +612278,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -611679,7 +612370,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -611767,7 +612462,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -611855,7 +612554,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -611943,7 +612646,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -612031,7 +612738,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -612119,7 +612830,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -612207,7 +612922,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -612295,7 +613014,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -612383,7 +613106,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -612471,7 +613198,11 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -612559,14 +613290,18 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" } ], [ - "fledge/tentative/trusted-bidding-signals.https.window.html?71-last", + "fledge/tentative/trusted-bidding-signals.https.window.html?71-75", { "script_metadata": [ [ @@ -612647,7 +613382,103 @@ ], [ "variant", - "?71-last" + "?71-75" + ], + [ + "variant", + "?76-last" + ] + ], + "timeout": "long" + } + ], + [ + "fledge/tentative/trusted-bidding-signals.https.window.html?76-last", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "/common/subset-tests.js" + ], + [ + "script", + "resources/fledge-util.sub.js" + ], + [ + "timeout", + "long" + ], + [ + "variant", + "?1-5" + ], + [ + "variant", + "?6-10" + ], + [ + "variant", + "?11-15" + ], + [ + "variant", + "?16-20" + ], + [ + "variant", + "?21-25" + ], + [ + "variant", + "?26-30" + ], + [ + "variant", + "?31-35" + ], + [ + "variant", + "?36-40" + ], + [ + "variant", + "?41-45" + ], + [ + "variant", + "?46-50" + ], + [ + "variant", + "?51-55" + ], + [ + "variant", + "?56-60" + ], + [ + "variant", + "?61-65" + ], + [ + "variant", + "?66-70" + ], + [ + "variant", + "?71-75" + ], + [ + "variant", + "?76-last" ] ], "timeout": "long" @@ -613422,7 +614253,7 @@ ] ], "cross-origin-ancestor-activeelement-after-child-lose-focus.sub.html": [ - "35844bc91fb56c0446c9a433114af52b8970ddb1", + "1b84b43f1c487b708405e41ed96565b487d8708b", [ null, { @@ -615903,7 +616734,7 @@ ] ], "disabled-by-permissions-policy.https.sub.html": [ - "6bd3e3500bc505375d7b5f7877f3ff272057a332", + "f374a58f785c556b3f275dbf6c2eacb8d7a2d1a0", [ null, { @@ -615912,21 +616743,21 @@ ] ], "enabled-by-permission-policy-attribute-redirect-on-load.https.sub.html": [ - "864fb5e76139ed9e6158c08278dca0790f126c7b", + "c2a2b09fc65a959a02a5fa5e8eccc2c77ae9dd77", [ null, {} ] ], "enabled-by-permission-policy-attribute.https.sub.html": [ - "018409b82902672f66894b03a711bb708cad262c", + "50b8475b81086f374810f8bff69e1acb39b073ac", [ null, {} ] ], "enabled-by-permissions-policy.https.sub.html": [ - "007f79ab9c4256fbebae51f54d34144843020982", + "d5f72eb1ccb03d6230ef91b704479814610333a9", [ null, { @@ -615935,7 +616766,7 @@ ] ], "enabled-on-self-origin-by-permissions-policy.https.sub.html": [ - "d879c1c5432bb884af89f0f9fc24e328f8a3eae5", + "ea4b65966f1b870f4d4385225ed4ceaed831e9b1", [ null, { @@ -650314,7 +651145,14 @@ ] ], "the-anchor-attribute-003.tentative.html": [ - "ec2d8d5ead9673e307350bc7346a5f3b971a391b", + "e8c12c784f53d086e42c16eb8ed5f9572354c25a", + [ + null, + {} + ] + ], + "the-anchor-attribute-xml.tentative.html": [ + "c5e6d81826dea22d7eb96d659ac7d55782e4390f", [ null, {} @@ -659048,7 +659886,7 @@ {} ] ], - "iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html": [ + "iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html": [ "6b3b3104ef38a9cbc1596961e62cb7804489dd94", [ null, @@ -659106,7 +659944,7 @@ {} ] ], - "iframe_sandbox_window_open_download_allow_downloads.tentative.https.html": [ + "iframe_sandbox_window_open_download_allow_downloads.tentative.html": [ "158fc4f947bae135e7501566e94a1553d9ce9e51", [ null, @@ -663388,11 +664226,12 @@ ] ], "select-keyboard-behavior.tentative.html": [ - "2fb11ba68b06dd5518cd7b9137902c8d99b64e5e", + "8b06212169793e06e33c1bc972e965f3d77c8861", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -664997,7 +665836,7 @@ ] ], "popover-anchor-display-none.tentative.html": [ - "55a11fafdb5901ad2f409595107d1d8c587d4979", + "8db022b1262f84ff6e570d13ce0bf14fbcdd5d68", [ null, {} @@ -665027,7 +665866,7 @@ ] ], "popover-anchor-transition.tentative.tentative.html": [ - "ae2a3a8e4159c63fe9213a96969ec7dc24d90325", + "f6220f3c769b9224f0cd49d3491ae8f847e2ddcb", [ null, {} @@ -665251,7 +666090,7 @@ ] ], "popover-light-dismiss.html": [ - "45db242e918bf1e89a5c40df93dacbca62e70825", + "1317b623c87ce6e13fadd47ea8a9705f94e3c46f", [ null, { @@ -668690,6 +669529,13 @@ } ] ], + "inline-async-inserted-execorder.html": [ + "0f51fd318b42233a113c16a2cb649f2880328c1e", + [ + null, + {} + ] + ], "inline-async-onload.html": [ "314abc98dc71cc42b81e6ba19086e65186665133", [ @@ -681512,7 +682358,7 @@ ] ], "loaf-stream-source-location.html": [ - "0fd30859d738dec410b9b8d20c0c9ba8c2f61294", + "5776ff5255243609132aa046e1ede5a3f8de1720", [ null, { @@ -681521,7 +682367,7 @@ ] ], "loaf-stream.html": [ - "e35bc2f9aa7d7de7a6ac224b9befde30d128e85c", + "424f2cd0d1e629ab89df5c29a206b49b2d2fff51", [ null, { @@ -684711,7 +685557,7 @@ ] ], "MediaRecorder-canvas-media-source.https.html": [ - "e640714d5cf38d1250c7b07a476a360aee0e81b8", + "0680c218795b1e217376177bea6f14b0e1a11a40", [ "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=''", { @@ -684719,6 +685565,13 @@ "timeout": "long" } ], + [ + "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=video/mp4", + { + "testdriver": true, + "timeout": "long" + } + ], [ "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=video/mp4;codecs=avc1,mp4a.40.2", { @@ -684726,6 +685579,13 @@ "timeout": "long" } ], + [ + "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=video/mp4;codecs=vp9,opus", + { + "testdriver": true, + "timeout": "long" + } + ], [ "mediacapture-record/MediaRecorder-canvas-media-source.https.html?mimeType=video/webm;codecs=av1,opus", { @@ -684788,19 +685648,31 @@ ] ], "MediaRecorder-events-and-exceptions.html": [ - "409e46c91da21805e238c4237be481385a25e79f", + "97ada2126634e550c8df7bd15807db0befa99a3f", [ "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=''", { "timeout": "long" } ], + [ + "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=video/mp4", + { + "timeout": "long" + } + ], [ "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=video/mp4;codecs=avc1,mp4a.40.2", { "timeout": "long" } ], + [ + "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=video/mp4;codecs=vp9,opus", + { + "timeout": "long" + } + ], [ "mediacapture-record/MediaRecorder-events-and-exceptions.html?mimeType=video/webm;codecs=av1,opus", { @@ -684821,26 +685693,50 @@ ] ], "MediaRecorder-mimetype.html": [ - "74248d65f4660a25742d7baa5d050e40ed4199bd", + "57baa1346f172ec766256969b17f8e44197d856f", [ null, {} ] ], "MediaRecorder-pause-resume.html": [ - "8dc231279a0233b19ef6b87b4318d1a98e23fb69", + "f584508a0d0d42d60ae332a42b3fe776bd3247a6", [ "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=''", { "timeout": "long" } ], + [ + "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4", + { + "timeout": "long" + } + ], [ "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4;codecs=avc1,mp4a.40.2", { "timeout": "long" } ], + [ + "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4;codecs=avc1,opus", + { + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4;codecs=vp9,mp4a.40.2", + { + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/mp4;codecs=vp9,opus", + { + "timeout": "long" + } + ], [ "mediacapture-record/MediaRecorder-pause-resume.html?mimeType=video/webm;codecs=av1,opus", { @@ -684871,9 +685767,93 @@ ] ], "MediaRecorder-peerconnection.https.html": [ - "3fbc1f0f2d292e4fd5cd41d751c0994fb7d658ed", + "daae044fa8d9d7d1f0fe40026ac9a42e96e129b9", [ - null, + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=audio&mimeType=''", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=audio&mimeType=audio/mp4;codecs=opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=audio&mimeType=audio/webm;codecs=opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video&mimeType=''", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video&mimeType=video/mp4;codecs=vp9", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video&mimeType=video/webm;codecs=vp8", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video&mimeType=video/webm;codecs=vp9", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=''", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/mp4", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/mp4;codecs=avc1,mp4a.40.2", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/mp4;codecs=vp9,opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/webm;codecs=vp8,opus", + { + "testdriver": true, + "timeout": "long" + } + ], + [ + "mediacapture-record/MediaRecorder-peerconnection.https.html?kinds=video,audio&mimeType=video/webm;codecs=vp9,opus", { "testdriver": true, "timeout": "long" @@ -684888,15 +685868,23 @@ ] ], "MediaRecorder-stop.html": [ - "d6ce3707720a066b06fef71016e3e2b0366d3658", + "9ef5051638130f92f62753fb3aedf857bc8cbeba", [ "mediacapture-record/MediaRecorder-stop.html?mimeType=''", {} ], + [ + "mediacapture-record/MediaRecorder-stop.html?mimeType=video/mp4", + {} + ], [ "mediacapture-record/MediaRecorder-stop.html?mimeType=video/mp4;codecs=avc1,mp4a.40.2", {} ], + [ + "mediacapture-record/MediaRecorder-stop.html?mimeType=video/mp4;codecs=vp9,opus", + {} + ], [ "mediacapture-record/MediaRecorder-stop.html?mimeType=video/webm;codecs=av1,opus", {} @@ -690836,6 +691824,13 @@ ] } ] + ], + "tag.https.html": [ + "99c61a71514cb055d036b21d9d7c11f1adc4e551", + [ + null, + {} + ] ] }, "old-tests": { @@ -717922,6 +718917,13 @@ {} ] ], + "navigation-timing-sizes.https.html": [ + "a960cd57f3c73a8cfaa37f2c1278ad8b7dbf32b8", + [ + null, + {} + ] + ], "navigation-timing.https.html": [ "75cab40458c6d362caa34315388ad762fbb7d2e9", [ @@ -719457,11 +720459,12 @@ ] ], "focus-navigation-slots-in-slot.html": [ - "39b080660344038a3e9a836ca819cb737a2f688c", + "3c929de7276fea5689b5738dc5d550f7a5ded235", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -719484,20 +720487,22 @@ ] ], "focus-navigation-with-delegatesFocus.html": [ - "64942a109e0281a5e0806214428ffbc8f05f8c6c", + "e37accbc8e2951fad326a430397dadd5165ebd63", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], "focus-navigation.html": [ - "9e593eb1003a26a9957d04ddca8cd522e7a0872e", + "faf3c34cdb2eb25cf334f0396fba1a727dac4663", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -724819,6 +725824,32 @@ } ] ], + "requestStorageAccess-cross-origin-iframe-navigation-relax.tentative.sub.https.window.js": [ + "7ccb9824e699a3a269fa257b2c889d50f89d8f88", + [ + "storage-access-api/requestStorageAccess-cross-origin-iframe-navigation-relax.tentative.sub.https.window.html", + { + "script_metadata": [ + [ + "script", + "helpers.js" + ], + [ + "script", + "/cookies/resources/cookie-helper.sub.js" + ], + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/resources/testdriver-vendor.js" + ] + ] + } + ] + ], "requestStorageAccess-cross-origin-iframe-navigation.sub.https.window.js": [ "691c8c86b62005880c0babeb686cfc18113579ec", [ @@ -734892,6 +735923,13 @@ {} ] ], + "Element-setAttribute-respects-Elements-node-documents-globals-CSP.html": [ + "c0f72bb36ac09c19b779ca5da114080a46c96c7a", + [ + null, + {} + ] + ], "Element-setAttribute.html": [ "9f6eec7da2f9ba35cb009d5deb845ec4aa4393f4", [ @@ -735332,6 +736370,13 @@ } ] ], + "modify-attributes-in-callback.html": [ + "96b4501128bf659e286e6ac41250538155e7156a", + [ + null, + {} + ] + ], "no-require-trusted-types-for-report-only.html": [ "651bf0a7199beab43e4f00d3c72462ffda1905f2", [ @@ -750098,7 +751143,7 @@ ] ], "audio-encoder-config.https.any.js": [ - "559ff3203b5151e05a778f08c82c30551ff08f98", + "a70bf28f80c9ab576a569d9a9798d727133150d5", [ "webcodecs/audio-encoder-config.https.any.html", { @@ -761339,7 +762384,7 @@ ] ], "convTranspose2d.https.any.js": [ - "c14f445bf3cd503c8f87686c533dac0d1caf0867", + "3c3c49566439da0e672334d9a42a71011dd35735", [ "webnn/validation_tests/convTranspose2d.https.any.html", { @@ -761831,7 +762876,7 @@ ] ], "instanceNormalization.https.any.js": [ - "bdd338588fb7d4c4c660f4a7e0e6346868d35b4f", + "4fc26ec5ae65113cd07f08d754c24e527aefb96f", [ "webnn/validation_tests/instanceNormalization.https.any.html", { @@ -762077,7 +763122,7 @@ ] ], "matmul.https.any.js": [ - "03616ddb019ae07363122bcba788b7e0ccb60533", + "6ce0d87ca1c26f67a5e20711bb7f397cc3bb202e", [ "webnn/validation_tests/matmul.https.any.html", { @@ -763614,6 +764659,15 @@ {} ] ], + "RTCRtpReceiver-audio-jitterBufferTarget-stats.https.html": [ + "d728ec5a9c9758e0b754ef754e881b6aa5e0f7c3", + [ + null, + { + "timeout": "long" + } + ] + ], "RTCRtpReceiver-getCapabilities.html": [ "21dcae208afc456e4ca56b690a7e75f44657457c", [ @@ -763653,6 +764707,22 @@ } ] ], + "RTCRtpReceiver-jitterBufferTarget.html": [ + "448162d3a2fbbb94d85fd87f2072026a64dd821a", + [ + null, + {} + ] + ], + "RTCRtpReceiver-video-jitterBufferTarget-stats.html": [ + "022dbe70c50b97757ca82cfc38a062d63393c73d", + [ + null, + { + "timeout": "long" + } + ] + ], "RTCRtpReceiver.https.html": [ "eea013140f393a8c04cb5c19c673bdd08f899a6c", [ @@ -764766,31 +765836,6 @@ } ] ], - "RTCRtpReceiver-audio-jitterBufferTarget-stats.https.html": [ - "d728ec5a9c9758e0b754ef754e881b6aa5e0f7c3", - [ - null, - { - "timeout": "long" - } - ] - ], - "RTCRtpReceiver-jitterBufferTarget.html": [ - "448162d3a2fbbb94d85fd87f2072026a64dd821a", - [ - null, - {} - ] - ], - "RTCRtpReceiver-video-jitterBufferTarget-stats.html": [ - "022dbe70c50b97757ca82cfc38a062d63393c73d", - [ - null, - { - "timeout": "long" - } - ] - ], "RTCRtpSynchronizationSource-captureTimestamp.html": [ "22ca5709b5f4f4e6bd4daf91e3a9c9504845b7f7", [ @@ -785247,7 +786292,7 @@ ] ], "invalid.html": [ - "26b2905e4d44c2534af70930e2ea24876ed0f556", + "6c0ed90f735c59fe7c832a634779eab56914437c", [ null, {} @@ -809951,21 +810996,21 @@ ] ], "invalid.py": [ - "ecd3173e8784a8973453f1ad54e7ade61d235381", + "52aabca2670e45ae24a05ce49087dcfbf0de4a2d", [ null, {} ] ], "locator.py": [ - "e560fa9239dbcc86d74bd5084c3bc64b840dced1", + "66c512d792a46217b2f7ac125a7cf0ce7d7d05a3", [ null, {} ] ], "max_node_count.py": [ - "4652026e96fae72c40c1ce87cad9e5ef836b3725", + "9d9c05260bc0ba096c40cb7d9f3e598f8549c420", [ null, {} @@ -809979,7 +811024,7 @@ ] ], "start_nodes.py": [ - "707d83a337d8ff309e2727475f61e8940207b14b", + "f44a6d4857c0b62d58adb844042617cc622d0111", [ null, {} @@ -811434,14 +812479,21 @@ }, "element_clear": { "clear.py": [ - "9a0549ce4f25e17170b2a45ea1e89926c88dcb36", + "0977f60cb632b9fa8a92740be155c99c90adbab9", + [ + null, + {} + ] + ], + "disabled.py": [ + "f0d0fcd9aa9a46dd3c175b8afc116a71422f6b63", [ null, {} ] ], "user_prompts.py": [ - "7a8564a684a7edc5d1af0812b3353f2f5ccba629", + "ccf048bc0a5135c499d0683f8c4818474cd0785f", [ null, { @@ -812230,14 +813282,14 @@ }, "is_element_enabled": { "enabled.py": [ - "24fc85fdad2daba04b6770c536d0ae4de9ee95bb", + "9588486dde1c018788d4c4fe93e3c403a2d3a2bd", [ null, {} ] ], "user_prompts.py": [ - "5dd7d582bd3d80a3d3affc4052bc933d75bcbca6", + "a3af947d516314e1b380af5990feedc7be55cfbf", [ null, { diff --git a/tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html.ini b/tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html.ini new file mode 100644 index 00000000000..5c68723eadc --- /dev/null +++ b/tests/wpt/meta/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html.ini @@ -0,0 +1,2 @@ +[mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-animations/transition-ready-time-offscreen.html.ini b/tests/wpt/meta/css/css-animations/transition-ready-time-offscreen.html.ini new file mode 100644 index 00000000000..5e4fea7a1cb --- /dev/null +++ b/tests/wpt/meta/css/css-animations/transition-ready-time-offscreen.html.ini @@ -0,0 +1,3 @@ +[transition-ready-time-offscreen.html] + [Transitions start at the same time regardless of on-screen status] + expected: FAIL diff --git a/tests/wpt/meta/css/css-fonts/parsing/font-palette-values-invalid.html.ini b/tests/wpt/meta/css/css-fonts/parsing/font-palette-values-invalid.html.ini index 73010235772..46c1576d853 100644 --- a/tests/wpt/meta/css/css-fonts/parsing/font-palette-values-invalid.html.ini +++ b/tests/wpt/meta/css/css-fonts/parsing/font-palette-values-invalid.html.ini @@ -58,3 +58,15 @@ [CSS Fonts Module Level 4: parsing @font-palette-values 20] expected: FAIL + + [CSS Fonts Module Level 4: parsing @font-palette-values 21] + expected: FAIL + + [CSS Fonts Module Level 4: parsing @font-palette-values 22] + expected: FAIL + + [CSS Fonts Module Level 4: parsing @font-palette-values 23] + expected: FAIL + + [CSS Fonts Module Level 4: parsing @font-palette-values 24] + expected: FAIL diff --git a/tests/wpt/meta/css/css-fonts/parsing/font-palette-values-valid.html.ini b/tests/wpt/meta/css/css-fonts/parsing/font-palette-values-valid.html.ini index 52ce500bce9..a20fe78d693 100644 --- a/tests/wpt/meta/css/css-fonts/parsing/font-palette-values-valid.html.ini +++ b/tests/wpt/meta/css/css-fonts/parsing/font-palette-values-valid.html.ini @@ -97,3 +97,6 @@ [CSS Fonts Module Level 4: parsing @font-palette-values 32] expected: FAIL + + [CSS Fonts Module Level 4: parsing @font-palette-values 33] + expected: FAIL diff --git a/tests/wpt/meta/css/css-images/object-fit-containcontainintrinsicsize-png-001c.tentative.html.ini b/tests/wpt/meta/css/css-images/object-fit-containcontainintrinsicsize-png-001c.tentative.html.ini new file mode 100644 index 00000000000..e078cc77738 --- /dev/null +++ b/tests/wpt/meta/css/css-images/object-fit-containcontainintrinsicsize-png-001c.tentative.html.ini @@ -0,0 +1,2 @@ +[object-fit-containcontainintrinsicsize-png-001c.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-images/object-fit-containcontainintrinsicsize-png-001e.tentative.html.ini b/tests/wpt/meta/css/css-images/object-fit-containcontainintrinsicsize-png-001e.tentative.html.ini new file mode 100644 index 00000000000..3b918126c8a --- /dev/null +++ b/tests/wpt/meta/css/css-images/object-fit-containcontainintrinsicsize-png-001e.tentative.html.ini @@ -0,0 +1,2 @@ +[object-fit-containcontainintrinsicsize-png-001e.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-images/object-fit-containcontainintrinsicsize-png-001p.tentative.html.ini b/tests/wpt/meta/css/css-images/object-fit-containcontainintrinsicsize-png-001p.tentative.html.ini new file mode 100644 index 00000000000..5605e45ec8e --- /dev/null +++ b/tests/wpt/meta/css/css-images/object-fit-containcontainintrinsicsize-png-001p.tentative.html.ini @@ -0,0 +1,2 @@ +[object-fit-containcontainintrinsicsize-png-001p.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-images/object-fit-containsize-png-001c.tentative.html.ini b/tests/wpt/meta/css/css-images/object-fit-containsize-png-001c.tentative.html.ini new file mode 100644 index 00000000000..24f59f58c2d --- /dev/null +++ b/tests/wpt/meta/css/css-images/object-fit-containsize-png-001c.tentative.html.ini @@ -0,0 +1,2 @@ +[object-fit-containsize-png-001c.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-images/object-fit-containsize-png-001e.tentative.html.ini b/tests/wpt/meta/css/css-images/object-fit-containsize-png-001e.tentative.html.ini new file mode 100644 index 00000000000..e5032671171 --- /dev/null +++ b/tests/wpt/meta/css/css-images/object-fit-containsize-png-001e.tentative.html.ini @@ -0,0 +1,2 @@ +[object-fit-containsize-png-001e.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-images/object-fit-containsize-png-001p.tentative.html.ini b/tests/wpt/meta/css/css-images/object-fit-containsize-png-001p.tentative.html.ini new file mode 100644 index 00000000000..64e2b7220b1 --- /dev/null +++ b/tests/wpt/meta/css/css-images/object-fit-containsize-png-001p.tentative.html.ini @@ -0,0 +1,2 @@ +[object-fit-containsize-png-001p.tentative.html] + expected: FAIL diff --git a/tests/wpt/meta/css/css-pseudo/selection-over-highlight-001.html.ini b/tests/wpt/meta/css/css-pseudo/selection-over-highlight-001.html.ini new file mode 100644 index 00000000000..99bac19c151 --- /dev/null +++ b/tests/wpt/meta/css/css-pseudo/selection-over-highlight-001.html.ini @@ -0,0 +1,2 @@ +[selection-over-highlight-001.html] + expected: FAIL diff --git a/tests/wpt/meta/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/meta/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini index 314dca9c1f5..d52a3e77a70 100644 --- a/tests/wpt/meta/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini +++ b/tests/wpt/meta/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini @@ -1,3 +1,6 @@ [MediaQueryList-addListener-removeListener.html] [listeners are called when - diff --git a/tests/wpt/tests/css/css-contain/container-queries/custom-property-style-queries.html b/tests/wpt/tests/css/css-contain/container-queries/custom-property-style-queries.html index 4ae5efca911..d9152432ed1 100644 --- a/tests/wpt/tests/css/css-contain/container-queries/custom-property-style-queries.html +++ b/tests/wpt/tests/css/css-contain/container-queries/custom-property-style-queries.html @@ -206,6 +206,9 @@ --inherit-no: bar; --unset-no: baz; --initial-no: baz; + --space-no: baz; + --explicit-initial: initial; + --space: ; } @container style(--initial: initial) { #initial { color: green; } @@ -225,6 +228,18 @@ @container not style(--inherit-no: inherit) { #inherit-no { color: green; } } + @container style(--explicit-initial: initial) { + #explicit-initial { color: green; } + } + @container not style(--explicit-initial) { + #explicit-initial-implicit { color: green; } + } + @container style(--space: ) { + #space { color: green; } + } + @container not style(--space-no: ) { + #space-no { color: green; } + } @container style(--unset: unset) { #unset { color: green; } } @@ -238,6 +253,10 @@
+
+
+
+
@@ -261,6 +280,22 @@ assert_equals(getComputedStyle(document.querySelector("#initial-no-implicit")).color, green); }, "Style query matching value-less query against non-initial value"); + test(() => { + assert_equals(getComputedStyle(document.querySelector("#explicit-initial")).color, green); + }, "Style query 'initial' matching (with explicit 'initial' value)"); + + test(() => { + assert_equals(getComputedStyle(document.querySelector("#explicit-initial-implicit")).color, green); + }, "Style query matching negated value-less query against initial value (with explicit 'initial' value)"); + + test(() => { + assert_equals(getComputedStyle(document.querySelector("#space")).color, green); + }, "Style query 'space' matching"); + + test(() => { + assert_equals(getComputedStyle(document.querySelector("#space-no")).color, green); + }, "Style query 'space' not matching"); + test(() => { assert_equals(getComputedStyle(document.querySelector("#inherit")).color, green); }, "Style query 'inherit' matching"); diff --git a/tests/wpt/tests/css/css-contain/container-queries/pseudo-elements-009.html b/tests/wpt/tests/css/css-contain/container-queries/pseudo-elements-009.html index f8e2c197aa7..769a5962ff7 100644 --- a/tests/wpt/tests/css/css-contain/container-queries/pseudo-elements-009.html +++ b/tests/wpt/tests/css/css-contain/container-queries/pseudo-elements-009.html @@ -2,7 +2,6 @@ CSS Container Queries Test: Container for highlight pseudo elements - +
+
+
+
+
+
+ diff --git a/tests/wpt/tests/css/css-flexbox/WEB_FEATURES.yml b/tests/wpt/tests/css/css-flexbox/WEB_FEATURES.yml new file mode 100644 index 00000000000..69d08754517 --- /dev/null +++ b/tests/wpt/tests/css/css-flexbox/WEB_FEATURES.yml @@ -0,0 +1,7 @@ +features: +- name: flexbox + files: "**" +# TODO: map *gap* to flexbox-gap. This is currently not possible without the +# tests being associated with both flexbox and flexbox-gap. All but one of the +# *gap* tests are passing in all browsers, so lumping them in with flexbox is +# relatively harmless. diff --git a/tests/wpt/tests/css/css-fonts/parsing/font-palette-values-invalid.html b/tests/wpt/tests/css/css-fonts/parsing/font-palette-values-invalid.html index 2056055f341..b93a48fb37d 100644 --- a/tests/wpt/tests/css/css-fonts/parsing/font-palette-values-invalid.html +++ b/tests/wpt/tests/css/css-fonts/parsing/font-palette-values-invalid.html @@ -115,13 +115,33 @@ @font-palette-values --A { override-colors: 0 canvas; } + +/* 19 */ +@font-palette-values --A { + override-colors: 0 currentcolor; +} + +/* 20 */ +@font-palette-values --A { + override-colors: 0 light-dark(white, black); +} + +/* 21 */ +@font-palette-values --A { + override-colors: 0 color-mix(in lch, red, canvas); +} + +/* 22 */ +@font-palette-values --A { + override-colors: 0 light-dark(white, currentcolor); +} diff --git a/tests/wpt/tests/css/css-fonts/parsing/font-palette-values-valid.html b/tests/wpt/tests/css/css-fonts/parsing/font-palette-values-valid.html index 3c0c0626f58..99fceff2344 100644 --- a/tests/wpt/tests/css/css-fonts/parsing/font-palette-values-valid.html +++ b/tests/wpt/tests/css/css-fonts/parsing/font-palette-values-valid.html @@ -103,6 +103,11 @@ @font-palette-values --P { font-family: foo, bar, baz; } + +/* 17 */ +@font-palette-values --Q { + override-colors: 0 color-mix(in lch, red, blue); +} @@ -385,6 +390,14 @@ test(function() { assert_equals(rule.basePalette, ""); assert_equals(rule.overrideColors, ""); }); + +test(function() { + let rule = rules[17]; + assert_equals(rule.name, "--Q"); + assert_equals(rule.fontFamily, ""); + assert_equals(rule.basePalette, ""); + assert_equals(rule.overrideColors, "0 color-mix(in lch, red, blue)"); +}); diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/align-content/masonry-align-content-001-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/alignment/masonry-align-content-001-ref.html similarity index 100% rename from tests/wpt/tests/css/css-grid/masonry/tentative/align-content/masonry-align-content-001-ref.html rename to tests/wpt/tests/css/css-grid/masonry/tentative/alignment/masonry-align-content-001-ref.html diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/align-content/masonry-align-content-001.html b/tests/wpt/tests/css/css-grid/masonry/tentative/alignment/masonry-align-content-001.html similarity index 87% rename from tests/wpt/tests/css/css-grid/masonry/tentative/align-content/masonry-align-content-001.html rename to tests/wpt/tests/css/css-grid/masonry/tentative/alignment/masonry-align-content-001.html index dfefd998c65..387ee9da5eb 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/align-content/masonry-align-content-001.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/alignment/masonry-align-content-001.html @@ -5,9 +5,13 @@ --> - CSS Grid Test: Masonry layout with `align-content` in masonry axis + CSS Grid Test: Masonry layout with `align-content` in masonry axis (horizontal writing mode) + - + + .tall { grid-row: span 2; padding: 3px 11px 1px 13px; } + @@ -90,7 +90,7 @@ item { 6 - + 1 2 3 diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/align-content/masonry-align-content-003.html b/tests/wpt/tests/css/css-grid/masonry/tentative/alignment/masonry-align-content-003.html similarity index 87% rename from tests/wpt/tests/css/css-grid/masonry/tentative/align-content/masonry-align-content-003.html rename to tests/wpt/tests/css/css-grid/masonry/tentative/alignment/masonry-align-content-003.html index ae58e79cb2b..818d7e2d84b 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/align-content/masonry-align-content-003.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/alignment/masonry-align-content-003.html @@ -5,9 +5,13 @@ --> - CSS Grid Test: Masonry layout with `align-content` in grid axis + CSS Grid Test: Masonry layout with `align-content` in grid axis (horizontal writing mode) + - + @@ -34,9 +36,8 @@ item { 1 - 2 + 2 3 4 - 5 - 6 + 5 diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/gap/masonry-gap-001.html b/tests/wpt/tests/css/css-grid/masonry/tentative/gap/masonry-gap-001.html index 673bbe40e41..628c00135d8 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/gap/masonry-gap-001.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/gap/masonry-gap-001.html @@ -7,7 +7,7 @@ CSS Grid Test: Masonry layout with definite `gap` in both axes - + + + + + + 1 + 2 + 3 + 4 + 5 + + + + 1 + 2 + 3 + 4 + 5 + + + +
+ 1 + 2 + 3 +
+
+ diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/gap/masonry-gap-002.html b/tests/wpt/tests/css/css-grid/masonry/tentative/gap/masonry-gap-002.html new file mode 100644 index 00000000000..6dae0a1a729 --- /dev/null +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/gap/masonry-gap-002.html @@ -0,0 +1,71 @@ + + + + + CSS Grid Test: Masonry layout with normal `gap` in both axes + + + + + + + + + + + + 1 + 2 + 3 + 4 + 5 + + + + + 1 + 2 + 3 + 4 + 5 + + + + + +
+ 1 + 2 + 3 +
+
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-001-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-001-ref.html index c99b117f2ee..2aefa719dc4 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-001-ref.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/grid-placement/masonry-grid-placement-named-lines-001-ref.html @@ -5,7 +5,7 @@ --> - Reference: Placement involving named lines + Reference: Definite column placement in a masonry grid (single edge) - + - +
+ 1 2 3 @@ -45,7 +42,7 @@ item { 5 - + 1 2 3 @@ -58,7 +55,7 @@ item { 2 3 4 - 5 + 5 @@ -66,26 +63,28 @@ item { 2 3 4 - 5 + 4 + 5 - 1 + 1 2 3 4 - 5 - 6 + 4 + 5 + 6 - - 1 + 1 2 3 4 - 5 - 6 + 4 + 5 + 6 @@ -104,17 +103,20 @@ item { 5 - + 1 2 3 4 - 5 + 5 + 5 +
- +
+ 1 2 3 @@ -122,7 +124,7 @@ item { 5 - + 1 2 3 @@ -130,42 +132,43 @@ item { 5 - + 1 2 3 4 - 5 + 5 - + 1 2 3 4 - 5 + 5 - - 1 + + 1 2 3 4 - 5 - 6 + 4 + 5 + 6 - - - 1 + + 1 2 3 4 - 5 - 6 + 4 + 5 + 6 - + 1 2 3 @@ -173,7 +176,7 @@ item { 5 - + 1 2 3 @@ -181,18 +184,20 @@ item { 5 - + 1 2 3 4 - 5 + 5 + 5 - +
- +
+ 1 2 3 @@ -200,7 +205,7 @@ item { 5 - + 1 2 3 @@ -208,42 +213,44 @@ item { 5 - + 1 2 3 4 - 5 + 5 - + 1 2 3 4 - 5 + 4 + 5 - - 1 + + 1 2 3 4 - 5 - 6 + 4 + 5 + 6 - - - 1 + + 1 2 3 4 - 5 - 6 + 4 + 5 + 6 - + 1 2 3 @@ -251,7 +258,7 @@ item { 5 - + 1 2 3 @@ -259,13 +266,13 @@ item { 5 - + 1 2 3 4 - 5 + 5 + 5 +
- - diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001.html index 0f6cdb14954..cc0608eafe7 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001.html @@ -3,43 +3,40 @@ Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> - + - CSS Grid Test: Masonry layout intrinsic sizing + CSS Grid Test: Masonry layout column sizing - intrinsic - + - + - +
+ 1 2 3 @@ -47,7 +44,7 @@ item { 5 - + 1 2 3 @@ -55,7 +52,7 @@ item { 5 - + 1 2 3 @@ -63,7 +60,7 @@ item { 5 - + 1 2 3 @@ -71,7 +68,7 @@ item { 5 - + 1 2 3 @@ -80,8 +77,7 @@ item { 6 - - + 1 2 3 @@ -90,7 +86,7 @@ item { 6 - + 1 2 3 @@ -98,7 +94,7 @@ item { 5 - + 1 2 3 @@ -106,17 +102,19 @@ item { 5 - + 1 2 3 4 5 +
- +
+ 1 2 3 @@ -124,7 +122,7 @@ item { 5 - + 1 2 3 @@ -132,7 +130,7 @@ item { 5 - + 1 2 3 @@ -140,7 +138,7 @@ item { 5 - + 1 2 3 @@ -148,7 +146,7 @@ item { 5 - + 1 2 3 @@ -157,8 +155,7 @@ item { 6 - - + 1 2 3 @@ -167,7 +164,7 @@ item { 6 - + 1 2 3 @@ -175,7 +172,7 @@ item { 5 - + 1 2 3 @@ -183,18 +180,19 @@ item { 5 - + 1 2 3 4 5 - +
- +
+ 1 2 3 @@ -202,7 +200,7 @@ item { 5 - + 1 2 3 @@ -210,7 +208,7 @@ item { 5 - + 1 2 3 @@ -218,7 +216,7 @@ item { 5 - + 1 2 3 @@ -226,7 +224,7 @@ item { 5 - + 1 2 3 @@ -236,7 +234,7 @@ item { - + 1 2 3 @@ -245,7 +243,7 @@ item { 6 - + 1 2 3 @@ -253,7 +251,7 @@ item { 5 - + 1 2 3 @@ -261,13 +259,12 @@ item { 5 - + 1 2 3 4 5 +
- - diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html index 4f6519db949..ddae8e7fe37 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html @@ -3,42 +3,39 @@ Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> - + Reference: Masonry layout intrinsic sizing - + - +
+ 1 2 3 @@ -46,7 +43,7 @@ item { 5 - + 1 2 3 @@ -59,7 +56,7 @@ item { 2 3 4 - 5 + 5 @@ -67,26 +64,28 @@ item { 2 3 4 - 5 + 4 + 5 - 1 + 1 2 3 4 - 5 - 6 + 4 + 5 + 6 - - 1 + 1 2 3 4 - 5 - 6 + 4 + 5 + 6 @@ -105,17 +104,20 @@ item { 5 - + 1 2 3 4 - 5 + 5 + 5 +
- +
+ 1 2 3 @@ -123,7 +125,7 @@ item { 5 - + 1 2 3 @@ -131,42 +133,43 @@ item { 5 - + 1 2 3 4 - 5 + 5 - + 1 2 3 4 - 5 + 5 - - 1 + + 1 2 3 4 - 5 - 6 + 4 + 5 + 6 - - - 1 + + 1 2 3 4 - 5 - 6 + 4 + 5 + 6 - + 1 2 3 @@ -174,7 +177,7 @@ item { 5 - + 1 2 3 @@ -182,18 +185,20 @@ item { 5 - + 1 2 3 4 - 5 + 5 + 5 - +
- +
+ 1 2 3 @@ -201,7 +206,7 @@ item { 5 - + 1 2 3 @@ -209,42 +214,44 @@ item { 5 - + 1 2 3 4 - 5 + 5 - + 1 2 3 4 - 5 + 4 + 5 - - 1 + + 1 2 3 4 - 5 - 6 + 4 + 5 + 6 - - - 1 + + 1 2 3 4 - 5 - 6 + 4 + 5 + 6 - + 1 2 3 @@ -252,7 +259,7 @@ item { 5 - + 1 2 3 @@ -260,13 +267,14 @@ item { 5 - + 1 2 3 4 - 5 + 5 + 5 +
+ - - diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002.html index db83299bf50..3867bb13c89 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002.html @@ -3,44 +3,42 @@ Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> - + - CSS Grid Test: Masonry layout intrinsic sizing + CSS Grid Test: Masonry layout column sizing - min-content constraint - + - + - +
+ 1 2 3 @@ -48,7 +46,7 @@ item { 5 - + 1 2 3 @@ -56,7 +54,7 @@ item { 5 - + 1 2 3 @@ -64,7 +62,7 @@ item { 5 - + 1 2 3 @@ -72,7 +70,7 @@ item { 5 - + 1 2 3 @@ -81,8 +79,7 @@ item { 6 - - + 1 2 3 @@ -91,7 +88,7 @@ item { 6 - + 1 2 3 @@ -99,7 +96,7 @@ item { 5 - + 1 2 3 @@ -107,17 +104,19 @@ item { 5 - + 1 2 3 4 5 +
- +
+ 1 2 3 @@ -125,7 +124,7 @@ item { 5 - + 1 2 3 @@ -133,7 +132,7 @@ item { 5 - + 1 2 3 @@ -141,7 +140,7 @@ item { 5 - + 1 2 3 @@ -149,7 +148,7 @@ item { 5 - + 1 2 3 @@ -158,8 +157,7 @@ item { 6 - - + 1 2 3 @@ -168,7 +166,7 @@ item { 6 - + 1 2 3 @@ -176,7 +174,7 @@ item { 5 - + 1 2 3 @@ -184,18 +182,19 @@ item { 5 - + 1 2 3 4 5 - +
- +
+ 1 2 3 @@ -203,7 +202,7 @@ item { 5 - + 1 2 3 @@ -211,7 +210,7 @@ item { 5 - + 1 2 3 @@ -219,7 +218,7 @@ item { 5 - + 1 2 3 @@ -227,7 +226,7 @@ item { 5 - + 1 2 3 @@ -236,8 +235,7 @@ item { 6 - - + 1 2 3 @@ -246,7 +244,7 @@ item { 6 - + 1 2 3 @@ -254,7 +252,7 @@ item { 5 - + 1 2 3 @@ -262,13 +260,12 @@ item { 5 - + 1 2 3 4 5 +
- - diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html index 61eb21570df..044750dc451 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html @@ -3,267 +3,331 @@ Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> - + Reference: Masonry layout min-content sizing - + - +
+ 1 - 2 2 - 3 3 + 2 2 + 3 3 4 - 5 5 + 5 5 - + 1 - 2 2 - 3 3 + 2 2 + 3 3 4 - 5 5 + 5 5 - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + + - - 1 - 2 2 - 3 3 - 4 - 5 5 - 6 + + 1 + 2 2 + 3 3 + 4 + 5 5 + 6 + + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 - 6 + + 1 + 2 2 + 3 3 + 4 + 5 5 + 6 + + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + + +
- - 1 - 2 2 - 3 3 - 4 - 5 5 +
+ + 1 + 2 2 + 3 3 + 4 + 5 5 - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + - - 1 - 2 2 - 3 3 - 4 - 5 5 - 6 + + 1 + 2 2 + 3 3 + 4 + 5 5 + 6 + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 - 6 + + 1 + 2 2 + 3 3 + 4 + 5 5 + 6 + + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + + +
- - 1 - 2 2 - 3 3 - 4 - 5 5 +
+ + 1 + 2 2 + 3 3 + 4 + 5 5 + - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + - - 1 - 2 2 - 3 3 - 4 - 5 5 - 6 + + 1 + 2 2 + 3 3 + 4 + 5 5 + 6 + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 - 6 + + 1 + 2 2 + 3 3 + 4 + 5 5 + 6 + + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 - + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + + + +
- - diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003.html index e43bc86c9b9..48489d3c869 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003.html @@ -3,44 +3,41 @@ Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> - + - CSS Grid Test: Masonry layout min-content sizing + CSS Grid Test: Masonry layout column sizing - min-content - + - + - +
+ 1 2 2 3 3 @@ -48,7 +45,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -56,7 +53,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -64,7 +61,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -72,7 +69,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -81,7 +78,7 @@ item { 6 - + 1 2 2 3 3 @@ -90,7 +87,7 @@ item { 6 - + 1 2 2 3 3 @@ -98,7 +95,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -106,17 +103,19 @@ item { 5 5 - + 1 2 2 3 3 4 5 5 +
- +
+ 1 2 2 3 3 @@ -124,7 +123,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -132,7 +131,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -140,7 +139,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -148,7 +147,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -157,7 +156,7 @@ item { 6 - + 1 2 2 3 3 @@ -166,7 +165,7 @@ item { 6 - + 1 2 2 3 3 @@ -174,7 +173,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -182,17 +181,19 @@ item { 5 5 - + 1 2 2 3 3 4 5 5 +
- +
+ 1 2 2 3 3 @@ -200,7 +201,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -208,7 +209,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -216,7 +217,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -224,7 +225,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -233,7 +234,7 @@ item { 6 - + 1 2 2 3 3 @@ -242,7 +243,7 @@ item { 6 - + 1 2 2 3 3 @@ -250,7 +251,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -258,13 +259,12 @@ item { 5 5 - + 1 2 2 3 3 4 5 5 +
- - diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html index 6a5d81fedb2..302dcad1169 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html @@ -3,268 +3,355 @@ Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> - + Reference: Masonry layout max-content sizing - + - +
+ 1 2 2 3 3 4 5 5 + + - + 1 2 2 3 3 4 - 5 5 - + 5 5 - - 1 - 2 2 - 3 3 - 4 - 5 5 + + - 1 + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 + + + - 1 + 1 2 2 3 3 - 4 - 5 5 - 6 + 4 + 5 5 + + + - 1 + 1 2 2 3 3 - 4 - 5 5 - 6 + 4 + 5 5 + 6 + + + + + - 1 + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 + 6 + + + + + - 1 + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 + + + - 1 + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 + + + + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + + + +
+ - - 1 +
+ + 1 2 2 3 3 - 4 + 4 5 5 + - - 1 + + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 + - - 1 + + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 - - 1 + + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 + - - 1 + + 1 2 2 3 3 - 4 - 5 5 - 6 + 4 + 5 5 + 6 + + + + + - - 1 + + 1 2 2 3 3 - 4 - 5 5 - 6 + 4 + 5 5 + 6 + + + + + - - 1 + + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 + + + - - 1 + + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 + + + - - 1 + + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 + + + + +
- - 1 +
+ + 1 + 2 2 + 3 3 + 4 + 5 5 + + + + + + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + + + + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + + + + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 + + - - 1 + + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 + 6 + + + - - 1 + + 1 2 2 3 3 - 4 - 5 5 + 4 + 5 5 + 6 + + - - 1 - 2 2 - 3 3 - 4 - 5 5 + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 - 6 + + 1 + 2 2 + 3 3 + 4 + 5 5 + + + + - - 1 - 2 2 - 3 3 - 4 - 5 5 - 6 - + + 1 + 2 2 + 3 3 + 4 + 5 5 - - 1 - 2 2 - 3 3 - 4 - 5 5 + + + +
- - 1 - 2 2 - 3 3 - 4 - 5 5 - - - - 1 - 2 2 - 3 3 - 4 - 5 5 - - - - diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004.html index 5365208c00f..c8bc671bb3b 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004.html @@ -3,44 +3,41 @@ Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> - + - CSS Grid Test: Masonry layout max-content sizing + CSS Grid Test: Masonry layout column sizing - max-content - + - + - +
+ 1 2 2 3 3 @@ -48,7 +45,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -56,7 +53,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -64,7 +61,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -72,7 +69,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -81,7 +78,7 @@ item { 6 - + 1 2 2 3 3 @@ -90,7 +87,7 @@ item { 6 - + 1 2 2 3 3 @@ -98,7 +95,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -106,17 +103,19 @@ item { 5 5 - + 1 2 2 3 3 4 5 5 +
- +
+ 1 2 2 3 3 @@ -124,7 +123,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -132,7 +131,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -140,7 +139,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -148,7 +147,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -157,7 +156,7 @@ item { 6 - + 1 2 2 3 3 @@ -166,7 +165,7 @@ item { 6 - + 1 2 2 3 3 @@ -174,7 +173,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -182,17 +181,19 @@ item { 5 5 - + 1 2 2 3 3 4 5 5 +
- +
+ 1 2 2 3 3 @@ -200,7 +201,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -208,7 +209,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -216,7 +217,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -224,7 +225,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -233,7 +234,7 @@ item { 6 - + 1 2 2 3 3 @@ -242,7 +243,7 @@ item { 6 - + 1 2 2 3 3 @@ -250,7 +251,7 @@ item { 5 5 - + 1 2 2 3 3 @@ -258,13 +259,12 @@ item { 5 5 - + 1 2 2 3 3 4 5 5 +
- - diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html index e564fb1b3e6..725f646ebd9 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html @@ -3,35 +3,32 @@ Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> - + - Reference: Masonry layout intrinsic sizing + Reference: Masonry layout row sizing (vertical writing mode) - + - + 1 2 3 @@ -43,7 +40,7 @@ item { 9 9 - + 1 2 3 @@ -79,5 +76,3 @@ item { 9 9 - - diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005.html index cf9b680869f..83afd5bafa0 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005.html @@ -3,17 +3,16 @@ Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> - + - CSS Grid Test: Masonry layout intrinsic sizing + CSS Grid Test: Masonry layout row sizing (vertical writing mode) - + - + - + 1 2 3 @@ -46,7 +43,7 @@ item { 9 9 - + 1 2 3 @@ -58,7 +55,7 @@ item { 9 9 - + 1 2 3 @@ -70,7 +67,7 @@ item { 9 9 - + 1 2 3 @@ -82,5 +79,3 @@ item { 9 9 - - diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html index e1cb015cfe8..1a88c2b4cb6 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html @@ -3,58 +3,49 @@ Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> - + - Reference: Masonry layout intrinsic sizing + Reference: Masonry layout row auto-fill sizing - + - 1 1 + 1 1 2 3 4 - 5 5 + 5 5 - 1 1 + 1 1 2 3 4 - 5 5 + 5 5 - 1 1 + 1 1 2 3 4 - 5 5 + 5 5 - - diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006.html index 49fd53bb79b..ad548009216 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006.html @@ -3,17 +3,16 @@ Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ --> - + - CSS Grid Test: Masonry layout intrinsic sizing + CSS Grid Test: Masonry layout row auto-fill sizing - + - + - + 1 1 2 3 @@ -41,7 +36,8 @@ item { 5 5 - + 1 1 2 3 @@ -49,7 +45,8 @@ item { 5 5 - + 1 1 2 3 @@ -57,5 +54,3 @@ item { 5 5 - - diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/support/masonry-intrinsic-sizing-visual.css b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/support/masonry-intrinsic-sizing-visual.css new file mode 100644 index 00000000000..150f0f2679a --- /dev/null +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/support/masonry-intrinsic-sizing-visual.css @@ -0,0 +1,48 @@ +/* Basic Testing Setup */ +html,body { + color: black; background: white; font: 15px/1 Ahem, monospace; + padding: 1em 0; margin: 0; + max-width: 800px; height: calc(600px - 2em); + border-bottom: 1px solid orange; /* Do Not Cross */ +} + + +/* Visualization */ +grid { + margin: 0.5em; +} +item { + background-color: gray; + color: blue; +} + +/* Debugging Aid */ +section { + border-top: 1px solid gray; + counter-reset: grid; +} + +grid { + margin-inline-start: 1em; + counter-increment: grid; +} +grid::before { + position: absolute; + margin: 0 -1.1em; + font: smaller sans-serif; + content: counter(grid); + color: navy; +} + +grid:hover { + outline: navy solid; +} +grid:hover item[style] { + color: navy; +} +grid:hover::after { + content: attr(title); + position: absolute; + inset: 0.1em auto auto 0.5rem; + font: bold smaller sans-serif; +} diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-001.html b/tests/wpt/tests/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-001.html index 649e1edb7cb..2438df8bac8 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-001.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/item-placement/masonry-item-placement-001.html @@ -7,7 +7,7 @@ CSS Grid Test: Masonry layout using `grid-column/row` - + + + CSS Masonry Test: getComputedStyle().gridTemplateColumns + + + + + +
@@ -37,59 +37,59 @@
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/masonry-not-inhibited-001.html b/tests/wpt/tests/css/css-grid/masonry/tentative/masonry-not-inhibited-001.html index 54499d3d693..1c912feb1fa 100644 --- a/tests/wpt/tests/css/css-grid/masonry/tentative/masonry-not-inhibited-001.html +++ b/tests/wpt/tests/css/css-grid/masonry/tentative/masonry-not-inhibited-001.html @@ -2,7 +2,7 @@ CSS Grid Test: Masonry layout shouldn't be inhibited simply due to being an independent formatting context (unlike subgrid) - + -
One two three…
+
One two three…
+
One two three…
+
One two three…
+
One two three…
diff --git a/tests/wpt/tests/css/css-highlight-api/painting/custom-highlight-painting-vertical-writing-mode-001.html b/tests/wpt/tests/css/css-highlight-api/painting/custom-highlight-painting-vertical-writing-mode-001.html index 9fe2bdcd5f1..ba25037976c 100644 --- a/tests/wpt/tests/css/css-highlight-api/painting/custom-highlight-painting-vertical-writing-mode-001.html +++ b/tests/wpt/tests/css/css-highlight-api/painting/custom-highlight-painting-vertical-writing-mode-001.html @@ -5,21 +5,44 @@ + -
One two three…
+
One two three…
+
One two three…
+
One two three…
+
One two three…
diff --git a/tests/wpt/tests/css/css-images/object-fit-containcontainintrinsicsize-png-001c.tentative.html b/tests/wpt/tests/css/css-images/object-fit-containcontainintrinsicsize-png-001c.tentative.html new file mode 100644 index 00000000000..b17f59f887f --- /dev/null +++ b/tests/wpt/tests/css/css-images/object-fit-containcontainintrinsicsize-png-001c.tentative.html @@ -0,0 +1,71 @@ + + + + + + CSS Test: 'object-fit: contain' and 'contain-intrinsic-size' on a canvas element, drawing a PNG image + + + + + + + + + + + + +
+ + + + + + +
+ + diff --git a/tests/wpt/tests/css/css-images/object-fit-containcontainintrinsicsize-png-001e.tentative.html b/tests/wpt/tests/css/css-images/object-fit-containcontainintrinsicsize-png-001e.tentative.html new file mode 100644 index 00000000000..1b121f4eee3 --- /dev/null +++ b/tests/wpt/tests/css/css-images/object-fit-containcontainintrinsicsize-png-001e.tentative.html @@ -0,0 +1,57 @@ + + + + + + CSS Test: 'object-fit: contain' and 'contain-intrinsic-size' on an embed element, embedding a PNG image + + + + + + + + + + + +
+ + + + + + +
+ + diff --git a/tests/wpt/tests/css/css-images/object-fit-containcontainintrinsicsize-png-001p.tentative.html b/tests/wpt/tests/css/css-images/object-fit-containcontainintrinsicsize-png-001p.tentative.html new file mode 100644 index 00000000000..c2c1697c63c --- /dev/null +++ b/tests/wpt/tests/css/css-images/object-fit-containcontainintrinsicsize-png-001p.tentative.html @@ -0,0 +1,57 @@ + + + + + + CSS Test: 'object-fit: contain' and 'contain-intrinsic-size' on video element with a PNG poster image + + + + + + + + + + + +
+ + + + + + +
+ + diff --git a/tests/wpt/tests/css/css-images/object-fit-containsize-png-001c.tentative.html b/tests/wpt/tests/css/css-images/object-fit-containsize-png-001c.tentative.html new file mode 100644 index 00000000000..43a50adcedc --- /dev/null +++ b/tests/wpt/tests/css/css-images/object-fit-containsize-png-001c.tentative.html @@ -0,0 +1,71 @@ + + + + + + CSS Test: 'object-fit: contain' and 'contain: size' on canvas element, drawing a PNG image + + + + + + + + + + + + +
+ + + + + + +
+ + diff --git a/tests/wpt/tests/css/css-images/object-fit-containsize-png-001e.tentative.html b/tests/wpt/tests/css/css-images/object-fit-containsize-png-001e.tentative.html new file mode 100644 index 00000000000..37e0f1e4471 --- /dev/null +++ b/tests/wpt/tests/css/css-images/object-fit-containsize-png-001e.tentative.html @@ -0,0 +1,57 @@ + + + + + + CSS Test: 'object-fit: contain' and 'contain: size' on an embed element, embedding a PNG image + + + + + + + + + + + +
+ + + + + + +
+ + diff --git a/tests/wpt/tests/css/css-images/object-fit-containsize-png-001p.tentative.html b/tests/wpt/tests/css/css-images/object-fit-containsize-png-001p.tentative.html new file mode 100644 index 00000000000..c3072f98388 --- /dev/null +++ b/tests/wpt/tests/css/css-images/object-fit-containsize-png-001p.tentative.html @@ -0,0 +1,57 @@ + + + + + + CSS Test: 'object-fit: contain' and 'contain: size' on video element with a PNG poster image + + + + + + + + + + + +
+ + + + + + +
+ + diff --git a/tests/wpt/tests/css/css-overflow/line-clamp-with-floats-005.tentative.html b/tests/wpt/tests/css/css-overflow/line-clamp-with-floats-005.tentative.html index f5c76e24fa6..9689a83fa7f 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp-with-floats-005.tentative.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp-with-floats-005.tentative.html @@ -1,6 +1,6 @@ -CSS Overflow: float in line-clamp before clamp point which overflows +CSS Overflow: float in line-clamp before clamp point which extends past it diff --git a/tests/wpt/tests/css/css-overflow/line-clamp-with-floats-006.tentative.html b/tests/wpt/tests/css/css-overflow/line-clamp-with-floats-006.tentative.html index d900727d973..0a709bff198 100644 --- a/tests/wpt/tests/css/css-overflow/line-clamp-with-floats-006.tentative.html +++ b/tests/wpt/tests/css/css-overflow/line-clamp-with-floats-006.tentative.html @@ -1,6 +1,6 @@ -CSS Overflow: float in line-clamp before clamp point which overflows +CSS Overflow: float in line-clamp before clamp point which extends past it diff --git a/tests/wpt/tests/css/css-overflow/reference/line-clamp-with-floats-005-ref.html b/tests/wpt/tests/css/css-overflow/reference/line-clamp-with-floats-005-ref.html index 46875b4d922..d20d6c53dde 100644 --- a/tests/wpt/tests/css/css-overflow/reference/line-clamp-with-floats-005-ref.html +++ b/tests/wpt/tests/css/css-overflow/reference/line-clamp-with-floats-005-ref.html @@ -3,6 +3,7 @@ CSS Reference +
When selected, the highlight color should remain.
diff --git a/tests/wpt/tests/css/css-pseudo/selection-over-highlight-001.html b/tests/wpt/tests/css/css-pseudo/selection-over-highlight-001.html new file mode 100644 index 00000000000..57078cf83b3 --- /dev/null +++ b/tests/wpt/tests/css/css-pseudo/selection-over-highlight-001.html @@ -0,0 +1,24 @@ + + +CSS Pseudo-Elements Test: selected highlight highlight painting + + + + + +
When selected, the highlight color should remain.
+ diff --git a/tests/wpt/tests/css/css-ruby/ruby-dynamic-insertion-005-ref.html b/tests/wpt/tests/css/css-ruby/ruby-dynamic-insertion-005-ref.html index 03e5cabe55c..79a19130ff8 100644 --- a/tests/wpt/tests/css/css-ruby/ruby-dynamic-insertion-005-ref.html +++ b/tests/wpt/tests/css/css-ruby/ruby-dynamic-insertion-005-ref.html @@ -11,3 +11,12 @@

axby

abxy

abxy

+ +

'a' and 'b c' should be paired with 'x' and 'y z' repectively:

+

a xb cy z

+ +

'a b' and 'c' should be paired with 'x y' and 'z' repectively:

+

a b x ycz

+ +

'a b' and 'c d' should be paired with 'w x' and 'y z' repectively:

+

a b w xc dy z diff --git a/tests/wpt/tests/css/css-ruby/ruby-dynamic-insertion-005.html b/tests/wpt/tests/css/css-ruby/ruby-dynamic-insertion-005.html index a684d665c89..66f7dbdd179 100644 --- a/tests/wpt/tests/css/css-ruby/ruby-dynamic-insertion-005.html +++ b/tests/wpt/tests/css/css-ruby/ruby-dynamic-insertion-005.html @@ -20,3 +20,12 @@

abxy

abxy

+ +

'a' and 'b c' should be paired with 'x' and 'y z' repectively:

+

a b cy z

+ +

'a b' and 'c' should be paired with 'x y' and 'z' repectively:

+

a b cz

+ +

'a b' and 'c d' should be paired with 'w x' and 'y z' repectively:

+

a b c dy z diff --git a/tests/wpt/tests/css/css-ruby/ruby-dynamic-removal-003-ref.html b/tests/wpt/tests/css/css-ruby/ruby-dynamic-removal-003-ref.html index 0067c014f5d..113598eff25 100644 --- a/tests/wpt/tests/css/css-ruby/ruby-dynamic-removal-003-ref.html +++ b/tests/wpt/tests/css/css-ruby/ruby-dynamic-removal-003-ref.html @@ -18,3 +18,8 @@

abxy

abxy

+ +

'a b c' should be paried with 'x y z':

+

a b cx y z +

a b cx y z +

a b cx y z diff --git a/tests/wpt/tests/css/css-ruby/ruby-dynamic-removal-003.html b/tests/wpt/tests/css/css-ruby/ruby-dynamic-removal-003.html index d35b2b968d6..ff6c0b4c83d 100644 --- a/tests/wpt/tests/css/css-ruby/ruby-dynamic-removal-003.html +++ b/tests/wpt/tests/css/css-ruby/ruby-dynamic-removal-003.html @@ -31,3 +31,9 @@

abxy

+ +

'a b c' should be paried with 'x y z':

+ +

a wb cx y z +

a b wcx y z +

a wb cx y z diff --git a/tests/wpt/tests/css/css-scoping/font-face-001.html b/tests/wpt/tests/css/css-scoping/font-face-001.html index 7e47d18cbaa..4496786449f 100644 --- a/tests/wpt/tests/css/css-scoping/font-face-001.html +++ b/tests/wpt/tests/css/css-scoping/font-face-001.html @@ -12,7 +12,7 @@

1234567890
+ + + + + + + + + + +
+
+
+ + + + diff --git a/tests/wpt/tests/css/css-scroll-snap-2/snapchanged/snapchanged-scrolling-non-snapping-axis.tentative.html b/tests/wpt/tests/css/css-scroll-snap-2/snapchanged/snapchanged-scrolling-non-snapping-axis.tentative.html new file mode 100644 index 00000000000..e39fc0c44ee --- /dev/null +++ b/tests/wpt/tests/css/css-scroll-snap-2/snapchanged/snapchanged-scrolling-non-snapping-axis.tentative.html @@ -0,0 +1,77 @@ + + + + CSS Scroll Snap 2 Test: snapchanged events + + + + + + + + + + + + +
+
+
Area2
+
Area1
+
+ + + + diff --git a/tests/wpt/tests/css/css-transitions/CSSTransition-effect.tentative.html b/tests/wpt/tests/css/css-transitions/CSSTransition-effect.tentative.html index b58c93d2e69..0952a7cd8f1 100644 --- a/tests/wpt/tests/css/css-transitions/CSSTransition-effect.tentative.html +++ b/tests/wpt/tests/css/css-transitions/CSSTransition-effect.tentative.html @@ -85,12 +85,13 @@ promise_test(async t => { div.style.left = '150px'; // This will run style update. - assert_equals(div.getAnimations().length, 1); + const animations = div.getAnimations(); + assert_equals(animations.length, 1); - const new_transition = div.getAnimations()[0]; + const new_transition = animations[0]; await new_transition.ready; - assert_equals(getComputedStyle(div).left, '100px'); + assert_not_equals(getComputedStyle(div).left, '150px'); }, 'After setting a transition\'s effect to null, a new transition can be started'); // This is a regression test for https://crbug.com/992668, where Chromium would diff --git a/tests/wpt/tests/css/css-view-transitions/3d-transform-incoming.html b/tests/wpt/tests/css/css-view-transitions/3d-transform-incoming.html index 983ba1d861a..4b1411f25dc 100644 --- a/tests/wpt/tests/css/css-view-transitions/3d-transform-incoming.html +++ b/tests/wpt/tests/css/css-view-transitions/3d-transform-incoming.html @@ -4,7 +4,7 @@ - + + +
+ diff --git a/tests/wpt/tests/css/css-view-transitions/new-content-changes-overflow-left.html b/tests/wpt/tests/css/css-view-transitions/new-content-changes-overflow-left.html new file mode 100644 index 00000000000..e362dce76ac --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/new-content-changes-overflow-left.html @@ -0,0 +1,46 @@ + + + +View transitions: capture elements and then change overflow + + + + + + + +
+ + + diff --git a/tests/wpt/tests/css/css-view-transitions/new-content-has-scrollbars.html b/tests/wpt/tests/css/css-view-transitions/new-content-has-scrollbars.html index 3246a7e76f3..834d0e8f454 100644 --- a/tests/wpt/tests/css/css-view-transitions/new-content-has-scrollbars.html +++ b/tests/wpt/tests/css/css-view-transitions/new-content-has-scrollbars.html @@ -6,7 +6,7 @@ - + + +
+ + diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-element-preserve-3d.html b/tests/wpt/tests/css/css-view-transitions/pseudo-element-preserve-3d.html new file mode 100644 index 00000000000..474f743e1c5 --- /dev/null +++ b/tests/wpt/tests/css/css-view-transitions/pseudo-element-preserve-3d.html @@ -0,0 +1,44 @@ + + +View transitions: transform-style: preserve-3d is respected on pseudo elements + + + + + + +
+ + + diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-rendering-invalidation.html b/tests/wpt/tests/css/css-view-transitions/pseudo-rendering-invalidation.html index e1f17186183..4d492c40d87 100644 --- a/tests/wpt/tests/css/css-view-transitions/pseudo-rendering-invalidation.html +++ b/tests/wpt/tests/css/css-view-transitions/pseudo-rendering-invalidation.html @@ -4,7 +4,7 @@ - + +
+
+
+ + diff --git a/tests/wpt/tests/css/cssom-view/WEB_FEATURES.yml b/tests/wpt/tests/css/cssom-view/WEB_FEATURES.yml index a545dbadcb8..d5352fb4a11 100644 --- a/tests/wpt/tests/css/cssom-view/WEB_FEATURES.yml +++ b/tests/wpt/tests/css/cssom-view/WEB_FEATURES.yml @@ -1,4 +1,7 @@ features: +- name: check-visibility + files: + - checkVisibility.html - name: scroll-into-view files: - scrollIntoView-* diff --git a/tests/wpt/tests/css/filter-effects/support/hueRotate.svg b/tests/wpt/tests/css/filter-effects/support/hueRotate.svg index ed294041e15..0ddcb37d70d 100644 --- a/tests/wpt/tests/css/filter-effects/support/hueRotate.svg +++ b/tests/wpt/tests/css/filter-effects/support/hueRotate.svg @@ -1,6 +1,6 @@ - + diff --git a/tests/wpt/tests/css/motion/animation/offset-rotate-interpolation.html b/tests/wpt/tests/css/motion/animation/offset-rotate-interpolation.html index 55845108ebf..10c337244f5 100644 --- a/tests/wpt/tests/css/motion/animation/offset-rotate-interpolation.html +++ b/tests/wpt/tests/css/motion/animation/offset-rotate-interpolation.html @@ -163,15 +163,6 @@ {at: 1.5, expect: '70deg'}, ]); - // Regression test for crbug.com/918430. - test_interpolation({ - property: 'offset-rotate', - from: '800deg', - to: '900deg' - }, [ - {at: -3.40282e+38, expect: '-3.40282e+38deg'}, - ]); - // Interpolation between auto angles. test_interpolation({ property: 'offset-rotate', diff --git a/tests/wpt/tests/css/selectors/WEB_FEATURES.yml b/tests/wpt/tests/css/selectors/WEB_FEATURES.yml index 47cf05a2c0f..4b29277607f 100644 --- a/tests/wpt/tests/css/selectors/WEB_FEATURES.yml +++ b/tests/wpt/tests/css/selectors/WEB_FEATURES.yml @@ -5,3 +5,7 @@ features: - name: has files: - has-* +- name: user-pseudos + files: + - user-invalid.html + - user-valid.html diff --git a/tests/wpt/tests/css/selectors/focus-visible-028.html b/tests/wpt/tests/css/selectors/focus-visible-028.html new file mode 100644 index 00000000000..a8b704838bb --- /dev/null +++ b/tests/wpt/tests/css/selectors/focus-visible-028.html @@ -0,0 +1,84 @@ + + + + + CSS Test (Selectors): Programmatic focus causes :focus-visible to match after keyboard usage when preventDefault() is used + + + + + + + + + + This test checks that programmatically focusing an element after a click and using keyboard afterwards triggers :focus-visible matching. +
    +
  1. If the user-agent does not claim to support the :focus-visible pseudo-class then SKIP this test.
  2. +
  3. Click the button below that says "Click me".
  4. +
  5. Once focused on the button that says "I will be focused programmatically", use "Left" or "Right" arrow keys to navigate through the button group
  6. +
  7. If any button within the group has a blue outline after using either arrow key, then the test result is SUCCESS. If the element has a green background after using either arrow key, then the test result is FAILURE.
  8. +
+
+ +
+ + + +
+ + + \ No newline at end of file diff --git a/tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml b/tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml index 4eaa2f39310..5e6a6d0d5c0 100644 --- a/tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml +++ b/tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml @@ -4,3 +4,6 @@ features: - has-* - "*-in-has.*" - "*-in-has-*" +- name: user-pseudos + files: + - user-valid-user-invalid.html diff --git a/tests/wpt/tests/docs/admin/pywebsocket3.rst b/tests/wpt/tests/docs/admin/pywebsocket3.rst index af768d6b354..3f742958b3a 100644 --- a/tests/wpt/tests/docs/admin/pywebsocket3.rst +++ b/tests/wpt/tests/docs/admin/pywebsocket3.rst @@ -4,88 +4,88 @@ pywebsocket3: A Standalone WebSocket Server for testing purposes .. contents:: :local: -:mod:`mod_pywebsocket` +:mod:`pywebsocket3` --------------------------------------------- -.. automodule:: mod_pywebsocket +.. automodule:: pywebsocket3 :members: -:mod:`mod_pywebsocket.common` +:mod:`pywebsocket3.common` --------------------------------------------- -.. automodule:: mod_pywebsocket.common +.. automodule:: pywebsocket3.common :members: -:mod:`mod_pywebsocket.dispatch` +:mod:`pywebsocket3.dispatch` --------------------------------------------- -.. automodule:: mod_pywebsocket.dispatch +.. automodule:: pywebsocket3.dispatch :members: -:mod:`mod_pywebsocket.extensions` +:mod:`pywebsocket3.extensions` --------------------------------------------- -.. automodule:: mod_pywebsocket.extensions +.. automodule:: pywebsocket3.extensions :members: -:mod:`mod_pywebsocket.handshake` +:mod:`pywebsocket3.handshake` --------------------------------------------- -.. automodule:: mod_pywebsocket.handshake +.. automodule:: pywebsocket3.handshake :members: :imported-members: -:mod:`mod_pywebsocket.request_handler` +:mod:`pywebsocket3.request_handler` --------------------------------------------- -.. automodule:: mod_pywebsocket.request_handler +.. automodule:: pywebsocket3.request_handler :members: -:mod:`mod_pywebsocket.stream` +:mod:`pywebsocket3.stream` --------------------------------------------- -.. automodule:: mod_pywebsocket.stream +.. automodule:: pywebsocket3.stream :members: :imported-members: -:mod:`mod_pywebsocket.http_header_util` +:mod:`pywebsocket3.http_header_util` --------------------------------------------- -.. automodule:: mod_pywebsocket.http_header_util +.. automodule:: pywebsocket3.http_header_util :members: -:mod:`mod_pywebsocket.msgutil` +:mod:`pywebsocket3.msgutil` --------------------------------------------- -.. automodule:: mod_pywebsocket.msgutil +.. automodule:: pywebsocket3.msgutil :members: -:mod:`mod_pywebsocket.util` +:mod:`pywebsocket3.util` --------------------------------------------- -.. automodule:: mod_pywebsocket.util +.. automodule:: pywebsocket3.util :members: -:mod:`mod_pywebsocket.memorizingfile` +:mod:`pywebsocket3.memorizingfile` --------------------------------------------- -.. automodule:: mod_pywebsocket.memorizingfile +.. automodule:: pywebsocket3.memorizingfile :members: -:mod:`mod_pywebsocket.websocket_server` +:mod:`pywebsocket3.websocket_server` --------------------------------------------- -.. automodule:: mod_pywebsocket.websocket_server +.. automodule:: pywebsocket3.websocket_server :members: -:mod:`mod_pywebsocket.server_util` +:mod:`pywebsocket3.server_util` --------------------------------------------- -.. automodule:: mod_pywebsocket.server_util +.. automodule:: pywebsocket3.server_util :members: -:mod:`mod_pywebsocket.standalone` +:mod:`pywebsocket3.standalone` --------------------------------------------- -.. automodule:: mod_pywebsocket.standalone +.. automodule:: pywebsocket3.standalone :members: diff --git a/tests/wpt/tests/docs/running-tests/from-local-system.md b/tests/wpt/tests/docs/running-tests/from-local-system.md index 89533ee2104..0d524ea356a 100644 --- a/tests/wpt/tests/docs/running-tests/from-local-system.md +++ b/tests/wpt/tests/docs/running-tests/from-local-system.md @@ -16,7 +16,7 @@ cd wpt Running the tests requires `python` and `pip` as well as updating the system `hosts` file. -WPT requires Python 3.7 or higher. +WPT requires Python 3.8 or higher. The required setup is different depending on your operating system. diff --git a/tests/wpt/tests/docs/writing-tests/file-names.md b/tests/wpt/tests/docs/writing-tests/file-names.md index 96296c4ff69..5336bfb528c 100644 --- a/tests/wpt/tests/docs/writing-tests/file-names.md +++ b/tests/wpt/tests/docs/writing-tests/file-names.md @@ -11,10 +11,10 @@ These are individually documented for each flag that supports it. ### Test Type -These flags must be the last element in the filename before the -extension e.g. `foo-manual.html` will indicate a manual test, but -`foo-manual-other.html` will not. Unlike test features, test types -are mutually exclusive. +These flags are preceded by a `-` and followed by a `.`, and must be the +last such element in the filename, e.g. `foo-manual.html` will indicate +a manual test, but `foo-manual-other.html` will not. Unlike test features, +test types are mutually exclusive. `-manual` @@ -26,8 +26,8 @@ are mutually exclusive. ### Test Features -These flags are preceded by a `.` in the filename, and must -themselves precede any test type flag, but are otherwise unordered. +These flags are preceded and followed by a `.` in the filename, and must themselves +go after any test type flag, but are otherwise unordered. `.https` diff --git a/tests/wpt/tests/docs/writing-tests/testdriver.md b/tests/wpt/tests/docs/writing-tests/testdriver.md index 73af3bb3c8d..fcf0199badc 100644 --- a/tests/wpt/tests/docs/writing-tests/testdriver.md +++ b/tests/wpt/tests/docs/writing-tests/testdriver.md @@ -119,6 +119,12 @@ the global scope. .. js:autofunction:: test_driver.get_virtual_sensor_information ``` +### Device Posture ### +```eval_rst +.. js:autofunction:: test_driver.set_device_posture +.. js:autofunction:: test_driver.clear_device_posture +``` + ### Using test_driver in other browsing contexts ### Testdriver can be used in browsing contexts (i.e. windows or frames) diff --git a/tests/wpt/tests/dom/events/scrolling/WEB_FEATURES.yml b/tests/wpt/tests/dom/events/scrolling/WEB_FEATURES.yml new file mode 100644 index 00000000000..e4fba841b62 --- /dev/null +++ b/tests/wpt/tests/dom/events/scrolling/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: scrollend + files: + - scrollend-* diff --git a/tests/wpt/tests/dom/ranges/Range-isPointInRange-shadowdom.tentative.html b/tests/wpt/tests/dom/ranges/Range-isPointInRange-shadowdom.tentative.html new file mode 100644 index 00000000000..a90ddcf5847 --- /dev/null +++ b/tests/wpt/tests/dom/ranges/Range-isPointInRange-shadowdom.tentative.html @@ -0,0 +1,75 @@ + +Range.isPointInRange() with ShadowDOM selection tests + +
+ + +Start +
+ +
+End + diff --git a/tests/wpt/tests/dpub-aam/role/roles.html b/tests/wpt/tests/dpub-aam/role/roles.html index b9840976e1f..62e33b95fa7 100644 --- a/tests/wpt/tests/dpub-aam/role/roles.html +++ b/tests/wpt/tests/dpub-aam/role/roles.html @@ -28,6 +28,7 @@ AriaUtils.assignAndVerifyRolesByRoleNames([ "doc-colophon", "doc-conclusion", "doc-cover", + "doc-credit", "doc-credits", "doc-dedication", // "doc-endnote", // deprecated @@ -60,4 +61,5 @@ AriaUtils.assignAndVerifyRolesByRoleNames([ - \ No newline at end of file + + diff --git a/tests/wpt/tests/editing/edit-context/WEB_FEATURES.yml b/tests/wpt/tests/editing/edit-context/WEB_FEATURES.yml new file mode 100644 index 00000000000..284280066aa --- /dev/null +++ b/tests/wpt/tests/editing/edit-context/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: edit-context + files: "**" diff --git a/tests/wpt/tests/fenced-frame/setting-null-config-navigates-to-about-blank.https.html b/tests/wpt/tests/fenced-frame/setting-null-config-navigates-to-about-blank.https.html index 2595fd64c92..c8322dab199 100644 --- a/tests/wpt/tests/fenced-frame/setting-null-config-navigates-to-about-blank.https.html +++ b/tests/wpt/tests/fenced-frame/setting-null-config-navigates-to-about-blank.https.html @@ -1,4 +1,5 @@ + @@ -11,13 +12,13 @@ + + + + + + diff --git a/tests/wpt/tests/fetch/compression-dictionary/dictionary-clear-site-data-cookies.tentative.https.html b/tests/wpt/tests/fetch/compression-dictionary/dictionary-clear-site-data-cookies.tentative.https.html new file mode 100644 index 00000000000..aa1673e88c8 --- /dev/null +++ b/tests/wpt/tests/fetch/compression-dictionary/dictionary-clear-site-data-cookies.tentative.https.html @@ -0,0 +1,27 @@ + + + + + + + + + + + diff --git a/tests/wpt/tests/fetch/compression-dictionary/dictionary-clear-site-data-storage.tentative.https.html b/tests/wpt/tests/fetch/compression-dictionary/dictionary-clear-site-data-storage.tentative.https.html new file mode 100644 index 00000000000..22747eb6565 --- /dev/null +++ b/tests/wpt/tests/fetch/compression-dictionary/dictionary-clear-site-data-storage.tentative.https.html @@ -0,0 +1,27 @@ + + + + + + + + + + + diff --git a/tests/wpt/tests/fetch/compression-dictionary/dictionary-clear-site-data.tentative.https.html b/tests/wpt/tests/fetch/compression-dictionary/dictionary-clear-site-data.tentative.https.html deleted file mode 100644 index b583834831f..00000000000 --- a/tests/wpt/tests/fetch/compression-dictionary/dictionary-clear-site-data.tentative.https.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - diff --git a/tests/wpt/tests/fetch/compression-dictionary/dictionary-decompression.tentative.https.html b/tests/wpt/tests/fetch/compression-dictionary/dictionary-decompression.tentative.https.html index cd206258160..c7b3b7c3a5a 100644 --- a/tests/wpt/tests/fetch/compression-dictionary/dictionary-decompression.tentative.https.html +++ b/tests/wpt/tests/fetch/compression-dictionary/dictionary-decompression.tentative.https.html @@ -1,6 +1,7 @@ + diff --git a/tests/wpt/tests/fetch/compression-dictionary/dictionary-fetch-with-link-element.tentative.https.html b/tests/wpt/tests/fetch/compression-dictionary/dictionary-fetch-with-link-element.tentative.https.html index 71a9b1c0509..23a271d4818 100644 --- a/tests/wpt/tests/fetch/compression-dictionary/dictionary-fetch-with-link-element.tentative.https.html +++ b/tests/wpt/tests/fetch/compression-dictionary/dictionary-fetch-with-link-element.tentative.https.html @@ -1,6 +1,7 @@ + diff --git a/tests/wpt/tests/fetch/compression-dictionary/dictionary-fetch-with-link-header.tentative.https.html b/tests/wpt/tests/fetch/compression-dictionary/dictionary-fetch-with-link-header.tentative.https.html index a3ffd8ba74a..6f6a792ade6 100644 --- a/tests/wpt/tests/fetch/compression-dictionary/dictionary-fetch-with-link-header.tentative.https.html +++ b/tests/wpt/tests/fetch/compression-dictionary/dictionary-fetch-with-link-header.tentative.https.html @@ -1,6 +1,7 @@ + diff --git a/tests/wpt/tests/fetch/compression-dictionary/dictionary-registration.tentative.https.html b/tests/wpt/tests/fetch/compression-dictionary/dictionary-registration.tentative.https.html index 7921b129466..f0782aff3bd 100644 --- a/tests/wpt/tests/fetch/compression-dictionary/dictionary-registration.tentative.https.html +++ b/tests/wpt/tests/fetch/compression-dictionary/dictionary-registration.tentative.https.html @@ -1,6 +1,7 @@ + diff --git a/tests/wpt/tests/fetch/compression-dictionary/resources/compression-dictionary-util.js b/tests/wpt/tests/fetch/compression-dictionary/resources/compression-dictionary-util.js index 46d95041d8c..7d86f594a80 100644 --- a/tests/wpt/tests/fetch/compression-dictionary/resources/compression-dictionary-util.js +++ b/tests/wpt/tests/fetch/compression-dictionary/resources/compression-dictionary-util.js @@ -6,8 +6,8 @@ const kRegisterDictionaryPath = './resources/register-dictionary.py'; const kCompressedDataPath = './resources/compressed-data.py'; const kExpectedCompressedData = `This is compressed test data using a test dictionary`; -const kCheckAvailableDictionaryHeaderMaxRetry = 5; -const kCheckAvailableDictionaryHeaderRetryTimeout = 100; +const kCheckAvailableDictionaryHeaderMaxRetry = 10; +const kCheckAvailableDictionaryHeaderRetryTimeout = 200; const kCheckPreviousRequestHeadersMaxRetry = 5; const kCheckPreviousRequestHeadersRetryTimeout = 250; diff --git a/tests/wpt/tests/fledge/tentative/auction-config-passed-to-worklets.https.window.js b/tests/wpt/tests/fledge/tentative/auction-config-passed-to-worklets.https.window.js index 9b12d077baf..7780957739e 100644 --- a/tests/wpt/tests/fledge/tentative/auction-config-passed-to-worklets.https.window.js +++ b/tests/wpt/tests/fledge/tentative/auction-config-passed-to-worklets.https.window.js @@ -80,6 +80,18 @@ makeTest({ auctionConfigOverrides: {seller: ` ${OTHER_ORIGIN1.toUpperCase()} `} }); +makeTest({ + name: 'AuctionConfig.deprecatedRenderURLReplacements with brackets.', + fieldName: 'deprecatedRenderURLReplacements', + fieldValue: {'${EXAMPLE_MACRO}': 'SSP'}, +}); + +makeTest({ + name: 'AuctionConfig.deprecatedRenderURLReplacements with percents.', + fieldName: 'deprecatedRenderURLReplacements', + fieldValue: {'%%EXAMPLE_MACRO%%': 'SSP'}, +}); + makeTest({ name: 'AuctionConfig.seller is URL.', fieldName: 'seller', diff --git a/tests/wpt/tests/fledge/tentative/auction-config.https.window.js b/tests/wpt/tests/fledge/tentative/auction-config.https.window.js index 5fa4fa252fd..28ed1470718 100644 --- a/tests/wpt/tests/fledge/tentative/auction-config.https.window.js +++ b/tests/wpt/tests/fledge/tentative/auction-config.https.window.js @@ -12,7 +12,8 @@ // META: variant=?31-35 // META: variant=?36-40 // META: variant=?40-45 -// META: variant=?46-last +// META: variant=?45-50 +// META: variant=?50-last "use strict;" @@ -109,6 +110,62 @@ const EXPECT_PROMISE_ERROR = auctionResult => { "did not get expected error type: " + auctionResult); } +makeTest({ + name: 'deprecatedRenderURLReplacements without end bracket is invalid.', + expect: EXPECT_PROMISE_ERROR, + expectPromiseError: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: {deprecatedRenderURLReplacements: {'${No_End_Bracket': 'SSP'}} +}); + +makeTest({ + name: 'deprecatedRenderURLReplacements without percents and brackets.', + expect: EXPECT_PROMISE_ERROR, + expectPromiseError: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: {deprecatedRenderURLReplacements: {'No_Wrapper': 'SSP'}} +}); + +makeTest({ + name: 'deprecatedRenderURLReplacements without dollar sign.', + expect: EXPECT_PROMISE_ERROR, + expectPromiseError: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: {deprecatedRenderURLReplacements: {'{No_Dollar_Sign}': 'SSP'}} +}); + +makeTest({ + name: 'deprecatedRenderURLReplacements without start bracket is invalid.', + expect: EXPECT_PROMISE_ERROR, + expectPromiseError: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: {deprecatedRenderURLReplacements: {'$No_Start_Bracket}': 'SSP'}} +}); + +makeTest({ + name: 'deprecatedRenderURLReplacements mix and match is invalid.', + expect: EXPECT_PROMISE_ERROR, + expectPromiseError: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: {deprecatedRenderURLReplacements: {'${Bracket_And_Percent%%': 'SSP'}} +}); + +makeTest({ + name: 'deprecatedRenderURLReplacements missing start percent is invalid.', + expect: EXPECT_PROMISE_ERROR, + expectPromiseError: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: {deprecatedRenderURLReplacements: {'%Missing_Start_Percents%%': 'SSP'}} +}); + +makeTest({ + name: 'deprecatedRenderURLReplacements single percents is invalid.', + expect: EXPECT_PROMISE_ERROR, + expectPromiseError: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: {deprecatedRenderURLReplacements: {'%Single_Percents%': 'SSP'}} +}); + +makeTest({ + name: 'deprecatedRenderURLReplacements without end percents is invalid.', + expect: EXPECT_PROMISE_ERROR, + expectPromiseError: EXPECT_EXCEPTION(TypeError), + auctionConfigOverrides: {deprecatedRenderURLReplacements: {'%%No_End_Percents': 'SSP'}} +}); + makeTest({ name: 'no buyers => no winners', expect: EXPECT_NO_WINNER, diff --git a/tests/wpt/tests/fledge/tentative/component-ads.https.window.js b/tests/wpt/tests/fledge/tentative/component-ads.https.window.js index 6b22585d578..8493025429e 100644 --- a/tests/wpt/tests/fledge/tentative/component-ads.https.window.js +++ b/tests/wpt/tests/fledge/tentative/component-ads.https.window.js @@ -44,13 +44,25 @@ function createComponentAdRenderURL(uuid, id) { // // If "adMetadata" is true, metadata is added to each component ad. Only integer metadata // is used, relying on renderURL tests to cover other types of renderURL metadata. +// +// If "deprecatedRenderURLReplacements" is passed, the matches and replacements will be +// used in the trackingURLs and the object will be passed into the auctionConfig, to +// replace matching macros within the renderURLs. async function runComponentAdLoadingTest(test, uuid, numComponentAdsInInterestGroup, - componentAdsInBid, componentAdsToLoad, - adMetadata = false) { + componentAdsInBid, componentAdsToLoad, + adMetadata = false, deprecatedRenderURLReplacements = null) { let interestGroupAdComponents = []; + // These are used within the URLs for deprecatedRenderURLReplacement tests. + const renderURLReplacementsStrings = createStringBeforeAndAfterReplacements(deprecatedRenderURLReplacements); + const beforeReplacementsString= renderURLReplacementsStrings.beforeReplacements; + const afterReplacementsString = renderURLReplacementsStrings.afterReplacements; + for (let i = 0; i < numComponentAdsInInterestGroup; ++i) { - const componentRenderURL = createComponentAdRenderURL(uuid, i); - let adComponent = {renderURL: componentRenderURL}; + let componentRenderURL = createComponentAdRenderURL(uuid, i); + if (deprecatedRenderURLReplacements !== null) { + componentRenderURL = createTrackerURL(window.location.origin, uuid, 'track_get', beforeReplacementsString); + } + let adComponent = { renderURL: componentRenderURL }; if (adMetadata) adComponent.metadata = i; interestGroupAdComponents.push(adComponent); @@ -74,7 +86,7 @@ async function runComponentAdLoadingTest(test, uuid, numComponentAdsInInterestGr eventData: status, destination: ["buyer"]});`); - let bid = {bid:1, render: renderURL}; + let bid = {bid:1, render:renderURL}; if (componentAdsInBid) { bid.adComponents = []; for (let index of componentAdsInBid) { @@ -89,8 +101,13 @@ async function runComponentAdLoadingTest(test, uuid, numComponentAdsInInterestGr // to "expectedTrackerURLs". if (componentAdsToLoad && bid.adComponents) { for (let index of componentAdsToLoad) { + let expectedURL = createComponentAdTrackerURL(uuid, componentAdsInBid[index]); + if (deprecatedRenderURLReplacements != null) { + expectedURL = createTrackerURL(window.location.origin, uuid, 'track_get', + afterReplacementsString); + } if (index < componentAdsInBid.length) - expectedTrackerURLs.push(createComponentAdTrackerURL(uuid, componentAdsInBid[index])); + expectedTrackerURLs.push(expectedURL); } } @@ -127,11 +144,13 @@ async function runComponentAdLoadingTest(test, uuid, numComponentAdsInInterestGr test, uuid, {decisionLogicURL: createDecisionScriptURL( uuid, - { scoreAd: + { scoreAd: `if (JSON.stringify(browserSignals.adComponents) !== '${JSON.stringify(bid.adComponents)}') { throw "Unexpected adComponents: " + JSON.stringify(browserSignals.adComponents); - }`})}); + }`}), + deprecatedRenderURLReplacements: deprecatedRenderURLReplacements + }); } await waitForObservedRequests(uuid, expectedTrackerURLs); @@ -447,3 +466,27 @@ subsetTest(promise_test, async test => { }, 'Reports not sent from component ad.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await runComponentAdLoadingTest(test, uuid, /*numComponentAdsInInterestGroup=*/1, + /*componentAdsInBid=*/[0], /*componentAdsToLoad=*/[0], false, { '%%EXAMPLE-MACRO%%': 'SSP' }); +}, 'component ad with render url replacements with percents.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await runComponentAdLoadingTest(test, uuid, /*numComponentAdsInInterestGroup=*/1, + /*componentAdsInBid=*/[0], /*componentAdsToLoad=*/[0], false, { '${EXAMPLE-MACRO}': 'SSP' }); +}, 'component ad with render url replacements with brackets.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await runComponentAdLoadingTest(test, uuid, /*numComponentAdsInInterestGroup=*/1, + /*componentAdsInBid=*/[0], /*componentAdsToLoad=*/[0], false, { '${EXAMPLE-MACRO-1}': 'SSP-1', '%%EXAMPLE-MACRO-2%%': 'SSP-2' }); +}, 'component ad with render url replacements with multiple replacements.'); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + await runComponentAdLoadingTest(test, uuid, /*numComponentAdsInInterestGroup=*/3, + /*componentAdsInBid=*/[0,1,2], /*componentAdsToLoad=*/[0,1,2], false, { '${EXAMPLE-MACRO-1}': 'SSP-1', '%%EXAMPLE-MACRO-2%%': 'SSP-2' }); +}, 'component ad with render url replacements with multiple replacements, and multiple component ads.'); diff --git a/tests/wpt/tests/fledge/tentative/component-auction.https.window.js b/tests/wpt/tests/fledge/tentative/component-auction.https.window.js index 015c20a5c24..bf804e68579 100644 --- a/tests/wpt/tests/fledge/tentative/component-auction.https.window.js +++ b/tests/wpt/tests/fledge/tentative/component-auction.https.window.js @@ -11,18 +11,21 @@ "use strict"; // Creates an AuctionConfig with a single component auction. -function createComponentAuctionConfig(uuid) { +function createComponentAuctionConfig(uuid, auctionConfigOverrides = {}, + deprecatedRenderURLReplacements = {}) { let componentAuctionConfig = { seller: window.location.origin, decisionLogicURL: createDecisionScriptURL(uuid), - interestGroupBuyers: [window.location.origin] + interestGroupBuyers: [window.location.origin], + deprecatedRenderURLReplacements: deprecatedRenderURLReplacements }; return { seller: window.location.origin, decisionLogicURL: createDecisionScriptURL(uuid), interestGroupBuyers: [], - componentAuctions: [componentAuctionConfig] + componentAuctions: [componentAuctionConfig], + ...auctionConfigOverrides }; } @@ -717,3 +720,118 @@ subsetTest(promise_test, async test => { uuid, [bidderReportURL1, seller1ReportURL, bidderReportURL2, seller2ReportURL]); }, `Component auction prevWinsMs and numBids updating in one component seller's auction, read in another's.`); + + +const makeDeprecatedRenderURLReplacementTest = ({ + name, + deprecatedRenderURLReplacements, +}) => { + subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + + let bidderReportURL = createBidderReportURL(uuid); + let componentSellerReportURL = createSellerReportURL(uuid, /*id=*/"component"); + let topLevelSellerReportURL = createSellerReportURL(uuid, /*id=*/"top"); + + // These are used within the URLs for deprecatedRenderURLReplacement tests. + const renderURLReplacementsStrings = createStringBeforeAndAfterReplacements(deprecatedRenderURLReplacements); + const beforeReplacementsString = renderURLReplacementsStrings.beforeReplacements; + const afterReplacementsString = renderURLReplacementsStrings.afterReplacements; + const renderURLBeforeReplacements = createTrackerURL(window.location.origin, uuid, 'track_get', beforeReplacementsString); + const renderURLAfterReplacements = createTrackerURL(window.location.origin, uuid, 'track_get', afterReplacementsString); + + await joinInterestGroup( + test, uuid, + { + ads: [{ renderURL: renderURLBeforeReplacements }], + biddingLogicURL: createBiddingScriptURL( + { + allowComponentAuction: true, + bid: 5, + reportWin: + `if (browserSignals.bid !== 5) + throw "Unexpected bid: " + browserSignals.bid; + sendReportTo("${bidderReportURL}");` + }) + }); + + let auctionConfig = createComponentAuctionConfig(uuid, {}, deprecatedRenderURLReplacements); + + auctionConfig.componentAuctions[0].decisionLogicURL = + createDecisionScriptURL( + uuid, + { + scoreAd: + `if (bid !== 5) + throw "Unexpected component bid: " + bid`, + reportResult: + `if (browserSignals.bid !== 5) + throw "Unexpected component bid: " + browserSignals.bid; + if (browserSignals.modifiedBid !== undefined) + throw "Unexpected component modifiedBid: " + browserSignals.modifiedBid; + sendReportTo("${componentSellerReportURL}");` + }); + + auctionConfig.decisionLogicURL = + createDecisionScriptURL( + uuid, + { + scoreAd: + `if (bid !== 5) + throw "Unexpected top-level bid: " + bid`, + reportResult: + `if (browserSignals.bid !== 5) + throw "Unexpected top-level bid: " + browserSignals.bid; + if (browserSignals.modifiedBid !== undefined) + throw "Unexpected top-level modifiedBid: " + browserSignals.modifiedBid; + sendReportTo("${topLevelSellerReportURL}");` + }); + + await runBasicFledgeAuctionAndNavigate(test, uuid, auctionConfig); + await waitForObservedRequests( + uuid, + [bidderReportURL, componentSellerReportURL, topLevelSellerReportURL, renderURLAfterReplacements]); + }, name); +}; + +makeDeprecatedRenderURLReplacementTest({ + name: 'Replacements with brackets.', + deprecatedRenderURLReplacements: { '${EXAMPLE-MACRO}': 'SSP' } +}); + +makeDeprecatedRenderURLReplacementTest({ + name: 'Replacements with percents.', + deprecatedRenderURLReplacements: { '%%EXAMPLE-MACRO%%': 'SSP' } +}); + +makeDeprecatedRenderURLReplacementTest({ + name: 'Replacements with multiple replacements.', + deprecatedRenderURLReplacements: { '${EXAMPLE-MACRO1}': 'SSP1', '%%EXAMPLE-MACRO2%%': 'SSP2' } +}); + +subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + let deprecatedRenderURLReplacements = { '${EXAMPLE-MACRO1}': 'SSP1', '%%EXAMPLE-MACRO2%%': 'SSP2' }; + const renderURLReplacementsStrings = createStringBeforeAndAfterReplacements(deprecatedRenderURLReplacements); + let beforeReplacementsString = renderURLReplacementsStrings.beforeReplacements; + + await joinInterestGroup( + test, uuid, + { + ads: [{ renderURL: createTrackerURL(window.location.origin, uuid, 'track_get', beforeReplacementsString) }], + biddingLogicURL: createBiddingScriptURL({allowComponentAuction: true}) + }); + let auctionConfigOverride = {deprecatedRenderURLReplacements: deprecatedRenderURLReplacements } + let auctionConfig = createComponentAuctionConfig(uuid,/*auctionConfigOverride=*/auctionConfigOverride, + /*deprecatedRenderURLReplacements=*/deprecatedRenderURLReplacements); + + auctionConfig.componentAuctions[0].decisionLogicURL = createDecisionScriptURL(uuid); + + try { + await runBasicFledgeAuction(test, uuid, auctionConfig); + } catch (exception) { + assert_true(exception instanceof TypeError, "did not get expected error: " + exception); + return; + } + throw 'Exception unexpectedly not thrown.' +}, "deprecatedRenderURLReplacements cause error if passed in top level auction and component auction."); diff --git a/tests/wpt/tests/fledge/tentative/deprecated-render-url-replacements.https.window.js b/tests/wpt/tests/fledge/tentative/deprecated-render-url-replacements.https.window.js new file mode 100644 index 00000000000..4f8bc1cc7f0 --- /dev/null +++ b/tests/wpt/tests/fledge/tentative/deprecated-render-url-replacements.https.window.js @@ -0,0 +1,196 @@ +// META: script=/resources/testdriver.js +// META: script=/common/utils.js +// META: script=resources/fledge-util.sub.js +// META: script=/common/subset-tests.js +// META: timeout=long +// META: variant=?1-5 +// META: variant=?6-10 +// META: variant=?11-15 +// META: variant=?16-last + + +"use strict;" + +// This test ensures proper handling of deprecatedRenderURLReplacements within auctionConfigOverrides. +// It validates that these replacements are correctly applied to the winning bid's renderURL by +// injecting a URL with matching macros into an interest group and ensuring that a new url with +// the replacements in it, is tracked and observed. +const makeTest = ({ + // Test name + name, + // Overrides to the interest group. + interestGroupOverrides = {}, + // Overrides to the auction config. + auctionConfigOverrides = {}, + // This is what goes into the renderURL and is expected to be replaced. + beforeReplacements, + // This is what's expected when 'beforeReplacements' is replaced. + afterReplacements, +}) => { + subsetTest(promise_test, async test => { + const uuid = generateUuid(test); + let urlBeforeReplacements = createTrackerURL(window.location.origin, uuid, 'track_get', beforeReplacements); + let urlAfterReplacements = createTrackerURL(window.location.origin, uuid, 'track_get', afterReplacements); + interestGroupOverrides.ads = [{ renderURL: urlBeforeReplacements }]; + await joinInterestGroup(test, uuid, interestGroupOverrides); + + await runBasicFledgeAuctionAndNavigate(test, uuid, auctionConfigOverrides); + await waitForObservedRequests( + uuid, + [urlAfterReplacements, createSellerReportURL(uuid), createBidderReportURL(uuid)]); + }, name); +}; + +makeTest({ + name: 'Replacements with brackets.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '${EXAMPLE-MACRO}': 'SSP' } + }, + beforeReplacements: "${EXAMPLE-MACRO}", + afterReplacements: 'SSP', + +}); + +makeTest({ + name: 'Replacements with percents.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '%%EXAMPLE-MACRO%%': 'SSP' } + }, + beforeReplacements: "%%EXAMPLE-MACRO%%", + afterReplacements: 'SSP', +}); + +makeTest({ + name: 'Multiple replacements within a URL.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '${EXAMPLE-MACRO1}': 'SSP1', '%%EXAMPLE-MACRO2%%': 'SSP2' } + }, + beforeReplacements: "${EXAMPLE-MACRO1}/%%EXAMPLE-MACRO2%%", + afterReplacements: 'SSP1/SSP2', +}); + +makeTest({ + name: 'Recursive and reduce size with brackets.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '${1}': '1' } + }, + beforeReplacements: "${${${1}}}", + afterReplacements: "${${1}}" +}); + +makeTest({ + name: 'Recursive and increase size with brackets.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '${1}': '${${1}}' } + }, + beforeReplacements: "${1}", + afterReplacements: "${${1}}" +}); + +makeTest({ + name: 'Replacements use a single pass with brackets.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '${1}': '${2}', '${2}': '${1}' } + }, + beforeReplacements: "${1}${2}", + afterReplacements: "${2}${1}" +}); + +makeTest({ + name: 'Multiple instances of same substitution string with brackets.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '${1}': '${2}' } + }, + beforeReplacements: "{${1}${1}}", + afterReplacements: "{${2}${2}}" +}); + +makeTest({ + name: 'Mismatched replacement with brackets.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '${2}': '${1}' } + }, + beforeReplacements: "${1}", + afterReplacements: "${1}" +}); + +makeTest({ + name: 'Recursive and reduce size with percents.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '%%1%%': '1' } + }, + beforeReplacements: "%%%%1%%%%", + afterReplacements: "%%1%%" +}); + +makeTest({ + name: 'Recursive and increase size with percents.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '%%1%%': '%%%%1%%%%' } + }, + beforeReplacements: "%%1%%", + afterReplacements: "%%%%1%%%%" +}); + +makeTest({ + name: 'Replacements use a single pass with percents.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '%%1%%': '%%2%%', '%%2%%': '%%1%%' } + }, + beforeReplacements: "%%1%%%%2%%", + afterReplacements: "%%2%%%%1%%" +}); + +makeTest({ + name: 'Multiple instances of same substitution string with percents.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '%%1%%': '%%2%%' } + }, + beforeReplacements: "%%1%%%%1%%", + afterReplacements: "%%2%%%%2%%" +}); + +makeTest({ + name: 'Mismatched replacement with percents.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '%%2%%': '%%1%%' } + }, + beforeReplacements: "%%1%%", + afterReplacements: "%%1%%" +}); + +makeTest({ + name: 'Case sensativity.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '%%foo%%': '%%bar%%' } + }, + beforeReplacements: "%%FOO%%%%foo%%", + afterReplacements: "%%FOO%%%%bar%%" +}); + +makeTest({ + name: 'Super macro, a macro with a macro inside it basically, with percents.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '%%%%foo%%%%': 'foo' } + }, + beforeReplacements: "%%%%foo%%%%", + afterReplacements: "foo" +}); + +makeTest({ + name: 'Super macro, with brackets.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '${${foo}}': 'foo' } + }, + beforeReplacements: "${${foo}}", + afterReplacements: "foo" +}); + +makeTest({ + name: 'Super macro, with both.', + auctionConfigOverrides: { + deprecatedRenderURLReplacements: { '${%%foo%%}': 'foo', '%%${bar}%%':'bar' } + }, + beforeReplacements: "${%%foo%%}%%${bar}%%", + afterReplacements: "foobar" +}); diff --git a/tests/wpt/tests/fledge/tentative/resources/fledge-util.sub.js b/tests/wpt/tests/fledge/tentative/resources/fledge-util.sub.js index 32162e933a5..a7d0f63830d 100644 --- a/tests/wpt/tests/fledge/tentative/resources/fledge-util.sub.js +++ b/tests/wpt/tests/fledge/tentative/resources/fledge-util.sub.js @@ -151,19 +151,21 @@ async function waitForObservedRequests(uuid, expectedRequests, filter) { trackedRequests = trackedRequests.filter(filter); } - // If expected number of requests have been observed, compare with list of - // all expected requests and exit. - if (trackedRequests.length >= expectedRequests.length) { - assert_array_equals(trackedRequests, expectedRequests); - break; - } - // If fewer than total number of expected requests have been observed, // compare what's been received so far, to have a greater chance to fail // rather than hang on error. for (const trackedRequest of trackedRequests) { assert_in_array(trackedRequest, expectedRequests); } + + // If expected number of requests have been observed, compare with list of + // all expected requests and exit. This check was previously before the for loop, + // but was swapped in order to avoid flakiness with failing tests and their + // respective *-expected.txt. + if (trackedRequests.length >= expectedRequests.length) { + assert_array_equals(trackedRequests, expectedRequests); + break; + } } } @@ -839,3 +841,21 @@ let additionalBidHelper = function() { fetchAdditionalBids: fetchAdditionalBids }; }(); + + +// DeprecatedRenderURLReplacements helper function. +// Returns an object containing sample strings both before and after the +// replacements in 'replacements' have been applied by +// deprecatedRenderURLReplacements. All substitution strings will appear +// only once in the output strings. +function createStringBeforeAndAfterReplacements(deprecatedRenderURLReplacements) { + let beforeReplacements = ''; + let afterReplacements = ''; + if(deprecatedRenderURLReplacements){ + for (const [match, replacement] of Object.entries(deprecatedRenderURLReplacements)) { + beforeReplacements += match + "/"; + afterReplacements += replacement + "/"; + } + } + return { beforeReplacements, afterReplacements }; +} diff --git a/tests/wpt/tests/fledge/tentative/resources/trusted-bidding-signals.py b/tests/wpt/tests/fledge/tentative/resources/trusted-bidding-signals.py index f9ca9031f1c..955a7c0bdfa 100644 --- a/tests/wpt/tests/fledge/tentative/resources/trusted-bidding-signals.py +++ b/tests/wpt/tests/fledge/tentative/resources/trusted-bidding-signals.py @@ -1,3 +1,4 @@ +import collections import json from urllib.parse import unquote_plus @@ -47,7 +48,8 @@ def main(request, response): response.status = (200, b"OK") # The JSON representation of this is used as the response body. This does - # not currently include a "perInterestGroupData" object. + # not currently include a "perInterestGroupData" object except for + # updateIfOlderThanMs. responseBody = {"keys": {}} # Set when certain special keys are observed, used in place of the JSON @@ -117,6 +119,22 @@ def main(request, response): if "data-version" in interestGroupNames: dataVersion = "4" + per_interest_group_data = collections.defaultdict(dict) + for name in interestGroupNames: + if name == "use-update-if-older-than-ms": + # One hour in milliseconds. + per_interest_group_data[name]["updateIfOlderThanMs"] = 3_600_000 + elif name == "use-update-if-older-than-ms-small": + # A value less than the minimum of 10 minutes. + per_interest_group_data[name]["updateIfOlderThanMs"] = 1 + elif name == "use-update-if-older-than-ms-zero": + per_interest_group_data[name]["updateIfOlderThanMs"] = 0 + elif name == "use-update-if-older-than-ms-negative": + per_interest_group_data[name]["updateIfOlderThanMs"] = -1 + + if per_interest_group_data: + responseBody["perInterestGroupData"] = dict(per_interest_group_data) + if contentType: response.headers.set("Content-Type", contentType) if adAuctionAllowed: diff --git a/tests/wpt/tests/fledge/tentative/trusted-bidding-signals.https.window.js b/tests/wpt/tests/fledge/tentative/trusted-bidding-signals.https.window.js index d0b9a820863..905abf8381e 100644 --- a/tests/wpt/tests/fledge/tentative/trusted-bidding-signals.https.window.js +++ b/tests/wpt/tests/fledge/tentative/trusted-bidding-signals.https.window.js @@ -17,7 +17,8 @@ // META: variant=?56-60 // META: variant=?61-65 // META: variant=?66-70 -// META: variant=?71-last +// META: variant=?71-75 +// META: variant=?76-last "use strict"; @@ -938,4 +939,44 @@ subsetTest(promise_test, async test => { ] ); runBasicFledgeTestExpectingWinner(test, uuid); -}, 'Trusted bidding signals splits the request if the combined URL length exceeds the limit of small value.'); \ No newline at end of file +}, 'Trusted bidding signals splits the request if the combined URL length exceeds the limit of small value.'); + +///////////////////////////////////////////////////////////////////////////// +// updateIfOlderThanMs tests +// +// NOTE: Due to the lack of mock time in wpt, these test just exercise the code +// paths and ensure that no crash occurs -- they don't otherwise verify +// behavior. +///////////////////////////////////////////////////////////////////////////// + +subsetTest(promise_test, async test => { + await runTrustedBiddingSignalsTest( + test, + 'true', + { name: 'use-update-if-older-than-ms', + trustedBiddingSignalsURL: TRUSTED_BIDDING_SIGNALS_URL }); +}, 'Trusted bidding signals response has updateIfOlderThanMs > 10 min.'); + +subsetTest(promise_test, async test => { + await runTrustedBiddingSignalsTest( + test, + 'true', + { name: 'use-update-if-older-than-ms-small', + trustedBiddingSignalsURL: TRUSTED_BIDDING_SIGNALS_URL }); +}, 'Trusted bidding signals response has updateIfOlderThanMs == 1 ms.'); + +subsetTest(promise_test, async test => { + await runTrustedBiddingSignalsTest( + test, + 'true', + { name: 'use-update-if-older-than-ms-zero', + trustedBiddingSignalsURL: TRUSTED_BIDDING_SIGNALS_URL }); +}, 'Trusted bidding signals response has updateIfOlderThanMs == 0 ms.'); + +subsetTest(promise_test, async test => { + await runTrustedBiddingSignalsTest( + test, + 'true', + { name: 'use-update-if-older-than-ms-negative', + trustedBiddingSignalsURL: TRUSTED_BIDDING_SIGNALS_URL }); +}, 'Trusted bidding signals response has updateIfOlderThanMs == -1 ms.'); diff --git a/tests/wpt/tests/focus/cross-origin-ancestor-activeelement-after-child-lose-focus.sub.html b/tests/wpt/tests/focus/cross-origin-ancestor-activeelement-after-child-lose-focus.sub.html index 35844bc91fb..1b84b43f1c4 100644 --- a/tests/wpt/tests/focus/cross-origin-ancestor-activeelement-after-child-lose-focus.sub.html +++ b/tests/wpt/tests/focus/cross-origin-ancestor-activeelement-after-child-lose-focus.sub.html @@ -20,36 +20,32 @@ function runTest() { const innerIFrame = outerIFrame.contentDocument.createElement("iframe"); - window.onmessage = function() { + window.onmessage = function(event) { + if (event.data != "ready") { + return; + } + + // We receive an message when the innerIFrame is ready and its input is focused. + // outerIframe is the ancestor of inner iframe, so the activeElement of + // it should be the inner iframe. + assert_equals(outerIFrame.contentDocument.activeElement, innerIFrame, + "The activeElement of the outer iframe should be the inner iframe"); + + // Now we focus the input in the top level + document.querySelector("input").focus(); + // Wait for a bit to let whatever the code that might change the focus to run window.requestAnimationFrame(function() { window.requestAnimationFrame(function() { window.requestAnimationFrame(function() { - - // We receive an message when the innerIFrame is ready and its input is focused. - // outerIframe is the ancestor of inner iframe, so the activeElement of - // it should be the inner iframe. - assert_equals(outerIFrame.contentDocument.activeElement, innerIFrame, - "The activeElement of the outer iframe should be the inner iframe"); - - // Now we focus the input in the top level - document.querySelector("input").focus(); - - // Wait for a bit to let whatever the code that might change the focus to run - window.requestAnimationFrame(function() { - window.requestAnimationFrame(function() { - window.requestAnimationFrame(function() { - // Since inner iframe lost its focus, the activeElement of outer iframe - // should be cleared as well, hence should be focused. - assert_equals(outerIFrame.contentDocument.activeElement, outerIFrame.contentDocument.body, - "The activeElement of the outer iframe should be reverted back to "); - assert_equals(document.activeElement, document.querySelector("input"), - "The activeElement of the top-level document should the input"); - done(); - }); - }); - }); - }); + // Since inner iframe lost its focus, the activeElement of outer iframe + // should be cleared as well, hence should be focused. + assert_equals(outerIFrame.contentDocument.activeElement, outerIFrame.contentDocument.body, + "The activeElement of the outer iframe should be reverted back to "); + assert_equals(document.activeElement, document.querySelector("input"), + "The activeElement of the top-level document should the input"); + done(); + }) }); }); } diff --git a/tests/wpt/tests/focus/support/cross-origin-ancestor-activeelement-after-child-lose-focus-helper.html b/tests/wpt/tests/focus/support/cross-origin-ancestor-activeelement-after-child-lose-focus-helper.html index 83d39d5c70d..fe966145172 100644 --- a/tests/wpt/tests/focus/support/cross-origin-ancestor-activeelement-after-child-lose-focus-helper.html +++ b/tests/wpt/tests/focus/support/cross-origin-ancestor-activeelement-after-child-lose-focus-helper.html @@ -2,8 +2,10 @@ diff --git a/tests/wpt/tests/geolocation-API/disabled-by-permissions-policy.https.sub.html b/tests/wpt/tests/geolocation-API/disabled-by-permissions-policy.https.sub.html index 6bd3e3500bc..f374a58f785 100644 --- a/tests/wpt/tests/geolocation-API/disabled-by-permissions-policy.https.sub.html +++ b/tests/wpt/tests/geolocation-API/disabled-by-permissions-policy.https.sub.html @@ -12,13 +12,10 @@ const same_origin_src = "/permissions-policy/resources/permissions-policy-geolocation.html"; const cross_origin_src = - "https://{{hosts[][]}}:{{ports[https][0]}}" + same_origin_src; + "https://{{hosts[alt][]}}:{{ports[https][0]}}" + same_origin_src; promise_test(async (t) => { - await test_driver.set_permission( - { name: "geolocation" }, - "granted" - ); + await test_driver.set_permission({ name: "geolocation" }, "granted"); const posError = await new Promise((resolve, reject) => { navigator.geolocation.getCurrentPosition(reject, resolve); diff --git a/tests/wpt/tests/geolocation-API/enabled-by-permission-policy-attribute-redirect-on-load.https.sub.html b/tests/wpt/tests/geolocation-API/enabled-by-permission-policy-attribute-redirect-on-load.https.sub.html index 864fb5e7613..c2a2b09fc65 100644 --- a/tests/wpt/tests/geolocation-API/enabled-by-permission-policy-attribute-redirect-on-load.https.sub.html +++ b/tests/wpt/tests/geolocation-API/enabled-by-permission-policy-attribute-redirect-on-load.https.sub.html @@ -10,7 +10,7 @@ const base_src = "/permissions-policy/resources/redirect-on-load.html#"; const same_origin_src = base_src + relative_path; const cross_origin_src = - `${base_src}https://{{hosts[][]}}:{{ports[https][0]}}${relative_path}`; + `${base_src}https://{{hosts[alt][]}}:{{ports[https][0]}}${relative_path}`; async_test(t => { test_feature_availability( diff --git a/tests/wpt/tests/geolocation-API/enabled-by-permission-policy-attribute.https.sub.html b/tests/wpt/tests/geolocation-API/enabled-by-permission-policy-attribute.https.sub.html index 018409b8290..50b8475b810 100644 --- a/tests/wpt/tests/geolocation-API/enabled-by-permission-policy-attribute.https.sub.html +++ b/tests/wpt/tests/geolocation-API/enabled-by-permission-policy-attribute.https.sub.html @@ -9,7 +9,7 @@ const same_origin_src = "/permissions-policy/resources/permissions-policy-geolocation.html"; const cross_origin_src = - "https://{{hosts[][]}}:{{ports[https][0]}}" + same_origin_src; + "https://{{hosts[alt][]}}:{{ports[https][0]}}" + same_origin_src; async_test(t => { test_feature_availability( diff --git a/tests/wpt/tests/geolocation-API/enabled-by-permissions-policy.https.sub.html b/tests/wpt/tests/geolocation-API/enabled-by-permissions-policy.https.sub.html index 007f79ab9c4..d5f72eb1ccb 100644 --- a/tests/wpt/tests/geolocation-API/enabled-by-permissions-policy.https.sub.html +++ b/tests/wpt/tests/geolocation-API/enabled-by-permissions-policy.https.sub.html @@ -10,7 +10,7 @@ const same_origin_src = "/permissions-policy/resources/permissions-policy-geolocation.html"; const cross_origin_src = - "https://{{hosts[][]}}:{{ports[https][0]}}" + same_origin_src; + "https://{{hosts[alt][]}}:{{ports[https][0]}}" + same_origin_src; promise_test(async (t) => { await test_driver.set_permission({ name: "geolocation" }, "granted"); diff --git a/tests/wpt/tests/geolocation-API/enabled-on-self-origin-by-permissions-policy.https.sub.html b/tests/wpt/tests/geolocation-API/enabled-on-self-origin-by-permissions-policy.https.sub.html index d879c1c5432..ea4b65966f1 100644 --- a/tests/wpt/tests/geolocation-API/enabled-on-self-origin-by-permissions-policy.https.sub.html +++ b/tests/wpt/tests/geolocation-API/enabled-on-self-origin-by-permissions-policy.https.sub.html @@ -12,7 +12,7 @@ const same_origin_src = "/permissions-policy/resources/permissions-policy-geolocation.html"; const cross_origin_src = - "https://{{hosts[][]}}:{{ports[https][0]}}" + same_origin_src; + "https://{{hosts[alt][]}}:{{ports[https][0]}}" + same_origin_src; promise_test(async (t) => { await test_driver.set_permission({ name: "geolocation" }, "granted"); diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.no-transform-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.no-transform-expected.html new file mode 100644 index 00000000000..489d4322823 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.no-transform-expected.html @@ -0,0 +1,72 @@ + + +Canvas test: 2d.layer.global-states.copy.no-shadow.no-transform +

2d.layer.global-states.copy.no-shadow.no-transform

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.no-transform.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.no-transform.html new file mode 100644 index 00000000000..1720f20589f --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.no-transform.html @@ -0,0 +1,77 @@ + + + +Canvas test: 2d.layer.global-states.copy.no-shadow.no-transform +

2d.layer.global-states.copy.no-shadow.no-transform

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.rotation-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.rotation-expected.html new file mode 100644 index 00000000000..63913ffb057 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.rotation-expected.html @@ -0,0 +1,76 @@ + + +Canvas test: 2d.layer.global-states.copy.no-shadow.rotation +

2d.layer.global-states.copy.no-shadow.rotation

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.rotation.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.rotation.html new file mode 100644 index 00000000000..87cd91bb120 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.no-shadow.rotation.html @@ -0,0 +1,81 @@ + + + +Canvas test: 2d.layer.global-states.copy.no-shadow.rotation +

2d.layer.global-states.copy.no-shadow.rotation

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.shadow.no-transform-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.shadow.no-transform-expected.html new file mode 100644 index 00000000000..021581f8925 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.shadow.no-transform-expected.html @@ -0,0 +1,78 @@ + + +Canvas test: 2d.layer.global-states.copy.shadow.no-transform +

2d.layer.global-states.copy.shadow.no-transform

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.shadow.no-transform.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.shadow.no-transform.html new file mode 100644 index 00000000000..e8d01065c1d --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.shadow.no-transform.html @@ -0,0 +1,83 @@ + + + +Canvas test: 2d.layer.global-states.copy.shadow.no-transform +

2d.layer.global-states.copy.shadow.no-transform

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.shadow.rotation-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.shadow.rotation-expected.html new file mode 100644 index 00000000000..dd9a5c2a001 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.shadow.rotation-expected.html @@ -0,0 +1,82 @@ + + +Canvas test: 2d.layer.global-states.copy.shadow.rotation +

2d.layer.global-states.copy.shadow.rotation

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.shadow.rotation.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.shadow.rotation.html new file mode 100644 index 00000000000..5c7fa379f14 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.copy.shadow.rotation.html @@ -0,0 +1,87 @@ + + + +Canvas test: 2d.layer.global-states.copy.shadow.rotation +

2d.layer.global-states.copy.shadow.rotation

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform-expected.html new file mode 100644 index 00000000000..21aa241aca8 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform-expected.html @@ -0,0 +1,98 @@ + + +Canvas test: 2d.layer.global-states.filter.copy.no-shadow.no-transform +

2d.layer.global-states.filter.copy.no-shadow.no-transform

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.html new file mode 100644 index 00000000000..ac5c7303a81 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.html @@ -0,0 +1,77 @@ + + + +Canvas test: 2d.layer.global-states.filter.copy.no-shadow.no-transform +

2d.layer.global-states.filter.copy.no-shadow.no-transform

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.rotation-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.rotation-expected.html new file mode 100644 index 00000000000..b2b46ee039c --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.rotation-expected.html @@ -0,0 +1,102 @@ + + +Canvas test: 2d.layer.global-states.filter.copy.no-shadow.rotation +

2d.layer.global-states.filter.copy.no-shadow.rotation

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.html new file mode 100644 index 00000000000..3158a2fff34 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.html @@ -0,0 +1,81 @@ + + + +Canvas test: 2d.layer.global-states.filter.copy.no-shadow.rotation +

2d.layer.global-states.filter.copy.no-shadow.rotation

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.no-transform-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.no-transform-expected.html new file mode 100644 index 00000000000..d11326d5d68 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.no-transform-expected.html @@ -0,0 +1,104 @@ + + +Canvas test: 2d.layer.global-states.filter.copy.shadow.no-transform +

2d.layer.global-states.filter.copy.shadow.no-transform

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.no-transform.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.no-transform.html new file mode 100644 index 00000000000..839ab13add8 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.no-transform.html @@ -0,0 +1,83 @@ + + + +Canvas test: 2d.layer.global-states.filter.copy.shadow.no-transform +

2d.layer.global-states.filter.copy.shadow.no-transform

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.rotation-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.rotation-expected.html new file mode 100644 index 00000000000..3ac098c3448 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.rotation-expected.html @@ -0,0 +1,108 @@ + + +Canvas test: 2d.layer.global-states.filter.copy.shadow.rotation +

2d.layer.global-states.filter.copy.shadow.rotation

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.rotation.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.rotation.html new file mode 100644 index 00000000000..7c090165f59 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.global-states.filter.copy.shadow.rotation.html @@ -0,0 +1,87 @@ + + + +Canvas test: 2d.layer.global-states.filter.copy.shadow.rotation +

2d.layer.global-states.filter.copy.shadow.rotation

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.globalCompositeOperation-expected.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.globalCompositeOperation-expected.html new file mode 100644 index 00000000000..02a8915c0b5 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.globalCompositeOperation-expected.html @@ -0,0 +1,910 @@ + + +Canvas test: 2d.layer.globalCompositeOperation +

2d.layer.globalCompositeOperation

+

Checks that layers work with all globalCompositeOperation values.

+ +
+ +
source-over
+ +

FAIL (fallback content)

+
+ +
+ + +
source-in
+ +

FAIL (fallback content)

+
+ +
+ + +
source-atop
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-over
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-in
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-out
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-atop
+ +

FAIL (fallback content)

+
+ +
+ + +
lighter
+ +

FAIL (fallback content)

+
+ +
+ + +
copy
+ +

FAIL (fallback content)

+
+ +
+ + +
xor
+ +

FAIL (fallback content)

+
+ +
+ + +
multiply
+ +

FAIL (fallback content)

+
+ +
+ + +
screen
+ +

FAIL (fallback content)

+
+ +
+ + +
overlay
+ +

FAIL (fallback content)

+
+ +
+ + +
darken
+ +

FAIL (fallback content)

+
+ +
+ + +
lighten
+ +

FAIL (fallback content)

+
+ +
+ + +
color-dodge
+ +

FAIL (fallback content)

+
+ +
+ + +
color-burn
+ +

FAIL (fallback content)

+
+ +
+ + +
hard-light
+ +

FAIL (fallback content)

+
+ +
+ + +
soft-light
+ +

FAIL (fallback content)

+
+ +
+ + +
difference
+ +

FAIL (fallback content)

+
+ +
+ + +
exclusion
+ +

FAIL (fallback content)

+
+ +
+ + +
hue
+ +

FAIL (fallback content)

+
+ +
+ + +
saturation
+ +

FAIL (fallback content)

+
+ +
+ + +
color
+ +

FAIL (fallback content)

+
+ +
+ + +
luminosity
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/element/layers/2d.layer.globalCompositeOperation.html b/tests/wpt/tests/html/canvas/element/layers/2d.layer.globalCompositeOperation.html new file mode 100644 index 00000000000..32809d852c7 --- /dev/null +++ b/tests/wpt/tests/html/canvas/element/layers/2d.layer.globalCompositeOperation.html @@ -0,0 +1,861 @@ + + + +Canvas test: 2d.layer.globalCompositeOperation +

2d.layer.globalCompositeOperation

+

Checks that layers work with all globalCompositeOperation values.

+ +
+ +
source-over
+ +

FAIL (fallback content)

+
+ +
+ + +
source-in
+ +

FAIL (fallback content)

+
+ +
+ + +
source-atop
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-over
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-in
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-out
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-atop
+ +

FAIL (fallback content)

+
+ +
+ + +
lighter
+ +

FAIL (fallback content)

+
+ +
+ + +
copy
+ +

FAIL (fallback content)

+
+ +
+ + +
xor
+ +

FAIL (fallback content)

+
+ +
+ + +
multiply
+ +

FAIL (fallback content)

+
+ +
+ + +
screen
+ +

FAIL (fallback content)

+
+ +
+ + +
overlay
+ +

FAIL (fallback content)

+
+ +
+ + +
darken
+ +

FAIL (fallback content)

+
+ +
+ + +
lighten
+ +

FAIL (fallback content)

+
+ +
+ + +
color-dodge
+ +

FAIL (fallback content)

+
+ +
+ + +
color-burn
+ +

FAIL (fallback content)

+
+ +
+ + +
hard-light
+ +

FAIL (fallback content)

+
+ +
+ + +
soft-light
+ +

FAIL (fallback content)

+
+ +
+ + +
difference
+ +

FAIL (fallback content)

+
+ +
+ + +
exclusion
+ +

FAIL (fallback content)

+
+ +
+ + +
hue
+ +

FAIL (fallback content)

+
+ +
+ + +
saturation
+ +

FAIL (fallback content)

+
+ +
+ + +
color
+ +

FAIL (fallback content)

+
+ +
+ + +
luminosity
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform-expected.html new file mode 100644 index 00000000000..489d4322823 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform-expected.html @@ -0,0 +1,72 @@ + + +Canvas test: 2d.layer.global-states.copy.no-shadow.no-transform +

2d.layer.global-states.copy.no-shadow.no-transform

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform.html new file mode 100644 index 00000000000..70b659f52ba --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform.html @@ -0,0 +1,85 @@ + + + +Canvas test: 2d.layer.global-states.copy.no-shadow.no-transform +

2d.layer.global-states.copy.no-shadow.no-transform

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform.w.html new file mode 100644 index 00000000000..1db7f17a94d --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.no-transform.w.html @@ -0,0 +1,116 @@ + + + + +Canvas test: 2d.layer.global-states.copy.no-shadow.no-transform +

2d.layer.global-states.copy.no-shadow.no-transform

+

Checks that layers correctly use global render states.

+ + +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ +
+ diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation-expected.html new file mode 100644 index 00000000000..63913ffb057 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation-expected.html @@ -0,0 +1,76 @@ + + +Canvas test: 2d.layer.global-states.copy.no-shadow.rotation +

2d.layer.global-states.copy.no-shadow.rotation

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation.html new file mode 100644 index 00000000000..2151535015b --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation.html @@ -0,0 +1,89 @@ + + + +Canvas test: 2d.layer.global-states.copy.no-shadow.rotation +

2d.layer.global-states.copy.no-shadow.rotation

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation.w.html new file mode 100644 index 00000000000..9c0cac99b91 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.no-shadow.rotation.w.html @@ -0,0 +1,120 @@ + + + + +Canvas test: 2d.layer.global-states.copy.no-shadow.rotation +

2d.layer.global-states.copy.no-shadow.rotation

+

Checks that layers correctly use global render states.

+ + +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ +
+ diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform-expected.html new file mode 100644 index 00000000000..021581f8925 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform-expected.html @@ -0,0 +1,78 @@ + + +Canvas test: 2d.layer.global-states.copy.shadow.no-transform +

2d.layer.global-states.copy.shadow.no-transform

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform.html new file mode 100644 index 00000000000..42231fa61ee --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform.html @@ -0,0 +1,91 @@ + + + +Canvas test: 2d.layer.global-states.copy.shadow.no-transform +

2d.layer.global-states.copy.shadow.no-transform

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform.w.html new file mode 100644 index 00000000000..20dc667ef87 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.no-transform.w.html @@ -0,0 +1,122 @@ + + + + +Canvas test: 2d.layer.global-states.copy.shadow.no-transform +

2d.layer.global-states.copy.shadow.no-transform

+

Checks that layers correctly use global render states.

+ + +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ +
+ diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation-expected.html new file mode 100644 index 00000000000..dd9a5c2a001 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation-expected.html @@ -0,0 +1,82 @@ + + +Canvas test: 2d.layer.global-states.copy.shadow.rotation +

2d.layer.global-states.copy.shadow.rotation

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation.html new file mode 100644 index 00000000000..77158a9f962 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation.html @@ -0,0 +1,95 @@ + + + +Canvas test: 2d.layer.global-states.copy.shadow.rotation +

2d.layer.global-states.copy.shadow.rotation

+

Checks that layers correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation.w.html new file mode 100644 index 00000000000..def6bc51e20 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.copy.shadow.rotation.w.html @@ -0,0 +1,126 @@ + + + + +Canvas test: 2d.layer.global-states.copy.shadow.rotation +

2d.layer.global-states.copy.shadow.rotation

+

Checks that layers correctly use global render states.

+ + +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ +
+ diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform-expected.html new file mode 100644 index 00000000000..21aa241aca8 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform-expected.html @@ -0,0 +1,98 @@ + + +Canvas test: 2d.layer.global-states.filter.copy.no-shadow.no-transform +

2d.layer.global-states.filter.copy.no-shadow.no-transform

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.html new file mode 100644 index 00000000000..f08ba940af4 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.html @@ -0,0 +1,85 @@ + + + +Canvas test: 2d.layer.global-states.filter.copy.no-shadow.no-transform +

2d.layer.global-states.filter.copy.no-shadow.no-transform

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.w.html new file mode 100644 index 00000000000..75fc90bae67 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.no-transform.w.html @@ -0,0 +1,116 @@ + + + + +Canvas test: 2d.layer.global-states.filter.copy.no-shadow.no-transform +

2d.layer.global-states.filter.copy.no-shadow.no-transform

+

Checks that layers with filters correctly use global render states.

+ + +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ +
+ diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation-expected.html new file mode 100644 index 00000000000..b2b46ee039c --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation-expected.html @@ -0,0 +1,102 @@ + + +Canvas test: 2d.layer.global-states.filter.copy.no-shadow.rotation +

2d.layer.global-states.filter.copy.no-shadow.rotation

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.html new file mode 100644 index 00000000000..3f12cf0c4e4 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.html @@ -0,0 +1,89 @@ + + + +Canvas test: 2d.layer.global-states.filter.copy.no-shadow.rotation +

2d.layer.global-states.filter.copy.no-shadow.rotation

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.w.html new file mode 100644 index 00000000000..0a3ecee6698 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.no-shadow.rotation.w.html @@ -0,0 +1,120 @@ + + + + +Canvas test: 2d.layer.global-states.filter.copy.no-shadow.rotation +

2d.layer.global-states.filter.copy.no-shadow.rotation

+

Checks that layers with filters correctly use global render states.

+ + +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ +
+ diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform-expected.html new file mode 100644 index 00000000000..d11326d5d68 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform-expected.html @@ -0,0 +1,104 @@ + + +Canvas test: 2d.layer.global-states.filter.copy.shadow.no-transform +

2d.layer.global-states.filter.copy.shadow.no-transform

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform.html new file mode 100644 index 00000000000..b4996deb6f3 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform.html @@ -0,0 +1,91 @@ + + + +Canvas test: 2d.layer.global-states.filter.copy.shadow.no-transform +

2d.layer.global-states.filter.copy.shadow.no-transform

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform.w.html new file mode 100644 index 00000000000..9c13a367b32 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.no-transform.w.html @@ -0,0 +1,122 @@ + + + + +Canvas test: 2d.layer.global-states.filter.copy.shadow.no-transform +

2d.layer.global-states.filter.copy.shadow.no-transform

+

Checks that layers with filters correctly use global render states.

+ + +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ +
+ diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation-expected.html new file mode 100644 index 00000000000..3ac098c3448 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation-expected.html @@ -0,0 +1,108 @@ + + +Canvas test: 2d.layer.global-states.filter.copy.shadow.rotation +

2d.layer.global-states.filter.copy.shadow.rotation

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation.html new file mode 100644 index 00000000000..eab5f8312bb --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation.html @@ -0,0 +1,95 @@ + + + +Canvas test: 2d.layer.global-states.filter.copy.shadow.rotation +

2d.layer.global-states.filter.copy.shadow.rotation

+

Checks that layers with filters correctly use global render states.

+ +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation.w.html new file mode 100644 index 00000000000..aebd6cc00d4 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.global-states.filter.copy.shadow.rotation.w.html @@ -0,0 +1,126 @@ + + + + +Canvas test: 2d.layer.global-states.filter.copy.shadow.rotation +

2d.layer.global-states.filter.copy.shadow.rotation

+

Checks that layers with filters correctly use global render states.

+ + +
+ +
no-globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ + +
globalAlpha
+ +

FAIL (fallback content)

+
+ + +
+ +
+ diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation-expected.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation-expected.html new file mode 100644 index 00000000000..02a8915c0b5 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation-expected.html @@ -0,0 +1,910 @@ + + +Canvas test: 2d.layer.globalCompositeOperation +

2d.layer.globalCompositeOperation

+

Checks that layers work with all globalCompositeOperation values.

+ +
+ +
source-over
+ +

FAIL (fallback content)

+
+ +
+ + +
source-in
+ +

FAIL (fallback content)

+
+ +
+ + +
source-atop
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-over
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-in
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-out
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-atop
+ +

FAIL (fallback content)

+
+ +
+ + +
lighter
+ +

FAIL (fallback content)

+
+ +
+ + +
copy
+ +

FAIL (fallback content)

+
+ +
+ + +
xor
+ +

FAIL (fallback content)

+
+ +
+ + +
multiply
+ +

FAIL (fallback content)

+
+ +
+ + +
screen
+ +

FAIL (fallback content)

+
+ +
+ + +
overlay
+ +

FAIL (fallback content)

+
+ +
+ + +
darken
+ +

FAIL (fallback content)

+
+ +
+ + +
lighten
+ +

FAIL (fallback content)

+
+ +
+ + +
color-dodge
+ +

FAIL (fallback content)

+
+ +
+ + +
color-burn
+ +

FAIL (fallback content)

+
+ +
+ + +
hard-light
+ +

FAIL (fallback content)

+
+ +
+ + +
soft-light
+ +

FAIL (fallback content)

+
+ +
+ + +
difference
+ +

FAIL (fallback content)

+
+ +
+ + +
exclusion
+ +

FAIL (fallback content)

+
+ +
+ + +
hue
+ +

FAIL (fallback content)

+
+ +
+ + +
saturation
+ +

FAIL (fallback content)

+
+ +
+ + +
color
+ +

FAIL (fallback content)

+
+ +
+ + +
luminosity
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation.html new file mode 100644 index 00000000000..ab9bc4270b3 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation.html @@ -0,0 +1,961 @@ + + + +Canvas test: 2d.layer.globalCompositeOperation +

2d.layer.globalCompositeOperation

+

Checks that layers work with all globalCompositeOperation values.

+ +
+ +
source-over
+ +

FAIL (fallback content)

+
+ +
+ + +
source-in
+ +

FAIL (fallback content)

+
+ +
+ + +
source-atop
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-over
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-in
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-out
+ +

FAIL (fallback content)

+
+ +
+ + +
destination-atop
+ +

FAIL (fallback content)

+
+ +
+ + +
lighter
+ +

FAIL (fallback content)

+
+ +
+ + +
copy
+ +

FAIL (fallback content)

+
+ +
+ + +
xor
+ +

FAIL (fallback content)

+
+ +
+ + +
multiply
+ +

FAIL (fallback content)

+
+ +
+ + +
screen
+ +

FAIL (fallback content)

+
+ +
+ + +
overlay
+ +

FAIL (fallback content)

+
+ +
+ + +
darken
+ +

FAIL (fallback content)

+
+ +
+ + +
lighten
+ +

FAIL (fallback content)

+
+ +
+ + +
color-dodge
+ +

FAIL (fallback content)

+
+ +
+ + +
color-burn
+ +

FAIL (fallback content)

+
+ +
+ + +
hard-light
+ +

FAIL (fallback content)

+
+ +
+ + +
soft-light
+ +

FAIL (fallback content)

+
+ +
+ + +
difference
+ +

FAIL (fallback content)

+
+ +
+ + +
exclusion
+ +

FAIL (fallback content)

+
+ +
+ + +
hue
+ +

FAIL (fallback content)

+
+ +
+ + +
saturation
+ +

FAIL (fallback content)

+
+ +
+ + +
color
+ +

FAIL (fallback content)

+
+ +
+ + +
luminosity
+ +

FAIL (fallback content)

+
+ +
+ +
diff --git a/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation.w.html b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation.w.html new file mode 100644 index 00000000000..9a403140fc4 --- /dev/null +++ b/tests/wpt/tests/html/canvas/offscreen/layers/2d.layer.globalCompositeOperation.w.html @@ -0,0 +1,1314 @@ + + + + +Canvas test: 2d.layer.globalCompositeOperation +

2d.layer.globalCompositeOperation

+

Checks that layers work with all globalCompositeOperation values.

+ + +
+ +
source-over
+ +

FAIL (fallback content)

+
+ + +
+ + +
source-in
+ +

FAIL (fallback content)

+
+ + +
+ + +
source-atop
+ +

FAIL (fallback content)

+
+ + +
+ + +
destination-over
+ +

FAIL (fallback content)

+
+ + +
+ + +
destination-in
+ +

FAIL (fallback content)

+
+ + +
+ + +
destination-out
+ +

FAIL (fallback content)

+
+ + +
+ + +
destination-atop
+ +

FAIL (fallback content)

+
+ + +
+ + +
lighter
+ +

FAIL (fallback content)

+
+ + +
+ + +
copy
+ +

FAIL (fallback content)

+
+ + +
+ + +
xor
+ +

FAIL (fallback content)

+
+ + +
+ + +
multiply
+ +

FAIL (fallback content)

+
+ + +
+ + +
screen
+ +

FAIL (fallback content)

+
+ + +
+ + +
overlay
+ +

FAIL (fallback content)

+
+ + +
+ + +
darken
+ +

FAIL (fallback content)

+
+ + +
+ + +
lighten
+ +

FAIL (fallback content)

+
+ + +
+ + +
color-dodge
+ +

FAIL (fallback content)

+
+ + +
+ + +
color-burn
+ +

FAIL (fallback content)

+
+ + +
+ + +
hard-light
+ +

FAIL (fallback content)

+
+ + +
+ + +
soft-light
+ +

FAIL (fallback content)

+
+ + +
+ + +
difference
+ +

FAIL (fallback content)

+
+ + +
+ + +
exclusion
+ +

FAIL (fallback content)

+
+ + +
+ + +
hue
+ +

FAIL (fallback content)

+
+ + +
+ + +
saturation
+ +

FAIL (fallback content)

+
+ + +
+ + +
color
+ +

FAIL (fallback content)

+
+ + +
+ + +
luminosity
+ +

FAIL (fallback content)

+
+ + +
+ +
+ diff --git a/tests/wpt/tests/html/canvas/tools/yaml-new/layers.yaml b/tests/wpt/tests/html/canvas/tools/yaml-new/layers.yaml index 0f722a46486..e71155650b0 100644 --- a/tests/wpt/tests/html/canvas/tools/yaml-new/layers.yaml +++ b/tests/wpt/tests/html/canvas/tools/yaml-new/layers.yaml @@ -55,6 +55,8 @@ composite_op_statement: ctx.globalCompositeOperation = 'multiply'; composite: composite_op_statement: ctx.globalCompositeOperation = 'source-in'; + copy: + composite_op_statement: ctx.globalCompositeOperation = 'copy'; - no-shadow: shadow_statement: // No shadow. shadow: @@ -133,6 +135,86 @@ variants_layout: [single_file, multi_files, multi_files, multi_files] variants: *global-state-variants +- name: 2d.layer.globalCompositeOperation + desc: Checks that layers work with all globalCompositeOperation values. + size: [90, 90] + code: | + ctx.translate(50, 50); + ctx.scale(2, 2); + ctx.rotate(Math.PI); + ctx.translate(-25, -25); + + ctx.fillStyle = 'rgba(0, 0, 255, 0.8)'; + ctx.fillRect(15, 15, 25, 25); + + ctx.globalAlpha = 0.75; + ctx.globalCompositeOperation = '{{ variant_names[0] }}'; + ctx.shadowOffsetX = 7; + ctx.shadowOffsetY = 7; + ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + + ctx.beginLayer(); + + ctx.fillStyle = 'rgba(204, 0, 0, 1)'; + ctx.fillRect(10, 25, 25, 20); + ctx.fillStyle = 'rgba(0, 204, 0, 1)'; + ctx.fillRect(25, 10, 20, 25); + + ctx.endLayer(); + reference: | + ctx.translate(50, 50); + ctx.scale(2, 2); + ctx.rotate(Math.PI); + ctx.translate(-25, -25); + + ctx.fillStyle = 'rgba(0, 0, 255, 0.8)'; + ctx.fillRect(15, 15, 25, 25); + + ctx.globalAlpha = 0.75; + ctx.globalCompositeOperation = '{{ variant_names[0] }}'; + ctx.shadowOffsetX = 7; + ctx.shadowOffsetY = 7; + ctx.shadowColor = 'rgba(255, 165, 0, 0.5)'; + + const canvas2 = document.createElement("canvas"); + const ctx2 = canvas2.getContext("2d"); + + ctx2.fillStyle = 'rgba(204, 0, 0, 1)'; + ctx2.fillRect(10, 25, 25, 20); + ctx2.fillStyle = 'rgba(0, 204, 0, 1)'; + ctx2.fillRect(25, 10, 20, 25); + + ctx.imageSmoothingEnabled = false; + ctx.drawImage(canvas2, 0, 0); + variants_layout: [single_file] + grid_width: 7 + variants: + - source-over: + source-in: + source-atop: + destination-over: + destination-in: + destination-out: + destination-atop: + lighter: + copy: + xor: + multiply: + screen: + overlay: + darken: + lighten: + color-dodge: + color-burn: + hard-light: + soft-light: + difference: + exclusion: + hue: + saturation: + color: + luminosity: + - name: 2d.layer.global-filter desc: Tests that layers ignore the global context filter. size: [150, 100] diff --git a/tests/wpt/tests/html/dom/elements/global-attributes/the-anchor-attribute-003.tentative.html b/tests/wpt/tests/html/dom/elements/global-attributes/the-anchor-attribute-003.tentative.html index ec2d8d5ead9..e8c12c784f5 100644 --- a/tests/wpt/tests/html/dom/elements/global-attributes/the-anchor-attribute-003.tentative.html +++ b/tests/wpt/tests/html/dom/elements/global-attributes/the-anchor-attribute-003.tentative.html @@ -37,8 +37,8 @@ body { dialog::backdrop { top: calc(anchor(top) - 10px); right: calc(anchor(right) - 10px); - bottom: calc(anchor(bottom) - 10px); - left: calc(anchor(left) - 10px); + bottom: calc(anchor(bottom, 0px) - 10px); + left: calc(anchor(left, 0px) - 10px); background: lime; } diff --git a/tests/wpt/tests/html/dom/elements/global-attributes/the-anchor-attribute-xml.tentative.html b/tests/wpt/tests/html/dom/elements/global-attributes/the-anchor-attribute-xml.tentative.html new file mode 100644 index 00000000000..c5e6d81826d --- /dev/null +++ b/tests/wpt/tests/html/dom/elements/global-attributes/the-anchor-attribute-xml.tentative.html @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/tests/wpt/tests/html/dom/render-blocking/WEB_FEATURES.yml b/tests/wpt/tests/html/dom/render-blocking/WEB_FEATURES.yml new file mode 100644 index 00000000000..36ab4f30103 --- /dev/null +++ b/tests/wpt/tests/html/dom/render-blocking/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: blocking-render + files: "**" diff --git a/tests/wpt/tests/html/interaction/focus/WEB_FEATURES.yml b/tests/wpt/tests/html/interaction/focus/WEB_FEATURES.yml new file mode 100644 index 00000000000..210e2d3f99a --- /dev/null +++ b/tests/wpt/tests/html/interaction/focus/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: tabindex + files: + - tabindex-focus-flag.html diff --git a/tests/wpt/tests/html/interaction/focus/sequential-focus-navigation-and-the-tabindex-attribute/WEB_FEATURES.yml b/tests/wpt/tests/html/interaction/focus/sequential-focus-navigation-and-the-tabindex-attribute/WEB_FEATURES.yml new file mode 100644 index 00000000000..6d868044c9e --- /dev/null +++ b/tests/wpt/tests/html/interaction/focus/sequential-focus-navigation-and-the-tabindex-attribute/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: tabindex + files: "**" diff --git a/tests/wpt/tests/html/rendering/non-replaced-elements/flow-content-0/WEB_FEATURES.yml b/tests/wpt/tests/html/rendering/non-replaced-elements/flow-content-0/WEB_FEATURES.yml new file mode 100644 index 00000000000..831b257f72b --- /dev/null +++ b/tests/wpt/tests/html/rendering/non-replaced-elements/flow-content-0/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: search + files: + - search-* diff --git a/tests/wpt/tests/html/rendering/the-details-element/WEB_FEATURES.yml b/tests/wpt/tests/html/rendering/the-details-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..769e741180a --- /dev/null +++ b/tests/wpt/tests/html/rendering/the-details-element/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: details + files: "**" diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html similarity index 100% rename from tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.https.html rename to tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_navigation_download_allow_downloads.sub.tentative.html diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.https.html b/tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.html similarity index 100% rename from tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.https.html rename to tests/wpt/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_window_open_download_allow_downloads.tentative.html diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-object-element/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/embedded-content/the-object-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..d3411c2d8d2 --- /dev/null +++ b/tests/wpt/tests/html/semantics/embedded-content/the-object-element/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: constraint-validation + files: + - object-setcustomvalidity.html diff --git a/tests/wpt/tests/html/semantics/forms/constraints/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/forms/constraints/WEB_FEATURES.yml new file mode 100644 index 00000000000..93b4c5745fc --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/constraints/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: constraint-validation + files: "**" diff --git a/tests/wpt/tests/html/semantics/forms/the-button-element/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/forms/the-button-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..f5a2aeaf4f8 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-button-element/WEB_FEATURES.yml @@ -0,0 +1,10 @@ +features: +- name: constraint-validation + files: + - button-checkvalidity.html + - button-setcustomvalidity.html + - button-validation.html + - button-validationmessage.html + - button-validity.html + - button-willvalidate-readonly-attribute.html + - button-willvalidate.html diff --git a/tests/wpt/tests/html/semantics/forms/the-fieldset-element/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/forms/the-fieldset-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..912cb47c6d0 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-fieldset-element/WEB_FEATURES.yml @@ -0,0 +1,8 @@ +features: +- name: constraint-validation + files: + - fieldset-checkvalidity.html + - fieldset-setcustomvalidity.html + - fieldset-validationmessage.html + - fieldset-validity.html + - fieldset-willvalidate.html diff --git a/tests/wpt/tests/html/semantics/forms/the-form-element/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/forms/the-form-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..04c20cb5ece --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-form-element/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: constraint-validation + files: + - form-checkvalidity.html diff --git a/tests/wpt/tests/html/semantics/forms/the-input-element/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/forms/the-input-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..4957615f247 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-input-element/WEB_FEATURES.yml @@ -0,0 +1,11 @@ +features: +- name: constraint-validation + files: + - input-checkvalidity.html + - input-setcustomvalidity.html + - input-validationmessage.html + - input-validity.html + - input-willvalidate.html +- name: show-picker-input + files: + - show-picker-* diff --git a/tests/wpt/tests/html/semantics/forms/the-output-element/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/forms/the-output-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..2f7f8e8cc2d --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-output-element/WEB_FEATURES.yml @@ -0,0 +1,5 @@ +features: +- name: constraint-validation + files: + - output-setcustomvalidity.html + - output-validity.html diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/forms/the-select-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..9695c952942 --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/WEB_FEATURES.yml @@ -0,0 +1,9 @@ +features: +- name: constraint-validation + files: + - select-setcustomvalidity.html + - select-validity.html + - select-willvalidate-readonly-attribute.html +- name: show-picker-select + files: + - show-picker-* diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-keyboard-behavior.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-keyboard-behavior.tentative.html index 2fb11ba68b0..8b062121697 100644 --- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-keyboard-behavior.tentative.html +++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-keyboard-behavior.tentative.html @@ -1,4 +1,5 @@ + @@ -68,6 +69,7 @@ for (const id of ['defaultbutton-defaultdatalist', async function closeListbox() { await test_driver.click(select); + await new Promise(requestAnimationFrame); } function addCloseCleanup(t) { @@ -96,6 +98,7 @@ for (const id of ['defaultbutton-defaultdatalist', assert_false(select.matches(':open'), 'The select should initially be closed.'); await test_driver.send_keys(document.activeElement, Space); + await new Promise(requestAnimationFrame); assert_true(select.matches(':open'), 'The select should be open after pressing space.'); }, `${id}: When the listbox is closed, spacebar should open the listbox.`); @@ -108,6 +111,7 @@ for (const id of ['defaultbutton-defaultdatalist', 'The select should initially be closed.'); await test_driver.send_keys(document.activeElement, ArrowLeft); + await new Promise(requestAnimationFrame); assert_true(select.matches(':open'), 'Arrow left should open the listbox.'); assert_equals(select.value, 'two', @@ -115,6 +119,7 @@ for (const id of ['defaultbutton-defaultdatalist', await closeListbox(); await test_driver.send_keys(document.activeElement, ArrowUp); + await new Promise(requestAnimationFrame); assert_true(select.matches(':open'), 'Arrow up should open the listbox.'); assert_equals(select.value, 'two', @@ -122,6 +127,7 @@ for (const id of ['defaultbutton-defaultdatalist', await closeListbox(); await test_driver.send_keys(document.activeElement, ArrowRight); + await new Promise(requestAnimationFrame); assert_true(select.matches(':open'), 'Arrow right should open the listbox.'); assert_equals(select.value, 'two', @@ -129,6 +135,7 @@ for (const id of ['defaultbutton-defaultdatalist', await closeListbox(); await test_driver.send_keys(document.activeElement, ArrowDown); + await new Promise(requestAnimationFrame); assert_true(select.matches(':open'), 'Arrow down should open the listbox.'); assert_equals(select.value, 'two', @@ -147,6 +154,7 @@ for (const id of ['defaultbutton-defaultdatalist', } else { await test_driver.send_keys(select, Enter); } + await new Promise(requestAnimationFrame); assert_false(select.matches(':open'), 'Enter should not open the listbox when outside a form.'); @@ -161,6 +169,7 @@ for (const id of ['defaultbutton-defaultdatalist', } else { await test_driver.send_keys(select, Enter); } + await new Promise(requestAnimationFrame); assert_true(formWasSubmitted, 'Enter should submit the form when the listbox is closed.'); assert_false(select.matches(':open'), @@ -175,30 +184,35 @@ for (const id of ['defaultbutton-defaultdatalist', select.value = 'two'; await test_driver.click(select); + await new Promise(requestAnimationFrame); assert_true(select.matches(':open'), 'The select should open when clicked.'); assert_equals(document.activeElement, optionTwo, 'The selected option should receive initial focus.'); await test_driver.send_keys(document.activeElement, ArrowDown); + await new Promise(requestAnimationFrame); assert_equals(document.activeElement, optionThree, 'The next option should receive focus when the down arrow key is pressed.'); assert_equals(select.value, 'two', 'The selects value should not change when focusing another option.'); await test_driver.send_keys(document.activeElement, ArrowUp); + await new Promise(requestAnimationFrame); assert_equals(document.activeElement, optionTwo, 'The previous option should receive focus when the up arrow key is pressed.'); assert_equals(select.value, 'two', 'The selects value should not change when focusing another option.'); await test_driver.send_keys(document.activeElement, ArrowUp); + await new Promise(requestAnimationFrame); assert_equals(document.activeElement, optionOne, 'The first option should be selected.'); assert_equals(select.value, 'two', 'The selects value should not change when focusing another option.'); await test_driver.send_keys(document.activeElement, Enter); + await new Promise(requestAnimationFrame); assert_false(select.matches(':open'), 'The listbox should be closed after pressing enter.'); assert_equals(select.value, 'one', diff --git a/tests/wpt/tests/html/semantics/forms/the-textarea-element/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/forms/the-textarea-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..14479d4bb3d --- /dev/null +++ b/tests/wpt/tests/html/semantics/forms/the-textarea-element/WEB_FEATURES.yml @@ -0,0 +1,6 @@ +features: +- name: constraint-validation + files: + - textarea-setcustomvalidity.html + - textarea-validity-clone.html + - textarea-validity-valueMissing-inside-datalist.html diff --git a/tests/wpt/tests/html/semantics/interactive-elements/the-details-element/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/interactive-elements/the-details-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..be3924a26ad --- /dev/null +++ b/tests/wpt/tests/html/semantics/interactive-elements/the-details-element/WEB_FEATURES.yml @@ -0,0 +1,4 @@ +features: +- name: details-name + files: + - name-attribute.html diff --git a/tests/wpt/tests/html/semantics/popovers/popover-anchor-change-display.tentative.html b/tests/wpt/tests/html/semantics/popovers/popover-anchor-change-display.tentative.html index 435929a6c1b..4312a156cee 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-anchor-change-display.tentative.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-anchor-change-display.tentative.html @@ -42,6 +42,7 @@ window.addEventListener('load', runTest); background: orange; } [popover] { + inset: auto; background: lime; padding:0; border:0; diff --git a/tests/wpt/tests/html/semantics/popovers/popover-anchor-display-none.tentative.html b/tests/wpt/tests/html/semantics/popovers/popover-anchor-display-none.tentative.html index 55a11fafdb5..8db022b1262 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-anchor-display-none.tentative.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-anchor-display-none.tentative.html @@ -15,6 +15,7 @@ display: none; } [popover] { + inset: auto; background: lime; padding: 0; border: 0; diff --git a/tests/wpt/tests/html/semantics/popovers/popover-anchor-display.tentative.html b/tests/wpt/tests/html/semantics/popovers/popover-anchor-display.tentative.html index bddc44006df..a713540094a 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-anchor-display.tentative.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-anchor-display.tentative.html @@ -61,6 +61,7 @@ showDefaultopenPopoversOnLoad(); background: orange; } [popover] { + inset: auto; background: lime; padding:0; border:0; diff --git a/tests/wpt/tests/html/semantics/popovers/popover-anchor-scroll-display.tentative.html b/tests/wpt/tests/html/semantics/popovers/popover-anchor-scroll-display.tentative.html index 2c6b0bafb94..a301032a5b7 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-anchor-scroll-display.tentative.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-anchor-scroll-display.tentative.html @@ -40,6 +40,7 @@ background: orange; } [popover] { + inset: auto; background: lime; padding:0; border:0; diff --git a/tests/wpt/tests/html/semantics/popovers/popover-anchor-transition.tentative.tentative.html b/tests/wpt/tests/html/semantics/popovers/popover-anchor-transition.tentative.tentative.html index ae2a3a8e415..f6220f3c769 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-anchor-transition.tentative.tentative.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-anchor-transition.tentative.tentative.html @@ -13,6 +13,7 @@ body { } #target { + inset: auto; transition: display 2s; } diff --git a/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html index 45db242e918..1317b623c87 100644 --- a/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html +++ b/tests/wpt/tests/html/semantics/popovers/popover-light-dismiss.html @@ -602,18 +602,26 @@ promise_test(async () => { p29.showPopover(); assert_true(p29.matches(':popover-open'),'showing'); let actions = new test_driver.Actions(); - await actions.pointerMove(0,0,{origin: b29}) - .pointerDown({button: actions.ButtonType.LEFT}) - .send(); - await waitForRender(); - assert_true(p29.matches(':popover-open'),'showing after pointerdown'); + // Using the iframe's contentDocument as the origin would throw an error, so + // we are using iframe29 as the origin instead. + const iframe_box = iframe29.getBoundingClientRect(); - actions = new test_driver.Actions(); - await actions.pointerMove(0,0,{origin: iframe29.contentDocument.body}) + await actions + .pointerMove(1,1,{origin: b29}) + .pointerDown({button: actions.ButtonType.LEFT}) + .pointerMove(iframe_box.width / 2, iframe_box.height / 2, {origin: iframe29}) .pointerUp({button: actions.ButtonType.LEFT}) .send(); - await waitForRender(); - assert_true(p29.matches(':popover-open'),'showing after pointerup'); + assert_true(p29.matches(':popover-open'), 'popover should be open after pointerUp in iframe.'); + + actions = new test_driver.Actions(); + await actions + .pointerMove(iframe_box.width / 2, iframe_box.height / 2, {origin: iframe29}) + .pointerDown({button: actions.ButtonType.LEFT}) + .pointerMove(1,1,{origin: b29}) + .pointerUp({button: actions.ButtonType.LEFT}) + .send(); + assert_true(p29.matches(':popover-open'), 'popover should be open after pointerUp on main frame button.'); },`Pointer down in one document and pointer up in another document shouldn't dismiss popover`); @@ -626,13 +634,10 @@ promise_test(async () => { p30.showPopover(); assert_true(p30.matches(':popover-open'),'showing'); let actions = new test_driver.Actions(); - await actions.pointerMove(0,0,{origin: b30}) + await actions + .pointerMove(2,2,{origin: b30}) .pointerDown({button: actions.ButtonType.LEFT}) - .send(); - await waitForRender(); - assert_true(p30.matches(':popover-open'),'showing after pointerdown'); - actions = new test_driver.Actions(); - await actions.pointerMove(0,0,{origin: b30b}) + .pointerMove(2,2,{origin: b30b}) .pointerUp({button: actions.ButtonType.LEFT}) .send(); await waitForRender(); diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/inline-async-inserted-execorder.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/inline-async-inserted-execorder.html new file mode 100644 index 00000000000..0f51fd318b4 --- /dev/null +++ b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/inline-async-inserted-execorder.html @@ -0,0 +1,70 @@ + + +Inline async="" module scripts execute or throw parse errors asynchronously + + + + + + diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-template-element/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/scripting-1/the-template-element/WEB_FEATURES.yml new file mode 100644 index 00000000000..bd821885c7b --- /dev/null +++ b/tests/wpt/tests/html/semantics/scripting-1/the-template-element/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: template + files: "**" diff --git a/tests/wpt/tests/html/semantics/selectors/pseudo-classes/WEB_FEATURES.yml b/tests/wpt/tests/html/semantics/selectors/pseudo-classes/WEB_FEATURES.yml new file mode 100644 index 00000000000..604e049f202 --- /dev/null +++ b/tests/wpt/tests/html/semantics/selectors/pseudo-classes/WEB_FEATURES.yml @@ -0,0 +1,7 @@ +features: +- name: autofill + files: + - autofill.html +- name: default + files: + - default.html diff --git a/tests/wpt/tests/html/syntax/parsing/template/WEB_FEATURES.yml b/tests/wpt/tests/html/syntax/parsing/template/WEB_FEATURES.yml new file mode 100644 index 00000000000..bd821885c7b --- /dev/null +++ b/tests/wpt/tests/html/syntax/parsing/template/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: template + files: "**" diff --git a/tests/wpt/tests/html/webappapis/structured-clone/WEB_FEATURES.yml b/tests/wpt/tests/html/webappapis/structured-clone/WEB_FEATURES.yml new file mode 100644 index 00000000000..423a469bf17 --- /dev/null +++ b/tests/wpt/tests/html/webappapis/structured-clone/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: structured-clone + files: "**" diff --git a/tests/wpt/tests/long-animation-frame/tentative/loaf-stream-source-location.html b/tests/wpt/tests/long-animation-frame/tentative/loaf-stream-source-location.html index 0fd30859d73..5776ff52552 100644 --- a/tests/wpt/tests/long-animation-frame/tentative/loaf-stream-source-location.html +++ b/tests/wpt/tests/long-animation-frame/tentative/loaf-stream-source-location.html @@ -17,7 +17,8 @@ promise_test(async t => { const scriptElement = document.createElement("script"); scriptElement.src = scriptLocation; document.body.appendChild(scriptElement); - }, script => script.invoker === "StreamPromise.resolve.then", t); + }, script => { + return script.invoker === "Promise.resolve" }, t); assert_true(script.sourceURL.includes("stream-promise-generates-loaf.js")); }, "Source location should be extracted for stream promises"); diff --git a/tests/wpt/tests/long-animation-frame/tentative/loaf-stream.html b/tests/wpt/tests/long-animation-frame/tentative/loaf-stream.html index e35bc2f9aa7..424f2cd0d1e 100644 --- a/tests/wpt/tests/long-animation-frame/tentative/loaf-stream.html +++ b/tests/wpt/tests/long-animation-frame/tentative/loaf-stream.html @@ -34,6 +34,6 @@ test_promise_script(async t => { }); response.body.pipeTo(writable); await readable.getReader().read(); -}, "resolve", "StreamPromise.resolve"); +}, "resolve", "Promise.resolve"); diff --git a/tests/wpt/tests/mediacapture-record/MediaRecorder-canvas-media-source.https.html b/tests/wpt/tests/mediacapture-record/MediaRecorder-canvas-media-source.https.html index e640714d5cf..0680c218795 100644 --- a/tests/wpt/tests/mediacapture-record/MediaRecorder-canvas-media-source.https.html +++ b/tests/wpt/tests/mediacapture-record/MediaRecorder-canvas-media-source.https.html @@ -9,6 +9,8 @@ + + @@ -84,9 +86,9 @@ async_test(test => { const params = new URLSearchParams(window.location.search); const mimeType = params.get('mimeType'); - if (mimeType) { - assert_implements_optional(MediaRecorder.isTypeSupported(mimeType), - `"${mimeType}" for MediaRecorder is not supported`); + if (mimeType && !MediaRecorder.isTypeSupported(mimeType)) { + test.done(); + return; } const canvas = document.querySelector("canvas"); diff --git a/tests/wpt/tests/mediacapture-record/MediaRecorder-events-and-exceptions.html b/tests/wpt/tests/mediacapture-record/MediaRecorder-events-and-exceptions.html index 409e46c91da..97ada212663 100644 --- a/tests/wpt/tests/mediacapture-record/MediaRecorder-events-and-exceptions.html +++ b/tests/wpt/tests/mediacapture-record/MediaRecorder-events-and-exceptions.html @@ -8,6 +8,8 @@ + + @@ -81,9 +83,9 @@ const params = new URLSearchParams(window.location.search); const mimeType = params.get('mimeType'); - if (mimeType) { - assert_implements_optional(MediaRecorder.isTypeSupported(mimeType), - `"${mimeType}" for MediaRecorder is not supported`); + if (mimeType && !MediaRecorder.isTypeSupported(mimeType)) { + test.done(); + return; } const recorder = new MediaRecorder(new MediaStream(), { mimeType }); diff --git a/tests/wpt/tests/mediacapture-record/MediaRecorder-mimetype.html b/tests/wpt/tests/mediacapture-record/MediaRecorder-mimetype.html index 74248d65f46..57baa1346f1 100644 --- a/tests/wpt/tests/mediacapture-record/MediaRecorder-mimetype.html +++ b/tests/wpt/tests/mediacapture-record/MediaRecorder-mimetype.html @@ -21,6 +21,7 @@ const AUDIO_CODECS_MIME_TYPES = [ 'audio/webm; codecs="vorbis"', 'audio/webm; codecs="opus"', 'audio/mp4: codecs="mp4a.40.2"', + 'audio/mp4: codecs="opus"', ]; const VIDEO_ONLY_MIME_TYPES = [ @@ -33,6 +34,7 @@ const VIDEO_CODECS_MIME_TYPES = [ 'video/webm; codecs="vp9"', 'video/webm; codecs="av1"', 'video/mp4: codecs="avc1"', + 'video/mp4: codecs="vp9"', ]; const AUDIO_VIDEO_MIME_TYPES = [ @@ -42,6 +44,7 @@ const AUDIO_VIDEO_MIME_TYPES = [ 'video/webm; codecs="vp9, opus"', 'video/webm; codecs="av1, opus"', 'video/mp4: codecs="avc1, mp4a.40.2"', + 'video/mp4; codecs="vp9, opus"', ]; const AUDIO_MIME_TYPES = [ diff --git a/tests/wpt/tests/mediacapture-record/MediaRecorder-pause-resume.html b/tests/wpt/tests/mediacapture-record/MediaRecorder-pause-resume.html index 8dc231279a0..f584508a0d0 100644 --- a/tests/wpt/tests/mediacapture-record/MediaRecorder-pause-resume.html +++ b/tests/wpt/tests/mediacapture-record/MediaRecorder-pause-resume.html @@ -8,6 +8,10 @@ + + + + diff --git a/tests/wpt/tests/mediacapture-record/MediaRecorder-peerconnection.https.html b/tests/wpt/tests/mediacapture-record/MediaRecorder-peerconnection.https.html index 3fbc1f0f2d2..daae044fa8d 100644 --- a/tests/wpt/tests/mediacapture-record/MediaRecorder-peerconnection.https.html +++ b/tests/wpt/tests/mediacapture-record/MediaRecorder-peerconnection.https.html @@ -4,6 +4,20 @@ MediaRecorder peer connection + + + + + + + + + + + + + + @@ -15,74 +29,83 @@ - - - diff --git a/tests/wpt/tests/mediacapture-record/MediaRecorder-stop.html b/tests/wpt/tests/mediacapture-record/MediaRecorder-stop.html index d6ce3707720..9ef50516381 100644 --- a/tests/wpt/tests/mediacapture-record/MediaRecorder-stop.html +++ b/tests/wpt/tests/mediacapture-record/MediaRecorder-stop.html @@ -7,6 +7,8 @@ + + @@ -38,18 +40,21 @@ return true; } - function doneWithUnsupportedType(mimeType) { - if (mimeType) { - assert_implements_optional(MediaRecorder.isTypeSupported(mimeType), - `"${mimeType}" for MediaRecorder is not supported`); + function isMimetypeSupported(mimeType, t) { + if (mimeType && !MediaRecorder.isTypeSupported(mimeType)) { + t.done(); + return false; } + return true; } const params = new URLSearchParams(window.location.search); const mimeType = params.get('mimeType'); const tag = `mimeType "${mimeType}"`; promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const {stream: video} = createVideoStream(t); const recorder = new MediaRecorder(video, {mimeType}); @@ -73,7 +78,9 @@ }, "MediaRecorder will stop recording and fire a stop event when all tracks are ended"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const {stream: video} = createVideoStream(t); const recorder = new MediaRecorder(video, {mimeType}); @@ -96,7 +103,9 @@ }, "MediaRecorder will stop recording and fire a stop event when stop() is called"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const recorder = new MediaRecorder(createVideoStream(t).stream, {mimeType}); recorder.stop(); @@ -107,7 +116,9 @@ }, "MediaRecorder will not fire an exception when stopped after creation"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const recorder = new MediaRecorder(createVideoStream(t).stream, {mimeType}); recorder.start(); @@ -121,7 +132,9 @@ }, "MediaRecorder will not fire an exception when stopped after having just been stopped"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const {stream} = createVideoStream(t); const recorder = new MediaRecorder(stream, {mimeType}); @@ -136,7 +149,9 @@ }, "MediaRecorder will not fire an exception when stopped after having just been spontaneously stopped"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const {stream} = createAudioVideoStream(t); const recorder = new MediaRecorder(stream, {mimeType}); @@ -155,7 +170,9 @@ }, "MediaRecorder will fire start event even if stopped synchronously"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const {stream} = createAudioVideoStream(t); const recorder = new MediaRecorder(stream, {mimeType}); @@ -178,7 +195,9 @@ }, "MediaRecorder will fire start event even if a track is removed synchronously"); promise_test(async t => { - doneWithUnsupportedType(mimeType); + if (!isMimetypeSupported(mimeType, t)) { + return; + } const {stream} = createFlowingAudioVideoStream(t); const recorder = new MediaRecorder(stream, {mimeType}); diff --git a/tests/wpt/tests/notifications/tag-different-manual.https.html b/tests/wpt/tests/notifications/tag-different-manual.https.html deleted file mode 100644 index e463e976701..00000000000 --- a/tests/wpt/tests/notifications/tag-different-manual.https.html +++ /dev/null @@ -1,37 +0,0 @@ - - -Notification.tag (two tags with different values) - - - - - -
- diff --git a/tests/wpt/tests/notifications/tag-same-manual.https.html b/tests/wpt/tests/notifications/tag-same-manual.https.html deleted file mode 100644 index 4454944c535..00000000000 --- a/tests/wpt/tests/notifications/tag-same-manual.https.html +++ /dev/null @@ -1,37 +0,0 @@ - - -Notification.tag (two tags with same value) - - - - - -
- diff --git a/tests/wpt/tests/notifications/tag.https.html b/tests/wpt/tests/notifications/tag.https.html new file mode 100644 index 00000000000..99c61a71514 --- /dev/null +++ b/tests/wpt/tests/notifications/tag.https.html @@ -0,0 +1,47 @@ + + +Notification.tag (two tags with same or different value) + + + + + + diff --git a/tests/wpt/tests/resources/test/tox.ini b/tests/wpt/tests/resources/test/tox.ini index 12013a1a705..49603ef64bd 100644 --- a/tests/wpt/tests/resources/test/tox.ini +++ b/tests/wpt/tests/resources/test/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py37,py38,py39,py310,py311 +envlist = py38,py39,py310,py311 skipsdist=True [testenv] diff --git a/tests/wpt/tests/resources/testdriver.js b/tests/wpt/tests/resources/testdriver.js index 20140b2fc0a..2d1a89690cc 100644 --- a/tests/wpt/tests/resources/testdriver.js +++ b/tests/wpt/tests/resources/testdriver.js @@ -1023,6 +1023,49 @@ */ get_virtual_sensor_information: function(sensor_type, context=null) { return window.test_driver_internal.get_virtual_sensor_information(sensor_type, context); + }, + + /** + * Overrides device posture set by hardware. + * + * Matches the `Set device posture + * `_ + * WebDriver command. + * + * @param {String} posture - A `DevicePostureType + * `_ + * either "continuous" or "folded". + * @param {WindowProxy} [context=null] - Browsing context in which to + * run the call, or null for the + * current browsing context. + * + * @returns {Promise} Fulfilled when device posture is set. + * Rejected in case the WebDriver command errors out + * (including if a device posture of the given type + * does not exist). + */ + set_device_posture: function(posture, context=null) { + return window.test_driver_internal.set_device_posture(posture, context); + }, + + /** + * Removes device posture override and returns device posture control + * back to hardware. + * + * Matches the `Clear device posture + * `_ + * WebDriver command. + * + * @param {WindowProxy} [context=null] - Browsing context in which to + * run the call, or null for the + * current browsing context. + * + * @returns {Promise} Fulfilled after the device posture override has + * been removed. Rejected in case the WebDriver + * command errors out. + */ + clear_device_posture: function(context=null) { + return window.test_driver_internal.clear_device_posture(context); } }; @@ -1203,6 +1246,14 @@ async get_virtual_sensor_information(sensor_type, context=null) { throw new Error("get_virtual_sensor_information() is not implemented by testdriver-vendor.js"); + }, + + async set_device_posture(posture, context=null) { + throw new Error("set_device_posture() is not implemented by testdriver-vendor.js"); + }, + + async clear_device_posture(context=null) { + throw new Error("clear_device_posture() is not implemented by testdriver-vendor.js"); } }; })(); diff --git a/tests/wpt/tests/resources/testharness.js b/tests/wpt/tests/resources/testharness.js index d8f04bcb334..c5c375e1720 100644 --- a/tests/wpt/tests/resources/testharness.js +++ b/tests/wpt/tests/resources/testharness.js @@ -4329,10 +4329,11 @@ const tbody = section.querySelector("tbody"); for (const test of tests) { - const status_class_name = status_class(test.format_status()); + const status = test.format_status(); + const status_class_name = status_class(status); tbody.appendChild(render( ["tr", {"class":"overall-" + status_class_name}, - ["td", {"class":status_class_name}, status_class_name], + ["td", {"class":status_class_name}, status], ["td", {}, test.name], (assertions ? ["td", {}, get_assertion(test)] : ""), ["td", {}, diff --git a/tests/wpt/tests/resources/testharnessreport.js b/tests/wpt/tests/resources/testharnessreport.js index e5cb40fe0ef..405a2d8b06f 100644 --- a/tests/wpt/tests/resources/testharnessreport.js +++ b/tests/wpt/tests/resources/testharnessreport.js @@ -14,31 +14,6 @@ * parameters they are called with see testharness.js */ -function dump_test_results(tests, status) { - var results_element = document.createElement("script"); - results_element.type = "text/json"; - results_element.id = "__testharness__results__"; - var test_results = tests.map(function(x) { - return {name:x.name, status:x.status, message:x.message, stack:x.stack} - }); - var data = {test:window.location.href, - tests:test_results, - status: status.status, - message: status.message, - stack: status.stack}; - results_element.textContent = JSON.stringify(data); - - // To avoid a HierarchyRequestError with XML documents, ensure that 'results_element' - // is inserted at a location that results in a valid document. - var parent = document.body - ? document.body // is required in XHTML documents - : document.documentElement; // fallback for optional in HTML5, SVG, etc. - - parent.appendChild(results_element); -} - -add_completion_callback(dump_test_results); - /* If the parent window has a testharness_properties object, * we use this to provide the test settings. This is used by the * default in-browser runner to configure the timeout and the diff --git a/tests/wpt/tests/scroll-to-text-fragment/WEB_FEATURES.yml b/tests/wpt/tests/scroll-to-text-fragment/WEB_FEATURES.yml new file mode 100644 index 00000000000..0b260aaaecc --- /dev/null +++ b/tests/wpt/tests/scroll-to-text-fragment/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: text-fragments + files: "**" diff --git a/tests/wpt/tests/service-workers/service-worker/navigation-timing-sizes.https.html b/tests/wpt/tests/service-workers/service-worker/navigation-timing-sizes.https.html new file mode 100644 index 00000000000..a960cd57f3c --- /dev/null +++ b/tests/wpt/tests/service-workers/service-worker/navigation-timing-sizes.https.html @@ -0,0 +1,80 @@ + + +Service Worker Navigation Timing + + + + + + + diff --git a/tests/wpt/tests/shadow-dom/declarative/WEB_FEATURES.yml b/tests/wpt/tests/shadow-dom/declarative/WEB_FEATURES.yml new file mode 100644 index 00000000000..4e31ed49627 --- /dev/null +++ b/tests/wpt/tests/shadow-dom/declarative/WEB_FEATURES.yml @@ -0,0 +1,3 @@ +features: +- name: declarative-shadow-dom + files: "**" diff --git a/tests/wpt/tests/shadow-dom/focus-navigation/focus-navigation-slots-in-slot.html b/tests/wpt/tests/shadow-dom/focus-navigation/focus-navigation-slots-in-slot.html index 39b08066034..3c929de7276 100644 --- a/tests/wpt/tests/shadow-dom/focus-navigation/focus-navigation-slots-in-slot.html +++ b/tests/wpt/tests/shadow-dom/focus-navigation/focus-navigation-slots-in-slot.html @@ -1,4 +1,5 @@ + diff --git a/tests/wpt/tests/shadow-dom/focus-navigation/focus-navigation-with-delegatesFocus.html b/tests/wpt/tests/shadow-dom/focus-navigation/focus-navigation-with-delegatesFocus.html index 64942a109e0..e37accbc8e2 100644 --- a/tests/wpt/tests/shadow-dom/focus-navigation/focus-navigation-with-delegatesFocus.html +++ b/tests/wpt/tests/shadow-dom/focus-navigation/focus-navigation-with-delegatesFocus.html @@ -1,4 +1,5 @@ + diff --git a/tests/wpt/tests/shadow-dom/focus-navigation/focus-navigation.html b/tests/wpt/tests/shadow-dom/focus-navigation/focus-navigation.html index 9e593eb1003..faf3c34cdb2 100644 --- a/tests/wpt/tests/shadow-dom/focus-navigation/focus-navigation.html +++ b/tests/wpt/tests/shadow-dom/focus-navigation/focus-navigation.html @@ -1,4 +1,5 @@ + diff --git a/tests/wpt/tests/shadow-dom/focus-navigation/resources/focus-utils.js b/tests/wpt/tests/shadow-dom/focus-navigation/resources/focus-utils.js index f593267cc31..0392cfb8879 100644 --- a/tests/wpt/tests/shadow-dom/focus-navigation/resources/focus-utils.js +++ b/tests/wpt/tests/shadow-dom/focus-navigation/resources/focus-utils.js @@ -1,17 +1,27 @@ 'use strict'; -function navigateFocusForward() { - // TAB = '\ue004' - return test_driver.send_keys(document.body, "\ue004"); +function waitForRender() { + return new Promise(resolve => requestAnimationFrame(() => requestAnimationFrame(resolve))); +} + +async function navigateFocusForward() { + await waitForRender(); + const kTab = '\uE004'; + await new test_driver.send_keys(document.documentElement,kTab); + await waitForRender(); } async function navigateFocusBackward() { - return new test_driver.Actions() - .keyDown('\uE050') - .keyDown('\uE004') - .keyUp('\uE004') - .keyUp('\uE050') + await waitForRender(); + const kShift = '\uE008'; + const kTab = '\uE004'; + await new test_driver.Actions() + .keyDown(kShift) + .keyDown(kTab) + .keyUp(kTab) + .keyUp(kShift) .send(); + await waitForRender(); } // If shadow root is open, can find element using element path diff --git a/tests/wpt/tests/speech-api/WEB_FEATURES.yml b/tests/wpt/tests/speech-api/WEB_FEATURES.yml new file mode 100644 index 00000000000..7a24460e1bf --- /dev/null +++ b/tests/wpt/tests/speech-api/WEB_FEATURES.yml @@ -0,0 +1,7 @@ +features: +- name: speech-recognition + files: + - SpeechRecognition* +- name: speech-synthesis + files: + - SpeechSynthesis* diff --git a/tests/wpt/tests/storage-access-api/helpers.js b/tests/wpt/tests/storage-access-api/helpers.js index 0fd5d814dbb..416c4a401ef 100644 --- a/tests/wpt/tests/storage-access-api/helpers.js +++ b/tests/wpt/tests/storage-access-api/helpers.js @@ -287,6 +287,13 @@ async function MaybeSetStorageAccess(origin, embedding_origin, value) { } } + +// Navigate the inner iframe using the given frame. +function NavigateChild(frame, url) { + return PostMessageAndAwaitReply( + { command: "navigate_child", url }, frame.contentWindow); +} + // Starts a dedicated worker in the given frame. function StartDedicatedWorker(frame) { return PostMessageAndAwaitReply( diff --git a/tests/wpt/tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation-relax.tentative.sub.https.window.js b/tests/wpt/tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation-relax.tentative.sub.https.window.js new file mode 100644 index 00000000000..7ccb9824e69 --- /dev/null +++ b/tests/wpt/tests/storage-access-api/requestStorageAccess-cross-origin-iframe-navigation-relax.tentative.sub.https.window.js @@ -0,0 +1,65 @@ +// META: script=helpers.js +// META: script=/cookies/resources/cookie-helper.sub.js +// META: script=/resources/testdriver.js +// META: script=/resources/testdriver-vendor.js +'use strict'; + +(async function() { + // This is cross-domain from the current document. + const altWww = "https://{{hosts[alt][www]}}:{{ports[https][0]}}"; + const altRoot = "https://{{hosts[alt][]}}:{{ports[https][0]}}"; + const responderPath = "/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js"; + const forwarderPath = "/storage-access-api/resources/script-with-cookie-header.py?script=embedded_forwarder.js"; + + const altWwwResponder = `${altWww}${responderPath}`; + const altRootResponder = `${altRoot}${responderPath}`; + const altWwwNestedCrossOriginResponder = `${altRoot}${forwarderPath}&inner_url=${encodeURI(altWwwResponder)}`; + + async function SetUpResponderFrame(t, url) { + const frame = await CreateFrame(url); + + await SetPermissionInFrame(frame, [{ name: 'storage-access' }, 'granted']); + t.add_cleanup(async () => { + await test_driver.delete_all_cookies(); + await SetPermissionInFrame(frame, [{ name: 'storage-access' }, 'prompt']); + await MaybeSetStorageAccess("*", "*", "allowed"); + }); + + assert_false(await FrameHasStorageAccess(frame), "frame initially does not have storage access."); + assert_false(await HasUnpartitionedCookie(frame), "frame initially does not have access to cookies."); + + assert_true(await RequestStorageAccessInFrame(frame), "requestStorageAccess resolves without requiring a gesture."); + + assert_true(await FrameHasStorageAccess(frame), "frame has storage access after request."); + assert_true(await HasUnpartitionedCookie(frame), "frame has access to cookies after request."); + + return frame; + } + + promise_test(async (t) => { + await MaybeSetStorageAccess("*", "*", "blocked"); + await SetFirstPartyCookieAndUnsetStorageAccessPermission(altWww); + + const frame = await SetUpResponderFrame(t, altWwwNestedCrossOriginResponder); + + await NavigateChild(frame, altWwwResponder); + + assert_true(await FrameHasStorageAccess(frame), "innermost frame has storage access after refresh."); + assert_true(await HasUnpartitionedCookie(frame), "innermost frame has access to cookies after refresh."); + }, "Same-site-initiated same-origin navigations preserve storage access"); + + promise_test(async (t) => { + await MaybeSetStorageAccess("*", "*", "blocked"); + await SetFirstPartyCookieAndUnsetStorageAccessPermission(altWww); + + const frame = await SetUpResponderFrame(t, altWwwNestedCrossOriginResponder); + + await NavigateChild(frame, altRootResponder); + + assert_false(await FrameHasStorageAccess(frame), "innermost frame has no storage access after refresh."); + assert_false(await HasUnpartitionedCookie(frame), "innermost frame has no access to cookies after refresh."); + let cookieOnLoad = await GetHTTPCookiesFromFrame(frame); + assert_false(cookieStringHasCookie("cookie", "unpartitioned", cookieOnLoad), "innermost frame has cookie in initial load"); + }, "Same-site-initiated cross-origin navigations do not preserve storage access"); + +})(); diff --git a/tests/wpt/tests/storage-access-api/resources/embedded_forwarder.js b/tests/wpt/tests/storage-access-api/resources/embedded_forwarder.js new file mode 100644 index 00000000000..c1e5e54443b --- /dev/null +++ b/tests/wpt/tests/storage-access-api/resources/embedded_forwarder.js @@ -0,0 +1,50 @@ +"use strict"; + +test_driver.set_test_context(window.top); + +function waitForMessage(timestamp) { + return new Promise(resolve => { + const listener = (event) => { + if (!timestamp || event.data.timestamp == timestamp) { + window.removeEventListener("message", listener); + resolve(event.data); + } + }; + window.addEventListener("message", listener); + }); +} + +var iframe = document.createElement('iframe'); +const queryString = window.location.search; +const urlParams = new URLSearchParams(queryString); +iframe.src = urlParams.get("inner_url"); +document.body.appendChild(iframe); + +window.addEventListener("message", async (event) => { + function replyToParent(data) { + parent.postMessage( + {timestamp: event.data.timestamp, data}, "*"); + } + + if (!event.data["command"]) { + return; + } + + switch (event.data["command"]) { + case "navigate_child": + iframe.onload = () => replyToParent(event.data.url); + iframe.src = event.data.url; + break; + case "reload": + case "navigate": + iframe.contentWindow.postMessage({timestamp, ...event.data}, "*"); + break; + default:{ + const timestamp = event.data.timestamp; + const p = waitForMessage(timestamp); + iframe.contentWindow.postMessage({timestamp, ...event.data}, "*"); + replyToParent(await p.then(resp => resp.data)); + break; + } + } +}); diff --git a/tests/wpt/tests/storage-access-api/resources/embedded_responder.js b/tests/wpt/tests/storage-access-api/resources/embedded_responder.js index 228a262f16e..3cca86154af 100644 --- a/tests/wpt/tests/storage-access-api/resources/embedded_responder.js +++ b/tests/wpt/tests/storage-access-api/resources/embedded_responder.js @@ -31,7 +31,7 @@ function connectAndGetRequestCookiesFrom(origin) { window.addEventListener("message", async (event) => { function reply(data) { event.source.postMessage( - {timestamp: event.data.timestamp, data}, event.origin); + {timestamp: event.data.timestamp, data}, "*"); } switch (event.data["command"]) { diff --git a/tests/wpt/tests/storage-access-api/resources/script-with-cookie-header.py b/tests/wpt/tests/storage-access-api/resources/script-with-cookie-header.py index 83129a55595..ae95b7593fb 100644 --- a/tests/wpt/tests/storage-access-api/resources/script-with-cookie-header.py +++ b/tests/wpt/tests/storage-access-api/resources/script-with-cookie-header.py @@ -13,7 +13,10 @@ def main(request, response): var httpCookies = "%s"; + + + """ % (cookie_header, script) return (200, [], body) diff --git a/tests/wpt/tests/streams/piping/detached-context-crash.html b/tests/wpt/tests/streams/piping/detached-context-crash.html new file mode 100644 index 00000000000..56271f12c3a --- /dev/null +++ b/tests/wpt/tests/streams/piping/detached-context-crash.html @@ -0,0 +1,21 @@ + + + + diff --git a/tests/wpt/tests/streams/readable-streams/tee-detached-context-crash.html b/tests/wpt/tests/streams/readable-streams/tee-detached-context-crash.html new file mode 100644 index 00000000000..9488da72732 --- /dev/null +++ b/tests/wpt/tests/streams/readable-streams/tee-detached-context-crash.html @@ -0,0 +1,13 @@ + + + + diff --git a/tests/wpt/tests/svg/crashtests/chrome-bug-333487749.html b/tests/wpt/tests/svg/crashtests/chrome-bug-333487749.html new file mode 100644 index 00000000000..1613f4998a0 --- /dev/null +++ b/tests/wpt/tests/svg/crashtests/chrome-bug-333487749.html @@ -0,0 +1,14 @@ + + + + + + + + + + diff --git a/tests/wpt/tests/svg/painting/reftests/paint-context-007-ref.svg b/tests/wpt/tests/svg/painting/reftests/paint-context-007-ref.svg new file mode 100644 index 00000000000..0328272c6aa --- /dev/null +++ b/tests/wpt/tests/svg/painting/reftests/paint-context-007-ref.svg @@ -0,0 +1,29 @@ + + + Paint: 'context-fill' and 'context-stroke' in 'use' with transform + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/svg/painting/reftests/paint-context-007.svg b/tests/wpt/tests/svg/painting/reftests/paint-context-007.svg new file mode 100644 index 00000000000..50360a302e3 --- /dev/null +++ b/tests/wpt/tests/svg/painting/reftests/paint-context-007.svg @@ -0,0 +1,32 @@ + + + Paint: 'context-fill' and 'context-stroke' in 'use' with transform + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/svg/painting/reftests/paint-context-008-ref.svg b/tests/wpt/tests/svg/painting/reftests/paint-context-008-ref.svg new file mode 100644 index 00000000000..49d4f8947b0 --- /dev/null +++ b/tests/wpt/tests/svg/painting/reftests/paint-context-008-ref.svg @@ -0,0 +1,22 @@ + + + Paint: paint server transform for 'context-fill' based on nearest 'use' ancestor + + + + + + + + + + + + + diff --git a/tests/wpt/tests/svg/painting/reftests/paint-context-008.svg b/tests/wpt/tests/svg/painting/reftests/paint-context-008.svg new file mode 100644 index 00000000000..83308f09b1f --- /dev/null +++ b/tests/wpt/tests/svg/painting/reftests/paint-context-008.svg @@ -0,0 +1,33 @@ + + + Paint: paint server transform for 'context-fill' based on nearest 'use' ancestor + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/wpt/tests/tools/ci/tc/tasks/test.yml b/tests/wpt/tests/tools/ci/tc/tasks/test.yml index c172e6b7314..86d8a965ff3 100644 --- a/tests/wpt/tests/tools/ci/tc/tasks/test.yml +++ b/tests/wpt/tests/tools/ci/tc/tasks/test.yml @@ -115,15 +115,15 @@ components: chunks-override: testharness: 24 - tox-python3_7: + tox-python3_8: env: - TOXENV: py37 + TOXENV: py38 PY_COLORS: "0" install: - - python3.7 - - python3.7-distutils - - python3.7-dev - - python3.7-venv + - python3.8 + - python3.8-distutils + - python3.8-dev + - python3.8-venv tox-python3_11: env: @@ -438,13 +438,13 @@ tasks: - update_built command: "./tools/ci/ci_built_diff.sh" - - tools/ unittests (Python 3.7): + - tools/ unittests (Python 3.8): description: >- - Unit tests for tools running under Python 3.7, excluding wptrunner + Unit tests for tools running under Python 3.8, excluding wptrunner use: - wpt-base - trigger-pr - - tox-python3_7 + - tox-python3_8 command: ./tools/ci/ci_tools_unittest.sh env: HYPOTHESIS_PROFILE: ci @@ -466,13 +466,13 @@ tasks: run-job: - tools_unittest - - tools/ integration tests (Python 3.7): + - tools/ integration tests (Python 3.8): description: >- - Integration tests for tools running under Python 3.7 + Integration tests for tools running under Python 3.8 use: - wpt-base - trigger-pr - - tox-python3_7 + - tox-python3_8 command: ./tools/ci/ci_tools_integration_test.sh install: - libnss3-tools @@ -510,13 +510,13 @@ tasks: run-job: - wpt_integration - - resources/ tests (Python 3.7): + - resources/ tests (Python 3.8): description: >- - Tests for testharness.js and other files in resources/ under Python 3.7 + Tests for testharness.js and other files in resources/ under Python 3.8 use: - wpt-base - trigger-pr - - tox-python3_7 + - tox-python3_8 command: ./tools/ci/ci_resources_unittest.sh install: - libnss3-tools diff --git a/tests/wpt/tests/tools/ci/tc/tests/test_valid.py b/tests/wpt/tests/tools/ci/tc/tests/test_valid.py index 62bb09a1c3c..fc67d67eb8d 100644 --- a/tests/wpt/tests/tools/ci/tc/tests/test_valid.py +++ b/tests/wpt/tests/tools/ci/tc/tests/test_valid.py @@ -202,11 +202,11 @@ def test_verify_payload(): 'lint']), ("pr_event.json", True, {".taskcluster.yml", ".travis.yml", "tools/ci/start.sh"}, ['lint', - 'tools/ unittests (Python 3.7)', + 'tools/ unittests (Python 3.8)', 'tools/ unittests (Python 3.11)', - 'tools/ integration tests (Python 3.7)', + 'tools/ integration tests (Python 3.8)', 'tools/ integration tests (Python 3.11)', - 'resources/ tests (Python 3.7)', + 'resources/ tests (Python 3.8)', 'resources/ tests (Python 3.11)', 'download-firefox-nightly', 'infrastructure/ tests', @@ -224,7 +224,7 @@ def test_verify_payload(): 'sink-task']), ("pr_event_tests_affected.json", True, {"resources/testharness.js"}, ['lint', - 'resources/ tests (Python 3.7)', + 'resources/ tests (Python 3.8)', 'resources/ tests (Python 3.11)', 'download-firefox-nightly', 'infrastructure/ tests', diff --git a/tests/wpt/tests/tools/manifest/sourcefile.py b/tests/wpt/tests/tools/manifest/sourcefile.py index 71eab54beae..6da919b3b66 100644 --- a/tests/wpt/tests/tools/manifest/sourcefile.py +++ b/tests/wpt/tests/tools/manifest/sourcefile.py @@ -205,9 +205,11 @@ class SourceFile: type_flag = None if "-" in name: - type_flag = name.rsplit("-", 1)[1].split(".")[0] - - meta_flags = name.split(".")[1:] + type_meta = name.rsplit("-", 1)[1].split(".") + type_flag = type_meta[0] + meta_flags = type_meta[1:] + else: + meta_flags = name.split(".")[1:] self.tests_root: Text = tests_root self.rel_path: Text = rel_path diff --git a/tests/wpt/tests/tools/mypy.ini b/tests/wpt/tests/tools/mypy.ini index 1e58e9625e6..cc22a770b04 100644 --- a/tests/wpt/tests/tools/mypy.ini +++ b/tests/wpt/tests/tools/mypy.ini @@ -57,9 +57,6 @@ ignore_missing_imports = True [mypy-marionette_driver.*] ignore_missing_imports = True -[mypy-mod_pywebsocket.*] -ignore_missing_imports = True - [mypy-mozcrash.*] ignore_missing_imports = True @@ -108,6 +105,9 @@ ignore_missing_imports = True [mypy-pytest.*] ignore_missing_imports = True +[mypy-pywebsocket3.*] +ignore_missing_imports = True + [mypy-selenium.*] ignore_missing_imports = True diff --git a/tests/wpt/tests/tools/serve/serve.py b/tests/wpt/tests/tools/serve/serve.py index 300f8270a64..bc282dd44b5 100644 --- a/tests/wpt/tests/tools/serve/serve.py +++ b/tests/wpt/tests/tools/serve/serve.py @@ -30,7 +30,7 @@ from wptserve import config from wptserve.handlers import filesystem_path, wrap_pipeline from wptserve.response import ResponseHeaders from wptserve.utils import get_port, HTTPException, http2_compatible -from mod_pywebsocket import standalone as pywebsocket +from pywebsocket3 import standalone as pywebsocket EDIT_HOSTS_HELP = ("Please ensure all the necessary WPT subdomains " diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/.gitignore b/tests/wpt/tests/tools/third_party/pywebsocket3/.gitignore deleted file mode 100644 index 70f28670541..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -*.pyc -build/ -*.egg-info/ -dist/ diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/.travis.yml b/tests/wpt/tests/tools/third_party/pywebsocket3/.travis.yml deleted file mode 100644 index 2065a644dd6..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: python -python: - - 2.7 - - 3.5 - - 3.6 - - 3.7 - - 3.8 - - nightly - -matrix: - allow_failures: - - python: 3.5, nightly -install: - - pip install six yapf -script: - - python test/run_all.py - - yapf --diff --recursive . diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/CONTRIBUTING b/tests/wpt/tests/tools/third_party/pywebsocket3/CONTRIBUTING deleted file mode 100644 index f975be126fb..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/CONTRIBUTING +++ /dev/null @@ -1,30 +0,0 @@ -# How to Contribute - -We'd love to accept your patches and contributions to this project. There are -just a few small guidelines you need to follow. - -## Contributor License Agreement - -Contributions to this project must be accompanied by a Contributor License -Agreement. You (or your employer) retain the copyright to your contribution; -this simply gives us permission to use and redistribute your contributions as -part of the project. Head over to to see -your current agreements on file or to sign a new one. - -You generally only need to submit a CLA once, so if you've already submitted one -(even if it was for a different project), you probably don't need to do it -again. - -## Code reviews - -All submissions, including submissions by project members, require review. We -use GitHub pull requests for this purpose. Consult -[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more -information on using pull requests. -For instructions for contributing code, please read: -https://github.com/google/pywebsocket/wiki/CodeReviewInstruction - -## Community Guidelines - -This project follows -[Google's Open Source Community Guidelines](https://opensource.google/conduct/). diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/MANIFEST.in b/tests/wpt/tests/tools/third_party/pywebsocket3/MANIFEST.in index 19256882c56..116235d18f4 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/MANIFEST.in +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/MANIFEST.in @@ -2,5 +2,5 @@ include COPYING include MANIFEST.in include README recursive-include example *.py -recursive-include mod_pywebsocket *.py +recursive-include pywebsocket3 *.py recursive-include test *.py diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/PKG-INFO b/tests/wpt/tests/tools/third_party/pywebsocket3/PKG-INFO new file mode 100644 index 00000000000..289dfa8649b --- /dev/null +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/PKG-INFO @@ -0,0 +1,13 @@ +Metadata-Version: 2.1 +Name: pywebsocket3 +Version: 4.0.2 +Summary: Standalone WebSocket Server for testing purposes. +Home-page: https://github.com/GoogleChromeLabs/pywebsocket3 +Author: Yuzo Fujishima +Author-email: yuzo@chromium.org +License: See LICENSE +Requires-Python: >=2.7 +License-File: LICENSE +Requires-Dist: six + +pywebsocket3 is a standalone server for the WebSocket Protocol (RFC 6455). See pywebsocket3/__init__.py for more detail. diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/README.md b/tests/wpt/tests/tools/third_party/pywebsocket3/README.md index 8684f2cc7ee..b46b4167356 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/README.md +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/README.md @@ -1,13 +1,14 @@ # pywebsocket3 # -The pywebsocket project aims to provide a [WebSocket](https://tools.ietf.org/html/rfc6455) standalone server. +The pywebsocket3 project aims to provide a [WebSocket](https://tools.ietf.org/html/rfc6455) standalone server. pywebsocket is intended for **testing** or **experimental** purposes. Run this to read the general document: -``` -$ pydoc mod_pywebsocket + +```bash +pydoc pywebsocket3 ``` Please see [Wiki](https://github.com/GoogleChromeLabs/pywebsocket3/wiki) for more details. @@ -15,22 +16,27 @@ Please see [Wiki](https://github.com/GoogleChromeLabs/pywebsocket3/wiki) for mor # INSTALL # To install this package to the system, run this: -``` -$ python setup.py build -$ sudo python setup.py install + +```bash +python setup.py build +sudo python setup.py install ``` To install this package as a normal user, run this instead: +```bash +python setup.py build +python setup.py install --user ``` -$ python setup.py build -$ python setup.py install --user -``` + # LAUNCH # To use pywebsocket as standalone server, run this to read the document: + +```bash +pydoc pywebsocket3.standalone ``` -$ pydoc mod_pywebsocket.standalone -``` + # Disclaimer # + This is not an officially supported Google product diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/abort_handshake_wsh.py b/tests/wpt/tests/tools/third_party/pywebsocket3/example/abort_handshake_wsh.py index 1b719ca8973..1bad8c02f21 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/abort_handshake_wsh.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/example/abort_handshake_wsh.py @@ -28,7 +28,8 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import absolute_import -from mod_pywebsocket import handshake + +from pywebsocket3 import handshake def web_socket_do_extra_handshake(request): diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/abort_wsh.py b/tests/wpt/tests/tools/third_party/pywebsocket3/example/abort_wsh.py index d4c240bf2c1..c0495c71076 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/abort_wsh.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/example/abort_wsh.py @@ -28,7 +28,8 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import absolute_import -from mod_pywebsocket import handshake + +from pywebsocket3 import handshake def web_socket_do_extra_handshake(request): diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/arraybuffer_benchmark.html b/tests/wpt/tests/tools/third_party/pywebsocket3/example/arraybuffer_benchmark.html deleted file mode 100644 index 869cd7e1ee6..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/arraybuffer_benchmark.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - -ArrayBuffer benchmark - - - - - - - diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/bench_wsh.py b/tests/wpt/tests/tools/third_party/pywebsocket3/example/bench_wsh.py index 2df50e77db2..9ea2f93159c 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/bench_wsh.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/example/bench_wsh.py @@ -35,7 +35,9 @@ value. must be an integer value. """ from __future__ import absolute_import + import time + from six.moves import range diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/benchmark.html b/tests/wpt/tests/tools/third_party/pywebsocket3/example/benchmark.html deleted file mode 100644 index f1e5c97b3a7..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/benchmark.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - -WebSocket benchmark - - - - - - - -
- url - - - - - -
- - - - - - - - -
- - Parameters: - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Num sockets
Number of iterations
Number of warm-up iterations
Start size
Stop threshold
Minimum total
Multipliers
-
- -
- -
-
- Summary - -
- -Note: Effect of RTT is not eliminated. - - - diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/benchmark.js b/tests/wpt/tests/tools/third_party/pywebsocket3/example/benchmark.js deleted file mode 100644 index 2701472a4fa..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/benchmark.js +++ /dev/null @@ -1,238 +0,0 @@ -// Copyright 2014, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -if (typeof importScripts !== "undefined") { - // Running on a worker - importScripts('util.js', 'util_worker.js'); -} - -// Namespace for holding globals. -var benchmark = {startTimeInMs: 0}; - -var sockets = []; -var numEstablishedSockets = 0; - -var timerID = null; - -function destroySocket(socket) { - socket.onopen = null; - socket.onmessage = null; - socket.onerror = null; - socket.onclose = null; - socket.close(); -} - -function destroyAllSockets() { - for (var i = 0; i < sockets.length; ++i) { - destroySocket(sockets[i]); - } - sockets = []; -} - -function sendBenchmarkStep(size, config, isWarmUp) { - timerID = null; - - var totalSize = 0; - var totalReplied = 0; - - var onMessageHandler = function(event) { - if (!verifyAcknowledgement(config, event.data, size)) { - destroyAllSockets(); - config.notifyAbort(); - return; - } - - totalReplied += size; - - if (totalReplied < totalSize) { - return; - } - - calculateAndLogResult(config, size, benchmark.startTimeInMs, totalSize, - isWarmUp); - - runNextTask(config); - }; - - for (var i = 0; i < sockets.length; ++i) { - var socket = sockets[i]; - socket.onmessage = onMessageHandler; - } - - var dataArray = []; - - while (totalSize < config.minTotal) { - var buffer = new ArrayBuffer(size); - - fillArrayBuffer(buffer, 0x61); - - dataArray.push(buffer); - totalSize += size; - } - - benchmark.startTimeInMs = getTimeStamp(); - - totalSize = 0; - - var socketIndex = 0; - var dataIndex = 0; - while (totalSize < config.minTotal) { - var command = ['send']; - command.push(config.verifyData ? '1' : '0'); - sockets[socketIndex].send(command.join(' ')); - sockets[socketIndex].send(dataArray[dataIndex]); - socketIndex = (socketIndex + 1) % sockets.length; - - totalSize += size; - ++dataIndex; - } -} - -function receiveBenchmarkStep(size, config, isWarmUp) { - timerID = null; - - var totalSize = 0; - var totalReplied = 0; - - var onMessageHandler = function(event) { - var bytesReceived = event.data.byteLength; - if (bytesReceived != size) { - config.addToLog('Expected ' + size + 'B but received ' + - bytesReceived + 'B'); - destroyAllSockets(); - config.notifyAbort(); - return; - } - - if (config.verifyData && !verifyArrayBuffer(event.data, 0x61)) { - config.addToLog('Response verification failed'); - destroyAllSockets(); - config.notifyAbort(); - return; - } - - totalReplied += bytesReceived; - - if (totalReplied < totalSize) { - return; - } - - calculateAndLogResult(config, size, benchmark.startTimeInMs, totalSize, - isWarmUp); - - runNextTask(config); - }; - - for (var i = 0; i < sockets.length; ++i) { - var socket = sockets[i]; - socket.binaryType = 'arraybuffer'; - socket.onmessage = onMessageHandler; - } - - benchmark.startTimeInMs = getTimeStamp(); - - var socketIndex = 0; - while (totalSize < config.minTotal) { - sockets[socketIndex].send('receive ' + size); - socketIndex = (socketIndex + 1) % sockets.length; - - totalSize += size; - } -} - -function createSocket(config) { - // TODO(tyoshino): Add TCP warm up. - var url = config.prefixUrl; - - config.addToLog('Connect ' + url); - - var socket = new WebSocket(url); - socket.onmessage = function(event) { - config.addToLog('Unexpected message received. Aborting.'); - }; - socket.onerror = function() { - config.addToLog('Error'); - }; - socket.onclose = function(event) { - config.addToLog('Closed'); - config.notifyAbort(); - }; - return socket; -} - -function startBenchmark(config) { - clearTimeout(timerID); - destroyAllSockets(); - - numEstablishedSockets = 0; - - for (var i = 0; i < config.numSockets; ++i) { - var socket = createSocket(config); - socket.onopen = function() { - config.addToLog('Opened'); - - ++numEstablishedSockets; - - if (numEstablishedSockets == sockets.length) { - runNextTask(config); - } - }; - sockets.push(socket); - } -} - -function getConfigString(config) { - return '(WebSocket' + - ', ' + (typeof importScripts !== "undefined" ? 'Worker' : 'Main') + - ', numSockets=' + config.numSockets + - ', numIterations=' + config.numIterations + - ', verifyData=' + config.verifyData + - ', minTotal=' + config.minTotal + - ', numWarmUpIterations=' + config.numWarmUpIterations + - ')'; -} - -function batchBenchmark(config) { - config.addToLog('Batch benchmark'); - config.addToLog(buildLegendString(config)); - - tasks = []; - clearAverageData(); - addTasks(config, sendBenchmarkStep); - addResultReportingTask(config, 'Send Benchmark ' + getConfigString(config)); - addTasks(config, receiveBenchmarkStep); - addResultReportingTask(config, 'Receive Benchmark ' + - getConfigString(config)); - startBenchmark(config); -} - -function cleanup() { - destroyAllSockets(); -} diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/benchmark_helper_wsh.py b/tests/wpt/tests/tools/third_party/pywebsocket3/example/benchmark_helper_wsh.py index fc175333354..9ea9f564227 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/benchmark_helper_wsh.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/example/benchmark_helper_wsh.py @@ -27,7 +27,9 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """Handler for benchmark.html.""" + from __future__ import absolute_import + import six diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/close_wsh.py b/tests/wpt/tests/tools/third_party/pywebsocket3/example/close_wsh.py index 8f0005ffea9..2463bc7b31f 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/close_wsh.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/example/close_wsh.py @@ -28,10 +28,8 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import absolute_import -import struct -from mod_pywebsocket import common -from mod_pywebsocket import stream +from pywebsocket3 import common def web_socket_do_extra_handshake(request): diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/console.html b/tests/wpt/tests/tools/third_party/pywebsocket3/example/console.html deleted file mode 100644 index ccd6d8f8067..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/console.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - -WebSocket console - - - - - -
- -
-
- url - -
- protocols -
-
- -
- -
- Show time stamp -
- -
-
- data - -
-
- -
-
- - -
- - Set binaryType - blob - arraybuffer -
- -
-
- code - reason - -
-
- -
- -
- -
- - - diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/cookie_wsh.py b/tests/wpt/tests/tools/third_party/pywebsocket3/example/cookie_wsh.py index 815209694e3..1ca2c843863 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/cookie_wsh.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/example/cookie_wsh.py @@ -27,6 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import absolute_import + from six.moves import urllib diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/echo_client.py b/tests/wpt/tests/tools/third_party/pywebsocket3/example/echo_client.py index 2ed60b3b592..5063f00a51f 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/echo_client.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/example/echo_client.py @@ -30,13 +30,13 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """Simple WebSocket client named echo_client just because of historical reason. -mod_pywebsocket directory must be in PYTHONPATH. +pywebsocket3 directory must be in PYTHONPATH. Example Usage: # server setup - % cd $pywebsocket - % PYTHONPATH=$cwd/src python ./mod_pywebsocket/standalone.py -p 8880 \ + % cd $pywebsocket3 + % PYTHONPATH=$cwd/src python ./pywebsocket3/standalone.py -p 8880 \ -d $cwd/src/example # run client @@ -47,27 +47,27 @@ Example Usage: from __future__ import absolute_import from __future__ import print_function + +import argparse import base64 import codecs -from hashlib import sha1 import logging -import argparse import os -import random import re -import six import socket import ssl -import struct import sys +from hashlib import sha1 -from mod_pywebsocket import common -from mod_pywebsocket.extensions import PerMessageDeflateExtensionProcessor -from mod_pywebsocket.extensions import _PerMessageDeflateFramer -from mod_pywebsocket.extensions import _parse_window_bits -from mod_pywebsocket.stream import Stream -from mod_pywebsocket.stream import StreamOptions -from mod_pywebsocket import util +import six + +from pywebsocket3 import common, util +from pywebsocket3.extensions import ( + PerMessageDeflateExtensionProcessor, + _PerMessageDeflateFramer, + _parse_window_bits, +) +from pywebsocket3.stream import Stream, StreamOptions _TIMEOUT_SEC = 10 _UNDEFINED_PORT = -1 diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/handler_map.txt b/tests/wpt/tests/tools/third_party/pywebsocket3/example/handler_map.txt deleted file mode 100644 index 21c4c09aa00..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/handler_map.txt +++ /dev/null @@ -1,11 +0,0 @@ -# websocket handler map file, used by standalone.py -m option. -# A line starting with '#' is a comment line. -# Each line consists of 'alias_resource_path' and 'existing_resource_path' -# separated by spaces. -# Aliasing is processed from the top to the bottom of the line, and -# 'existing_resource_path' must exist before it is aliased. -# For example, -# / /echo -# means that a request to '/' will be handled by handlers for '/echo'. -/ /echo - diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/internal_error_wsh.py b/tests/wpt/tests/tools/third_party/pywebsocket3/example/internal_error_wsh.py index 04aa684283a..cbc0fd294e1 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/internal_error_wsh.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/example/internal_error_wsh.py @@ -28,7 +28,8 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import absolute_import -from mod_pywebsocket import msgutil + +from pywebsocket3 import msgutil def web_socket_do_extra_handshake(request): diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/performance_test_iframe.html b/tests/wpt/tests/tools/third_party/pywebsocket3/example/performance_test_iframe.html deleted file mode 100644 index c18b2c08f6a..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/performance_test_iframe.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/performance_test_iframe.js b/tests/wpt/tests/tools/third_party/pywebsocket3/example/performance_test_iframe.js deleted file mode 100644 index 270409aa6eb..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/performance_test_iframe.js +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2020, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -function perfTestAddToLog(text) { - parent.postMessage({'command': 'log', 'value': text}, '*'); -} - -function perfTestAddToSummary(text) { -} - -function perfTestMeasureValue(value) { - parent.postMessage({'command': 'measureValue', 'value': value}, '*'); -} - -function perfTestNotifyAbort() { - parent.postMessage({'command': 'notifyAbort'}, '*'); -} - -function getConfigForPerformanceTest(dataType, async, - verifyData, numIterations, - numWarmUpIterations) { - - return { - prefixUrl: 'ws://' + location.host + '/benchmark_helper', - printSize: true, - numSockets: 1, - // + 1 is for a warmup iteration by the Telemetry framework. - numIterations: numIterations + numWarmUpIterations + 1, - numWarmUpIterations: numWarmUpIterations, - minTotal: 10240000, - startSize: 10240000, - stopThreshold: 10240000, - multipliers: [2], - verifyData: verifyData, - dataType: dataType, - async: async, - addToLog: perfTestAddToLog, - addToSummary: perfTestAddToSummary, - measureValue: perfTestMeasureValue, - notifyAbort: perfTestNotifyAbort - }; -} - -var data; -onmessage = function(message) { - var action; - if (message.data.command === 'start') { - data = message.data; - initWorker('http://' + location.host); - action = data.benchmarkName; - } else { - action = 'stop'; - } - - var config = getConfigForPerformanceTest(data.dataType, data.async, - data.verifyData, - data.numIterations, - data.numWarmUpIterations); - doAction(config, data.isWorker, action); -}; diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/special_headers.cgi b/tests/wpt/tests/tools/third_party/pywebsocket3/example/special_headers.cgi deleted file mode 100755 index 703cb7401b7..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/special_headers.cgi +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/python - -# Copyright 2014 Google Inc. All rights reserved. -# -# Use of this source code is governed by a BSD-style -# license that can be found in the COPYING file or at -# https://developers.google.com/open-source/licenses/bsd -"""CGI script sample for testing effect of HTTP headers on the origin page. - -Note that CGI scripts don't work on the standalone pywebsocket running in TLS -mode. -""" - -print """Content-type: text/html -Content-Security-Policy: connect-src self - - - - - - - - -""" diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/util.js b/tests/wpt/tests/tools/third_party/pywebsocket3/example/util.js deleted file mode 100644 index 990160cb40c..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/util.js +++ /dev/null @@ -1,323 +0,0 @@ -// Copyright 2013, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Utilities for example applications (for both main and worker thread). - -var results = {}; - -function getTimeStamp() { - return Date.now(); -} - -function formatResultInKiB(size, timePerMessageInMs, stddevTimePerMessageInMs, - speed, printSize) { - if (printSize) { - return (size / 1024) + - '\t' + timePerMessageInMs.toFixed(3) + - (stddevTimePerMessageInMs == -1 ? - '' : - '\t' + stddevTimePerMessageInMs.toFixed(3)) + - '\t' + speed.toFixed(3); - } else { - return speed.toString(); - } -} - -function clearAverageData() { - results = {}; -} - -function reportAverageData(config) { - config.addToSummary( - 'Size[KiB]\tAverage time[ms]\tStddev time[ms]\tSpeed[KB/s]'); - for (var size in results) { - var averageTimePerMessageInMs = results[size].sum_t / results[size].n; - var speed = calculateSpeedInKB(size, averageTimePerMessageInMs); - // Calculate sample standard deviation - var stddevTimePerMessageInMs = Math.sqrt( - (results[size].sum_t2 / results[size].n - - averageTimePerMessageInMs * averageTimePerMessageInMs) * - results[size].n / - (results[size].n - 1)); - config.addToSummary(formatResultInKiB( - size, averageTimePerMessageInMs, stddevTimePerMessageInMs, speed, - true)); - } -} - -function calculateSpeedInKB(size, timeSpentInMs) { - return Math.round(size / timeSpentInMs * 1000) / 1000; -} - -function calculateAndLogResult(config, size, startTimeInMs, totalSize, - isWarmUp) { - var timeSpentInMs = getTimeStamp() - startTimeInMs; - var speed = calculateSpeedInKB(totalSize, timeSpentInMs); - var timePerMessageInMs = timeSpentInMs / (totalSize / size); - if (!isWarmUp) { - config.measureValue(timePerMessageInMs); - if (!results[size]) { - results[size] = {n: 0, sum_t: 0, sum_t2: 0}; - } - results[size].n ++; - results[size].sum_t += timePerMessageInMs; - results[size].sum_t2 += timePerMessageInMs * timePerMessageInMs; - } - config.addToLog(formatResultInKiB(size, timePerMessageInMs, -1, speed, - config.printSize)); -} - -function repeatString(str, count) { - var data = ''; - var expChunk = str; - var remain = count; - while (true) { - if (remain % 2) { - data += expChunk; - remain = (remain - 1) / 2; - } else { - remain /= 2; - } - - if (remain == 0) - break; - - expChunk = expChunk + expChunk; - } - return data; -} - -function fillArrayBuffer(buffer, c) { - var i; - - var u32Content = c * 0x01010101; - - var u32Blocks = Math.floor(buffer.byteLength / 4); - var u32View = new Uint32Array(buffer, 0, u32Blocks); - // length attribute is slow on Chrome. Don't use it for loop condition. - for (i = 0; i < u32Blocks; ++i) { - u32View[i] = u32Content; - } - - // Fraction - var u8Blocks = buffer.byteLength - u32Blocks * 4; - var u8View = new Uint8Array(buffer, u32Blocks * 4, u8Blocks); - for (i = 0; i < u8Blocks; ++i) { - u8View[i] = c; - } -} - -function verifyArrayBuffer(buffer, expectedChar) { - var i; - - var expectedU32Value = expectedChar * 0x01010101; - - var u32Blocks = Math.floor(buffer.byteLength / 4); - var u32View = new Uint32Array(buffer, 0, u32Blocks); - for (i = 0; i < u32Blocks; ++i) { - if (u32View[i] != expectedU32Value) { - return false; - } - } - - var u8Blocks = buffer.byteLength - u32Blocks * 4; - var u8View = new Uint8Array(buffer, u32Blocks * 4, u8Blocks); - for (i = 0; i < u8Blocks; ++i) { - if (u8View[i] != expectedChar) { - return false; - } - } - - return true; -} - -function verifyBlob(config, blob, expectedChar, doneCallback) { - var reader = new FileReader(blob); - reader.onerror = function() { - config.addToLog('FileReader Error: ' + reader.error.message); - doneCallback(blob.size, false); - } - reader.onloadend = function() { - var result = verifyArrayBuffer(reader.result, expectedChar); - doneCallback(blob.size, result); - } - reader.readAsArrayBuffer(blob); -} - -function verifyAcknowledgement(config, message, size) { - if (typeof message != 'string') { - config.addToLog('Invalid ack type: ' + typeof message); - return false; - } - var parsedAck = parseInt(message); - if (isNaN(parsedAck)) { - config.addToLog('Invalid ack value: ' + message); - return false; - } - if (parsedAck != size) { - config.addToLog( - 'Expected ack for ' + size + 'B but received one for ' + parsedAck + - 'B'); - return false; - } - - return true; -} - -function cloneConfig(obj) { - var newObj = {}; - for (key in obj) { - newObj[key] = obj[key]; - } - return newObj; -} - -var tasks = []; - -function runNextTask(config) { - var task = tasks.shift(); - if (task == undefined) { - config.addToLog('Finished'); - cleanup(); - return; - } - timerID = setTimeout(task, 0); -} - -function buildLegendString(config) { - var legend = '' - if (config.printSize) - legend = 'Message size in KiB, Time/message in ms, '; - legend += 'Speed in kB/s'; - return legend; -} - -function addTasks(config, stepFunc) { - for (var i = 0; - i < config.numWarmUpIterations + config.numIterations; ++i) { - var multiplierIndex = 0; - for (var size = config.startSize; - size <= config.stopThreshold; - ++multiplierIndex) { - var task = stepFunc.bind( - null, - size, - config, - i < config.numWarmUpIterations); - tasks.push(task); - var multiplier = config.multipliers[ - multiplierIndex % config.multipliers.length]; - if (multiplier <= 1) { - config.addToLog('Invalid multiplier ' + multiplier); - config.notifyAbort(); - throw new Error('Invalid multipler'); - } - size = Math.ceil(size * multiplier); - } - } -} - -function addResultReportingTask(config, title) { - tasks.push(function(){ - timerID = null; - config.addToSummary(title); - reportAverageData(config); - clearAverageData(); - runNextTask(config); - }); -} - -function sendBenchmark(config) { - config.addToLog('Send benchmark'); - config.addToLog(buildLegendString(config)); - - tasks = []; - clearAverageData(); - addTasks(config, sendBenchmarkStep); - addResultReportingTask(config, 'Send Benchmark ' + getConfigString(config)); - startBenchmark(config); -} - -function receiveBenchmark(config) { - config.addToLog('Receive benchmark'); - config.addToLog(buildLegendString(config)); - - tasks = []; - clearAverageData(); - addTasks(config, receiveBenchmarkStep); - addResultReportingTask(config, - 'Receive Benchmark ' + getConfigString(config)); - startBenchmark(config); -} - -function stop(config) { - clearTimeout(timerID); - timerID = null; - tasks = []; - config.addToLog('Stopped'); - cleanup(); -} - -var worker; - -function initWorker(origin) { - worker = new Worker(origin + '/benchmark.js'); -} - -function doAction(config, isWindowToWorker, action) { - if (isWindowToWorker) { - worker.onmessage = function(addToLog, addToSummary, - measureValue, notifyAbort, message) { - if (message.data.type === 'addToLog') - addToLog(message.data.data); - else if (message.data.type === 'addToSummary') - addToSummary(message.data.data); - else if (message.data.type === 'measureValue') - measureValue(message.data.data); - else if (message.data.type === 'notifyAbort') - notifyAbort(); - }.bind(undefined, config.addToLog, config.addToSummary, - config.measureValue, config.notifyAbort); - config.addToLog = undefined; - config.addToSummary = undefined; - config.measureValue = undefined; - config.notifyAbort = undefined; - worker.postMessage({type: action, config: config}); - } else { - if (action === 'sendBenchmark') - sendBenchmark(config); - else if (action === 'receiveBenchmark') - receiveBenchmark(config); - else if (action === 'batchBenchmark') - batchBenchmark(config); - else if (action === 'stop') - stop(config); - } -} diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/util_main.js b/tests/wpt/tests/tools/third_party/pywebsocket3/example/util_main.js deleted file mode 100644 index 78add48731f..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/util_main.js +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2014, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Utilities for example applications (for the main thread only). - -var logBox = null; -var queuedLog = ''; - -var summaryBox = null; - -function queueLog(log) { - queuedLog += log + '\n'; -} - -function addToLog(log) { - logBox.value += queuedLog; - queuedLog = ''; - logBox.value += log + '\n'; - logBox.scrollTop = 1000000; -} - -function addToSummary(log) { - summaryBox.value += log + '\n'; - summaryBox.scrollTop = 1000000; -} - -// value: execution time in milliseconds. -// config.measureValue is intended to be used in Performance Tests. -// Do nothing here in non-PerformanceTest. -function measureValue(value) { -} - -// config.notifyAbort is called when the benchmark failed and aborted, and -// intended to be used in Performance Tests. -// Do nothing here in non-PerformanceTest. -function notifyAbort() { -} - -function getIntFromInput(id) { - return parseInt(document.getElementById(id).value); -} - -function getStringFromRadioBox(name) { - var list = document.getElementById('benchmark_form')[name]; - for (var i = 0; i < list.length; ++i) - if (list.item(i).checked) - return list.item(i).value; - return undefined; -} -function getBoolFromCheckBox(id) { - return document.getElementById(id).checked; -} - -function getIntArrayFromInput(id) { - var strArray = document.getElementById(id).value.split(','); - return strArray.map(function(str) { return parseInt(str, 10); }); -} - -function getFloatArrayFromInput(id) { - var strArray = document.getElementById(id).value.split(','); - return strArray.map(parseFloat); -} diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/example/util_worker.js b/tests/wpt/tests/tools/third_party/pywebsocket3/example/util_worker.js deleted file mode 100644 index dd90449a90a..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/example/util_worker.js +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2014, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -// Utilities for example applications (for the worker threads only). - -onmessage = function (message) { - var config = message.data.config; - config.addToLog = function(text) { - postMessage({type: 'addToLog', data: text}); }; - config.addToSummary = function(text) { - postMessage({type: 'addToSummary', data: text}); }; - config.measureValue = function(value) { - postMessage({type: 'measureValue', data: value}); }; - config.notifyAbort = function() { postMessage({type: 'notifyAbort'}); }; - - doAction(config, false, message.data.type); -}; diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/fast_masking.i b/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/fast_masking.i deleted file mode 100644 index ddaad27f53c..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/fast_masking.i +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2013, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -%module fast_masking - -%include "cstring.i" - -%{ -#include - -#ifdef __SSE2__ -#include -#endif -%} - -%apply (char *STRING, int LENGTH) { - (const char* payload, int payload_length), - (const char* masking_key, int masking_key_length) }; -%cstring_output_allocate_size( - char** result, int* result_length, delete [] *$1); - -%inline %{ - -void mask( - const char* payload, int payload_length, - const char* masking_key, int masking_key_length, - int masking_key_index, - char** result, int* result_length) { - *result = new char[payload_length]; - *result_length = payload_length; - memcpy(*result, payload, payload_length); - - char* cursor = *result; - char* cursor_end = *result + *result_length; - -#ifdef __SSE2__ - while ((cursor < cursor_end) && - (reinterpret_cast(cursor) & 0xf)) { - *cursor ^= masking_key[masking_key_index]; - ++cursor; - masking_key_index = (masking_key_index + 1) % masking_key_length; - } - if (cursor == cursor_end) { - return; - } - - const int kBlockSize = 16; - __m128i masking_key_block; - for (int i = 0; i < kBlockSize; ++i) { - *(reinterpret_cast(&masking_key_block) + i) = - masking_key[masking_key_index]; - masking_key_index = (masking_key_index + 1) % masking_key_length; - } - - while (cursor + kBlockSize <= cursor_end) { - __m128i payload_block = - _mm_load_si128(reinterpret_cast<__m128i*>(cursor)); - _mm_stream_si128(reinterpret_cast<__m128i*>(cursor), - _mm_xor_si128(payload_block, masking_key_block)); - cursor += kBlockSize; - } -#endif - - while (cursor < cursor_end) { - *cursor ^= masking_key[masking_key_index]; - ++cursor; - masking_key_index = (masking_key_index + 1) % masking_key_length; - } -} - -%} diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/PKG-INFO b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/PKG-INFO new file mode 100644 index 00000000000..289dfa8649b --- /dev/null +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/PKG-INFO @@ -0,0 +1,13 @@ +Metadata-Version: 2.1 +Name: pywebsocket3 +Version: 4.0.2 +Summary: Standalone WebSocket Server for testing purposes. +Home-page: https://github.com/GoogleChromeLabs/pywebsocket3 +Author: Yuzo Fujishima +Author-email: yuzo@chromium.org +License: See LICENSE +Requires-Python: >=2.7 +License-File: LICENSE +Requires-Dist: six + +pywebsocket3 is a standalone server for the WebSocket Protocol (RFC 6455). See pywebsocket3/__init__.py for more detail. diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/SOURCES.txt b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/SOURCES.txt new file mode 100644 index 00000000000..9a74c731961 --- /dev/null +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/SOURCES.txt @@ -0,0 +1,64 @@ +LICENSE +MANIFEST.in +README.md +setup.py +example/abort_handshake_wsh.py +example/abort_wsh.py +example/bench_wsh.py +example/benchmark_helper_wsh.py +example/close_wsh.py +example/cookie_wsh.py +example/echo_client.py +example/echo_noext_wsh.py +example/echo_wsh.py +example/hsts_wsh.py +example/internal_error_wsh.py +example/origin_check_wsh.py +example/cgi-bin/hi.py +pywebsocket3/__init__.py +pywebsocket3/_stream_exceptions.py +pywebsocket3/common.py +pywebsocket3/dispatch.py +pywebsocket3/extensions.py +pywebsocket3/http_header_util.py +pywebsocket3/memorizingfile.py +pywebsocket3/msgutil.py +pywebsocket3/request_handler.py +pywebsocket3/server_util.py +pywebsocket3/standalone.py +pywebsocket3/stream.py +pywebsocket3/util.py +pywebsocket3/websocket_server.py +pywebsocket3.egg-info/PKG-INFO +pywebsocket3.egg-info/SOURCES.txt +pywebsocket3.egg-info/dependency_links.txt +pywebsocket3.egg-info/requires.txt +pywebsocket3.egg-info/top_level.txt +pywebsocket3/handshake/__init__.py +pywebsocket3/handshake/base.py +pywebsocket3/handshake/hybi.py +test/__init__.py +test/client_for_testing.py +test/mock.py +test/run_all.py +test/set_sys_path.py +test/test_dispatch.py +test/test_endtoend.py +test/test_extensions.py +test/test_handshake.py +test/test_handshake_hybi.py +test/test_http_header_util.py +test/test_memorizingfile.py +test/test_mock.py +test/test_msgutil.py +test/test_stream.py +test/test_util.py +test/testdata/handlers/abort_by_user_wsh.py +test/testdata/handlers/blank_wsh.py +test/testdata/handlers/origin_check_wsh.py +test/testdata/handlers/sub/exception_in_transfer_wsh.py +test/testdata/handlers/sub/no_wsh_at_the_end.py +test/testdata/handlers/sub/non_callable_wsh.py +test/testdata/handlers/sub/plain_wsh.py +test/testdata/handlers/sub/wrong_handshake_sig_wsh.py +test/testdata/handlers/sub/wrong_transfer_sig_wsh.py \ No newline at end of file diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/dependency_links.txt b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/dependency_links.txt new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/requires.txt b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/requires.txt new file mode 100644 index 00000000000..ffe2fce4989 --- /dev/null +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/requires.txt @@ -0,0 +1 @@ +six diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/top_level.txt b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/top_level.txt new file mode 100644 index 00000000000..db62422f0bd --- /dev/null +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3.egg-info/top_level.txt @@ -0,0 +1 @@ +pywebsocket3 diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/__init__.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/__init__.py similarity index 97% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/__init__.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/__init__.py index 28d5f5950f3..8f4ade05828 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/__init__.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/__init__.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ A Standalone WebSocket Server for testing purposes -mod_pywebsocket is an API that provides WebSocket functionalities with +pywebsocket3 is an API that provides WebSocket functionalities with a standalone WebSocket server. It is intended for testing or experimental purposes. @@ -37,7 +37,7 @@ Installation 1. Follow standalone server documentation to start running the standalone server. It can be read by running the following command: - $ pydoc mod_pywebsocket.standalone + $ pydoc pywebsocket3.standalone 2. Once the standalone server is launched verify it by accessing http://localhost[:port]/console.html. Include the port number when @@ -96,7 +96,7 @@ Data Transfer web_socket_transfer_data is called after the handshake completed successfully. A handler can receive/send messages from/to the client -using request. mod_pywebsocket.msgutil module provides utilities +using request. pywebsocket3.msgutil module provides utilities for data transfer. You can receive a message by the following statement. diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/_stream_exceptions.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/_stream_exceptions.py similarity index 100% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/_stream_exceptions.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/_stream_exceptions.py diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/common.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/common.py similarity index 99% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/common.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/common.py index 9cb11f15cb2..a3321e4c68c 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/common.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/common.py @@ -30,7 +30,9 @@ """ from __future__ import absolute_import -from mod_pywebsocket import http_header_util + +from pywebsocket3 import http_header_util + # Additional log level definitions. LOGLEVEL_FINE = 9 diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/dispatch.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/dispatch.py similarity index 98% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/dispatch.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/dispatch.py index 56cbb3c8a5f..fd35ceab297 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/dispatch.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/dispatch.py @@ -30,17 +30,19 @@ """ from __future__ import absolute_import + import io -import logging import os import re import traceback -from mod_pywebsocket import common -from mod_pywebsocket import handshake -from mod_pywebsocket import msgutil -from mod_pywebsocket import stream -from mod_pywebsocket import util +from pywebsocket3 import ( + common, + handshake, + msgutil, + stream, + util +) _SOURCE_PATH_PATTERN = re.compile(r'(?i)_wsh\.py$') _SOURCE_SUFFIX = '_wsh.py' diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/extensions.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/extensions.py similarity index 99% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/extensions.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/extensions.py index 314a949d455..4b5b9e8fb27 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/extensions.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/extensions.py @@ -28,9 +28,9 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. from __future__ import absolute_import -from mod_pywebsocket import common -from mod_pywebsocket import util -from mod_pywebsocket.http_header_util import quote_if_necessary + +from pywebsocket3 import common, util +from pywebsocket3.http_header_util import quote_if_necessary # The list of available server side extension processor classes. _available_processors = {} diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/handshake/__init__.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/handshake/__init__.py similarity index 93% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/handshake/__init__.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/handshake/__init__.py index 4bc1c67c578..275e447552e 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/handshake/__init__.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/handshake/__init__.py @@ -32,15 +32,19 @@ successfully established. """ from __future__ import absolute_import + import logging -from mod_pywebsocket import common -from mod_pywebsocket.handshake import hybi +from pywebsocket3 import common +from pywebsocket3.handshake import hybi # Export AbortedByUserException, HandshakeException, and VersionException # symbol from this module. -from mod_pywebsocket.handshake.base import AbortedByUserException -from mod_pywebsocket.handshake.base import HandshakeException -from mod_pywebsocket.handshake.base import VersionException +from pywebsocket3.handshake.base import ( + AbortedByUserException, + HandshakeException, + VersionException +) + _LOGGER = logging.getLogger(__name__) diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/handshake/base.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/handshake/base.py similarity index 97% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/handshake/base.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/handshake/base.py index ffad0614d6b..561f7b650a2 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/handshake/base.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/handshake/base.py @@ -32,15 +32,12 @@ processors. from __future__ import absolute_import -from mod_pywebsocket import common -from mod_pywebsocket import http_header_util -from mod_pywebsocket.extensions import get_extension_processor -from mod_pywebsocket.stream import StreamOptions -from mod_pywebsocket.stream import Stream -from mod_pywebsocket import util +from pywebsocket3 import common, http_header_util, util +from pywebsocket3.extensions import get_extension_processor +from pywebsocket3.stream import Stream, StreamOptions + +from six.moves import map, range -from six.moves import map -from six.moves import range # Defining aliases for values used frequently. _VERSION_LATEST = common.VERSION_HYBI_LATEST diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/handshake/hybi.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/handshake/hybi.py similarity index 95% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/handshake/hybi.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/handshake/hybi.py index cf931db5a50..2e26532c3f7 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/handshake/hybi.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/handshake/hybi.py @@ -34,17 +34,20 @@ http://tools.ietf.org/html/rfc6455 """ from __future__ import absolute_import + import base64 import re from hashlib import sha1 -from mod_pywebsocket import common -from mod_pywebsocket.handshake.base import get_mandatory_header -from mod_pywebsocket.handshake.base import HandshakeException -from mod_pywebsocket.handshake.base import parse_token_list -from mod_pywebsocket.handshake.base import validate_mandatory_header -from mod_pywebsocket.handshake.base import HandshakerBase -from mod_pywebsocket import util +from pywebsocket3 import common, util +from pywebsocket3.handshake.base import ( + get_mandatory_header, + HandshakeException, + parse_token_list, + validate_mandatory_header, + HandshakerBase +) + # Used to validate the value in the Sec-WebSocket-Key header strictly. RFC 4648 # disallows non-zero padding, so the character right before == must be any of diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/http_header_util.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/http_header_util.py similarity index 99% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/http_header_util.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/http_header_util.py index 21fde59af10..63e698bc16e 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/http_header_util.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/http_header_util.py @@ -31,8 +31,10 @@ in HTTP RFC http://www.ietf.org/rfc/rfc2616.txt. """ from __future__ import absolute_import + import six.moves.urllib.parse + _SEPARATORS = '()<>@,;:\\"/[]?={} \t' diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/memorizingfile.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/memorizingfile.py similarity index 99% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/memorizingfile.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/memorizingfile.py index d3539676184..4ee132fae61 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/memorizingfile.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/memorizingfile.py @@ -34,6 +34,7 @@ A memorizing file wraps a file and memorizes lines read by readline. """ from __future__ import absolute_import + import sys @@ -61,7 +62,7 @@ class MemorizingFile(object): def __getattribute__(self, name): """Return a file attribute. - + Returns the value overridden by this class for some attributes, and forwards the call to _file for the other attributes. """ diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/msgutil.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/msgutil.py similarity index 96% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/msgutil.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/msgutil.py index f58ca78e14a..dd6a6fc4100 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/msgutil.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/msgutil.py @@ -36,14 +36,18 @@ bytes writing/reading. """ from __future__ import absolute_import -import six.moves.queue + import threading +import six.moves.queue + # Export Exception symbols from msgutil for backward compatibility -from mod_pywebsocket._stream_exceptions import ConnectionTerminatedException -from mod_pywebsocket._stream_exceptions import InvalidFrameException -from mod_pywebsocket._stream_exceptions import BadOperationException -from mod_pywebsocket._stream_exceptions import UnsupportedFrameException +from pywebsocket3._stream_exceptions import ( + ConnectionTerminatedException, + InvalidFrameException, + BadOperationException, + UnsupportedFrameException +) # An API for handler to send/receive WebSocket messages. diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/request_handler.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/request_handler.py similarity index 98% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/request_handler.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/request_handler.py index 5e9c875dc7d..9d89b47c69b 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/request_handler.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/request_handler.py @@ -34,12 +34,14 @@ import os from six.moves import CGIHTTPServer from six.moves import http_client -from mod_pywebsocket import common -from mod_pywebsocket import dispatch -from mod_pywebsocket import handshake -from mod_pywebsocket import http_header_util -from mod_pywebsocket import memorizingfile -from mod_pywebsocket import util +from pywebsocket3 import ( + common, + dispatch, + handshake, + http_header_util, + memorizingfile, + util +) # 1024 is practically large enough to contain WebSocket handshake lines. _MAX_MEMORIZED_LINES = 1024 diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/server_util.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/server_util.py similarity index 97% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/server_util.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/server_util.py index 8f9e273e977..3bf07f885bf 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/server_util.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/server_util.py @@ -33,8 +33,7 @@ import logging.handlers import threading import time -from mod_pywebsocket import common -from mod_pywebsocket import util +from pywebsocket3 import common, util def _get_logger_from_class(c): diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/standalone.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/standalone.py similarity index 96% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/standalone.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/standalone.py index bd32158790f..0c324c4221e 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/standalone.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/standalone.py @@ -38,7 +38,7 @@ BASIC USAGE Go to the src directory and run - $ python mod_pywebsocket/standalone.py [-p ] + $ python pywebsocket3/standalone.py [-p ] [-w ] [-d ] @@ -48,11 +48,11 @@ Go to the src directory and run is the path to the root directory of WebSocket handlers. If not specified, will be used. See __init__.py (or -run $ pydoc mod_pywebsocket) for how to write WebSocket handlers. +run $ pydoc pywebsocket3) for how to write WebSocket handlers. For more detail and other options, run - $ python mod_pywebsocket/standalone.py --help + $ python pywebsocket3/standalone.py --help or see _build_option_parser method below. @@ -66,7 +66,7 @@ Go to the src directory and run standalone.py with -d option to set the document root to the directory containing example HTMLs and handlers like this: $ cd src - $ PYTHONPATH=. python mod_pywebsocket/standalone.py -d example + $ PYTHONPATH=. python pywebsocket3/standalone.py -d example to launch pywebsocket with the sample handler and html on port 80. Open http://localhost/console.html, click the connect button, type something into @@ -85,7 +85,7 @@ TLS connection silently fails while pyOpenSSL fails on startup. Example: - $ PYTHONPATH=. python mod_pywebsocket/standalone.py \ + $ PYTHONPATH=. python pywebsocket3/standalone.py \ -d example \ -p 10443 \ -t \ @@ -105,7 +105,7 @@ TLS support. Example: - $ PYTHONPATH=. python mod_pywebsocket/standalone.py -d example -p 10443 -t \ + $ PYTHONPATH=. python pywebsocket3/standalone.py -d example -p 10443 -t \ -c ../test/cert/cert.pem -k ../test/cert/key.pem \ --tls-client-auth \ --tls-client-ca=../test/cert/cacert.pem @@ -154,19 +154,20 @@ used outside a firewall. """ from __future__ import absolute_import -from six.moves import configparser + +import argparse import base64 import logging -import argparse import os -import six import sys import traceback -from mod_pywebsocket import common -from mod_pywebsocket import util -from mod_pywebsocket import server_util -from mod_pywebsocket.websocket_server import WebSocketServer +import six +from six.moves import configparser + +from pywebsocket3 import common, server_util, util +from pywebsocket3.websocket_server import WebSocketServer + _DEFAULT_LOG_MAX_BYTES = 1024 * 256 _DEFAULT_LOG_BACKUP_COUNT = 5 @@ -480,8 +481,8 @@ def _main(args=None): server = WebSocketServer(options) server.serve_forever() except Exception as e: - logging.critical('mod_pywebsocket: %s' % e) - logging.critical('mod_pywebsocket: %s' % traceback.format_exc()) + logging.critical('pywebsocket3: %s' % e) + logging.critical('pywebsocket3: %s' % traceback.format_exc()) sys.exit(1) diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/stream.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/stream.py similarity index 98% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/stream.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/stream.py index 82d1ea619c0..dd41850dc46 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/stream.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/stream.py @@ -33,21 +33,22 @@ Specification: http://tools.ietf.org/html/rfc6455 """ -from collections import deque import logging import os import struct import time -import socket +from collections import deque + import six -from mod_pywebsocket import common -from mod_pywebsocket import util -from mod_pywebsocket._stream_exceptions import BadOperationException -from mod_pywebsocket._stream_exceptions import ConnectionTerminatedException -from mod_pywebsocket._stream_exceptions import InvalidFrameException -from mod_pywebsocket._stream_exceptions import InvalidUTF8Exception -from mod_pywebsocket._stream_exceptions import UnsupportedFrameException +from pywebsocket3 import common, util +from pywebsocket3._stream_exceptions import ( + BadOperationException, + ConnectionTerminatedException, + InvalidFrameException, + InvalidUTF8Exception, + UnsupportedFrameException +) _NOOP_MASKER = util.NoopMasker() diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/util.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/util.py similarity index 98% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/util.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/util.py index 04006ecacd5..9c25ab83152 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/util.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/util.py @@ -29,20 +29,18 @@ """WebSocket utilities.""" from __future__ import absolute_import -import array -import errno + import logging import os import re -import six -from six.moves import map -from six.moves import range -import socket import struct import zlib +import six +from six.moves import map, range + try: - from mod_pywebsocket import fast_masking + from pywebsocket3 import fast_masking except ImportError: pass diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/websocket_server.py b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/websocket_server.py similarity index 98% rename from tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/websocket_server.py rename to tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/websocket_server.py index 9f67c9f02d4..e7485ecbef0 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/mod_pywebsocket/websocket_server.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/pywebsocket3/websocket_server.py @@ -34,8 +34,7 @@ to use standalone.py, since it is intended to act as a skeleton of this module. """ from __future__ import absolute_import -from six.moves import BaseHTTPServer -from six.moves import socketserver + import logging import re import select @@ -44,9 +43,10 @@ import ssl import threading import traceback -from mod_pywebsocket import dispatch -from mod_pywebsocket import util -from mod_pywebsocket.request_handler import WebSocketRequestHandler +from six.moves import BaseHTTPServer, socketserver + +from pywebsocket3 import dispatch, util +from pywebsocket3.request_handler import WebSocketRequestHandler def _alias_handlers(dispatcher, websock_handlers_map_file): diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/setup.cfg b/tests/wpt/tests/tools/third_party/pywebsocket3/setup.cfg new file mode 100644 index 00000000000..8bfd5a12f85 --- /dev/null +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/setup.cfg @@ -0,0 +1,4 @@ +[egg_info] +tag_build = +tag_date = 0 + diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/setup.py b/tests/wpt/tests/tools/third_party/pywebsocket3/setup.py index 12c60d86179..ab9a24a3e76 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/setup.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/setup.py @@ -28,7 +28,8 @@ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -"""Set up script for mod_pywebsocket. + +"""Set up script for pywebsocket3. """ from __future__ import absolute_import @@ -36,7 +37,7 @@ from __future__ import print_function from setuptools import setup, Extension import sys -_PACKAGE_NAME = 'mod_pywebsocket' +_PACKAGE_NAME = 'pywebsocket3' # Build and use a C++ extension for faster masking. SWIG is required. _USE_FAST_MASKING = False @@ -49,8 +50,8 @@ if sys.hexversion < 0x020700f0: if _USE_FAST_MASKING: setup(ext_modules=[ - Extension('mod_pywebsocket/_fast_masking', - ['mod_pywebsocket/fast_masking.i'], + Extension('pywebsocket3/_fast_masking', + ['pywebsocket3/fast_masking.i'], swig_opts=['-c++']) ]) @@ -58,16 +59,16 @@ setup( author='Yuzo Fujishima', author_email='yuzo@chromium.org', description='Standalone WebSocket Server for testing purposes.', - long_description=('mod_pywebsocket is a standalone server for ' + long_description=('pywebsocket3 is a standalone server for ' 'the WebSocket Protocol (RFC 6455). ' - 'See mod_pywebsocket/__init__.py for more detail.'), + 'See pywebsocket3/__init__.py for more detail.'), license='See LICENSE', name=_PACKAGE_NAME, packages=[_PACKAGE_NAME, _PACKAGE_NAME + '.handshake'], python_requires='>=2.7', install_requires=['six'], url='https://github.com/GoogleChromeLabs/pywebsocket3', - version='3.0.2', + version='4.0.2', ) # vi:sts=4 sw=4 et diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/cert/cacert.pem b/tests/wpt/tests/tools/third_party/pywebsocket3/test/cert/cacert.pem deleted file mode 100644 index 4dadae121bd..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/cert/cacert.pem +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICvDCCAiWgAwIBAgIJAKqVghkGF1rSMA0GCSqGSIb3DQEBBQUAMEkxCzAJBgNV -BAYTAkpQMQ4wDAYDVQQIEwVUb2t5bzEUMBIGA1UEChMLcHl3ZWJzb2NrZXQxFDAS -BgNVBAMTC3B5d2Vic29ja2V0MB4XDTEyMDYwNjA3MjQzM1oXDTM5MTAyMzA3MjQz -M1owSTELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMRQwEgYDVQQKEwtweXdl -YnNvY2tldDEUMBIGA1UEAxMLcHl3ZWJzb2NrZXQwgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBAKoSEW2biQxVrMMKdn/8PJzDYiSXDPR9WQbLRRQ1Gm5jkCYiahXW -u2CbTThfPPfi2NHA3I+HlT7gO9yR7RVUvN6ISUzGwXDEq4f4UNqtQOhQaqqK+CZ9 -LO/BhO/YYfNrbSPlYzHUKaT9ese7xO9VzVKLW+qUf2Mjh4/+SzxBDNP7AgMBAAGj -gaswgagwHQYDVR0OBBYEFOsWdxCSuyhwaZeab6BoTho3++bzMHkGA1UdIwRyMHCA -FOsWdxCSuyhwaZeab6BoTho3++bzoU2kSzBJMQswCQYDVQQGEwJKUDEOMAwGA1UE -CBMFVG9reW8xFDASBgNVBAoTC3B5d2Vic29ja2V0MRQwEgYDVQQDEwtweXdlYnNv -Y2tldIIJAKqVghkGF1rSMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEA -gsMI1WEYqNw/jhUIdrTBcCxJ0X6hJvA9ziKANVm1Rs+4P3YDArkQ8bCr6xY+Kw7s -Zp0yE7dM8GMdi+DU6hL3t3E5eMkTS1yZr9WCK4f2RLo+et98selZydpHemF3DJJ3 -gAj8Sx4LBaG8Cb/WnEMPv3MxG3fBE5favF6V4jU07hQ= ------END CERTIFICATE----- diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/cert/cert.pem b/tests/wpt/tests/tools/third_party/pywebsocket3/test/cert/cert.pem deleted file mode 100644 index 25379a72b0d..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/cert/cert.pem +++ /dev/null @@ -1,61 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 1 (0x1) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=JP, ST=Tokyo, O=pywebsocket, CN=pywebsocket - Validity - Not Before: Jun 6 07:25:08 2012 GMT - Not After : Oct 23 07:25:08 2039 GMT - Subject: C=JP, ST=Tokyo, O=pywebsocket, CN=pywebsocket - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:de:10:ce:3a:5a:04:a4:1c:29:93:5c:23:82:1a: - f2:06:01:e6:2b:a4:0f:dd:77:49:76:89:03:a2:21: - de:04:75:c6:e2:dd:fb:35:27:3a:a2:92:8e:12:62: - 2b:3e:1f:f4:78:df:b6:94:cb:27:d6:cb:d6:37:d7: - 5c:08:f0:09:3e:c9:ce:24:2d:00:c9:df:4a:e0:99: - e5:fb:23:a9:e2:d6:c9:3d:96:fa:01:88:de:5a:89: - b0:cf:03:67:6f:04:86:1d:ef:62:1c:55:a9:07:9a: - 2e:66:2a:73:5b:4c:62:03:f9:82:83:db:68:bf:b8: - 4b:0b:8b:93:11:b8:54:73:7b - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Netscape Cert Type: - SSL Server - Netscape Comment: - OpenSSL Generated Certificate - X509v3 Subject Key Identifier: - 82:A1:73:8B:16:0C:7C:E4:D3:46:95:13:95:1A:32:C1:84:E9:06:00 - X509v3 Authority Key Identifier: - keyid:EB:16:77:10:92:BB:28:70:69:97:9A:6F:A0:68:4E:1A:37:FB:E6:F3 - - Signature Algorithm: sha1WithRSAEncryption - 6b:b3:46:29:02:df:b0:c8:8e:c4:d7:7f:a0:1e:0d:1a:eb:2f: - df:d1:48:57:36:5f:95:8c:1b:f0:51:d6:52:e7:8d:84:3b:9f: - d8:ed:22:9c:aa:bd:ee:9b:90:1d:84:a3:4c:0b:cb:eb:64:73: - ba:f7:15:ce:da:5f:db:8b:15:07:a6:28:7f:b9:8c:11:9b:64: - d3:f1:be:52:4f:c3:d8:58:fe:de:56:63:63:3b:51:ed:a7:81: - f9:05:51:70:63:32:09:0e:94:7e:05:fe:a1:56:18:34:98:d5: - 99:1e:4e:27:38:89:90:6a:e5:ce:60:35:01:f5:de:34:60:b1: - cb:ae ------BEGIN CERTIFICATE----- -MIICmDCCAgGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBJMQswCQYDVQQGEwJKUDEO -MAwGA1UECBMFVG9reW8xFDASBgNVBAoTC3B5d2Vic29ja2V0MRQwEgYDVQQDEwtw -eXdlYnNvY2tldDAeFw0xMjA2MDYwNzI1MDhaFw0zOTEwMjMwNzI1MDhaMEkxCzAJ -BgNVBAYTAkpQMQ4wDAYDVQQIEwVUb2t5bzEUMBIGA1UEChMLcHl3ZWJzb2NrZXQx -FDASBgNVBAMTC3B5d2Vic29ja2V0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB -gQDeEM46WgSkHCmTXCOCGvIGAeYrpA/dd0l2iQOiId4Edcbi3fs1Jzqiko4SYis+ -H/R437aUyyfWy9Y311wI8Ak+yc4kLQDJ30rgmeX7I6ni1sk9lvoBiN5aibDPA2dv -BIYd72IcVakHmi5mKnNbTGID+YKD22i/uEsLi5MRuFRzewIDAQABo4GPMIGMMAkG -A1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgZAMCwGCWCGSAGG+EIBDQQfFh1PcGVu -U1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUgqFzixYMfOTTRpUT -lRoywYTpBgAwHwYDVR0jBBgwFoAU6xZ3EJK7KHBpl5pvoGhOGjf75vMwDQYJKoZI -hvcNAQEFBQADgYEAa7NGKQLfsMiOxNd/oB4NGusv39FIVzZflYwb8FHWUueNhDuf -2O0inKq97puQHYSjTAvL62RzuvcVztpf24sVB6Yof7mMEZtk0/G+Uk/D2Fj+3lZj -YztR7aeB+QVRcGMyCQ6UfgX+oVYYNJjVmR5OJziJkGrlzmA1AfXeNGCxy64= ------END CERTIFICATE----- diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/cert/client_cert.p12 b/tests/wpt/tests/tools/third_party/pywebsocket3/test/cert/client_cert.p12 deleted file mode 100644 index 14e13992798..00000000000 Binary files a/tests/wpt/tests/tools/third_party/pywebsocket3/test/cert/client_cert.p12 and /dev/null differ diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/cert/key.pem b/tests/wpt/tests/tools/third_party/pywebsocket3/test/cert/key.pem deleted file mode 100644 index fae858318f2..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/cert/key.pem +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXgIBAAKBgQDeEM46WgSkHCmTXCOCGvIGAeYrpA/dd0l2iQOiId4Edcbi3fs1 -Jzqiko4SYis+H/R437aUyyfWy9Y311wI8Ak+yc4kLQDJ30rgmeX7I6ni1sk9lvoB -iN5aibDPA2dvBIYd72IcVakHmi5mKnNbTGID+YKD22i/uEsLi5MRuFRzewIDAQAB -AoGBAIuCuV1Vcnb7rm8CwtgZP5XgmY8vSjxTldafa6XvawEYUTP0S77v/1llg1Yv -UIV+I+PQgG9oVoYOl22LoimHS/Z3e1fsot5tDYszGe8/Gkst4oaReSoxvBUa6WXp -QSo7YFCajuHtE+W/gzF+UHbdzzXIDjQZ314LNF5t+4UnsEPBAkEA+girImqWoM2t -3UR8f8oekERwsmEMf9DH5YpH4cvUnvI+kwesC/r2U8Sho++fyEMUNm7aIXGqNLga -ogAM+4NX4QJBAONdSxSay22egTGNoIhLndljWkuOt/9FWj2klf/4QxD4blMJQ5Oq -QdOGAh7nVQjpPLQ5D7CBVAKpGM2CD+QJBtsCQEP2kz35pxPylG3urcC2mfQxBkkW -ZCViBNP58GwJ0bOauTOSBEwFXWuLqTw8aDwxL49UNmqc0N0fpe2fAehj3UECQQCm -FH/DjU8Lw7ybddjNtm6XXPuYNagxz3cbkB4B3FchDleIUDwMoVF0MW9bI5/54mV1 -QDk1tUKortxvQZJaAD4BAkEAhGOHQqPd6bBBoFBvpaLzPJMxwLKrB+Wtkq/QlC72 -ClRiMn2g8SALiIL3BDgGXKcKE/Wy7jo/af/JCzQ/cPqt/A== ------END RSA PRIVATE KEY----- diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/client_for_testing.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/client_for_testing.py index a45e8f5cf2d..62756763718 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/client_for_testing.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/client_for_testing.py @@ -33,8 +33,8 @@ This module contains helper methods for performing handshake, frame sending/receiving as a WebSocket client. -This is code for testing mod_pywebsocket. Keep this code independent from -mod_pywebsocket. Don't import e.g. Stream class for generating frame for +This is code for testing pywebsocket3. Keep this code independent from +pywebsocket3. Don't import e.g. Stream class for generating frame for testing. Using util.hexify, etc. that are not related to protocol processing is allowed. @@ -43,22 +43,20 @@ This code is far from robust, e.g., we cut corners in handshake. """ from __future__ import absolute_import + import base64 import errno -import logging import os -import random import re import socket import struct import time from hashlib import sha1 -from six import iterbytes -from six import indexbytes -from mod_pywebsocket import common -from mod_pywebsocket import util -from mod_pywebsocket.handshake import HandshakeException +from six import indexbytes, iterbytes + +from pywebsocket3 import common, util +from pywebsocket3.handshake import HandshakeException DEFAULT_PORT = 80 DEFAULT_SECURE_PORT = 443 @@ -702,15 +700,15 @@ class Client(object): try: read_data = receive_bytes(self._socket, 1) except Exception as e: - if str(e).find( - 'Connection closed before receiving requested length ' - ) == 0: + if str(e).find('Connection closed before receiving requested length ') == 0: return + try: - error_number, message = e for error_name in ['ECONNRESET', 'WSAECONNRESET']: - if (error_name in dir(errno) - and error_number == getattr(errno, error_name)): + if ( + error_name in dir(errno) and + e.errno == getattr(errno, error_name) + ): return except: raise e diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/mock.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/mock.py index eeaef52ecf0..c460d9b7f03 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/mock.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/mock.py @@ -30,17 +30,14 @@ """ from __future__ import absolute_import -import six.moves.queue -import threading -import struct -import six -from mod_pywebsocket import common -from mod_pywebsocket import util -from mod_pywebsocket.stream import Stream -from mod_pywebsocket.stream import StreamOptions +import six +import six.moves.queue from six.moves import range +from pywebsocket3 import common, util +from pywebsocket3.stream import Stream, StreamOptions + class _MockConnBase(object): """Base class of mocks for mod_python.apache.mp_conn. diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/run_all.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/run_all.py index ea52223cea6..569bdb4c07e 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/run_all.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/run_all.py @@ -31,7 +31,7 @@ """Run all tests in the same directory. This suite is expected to be run under pywebsocket's src directory, i.e. the -directory containing mod_pywebsocket, test, etc. +directory containing pywebsocket3, test, etc. To change loggin level, please specify --log-level option. python test/run_test.py --log-level debug @@ -42,14 +42,16 @@ example, run this for making the test runner verbose. """ from __future__ import absolute_import -import logging + import argparse +import logging import os import re -import six import sys import unittest +import six + _TEST_MODULE_PATTERN = re.compile(r'^(test_.+)\.py$') diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/set_sys_path.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/set_sys_path.py index 48d0e116a58..c35cb6f9721 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/set_sys_path.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/set_sys_path.py @@ -28,14 +28,15 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """Configuration for testing. -Test files should import this module before mod_pywebsocket. +Test files should import this module before pywebsocket3. """ from __future__ import absolute_import + import os import sys -# Add the parent directory to sys.path to enable importing mod_pywebsocket. +# Add the parent directory to sys.path to enable importing pywebsocket3. sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) # vi:sts=4 sw=4 et diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_dispatch.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_dispatch.py index 132dd92d76c..18a39d1af9d 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_dispatch.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_dispatch.py @@ -31,16 +31,17 @@ """Tests for dispatch module.""" from __future__ import absolute_import + import os import unittest -import set_sys_path # Update sys.path to locate mod_pywebsocket module. - -from mod_pywebsocket import dispatch -from mod_pywebsocket import handshake -from test import mock from six.moves import zip +import set_sys_path # Update sys.path to locate pywebsocket3 module. +from pywebsocket3 import dispatch, handshake +from test import mock + + _TEST_HANDLERS_DIR = os.path.join(os.path.dirname(__file__), 'testdata', 'handlers') diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_endtoend.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_endtoend.py index 2789e4a57e2..9718c6a2b29 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_endtoend.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_endtoend.py @@ -28,23 +28,23 @@ # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -"""End-to-end tests for pywebsocket. Tests standalone.py. +"""End-to-end tests for pywebsocket3. Tests standalone.py. """ from __future__ import absolute_import -from six.moves import urllib + import locale import logging import os -import signal import socket import subprocess import sys import time import unittest -import set_sys_path # Update sys.path to locate mod_pywebsocket module. +from six.moves import urllib +import set_sys_path # Update sys.path to locate pywebsocket3 module. from test import client_for_testing # Special message that tells the echo server to start closing handshake @@ -137,7 +137,7 @@ class EndToEndTestBase(unittest.TestCase): self.server_stderr = None self.top_dir = os.path.join(os.path.dirname(__file__), '..') os.putenv('PYTHONPATH', os.path.pathsep.join(sys.path)) - self.standalone_command = os.path.join(self.top_dir, 'mod_pywebsocket', + self.standalone_command = os.path.join(self.top_dir, 'pywebsocket3', 'standalone.py') self.document_root = os.path.join(self.top_dir, 'example') s = socket.socket() diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_extensions.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_extensions.py index 39a111888be..008df248273 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_extensions.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_extensions.py @@ -31,13 +31,12 @@ """Tests for extensions module.""" from __future__ import absolute_import + import unittest import zlib -import set_sys_path # Update sys.path to locate mod_pywebsocket module. - -from mod_pywebsocket import common -from mod_pywebsocket import extensions +import set_sys_path # Update sys.path to locate pywebsocket3 module. +from pywebsocket3 import common, extensions class ExtensionsTest(unittest.TestCase): diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_handshake.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_handshake.py index 7f4acf56ff0..c8e25ab0994 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_handshake.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_handshake.py @@ -31,16 +31,17 @@ """Tests for handshake.base module.""" from __future__ import absolute_import + import unittest -import set_sys_path # Update sys.path to locate mod_pywebsocket module. - -from mod_pywebsocket.common import ExtensionParameter -from mod_pywebsocket.common import ExtensionParsingException -from mod_pywebsocket.common import format_extensions -from mod_pywebsocket.common import parse_extensions -from mod_pywebsocket.handshake.base import HandshakeException -from mod_pywebsocket.handshake.base import validate_subprotocol +import set_sys_path # Update sys.path to locate pywebsocket3 module. +from pywebsocket3.common import ( + ExtensionParameter, + ExtensionParsingException, + format_extensions, + parse_extensions, +) +from pywebsocket3.handshake.base import HandshakeException, validate_subprotocol class ValidateSubprotocolTest(unittest.TestCase): diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_handshake_hybi.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_handshake_hybi.py index 8c658221703..ee63ed45b49 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_handshake_hybi.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_handshake_hybi.py @@ -31,15 +31,17 @@ """Tests for handshake module.""" from __future__ import absolute_import + import unittest -import set_sys_path # Update sys.path to locate mod_pywebsocket module. -from mod_pywebsocket import common -from mod_pywebsocket.handshake.base import AbortedByUserException -from mod_pywebsocket.handshake.base import HandshakeException -from mod_pywebsocket.handshake.base import VersionException -from mod_pywebsocket.handshake.hybi import Handshaker - +import set_sys_path # Update sys.path to locate pywebsocket3 module. +from pywebsocket3 import common +from pywebsocket3.handshake.base import ( + AbortedByUserException, + HandshakeException, + VersionException, +) +from pywebsocket3.handshake.hybi import Handshaker from test import mock diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_http_header_util.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_http_header_util.py index f8c8e7a981b..bd9b9bfc2e6 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_http_header_util.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_http_header_util.py @@ -31,10 +31,11 @@ """Tests for http_header_util module.""" from __future__ import absolute_import + import unittest import sys -from mod_pywebsocket import http_header_util +from pywebsocket3 import http_header_util class UnitTest(unittest.TestCase): diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_memorizingfile.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_memorizingfile.py index f7288c510b8..47490859625 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_memorizingfile.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_memorizingfile.py @@ -31,12 +31,13 @@ """Tests for memorizingfile module.""" from __future__ import absolute_import + import unittest + import six -import set_sys_path # Update sys.path to locate mod_pywebsocket module. - -from mod_pywebsocket import memorizingfile +import set_sys_path # Update sys.path to locate pywebsocket3 module. +from pywebsocket3 import memorizingfile class UtilTest(unittest.TestCase): diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_mock.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_mock.py index 073873dde97..df5353bc593 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_mock.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_mock.py @@ -31,12 +31,13 @@ """Tests for mock module.""" from __future__ import absolute_import -import six.moves.queue + import threading import unittest -import set_sys_path # Update sys.path to locate mod_pywebsocket module. +import six.moves.queue +import set_sys_path # Update sys.path to locate pywebsocket3 module. from test import mock diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_msgutil.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_msgutil.py index 1122c281b78..99aa200ba48 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_msgutil.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_msgutil.py @@ -33,26 +33,26 @@ from __future__ import absolute_import from __future__ import print_function from __future__ import division -import array -import six.moves.queue + import random import struct import unittest import zlib -import set_sys_path # Update sys.path to locate mod_pywebsocket module. - -from mod_pywebsocket import common -from mod_pywebsocket.extensions import PerMessageDeflateExtensionProcessor -from mod_pywebsocket import msgutil -from mod_pywebsocket.stream import InvalidUTF8Exception -from mod_pywebsocket.stream import Stream -from mod_pywebsocket.stream import StreamOptions -from mod_pywebsocket import util -from test import mock +from six import iterbytes from six.moves import map from six.moves import range -from six import iterbytes +import six.moves.queue + +import set_sys_path # Update sys.path to locate pywebsocket3 module. +from pywebsocket3 import common, msgutil, util +from pywebsocket3.extensions import PerMessageDeflateExtensionProcessor +from pywebsocket3.stream import ( + InvalidUTF8Exception, + Stream, + StreamOptions, +) +from test import mock # We use one fixed nonce for testing instead of cryptographically secure PRNG. _MASKING_NONCE = b'ABCD' diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_stream.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_stream.py index 153899d2053..c165e846883 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_stream.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_stream.py @@ -31,12 +31,11 @@ """Tests for stream module.""" from __future__ import absolute_import + import unittest -import set_sys_path # Update sys.path to locate mod_pywebsocket module. - -from mod_pywebsocket import common -from mod_pywebsocket import stream +import set_sys_path # Update sys.path to locate pywebsocket3 module. +from pywebsocket3 import common, stream class StreamTest(unittest.TestCase): diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_util.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_util.py index bf4bd32bbac..24c4b5bfbdd 100755 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_util.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/test_util.py @@ -32,18 +32,16 @@ from __future__ import absolute_import from __future__ import print_function + import os import random -import sys import unittest -import struct -import set_sys_path # Update sys.path to locate mod_pywebsocket module. - -from mod_pywebsocket import util +from six import int2byte, PY3 from six.moves import range -from six import PY3 -from six import int2byte + +import set_sys_path # Update sys.path to locate pywebsocket3 module. +from pywebsocket3 import util _TEST_DATA_DIR = os.path.join(os.path.dirname(__file__), 'testdata') diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/testdata/README b/tests/wpt/tests/tools/third_party/pywebsocket3/test/testdata/README deleted file mode 100644 index c001aa5595c..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/testdata/README +++ /dev/null @@ -1 +0,0 @@ -Test data directory diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/testdata/handlers/abort_by_user_wsh.py b/tests/wpt/tests/tools/third_party/pywebsocket3/test/testdata/handlers/abort_by_user_wsh.py index 63cb541bb7e..a6e08318473 100644 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/testdata/handlers/abort_by_user_wsh.py +++ b/tests/wpt/tests/tools/third_party/pywebsocket3/test/testdata/handlers/abort_by_user_wsh.py @@ -27,7 +27,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from mod_pywebsocket import handshake +from pywebsocket3 import handshake def web_socket_do_extra_handshake(request): diff --git a/tests/wpt/tests/tools/third_party/pywebsocket3/test/testdata/hello.pl b/tests/wpt/tests/tools/third_party/pywebsocket3/test/testdata/hello.pl deleted file mode 100644 index 882ef5a1006..00000000000 --- a/tests/wpt/tests/tools/third_party/pywebsocket3/test/testdata/hello.pl +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/perl -wT -# -# Copyright 2012, Google Inc. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -print "Hello\n"; diff --git a/tests/wpt/tests/tools/tox.ini b/tests/wpt/tests/tools/tox.ini index a4b747ac4fa..a4ed2cb05e5 100644 --- a/tests/wpt/tests/tools/tox.ini +++ b/tests/wpt/tests/tools/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py37,py38,py39,py310,py311,{py37,py38,py39,py310,py311}-{flake8,mypy} +envlist = py38,py39,py310,py311,{py38,py39,py310,py311}-{flake8,mypy} skipsdist=True skip_missing_interpreters=False diff --git a/tests/wpt/tests/tools/wave/tox.ini b/tests/wpt/tests/tools/wave/tox.ini index 06bdfcd6743..28cecdebb5a 100644 --- a/tests/wpt/tests/tools/wave/tox.ini +++ b/tests/wpt/tests/tools/wave/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py37,py38,py39,py310,py311 +envlist = py38,py39,py310,py311 skipsdist=True skip_missing_interpreters = False diff --git a/tests/wpt/tests/tools/wpt/tox.ini b/tests/wpt/tests/tools/wpt/tox.ini index 4068f708986..5bae81e9536 100644 --- a/tests/wpt/tests/tools/wpt/tox.ini +++ b/tests/wpt/tests/tools/wpt/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py37,py38,py39,py310,py311 +envlist = py38,py39,py310,py311 skipsdist=True skip_missing_interpreters = False diff --git a/tests/wpt/tests/tools/wptrunner/tox.ini b/tests/wpt/tests/tools/wptrunner/tox.ini index 82d3ac6f555..cd7021a7643 100644 --- a/tests/wpt/tests/tools/wptrunner/tox.ini +++ b/tests/wpt/tests/tools/wptrunner/tox.ini @@ -2,7 +2,7 @@ xfail_strict=true [tox] -envlist = py311-{base,chrome,firefox,opera,safari,sauce,servo,webkit,webkitgtk_minibrowser,epiphany},{py37,py38,py39,py310}-base +envlist = py311-{base,chrome,firefox,opera,safari,sauce,servo,webkit,webkitgtk_minibrowser,epiphany},{py38,py39,py310}-base skip_missing_interpreters = False [testenv] diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py index 8198bfe11d2..dfac89cb5ec 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py @@ -115,6 +115,10 @@ def executor_kwargs(logger, test_type, test_environment, run_info_data, # The GenericSensorExtraClasses flag enables the browser-side # implementation of sensors such as Ambient Light Sensor. chrome_options["args"].append("--enable-features=GenericSensorExtraClasses") + # Do not show Chrome for Testing infobar. For other Chromium build this + # flag is no-op. Required to avoid flakiness in tests, as the infobar + # changes the viewport, which can happen during the test run. + chrome_options["args"].append("--disable-infobars") # Classify `http-private`, `http-public` and https variants in the # appropriate IP address spaces. diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/actions.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/actions.py index cb9c1a15082..6e0c081b48f 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/actions.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/actions.py @@ -443,6 +443,26 @@ class GetVirtualSensorInformationAction: self.logger.debug("Requesting information from %s sensor" % sensor_type) return self.protocol.virtual_sensor.get_virtual_sensor_information(sensor_type) +class SetDevicePostureAction: + name = "set_device_posture" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + posture = payload["posture"] + return self.protocol.device_posture.set_device_posture(posture) + +class ClearDevicePostureAction: + name = "clear_device_posture" + + def __init__(self, logger, protocol): + self.logger = logger + self.protocol = protocol + + def __call__(self, payload): + return self.protocol.device_posture.clear_device_posture() actions = [ClickAction, DeleteAllCookiesAction, @@ -477,4 +497,6 @@ actions = [ClickAction, CreateVirtualSensorAction, UpdateVirtualSensorAction, RemoveVirtualSensorAction, - GetVirtualSensorInformationAction] + GetVirtualSensorInformationAction, + SetDevicePostureAction, + ClearDevicePostureAction] diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executormarionette.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executormarionette.py index 0f640d77415..05a9fc1ae4b 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executormarionette.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executormarionette.py @@ -45,6 +45,7 @@ from .protocol import (AccessibilityProtocolPart, PrintProtocolPart, DebugProtocolPart, VirtualSensorProtocolPart, + DevicePostureProtocolPart, merge_dicts) @@ -749,6 +750,17 @@ class MarionetteVirtualSensorProtocolPart(VirtualSensorProtocolPart): raise NotImplementedError("get_virtual_sensor_information not yet implemented") +class MarionetteDevicePostureProtocolPart(DevicePostureProtocolPart): + def setup(self): + self.marionette = self.parent.marionette + + def set_device_posture(self, posture): + raise NotImplementedError("set_device_posture not yet implemented") + + def clear_device_posture(self): + raise NotImplementedError("clear_device_posture not yet implemented") + + class MarionetteProtocol(Protocol): implements = [MarionetteBaseProtocolPart, MarionetteTestharnessProtocolPart, @@ -769,7 +781,8 @@ class MarionetteProtocol(Protocol): MarionettePrintProtocolPart, MarionetteDebugProtocolPart, MarionetteAccessibilityProtocolPart, - MarionetteVirtualSensorProtocolPart] + MarionetteVirtualSensorProtocolPart, + MarionetteDevicePostureProtocolPart] def __init__(self, executor, browser, capabilities=None, timeout_multiplier=1, e10s=True, ccov=False): do_delayed_imports() diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py index 6df2d964616..3a2f29bdc9d 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py @@ -35,6 +35,7 @@ from .protocol import (BaseProtocolPart, RPHRegistrationsProtocolPart, FedCMProtocolPart, VirtualSensorProtocolPart, + DevicePostureProtocolPart, merge_dicts) from webdriver.client import Session @@ -431,6 +432,16 @@ class WebDriverVirtualSensorPart(VirtualSensorProtocolPart): def get_virtual_sensor_information(self, sensor_type): return self.webdriver.send_session_command("GET", "sensor/%s" % sensor_type) +class WebDriverDevicePostureProtocolPart(DevicePostureProtocolPart): + def setup(self): + self.webdriver = self.parent.webdriver + + def set_device_posture(self, posture): + body = {"posture": posture} + return self.webdriver.send_session_command("POST", "deviceposture", body) + + def clear_device_posture(self): + return self.webdriver.send_session_command("DELETE", "deviceposture") class WebDriverProtocol(Protocol): implements = [WebDriverBaseProtocolPart, @@ -450,7 +461,8 @@ class WebDriverProtocol(Protocol): WebDriverRPHRegistrationsProtocolPart, WebDriverFedCMProtocolPart, WebDriverDebugProtocolPart, - WebDriverVirtualSensorPart] + WebDriverVirtualSensorPart, + WebDriverDevicePostureProtocolPart] def __init__(self, executor, browser, capabilities, **kwargs): super().__init__(executor, browser) diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/protocol.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/protocol.py index e44d1a76666..3d588738b6e 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/protocol.py +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/protocol.py @@ -802,3 +802,17 @@ class VirtualSensorProtocolPart(ProtocolPart): @abstractmethod def get_virtual_sensor_information(self, sensor_type): pass + +class DevicePostureProtocolPart(ProtocolPart): + """Protocol part for Device Posture""" + __metaclass__ = ABCMeta + + name = "device_posture" + + @abstractmethod + def set_device_posture(self, posture): + pass + + @abstractmethod + def clear_device_posture(self): + pass diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/testdriver-extra.js b/tests/wpt/tests/tools/wptrunner/wptrunner/testdriver-extra.js index af25bf4111c..87d3826bfce 100644 --- a/tests/wpt/tests/tools/wptrunner/wptrunner/testdriver-extra.js +++ b/tests/wpt/tests/tools/wptrunner/wptrunner/testdriver-extra.js @@ -327,4 +327,12 @@ window.test_driver_internal.get_virtual_sensor_information = function(sensor_type, context=null) { return create_action("get_virtual_sensor_information", {sensor_type, context}); }; + + window.test_driver_internal.set_device_posture = function(posture, context=null) { + return create_action("set_device_posture", {posture, context}); + }; + + window.test_driver_internal.clear_device_posture = function(context=null) { + return create_action("clear_device_posture", {context}); + }; })(); diff --git a/tests/wpt/tests/tools/wptserve/setup.py b/tests/wpt/tests/tools/wptserve/setup.py index 262395a9bee..36aa98f1d82 100644 --- a/tests/wpt/tests/tools/wptserve/setup.py +++ b/tests/wpt/tests/tools/wptserve/setup.py @@ -1,9 +1,9 @@ from setuptools import setup -PACKAGE_VERSION = '4.0.1' +PACKAGE_VERSION = '4.0.2' deps = [ "h2>=4.1.0", - "mod_pywebsocket @ https://github.com/GoogleChromeLabs/pywebsocket3/archive/50602a14f1b6da17e0b619833a13addc6ea78bc2.zip#sha256=4dadd116e67af5625606f883e1973178d4121e8a1dc87b096ba2bb43c692f958", # noqa + "pywebsocket3>=4.0.2", ] setup(name='wptserve', diff --git a/tests/wpt/tests/tools/wptserve/wptserve/server.py b/tests/wpt/tests/tools/wptserve/wptserve/server.py index 8ce36201ee9..18638615425 100644 --- a/tests/wpt/tests/tools/wptserve/wptserve/server.py +++ b/tests/wpt/tests/tools/wptserve/wptserve/server.py @@ -23,8 +23,8 @@ from h2.utilities import extract_method_header from urllib.parse import urlsplit, urlunsplit -from mod_pywebsocket import dispatch -from mod_pywebsocket.handshake import HandshakeException, AbortedByUserException +from pywebsocket3 import dispatch +from pywebsocket3.handshake import HandshakeException, AbortedByUserException from . import routes as default_routes from .config import ConfigBuilder diff --git a/tests/wpt/tests/tools/wptserve/wptserve/ws_h2_handshake.py b/tests/wpt/tests/tools/wptserve/wptserve/ws_h2_handshake.py index af668dd5585..ab1ab958a03 100644 --- a/tests/wpt/tests/tools/wptserve/wptserve/ws_h2_handshake.py +++ b/tests/wpt/tests/tools/wptserve/wptserve/ws_h2_handshake.py @@ -7,12 +7,12 @@ Specification: https://tools.ietf.org/html/rfc8441 """ -from mod_pywebsocket import common +from pywebsocket3 import common -from mod_pywebsocket.handshake.base import get_mandatory_header -from mod_pywebsocket.handshake.base import HandshakeException -from mod_pywebsocket.handshake.base import validate_mandatory_header -from mod_pywebsocket.handshake.base import HandshakerBase +from pywebsocket3.handshake.base import get_mandatory_header +from pywebsocket3.handshake.base import HandshakeException +from pywebsocket3.handshake.base import validate_mandatory_header +from pywebsocket3.handshake.base import HandshakerBase def check_connect_method(request): diff --git a/tests/wpt/tests/trusted-types/Element-setAttribute-respects-Elements-node-documents-globals-CSP.html b/tests/wpt/tests/trusted-types/Element-setAttribute-respects-Elements-node-documents-globals-CSP.html new file mode 100644 index 00000000000..c0f72bb36ac --- /dev/null +++ b/tests/wpt/tests/trusted-types/Element-setAttribute-respects-Elements-node-documents-globals-CSP.html @@ -0,0 +1,125 @@ + + + + + + + trusted-types (TT): `setAttribute`/`setAttributeNode` for an element + adopted from a non-TT realm respects TT's Content-Security-Policy (CSP) + + + + + +
+ + + + + +
+ + + + + + + diff --git a/tests/wpt/tests/trusted-types/modify-attributes-in-callback.html b/tests/wpt/tests/trusted-types/modify-attributes-in-callback.html new file mode 100644 index 00000000000..96b4501128b --- /dev/null +++ b/tests/wpt/tests/trusted-types/modify-attributes-in-callback.html @@ -0,0 +1,39 @@ + + + + + + + + + diff --git a/tests/wpt/tests/url/resources/setters_tests.json b/tests/wpt/tests/url/resources/setters_tests.json index 82adf4cdce2..3850606d660 100644 --- a/tests/wpt/tests/url/resources/setters_tests.json +++ b/tests/wpt/tests/url/resources/setters_tests.json @@ -825,6 +825,17 @@ "port": "" } }, + { + "comment": "Stuff after a ? delimiter is ignored, trailing 'port'", + "href": "http://example.net/path", + "new_value": "example.com?stuff:8080", + "expected": { + "href": "http://example.com/path", + "host": "example.com", + "hostname": "example.com", + "port": "" + } + }, { "comment": "Stuff after a ? delimiter is ignored", "href": "http://example.net/path", @@ -924,6 +935,39 @@ "port": "8080" } }, + { + "comment": "Anything other than ASCII digit stops the port parser in a setter but is not an error", + "href": "http://example.net:8080", + "new_value": "example.com:invalid", + "expected": { + "href": "http://example.com:8080/", + "host": "example.com:8080", + "hostname": "example.com", + "port": "8080" + } + }, + { + "comment": "Anything other than ASCII digit stops the port parser in a setter but is not an error", + "href": "http://example.net:8080/test", + "new_value": "[::1]:invalid", + "expected": { + "href": "http://[::1]:8080/test", + "host": "[::1]:8080", + "hostname": "[::1]", + "port": "8080" + } + }, + { + "comment": "IPv6 without port", + "href": "http://example.net:8080/test", + "new_value": "[::1]", + "expected": { + "href": "http://[::1]:8080/test", + "host": "[::1]:8080", + "hostname": "[::1]", + "port": "8080" + } + }, { "comment": "Port numbers are 16 bit integers", "href": "http://example.net/path", diff --git a/tests/wpt/tests/webcodecs/audio-encoder-config.https.any.js b/tests/wpt/tests/webcodecs/audio-encoder-config.https.any.js index 559ff3203b5..a70bf28f80c 100644 --- a/tests/wpt/tests/webcodecs/audio-encoder-config.https.any.js +++ b/tests/wpt/tests/webcodecs/audio-encoder-config.https.any.js @@ -272,6 +272,8 @@ const validConfigs = [ numberOfChannels: 2, opus: { complexity: 5, + signal: 'music', + application: 'audio', frameDuration: 20000, packetlossperc: 10, useinbandfec: true, @@ -283,6 +285,8 @@ const validConfigs = [ numberOfChannels: 2, opus: { format: 'opus', + signal: 'voice', + application: 'lowdelay', complexity: 10, frameDuration: 60000, packetlossperc: 20, // Irrelevant without useinbandfec, but still valid. diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/invalid.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/invalid.py index ecd3173e878..52aabca2670 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/invalid.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/invalid.py @@ -46,10 +46,36 @@ async def test_params_locator_type_invalid_value(bidi_session, inline, top_conte ) +@pytest.mark.parametrize("type", ["css", "xpath", "innerText"]) +@pytest.mark.parametrize("value", [None, False, 42, {}, []]) +async def test_params_locator_value_invalid_type( + bidi_session, inline, top_context, type, value +): + await navigate_to_page(bidi_session, inline, top_context) + + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.locate_nodes( + context=top_context["context"], locator={"type": type, "value": value} + ) + + +@pytest.mark.parametrize("value", [None, False, 42, {}, []]) +async def test_params_locator_accessability_value_invalid_type( + bidi_session, inline, top_context, value +): + await navigate_to_page(bidi_session, inline, top_context) + + with pytest.raises(error.InvalidArgumentException): + await bidi_session.browsing_context.locate_nodes( + context=top_context["context"], locator={"type": "accessability", "value": value} + ) + + @pytest.mark.parametrize("type,value", [ ("css", "a*b"), ("xpath", ""), - ("innerText", "") + ("innerText", ""), + ("accessibility", {}) ]) async def test_params_locator_value_invalid_value(bidi_session, inline, top_context, type, value): await navigate_to_page(bidi_session, inline, top_context) diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/locator.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/locator.py index e560fa9239d..66c512d792a 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/locator.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/locator.py @@ -6,11 +6,17 @@ from ... import any_string, recursive_compare @pytest.mark.parametrize("type,value", [ ("css", "div"), ("xpath", "//div"), - ("innerText", "foobarBARbaz") + ("innerText", "foobarBARbaz"), + ("accessibility", {"role": "banner"}), + ("accessibility", {"name": "foo"}), + ("accessibility", {"role": "banner", "name": "foo"}), ]) @pytest.mark.asyncio async def test_find_by_locator(bidi_session, inline, top_context, type, value): - url = inline("""
foobarBARbaz
foobarBARbaz
""") + url = inline(""" +
foobarBARbaz
+
foobarBARbaz
+ """) await bidi_session.browsing_context.navigate( context=top_context["context"], url=url, wait="complete" ) @@ -165,3 +171,69 @@ async def test_find_by_inner_text(bidi_session, inline, top_context, locator, ex ) recursive_compare(expected, result["nodes"]) + + +@pytest.mark.parametrize( + "html,locator_value,expected_node_local_name", + [ + ( + "
foo
bar
", + {"role": "article"}, + "article", + ), + ( + "", + {"role": "searchbox"}, + "input", + ), + ( + "", + {"name": "Ok"}, + "button", + ), + ( + "
ok
go
", + {"name": "ok go"}, + "button", + ), + ( + "", + {"name": "foo"}, + "button", + ), + ( + "
", + {"role": "banner", "name": "foo"}, + "div", + ), + ], +) +@pytest.mark.asyncio +async def test_locate_by_accessibility_attributes( + bidi_session, + inline, + top_context, + html, + locator_value, + expected_node_local_name, +): + await bidi_session.browsing_context.navigate( + context=top_context["context"], url=inline(html), wait="complete" + ) + + expected = [ + { + "type": "node", + "value": { + "attributes": {"data-class": "one"}, + "localName": expected_node_local_name, + }, + } + ] + + result = await bidi_session.browsing_context.locate_nodes( + context=top_context["context"], + locator={"type": "accessibility", "value": locator_value}, + ) + + recursive_compare(expected, result["nodes"]) diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/max_node_count.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/max_node_count.py index 4652026e96f..9d9c05260bc 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/max_node_count.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/max_node_count.py @@ -43,6 +43,45 @@ from ... import any_string, recursive_compare }, }] ), + ("accessibility", {"role": "banner"}, 1, [ + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }] + ), + ("accessibility", {"name": "bar"}, 1, [ + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }] + ), + ("accessibility", {"role": "banner", "name": "bar"}, 1, [ + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }] + ), ("css", "div", 10, [ { "type": "node", @@ -114,18 +153,96 @@ from ... import any_string, recursive_compare "nodeType": 1, }, }] - ) + ), + ("accessibility", {"role": "banner"}, 10, [ + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }, { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"two"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }] + ), + ("accessibility", {"name": "bar"}, 10, [ + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }, { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"two"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }] + ), + ("accessibility", {"role": "banner", "name": "bar"}, 10, [ + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }, { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"two"}, + "childNodeCount": 1, + "localName": "div", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + }, + }] + ), ], ids=[ "css_single", "xpath_single", "inner_text_single", + "accessibility_role_single", + "accessibility_name_single", + "accessibility_role_name_single", "css_multiple", "xpath_multiple", - "inner_text_multiple" + "inner_text_multiple", + "accessibility_role_multiple", + "accessibility_name_multiple", + "accessibility_role_name_multiple", ]) @pytest.mark.asyncio async def test_find_by_locator_limit_return_count(bidi_session, inline, top_context, type, value, max_count, expected): - url = inline("""
foo
foo
""") + url = inline(""" +
foo
+
foo
+ """) await bidi_session.browsing_context.navigate( context=top_context["context"], url=url, wait="complete" ) diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/start_nodes.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/start_nodes.py index 707d83a337d..f44a6d4857c 100644 --- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/start_nodes.py +++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/locate_nodes/start_nodes.py @@ -92,13 +92,59 @@ from ... import any_string, recursive_compare "namespaceURI": "http://www.w3.org/1999/xhtml", "nodeType": 1, } - }]) + }]), + ("accessibility", {"role": "banner"}, [{ + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "p", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + } + }, + { + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"two"}, + "childNodeCount": 1, + "localName": "p", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + } + }]), + ("accessibility", {"name": "bar"}, [{ + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "p", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + } + } + ]), + ("accessibility", {"role": "banner", "name": "bar"}, [{ + "type": "node", + "sharedId": any_string, + "value": { + "attributes": {"data-class":"one"}, + "childNodeCount": 1, + "localName": "p", + "namespaceURI": "http://www.w3.org/1999/xhtml", + "nodeType": 1, + } + } + ]) ]) @pytest.mark.asyncio async def test_locate_with_context_nodes(bidi_session, inline, top_context, type, value, expected): url = inline("""
-

foo

-

foo

+

foo

+

foo

bar @@ -125,14 +171,23 @@ async def test_locate_with_context_nodes(bidi_session, inline, top_context, type @pytest.mark.parametrize("type,value", [ ("css", "p[data-class='one']"), ("xpath", ".//p[@data-class='one']"), - ("innerText", "foo") + ("innerText", "foo"), + ("accessibility", {"role": "banner"}), + ("accessibility", {"name": "bar"}), + ("accessibility", {"role": "banner", "name": "bar"}), ]) @pytest.mark.asyncio async def test_locate_with_multiple_context_nodes(bidi_session, inline, top_context, type, value): url = inline(""" -

foo

bar

-

foo

bar

- """) +
+

foo

+

bar

+
+
+

foo

+

bar

+
+ """) await bidi_session.browsing_context.navigate( context=top_context["context"], url=url, wait="complete" ) diff --git a/tests/wpt/tests/webdriver/tests/classic/element_clear/__init__.py b/tests/wpt/tests/webdriver/tests/classic/element_clear/__init__.py index e69de29bb2d..c84215a6369 100644 --- a/tests/wpt/tests/webdriver/tests/classic/element_clear/__init__.py +++ b/tests/wpt/tests/webdriver/tests/classic/element_clear/__init__.py @@ -0,0 +1,5 @@ +def element_clear(session, element): + return session.transport.send( + "POST", "/session/{session_id}/element/{element_id}/clear".format( + session_id=session.session_id, + element_id=element.id)) diff --git a/tests/wpt/tests/webdriver/tests/classic/element_clear/clear.py b/tests/wpt/tests/webdriver/tests/classic/element_clear/clear.py index 9a0549ce4f2..0977f60cb63 100644 --- a/tests/wpt/tests/webdriver/tests/classic/element_clear/clear.py +++ b/tests/wpt/tests/webdriver/tests/classic/element_clear/clear.py @@ -8,6 +8,8 @@ from tests.support.asserts import ( assert_in_events, assert_success, ) +from tests.support.dom import BUTTON_TYPES +from . import element_clear @pytest.fixture @@ -19,13 +21,6 @@ def tracked_events(): ] -def element_clear(session, element): - return session.transport.send( - "POST", "/session/{session_id}/element/{element_id}/clear".format( - session_id=session.session_id, - element_id=element.id)) - - @pytest.fixture(scope="session") def text_file(tmpdir_factory): fh = tmpdir_factory.mktemp("tmp").join("hello.txt") @@ -179,31 +174,6 @@ def test_input(session, inline, add_event_listeners, tracked_events, type, value assert_element_has_focus(session.execute_script("return document.body")) -@pytest.mark.parametrize("type", - ["number", - "range", - "email", - "password", - "search", - "tel", - "text", - "url", - "color", - "date", - "datetime", - "datetime-local", - "time", - "month", - "week", - "file"]) -def test_input_disabled(session, inline, type): - session.url = inline("" % type) - element = session.find.css("input", all=False) - - response = element_clear(session, element) - assert_error(response, "invalid element state") - - @pytest.mark.parametrize("type", ["number", "range", @@ -241,14 +211,6 @@ def test_textarea(session, inline, add_event_listeners, tracked_events): assert_in_events(session, ["focus", "change", "blur"]) -def test_textarea_disabled(session, inline): - session.url = inline("") - element = session.find.css("textarea", all=False) - - response = element_clear(session, element) - assert_error(response, "invalid element state") - - def test_textarea_readonly(session, inline): session.url = inline("") element = session.find.css("textarea", all=False) @@ -278,26 +240,12 @@ def test_input_file_multiple(session, text_file, inline): assert element.property("value") == "" -def test_select(session, inline): - session.url = inline(""" - - """) - select = session.find.css("select", all=False) - option = session.find.css("option", all=False) +@pytest.mark.parametrize("type", BUTTON_TYPES) +def test_button(session, inline, type): + session.url = inline(f"""") - button = session.find.css("button", all=False) - - response = element_clear(session, button) + response = element_clear(session, element) assert_error(response, "invalid element state") diff --git a/tests/wpt/tests/webdriver/tests/classic/element_clear/disabled.py b/tests/wpt/tests/webdriver/tests/classic/element_clear/disabled.py new file mode 100644 index 00000000000..f0d0fcd9aa9 --- /dev/null +++ b/tests/wpt/tests/webdriver/tests/classic/element_clear/disabled.py @@ -0,0 +1,113 @@ +import pytest + +from tests.support.asserts import assert_error, assert_success +from tests.support.dom import BUTTON_TYPES, INPUT_TYPES +from . import element_clear + + +@pytest.mark.parametrize("type", BUTTON_TYPES) +def test_button(session, inline, type): + session.url = inline(f"""