diff options
author | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2023-03-22 01:34:08 +0000 |
---|---|---|
committer | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2023-03-22 01:37:18 +0000 |
commit | 90b96becef7f6dd66717c663e4e4d87f6f0ac843 (patch) | |
tree | 4b07bf58110c52e584e2530b039927ff1d90b572 | |
parent | 886032fc74c7d953765f6d00211dc5d2d018f6f0 (diff) | |
download | servo-90b96becef7f6dd66717c663e4e4d87f6f0ac843.tar.gz servo-90b96becef7f6dd66717c663e4e4d87f6f0ac843.zip |
Update web-platform-tests to revision b'62c17eac9f99db2ea4e213328c9c6122136694cc'
317 files changed, 4745 insertions, 2272 deletions
diff --git a/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini index 62c2d998e8f..68bf21994e8 100644 --- a/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/metadata-layout-2020/FileAPI/url/url-in-tags-revoke.window.js.ini @@ -4,7 +4,7 @@ expected: TIMEOUT [Opening a blob URL in a new window immediately before revoking it works.] - expected: FAIL + expected: TIMEOUT [Fetching a blob URL immediately before revoking it works in an iframe.] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini index 51432362d66..ee34bc91078 100644 --- a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini +++ b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini @@ -1,3 +1,6 @@ [block-in-inline-hittest-002.html] [elementsFromPoint] expected: FAIL + + [elementFromPoint] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini deleted file mode 100644 index 3e5096beef3..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[block-in-inline-hittest-float-002.html] - [block-in-inline-hittest-float-002] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-anonymous-box.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-anonymous-box.html.ini new file mode 100644 index 00000000000..b8f8d45a31f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-anonymous-box.html.ini @@ -0,0 +1,3 @@ +[hittest-anonymous-box.html] + [Hit-testing within an anonymous flex-item should return the flexbox as the hittest result.] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-before-pseudo.html.ini b/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-before-pseudo.html.ini deleted file mode 100644 index 5b685485f3c..00000000000 --- a/tests/wpt/metadata-layout-2020/css/css-flexbox/hittest-before-pseudo.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[hittest-before-pseudo.html] - [Hit-testing text within a pseudo-element flex-item should return the flexbox as the hittest result.] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/metadata-layout-2020/css/css-fonts/variations/at-font-face-font-matching.html.ini index bf767066a79..e75a38dad1d 100644 --- a/tests/wpt/metadata-layout-2020/css/css-fonts/variations/at-font-face-font-matching.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-fonts/variations/at-font-face-font-matching.html.ini @@ -173,9 +173,6 @@ [Matching font-style: 'oblique -10deg' should prefer 'oblique -60deg -30deg' over 'oblique -50deg -40deg'] expected: FAIL - [Matching font-style: 'oblique -10deg' should prefer 'italic' over 'oblique 0deg 10deg'] - expected: FAIL - [Matching font-stretch: '110%' should prefer '105%' over '100%'] expected: FAIL @@ -293,9 +290,6 @@ [Matching font-weight: '399' should prefer '350 399' over '340 360'] expected: FAIL - [Matching font-style: 'italic' should prefer 'oblique 0deg' over 'oblique -60deg -30deg'] - expected: FAIL - [Matching font-style: 'oblique 21deg' should prefer 'italic' over 'oblique 0deg'] expected: FAIL @@ -313,3 +307,12 @@ [Matching font-style: 'oblique 20deg' should prefer 'italic' over 'oblique 0deg'] expected: FAIL + + [Matching font-weight: '430' should prefer '450 460' over '500'] + expected: FAIL + + [Matching font-stretch: '110%' should prefer '110% 120%' over '115% 116%'] + expected: FAIL + + [Matching font-style: 'italic' should prefer 'italic' over 'oblique 20deg'] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-001.html.ini index c83b87a483a..f68eb40c074 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-001.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transitions/properties-value-001.html.ini @@ -325,3 +325,303 @@ [margin-right length(mm) / values] expected: FAIL + + [margin-right length(cm) / values] + expected: FAIL + + [margin-right length(in) / values] + expected: FAIL + + [margin-top length(pt) / values] + expected: FAIL + + [margin-top length(pc) / values] + expected: FAIL + + [margin-top length(px) / values] + expected: FAIL + + [margin-top length(em) / values] + expected: FAIL + + [margin-top length(ex) / values] + expected: FAIL + + [margin-top length(mm) / values] + expected: FAIL + + [margin-top length(cm) / values] + expected: FAIL + + [margin-top length(in) / values] + expected: FAIL + + [height length(pt) / values] + expected: FAIL + + [height length(pc) / values] + expected: FAIL + + [height length(px) / values] + expected: FAIL + + [height length(em) / values] + expected: FAIL + + [height length(ex) / values] + expected: FAIL + + [height length(mm) / values] + expected: FAIL + + [height length(cm) / values] + expected: FAIL + + [height length(in) / values] + expected: FAIL + + [height percentage(%) / values] + expected: FAIL + + [width length(pt) / values] + expected: FAIL + + [width length(pc) / values] + expected: FAIL + + [width length(px) / values] + expected: FAIL + + [width length(em) / values] + expected: FAIL + + [width length(ex) / values] + expected: FAIL + + [width length(mm) / values] + expected: FAIL + + [width length(cm) / values] + expected: FAIL + + [width length(in) / values] + expected: FAIL + + [width percentage(%) / values] + expected: FAIL + + [min-height length(pt) / values] + expected: FAIL + + [min-height length(pc) / values] + expected: FAIL + + [min-height length(px) / values] + expected: FAIL + + [min-height length(em) / values] + expected: FAIL + + [min-height length(ex) / values] + expected: FAIL + + [min-height length(mm) / values] + expected: FAIL + + [min-height length(cm) / values] + expected: FAIL + + [min-height length(in) / values] + expected: FAIL + + [min-height percentage(%) / values] + expected: FAIL + + [min-width length(pt) / values] + expected: FAIL + + [min-width length(pc) / values] + expected: FAIL + + [min-width length(px) / values] + expected: FAIL + + [min-width length(em) / values] + expected: FAIL + + [min-width length(ex) / values] + expected: FAIL + + [min-width length(mm) / values] + expected: FAIL + + [min-width length(cm) / values] + expected: FAIL + + [min-width length(in) / values] + expected: FAIL + + [min-width percentage(%) / values] + expected: FAIL + + [max-height length(pt) / values] + expected: FAIL + + [max-height length(pc) / values] + expected: FAIL + + [max-height length(px) / values] + expected: FAIL + + [max-height length(em) / values] + expected: FAIL + + [color color(rgba) / values] + expected: FAIL + + [font-size length(pt) / values] + expected: FAIL + + [font-size length(pc) / values] + expected: FAIL + + [font-size length(px) / values] + expected: FAIL + + [font-size length(em) / values] + expected: FAIL + + [font-size length(ex) / values] + expected: FAIL + + [font-size length(mm) / values] + expected: FAIL + + [font-size length(cm) / values] + expected: FAIL + + [font-size length(in) / values] + expected: FAIL + + [font-size percentage(%) / values] + expected: FAIL + + [font-weight font-weight(keyword) / values] + expected: FAIL + + [font-weight font-weight(numeric) / values] + expected: FAIL + + [line-height number(integer) / values] + expected: FAIL + + [line-height number(decimal) / values] + expected: FAIL + + [line-height length(pt) / values] + expected: FAIL + + [line-height length(pc) / values] + expected: FAIL + + [line-height length(px) / values] + expected: FAIL + + [line-height length(em) / values] + expected: FAIL + + [line-height length(ex) / values] + expected: FAIL + + [line-height length(mm) / values] + expected: FAIL + + [line-height length(cm) / values] + expected: FAIL + + [line-height length(in) / values] + expected: FAIL + + [line-height percentage(%) / values] + expected: FAIL + + [letter-spacing length(pt) / values] + expected: FAIL + + [letter-spacing length(pc) / values] + expected: FAIL + + [letter-spacing length(px) / values] + expected: FAIL + + [letter-spacing length(em) / values] + expected: FAIL + + [letter-spacing length(ex) / values] + expected: FAIL + + [letter-spacing length(mm) / values] + expected: FAIL + + [letter-spacing length(cm) / values] + expected: FAIL + + [letter-spacing length(in) / values] + expected: FAIL + + [word-spacing length(pt) / values] + expected: FAIL + + [word-spacing length(pc) / values] + expected: FAIL + + [word-spacing length(px) / values] + expected: FAIL + + [word-spacing length(em) / values] + expected: FAIL + + [word-spacing length(ex) / values] + expected: FAIL + + [word-spacing length(mm) / values] + expected: FAIL + + [word-spacing length(cm) / values] + expected: FAIL + + [word-spacing length(in) / values] + expected: FAIL + + [word-spacing percentage(%) / values] + expected: FAIL + + [text-indent length(pt) / values] + expected: FAIL + + [text-indent length(pc) / values] + expected: FAIL + + [text-indent length(px) / values] + expected: FAIL + + [text-indent length(em) / values] + expected: FAIL + + [text-indent length(ex) / values] + expected: FAIL + + [text-indent length(mm) / values] + expected: FAIL + + [text-indent length(cm) / values] + expected: FAIL + + [text-indent length(in) / values] + expected: FAIL + + [text-indent percentage(%) / values] + expected: FAIL + + [text-shadow shadow(shadow) / values] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-ui/appearance-cssom-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-ui/appearance-cssom-001.html.ini index 0881e7f64be..feca770c995 100644 --- a/tests/wpt/metadata-layout-2020/css/css-ui/appearance-cssom-001.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-ui/appearance-cssom-001.html.ini @@ -983,3 +983,172 @@ [-webkit-appearance: tab-scroll-arrow-forward (invalid)] expected: FAIL + [-webkit-appearance: button (compat)] + expected: FAIL + + [-webkit-appearance: checkbox (compat)] + expected: FAIL + + [-webkit-appearance: listbox (compat)] + expected: FAIL + + [-webkit-appearance: menulist (compat)] + expected: FAIL + + [-webkit-appearance: meter (compat)] + expected: FAIL + + [-webkit-appearance: progress-bar (compat)] + expected: FAIL + + [-webkit-appearance: radio (compat)] + expected: FAIL + + [-webkit-appearance: searchfield (compat)] + expected: FAIL + + [-webkit-appearance: textarea (compat)] + expected: FAIL + + [-webkit-appearance: slider-horizontal (compat)] + expected: FAIL + + [-webkit-appearance: push-button (compat)] + expected: FAIL + + [-webkit-appearance: square-button (compat)] + expected: FAIL + + [appearance: button (compat)] + expected: FAIL + + [appearance: checkbox (compat)] + expected: FAIL + + [appearance: listbox (compat)] + expected: FAIL + + [appearance: menulist (compat)] + expected: FAIL + + [appearance: meter (compat)] + expected: FAIL + + [appearance: progress-bar (compat)] + expected: FAIL + + [appearance: radio (compat)] + expected: FAIL + + [appearance: searchfield (compat)] + expected: FAIL + + [appearance: textarea (compat)] + expected: FAIL + + [appearance: slider-horizontal (compat)] + expected: FAIL + + [appearance: push-button (compat)] + expected: FAIL + + [appearance: square-button (compat)] + expected: FAIL + + +[appearance-cssom-001.html?exclude=Invalid] + [-webkit-appearance: none] + expected: FAIL + + [-webkit-appearance: auto] + expected: FAIL + + [-webkit-appearance: textfield] + expected: FAIL + + [-webkit-appearance: menulist-button] + expected: FAIL + + [-webkit-appearance: button (compat)] + expected: FAIL + + [-webkit-appearance: checkbox (compat)] + expected: FAIL + + [-webkit-appearance: listbox (compat)] + expected: FAIL + + [-webkit-appearance: menulist (compat)] + expected: FAIL + + [-webkit-appearance: meter (compat)] + expected: FAIL + + [-webkit-appearance: progress-bar (compat)] + expected: FAIL + + [-webkit-appearance: radio (compat)] + expected: FAIL + + [-webkit-appearance: searchfield (compat)] + expected: FAIL + + [-webkit-appearance: textarea (compat)] + expected: FAIL + + [-webkit-appearance: slider-horizontal (compat)] + expected: FAIL + + [-webkit-appearance: push-button (compat)] + expected: FAIL + + [-webkit-appearance: square-button (compat)] + expected: FAIL + + [appearance: none] + expected: FAIL + + [appearance: auto] + expected: FAIL + + [appearance: textfield] + expected: FAIL + + [appearance: menulist-button] + expected: FAIL + + [appearance: button (compat)] + expected: FAIL + + [appearance: checkbox (compat)] + expected: FAIL + + [appearance: listbox (compat)] + expected: FAIL + + [appearance: menulist (compat)] + expected: FAIL + + [appearance: meter (compat)] + expected: FAIL + + [appearance: progress-bar (compat)] + expected: FAIL + + [appearance: radio (compat)] + expected: FAIL + + [appearance: searchfield (compat)] + expected: FAIL + + [appearance: textarea (compat)] + expected: FAIL + + [appearance: slider-horizontal (compat)] + expected: FAIL + + [appearance: push-button (compat)] + expected: FAIL + + [appearance: square-button (compat)] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini new file mode 100644 index 00000000000..f18b8d2fcf9 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/CaretPosition-001.html.ini @@ -0,0 +1,3 @@ +[CaretPosition-001.html] + [Element at (400, 100)] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini index cf67b5d03dd..80ed711305d 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini @@ -1,3 +1,4 @@ [elementFromPoint-dynamic-anon-box.html] + expected: CRASH [Link should be clickable after hiding a scrollbox with an anonymous table inside] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini deleted file mode 100644 index b905fe70fcb..00000000000 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[elementFromPoint-ellipsis-in-inline-box.html] - [elementFromPoint-ellipsis-in-inline-box] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-relative.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-relative.html.ini deleted file mode 100644 index 7e9331b6bc2..00000000000 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-float-in-relative.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[elementFromPoint-float-in-relative.html] - [elementFromPoint-float-in-relative] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-list-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-list-001.html.ini index 1f892861935..f50036a37ba 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-list-001.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-list-001.html.ini @@ -13,3 +13,6 @@ [<li>Outside 1</li>] expected: FAIL + + [<li>Image Inside 2</li>] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini index 1bf6ea475bf..3ddd598f5c4 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPosition.html.ini @@ -16,3 +16,6 @@ [test the top of layer] expected: FAIL + + [test some point of the element: top left corner] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/api/basic/keepalive.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/basic/keepalive.any.js.ini index e9ab91fc80e..4c1c78640bb 100644 --- a/tests/wpt/metadata-layout-2020/fetch/api/basic/keepalive.any.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/api/basic/keepalive.any.js.ini @@ -1,3 +1,4 @@ [keepalive.any.html] + expected: TIMEOUT [keepalive in onunload in nested frame in another window] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/api/redirect/redirect-keepalive.any.js.ini b/tests/wpt/metadata-layout-2020/fetch/api/redirect/redirect-keepalive.any.js.ini new file mode 100644 index 00000000000..c57e48f2078 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/fetch/api/redirect/redirect-keepalive.any.js.ini @@ -0,0 +1,2 @@ +[redirect-keepalive.any.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/metadata-layout-2020/fetch/metadata/generated/css-images.sub.tentative.html.ini index ed2ce3392d0..0d48169e3cc 100644 --- a/tests/wpt/metadata-layout-2020/fetch/metadata/generated/css-images.sub.tentative.html.ini +++ b/tests/wpt/metadata-layout-2020/fetch/metadata/generated/css-images.sub.tentative.html.ini @@ -147,8 +147,5 @@ [list-style-image sec-fetch-site - HTTPS downgrade-upgrade] expected: FAIL - [border-image sec-fetch-mode - Not sent to non-trustworthy cross-site destination] - expected: FAIL - - [border-image sec-fetch-site - HTTPS downgrade (header not sent)] - expected: FAIL + [background-image sec-fetch-site - HTTPS downgrade (header not sent)] + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini index a3f473a9557..1f528be38ef 100644 --- a/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini +++ b/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini @@ -1,4 +1,4 @@ [scroll-restoration-fragment-scrolling-cross-origin.html] - expected: TIMEOUT + expected: ERROR [Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation] expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini index 149bcb4ff8c..b8fd22e2b81 100644 --- a/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini +++ b/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini @@ -10,3 +10,6 @@ [load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank'] expected: FAIL + + [load & pageshow events do not fire on contentWindow of <iframe> element created with src=''] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini b/tests/wpt/metadata-layout-2020/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/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini +++ b/tests/wpt/metadata-layout-2020/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/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini index 8ae58f9f1e2..b169452e04a 100644 --- a/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini +++ b/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini @@ -10,12 +10,3 @@ [0080 00FF set in href="" targeting a frame and clicked] expected: FAIL - - [0080 00FF 0100 set in href="" targeting a frame and clicked] - expected: FAIL - - [D83D DE0D set in href="" targeting a frame and clicked] - expected: FAIL - - [DE0D 0041 set in href="" targeting a frame and clicked] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini b/tests/wpt/metadata-layout-2020/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/metadata-layout-2020/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/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini deleted file mode 100644 index 60a4fa51f8a..00000000000 --- a/tests/wpt/metadata-layout-2020/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[a-click.html] - [aElement.click() before the load event must NOT replace] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini new file mode 100644 index 00000000000..ca84728f1e9 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini @@ -0,0 +1,4 @@ +[creating_browsing_context_test_01.html] + expected: TIMEOUT + [first argument: absolute url] + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html.ini deleted file mode 100644 index adaff1bb3fe..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.svg.html] - [drawImage() of an SVG image] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini index 76d431df3a0..bea609ed103 100644 --- a/tests/wpt/metadata-layout-2020/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini +++ b/tests/wpt/metadata-layout-2020/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini @@ -1,7 +1,3 @@ [2d.drawImage.zerosource.image.html] [drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR] expected: FAIL - - [drawImage with zero-sized source rectangle from image draws nothing without exception] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html.ini deleted file mode 100644 index 844abdcced8..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[2d.composite.globalAlpha.image.html] - [OffscreenCanvas test: 2d.composite.globalAlpha.image] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js.ini deleted file mode 100644 index a66bd4c9607..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js.ini +++ /dev/null @@ -1,3 +0,0 @@ -[2d.composite.globalAlpha.image.worker.html] - [2d] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html.ini deleted file mode 100644 index 5dd24f42848..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[2d.composite.globalAlpha.imagepattern.html] - [OffscreenCanvas test: 2d.composite.globalAlpha.imagepattern] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js.ini deleted file mode 100644 index 1718e787f1c..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js.ini +++ /dev/null @@ -1,3 +0,0 @@ -[2d.composite.globalAlpha.imagepattern.worker.html] - [2d] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html.ini deleted file mode 100644 index f312f1589b8..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.9arg.basic.html] - [OffscreenCanvas test: 2d.drawImage.9arg.basic] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js.ini deleted file mode 100644 index 2ff0b98dcb5..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.9arg.basic.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html.ini deleted file mode 100644 index 3e8e707a8be..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.9arg.sourcepos.html] - [OffscreenCanvas test: 2d.drawImage.9arg.sourcepos] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js.ini deleted file mode 100644 index 3ec5cbbadc9..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.9arg.sourcepos.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html.ini deleted file mode 100644 index 44ad1e2efb0..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.9arg.sourcesize.html] - [OffscreenCanvas test: 2d.drawImage.9arg.sourcesize] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js.ini deleted file mode 100644 index 150dc88d58e..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.9arg.sourcesize.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html.ini deleted file mode 100644 index 0b04a0d852d..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.alpha.html] - [OffscreenCanvas test: 2d.drawImage.alpha] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js.ini deleted file mode 100644 index 93ca873d5aa..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.alpha.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html.ini deleted file mode 100644 index dba65871688..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.animated.poster.html] - [drawImage() of an APNG draws the poster frame] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js.ini deleted file mode 100644 index 19ec8e5782b..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.animated.poster.worker.html] - [drawImage() of an APNG draws the poster frame] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html.ini deleted file mode 100644 index 38c46fe7e71..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.broken.html] - [OffscreenCanvas test: 2d.drawImage.broken] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js.ini deleted file mode 100644 index b85d2727a7a..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.broken.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html.ini deleted file mode 100644 index ddc364f4b22..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.clip.html] - [OffscreenCanvas test: 2d.drawImage.clip] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js.ini deleted file mode 100644 index f387c1acd65..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.clip.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html.ini deleted file mode 100644 index 0d1eb846146..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.composite.html] - [OffscreenCanvas test: 2d.drawImage.composite] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js.ini deleted file mode 100644 index 14975992b26..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.composite.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html.ini deleted file mode 100644 index e3c09955f13..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.floatsource.html] - [OffscreenCanvas test: 2d.drawImage.floatsource] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js.ini deleted file mode 100644 index 5186c30c1a7..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.floatsource.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html.ini deleted file mode 100644 index d9c00e020cb..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.negativedest.html] - [Negative destination width/height represents the correct rectangle] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js.ini deleted file mode 100644 index 31b9ec54018..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.negativedest.worker.html] - [Negative destination width/height represents the correct rectangle] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html.ini deleted file mode 100644 index cf30b485857..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.negativedir.html] - [Negative dimensions do not affect the direction of the image] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js.ini deleted file mode 100644 index b789fbb639b..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.negativedir.worker.html] - [Negative dimensions do not affect the direction of the image] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html.ini deleted file mode 100644 index fe6fe1317b3..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.negativesource.html] - [Negative source width/height represents the correct rectangle] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js.ini deleted file mode 100644 index d20b4175b81..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.negativesource.worker.html] - [Negative source width/height represents the correct rectangle] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html.ini deleted file mode 100644 index 968631ac458..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.nonfinite.html] - [drawImage() with Infinity/NaN is ignored] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js.ini deleted file mode 100644 index d88e35b08a4..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.nonfinite.worker.html] - [drawImage() with Infinity/NaN is ignored] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html.ini deleted file mode 100644 index aac6b35b06d..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.nowrap.html] - [Stretched images do not get pixels wrapping around the edges] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js.ini deleted file mode 100644 index 61d2ac9b727..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.nowrap.worker.html] - [Stretched images do not get pixels wrapping around the edges] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html.ini deleted file mode 100644 index 0a613ba46a2..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.path.html] - [OffscreenCanvas test: 2d.drawImage.path] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js.ini deleted file mode 100644 index e3dc6d5ad67..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.path.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html.ini deleted file mode 100644 index adaff1bb3fe..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.svg.html] - [drawImage() of an SVG image] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js.ini deleted file mode 100644 index a97b8b37d07..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.svg.worker.html] - [drawImage() of an SVG image] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html.ini deleted file mode 100644 index 43c1fd403c1..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.transform.html] - [OffscreenCanvas test: 2d.drawImage.transform] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js.ini deleted file mode 100644 index 864d3b3ba40..00000000000 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.transform.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html.ini index efa68741600..d6114b0db21 100644 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html.ini +++ b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html.ini @@ -1,7 +1,3 @@ [2d.drawImage.zerosource.html] [drawImage with zero-sized source rectangle throws INDEX_SIZE_ERR] expected: FAIL - - [drawImage with zero-sized source rectangle draws nothing without exception] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini index 76d431df3a0..bea609ed103 100644 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini +++ b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini @@ -1,7 +1,3 @@ [2d.drawImage.zerosource.image.html] [drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR] expected: FAIL - - [drawImage with zero-sized source rectangle from image draws nothing without exception] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js.ini index 6f5d45f8dd9..2e4d62fc879 100644 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js.ini +++ b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js.ini @@ -1,7 +1,3 @@ [2d.drawImage.zerosource.image.worker.html] [drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR] expected: FAIL - - [drawImage with zero-sized source rectangle from image draws nothing without exception] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js.ini b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js.ini index a9d64261e96..a7f8c7ee0ce 100644 --- a/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js.ini +++ b/tests/wpt/metadata-layout-2020/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js.ini @@ -1,7 +1,3 @@ [2d.drawImage.zerosource.worker.html] [drawImage with zero-sized source rectangle throws INDEX_SIZE_ERR] expected: FAIL - - [drawImage with zero-sized source rectangle draws nothing without exception] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini new file mode 100644 index 00000000000..09c049e4b58 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini @@ -0,0 +1,3 @@ +[media_fragment_seek.html] + [Video should seek to time specified in media fragment syntax] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini index e8872b3585b..bbc1f35d8d9 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini @@ -1,4 +1,3 @@ [iframe_sandbox_popups_nonescaping-1.html] - expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini index 31928ad3947..31745fdcdcf 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini @@ -1,5 +1,4 @@ [sandbox-top-navigation-child-special-cases.tentative.sub.window.html] - expected: TIMEOUT [Allow top with user activation + user activation] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-img-element/non-active-document.html.ini index 3cdeb8ebcbc..47b45e65a1c 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-img-element/non-active-document.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-img-element/non-active-document.html.ini @@ -1,3 +1,9 @@ [non-active-document.html] [DOMParser] expected: FAIL + + [createHTMLDocument] + expected: FAIL + + [<template>] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html.ini new file mode 100644 index 00000000000..693bd4e2994 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html.ini @@ -0,0 +1,3 @@ +[selectmenu-value-option.tentative.html] + [selectmenu.value should reflect option.value] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/semantics/popovers/popover-target-element-disabled.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/popovers/popover-target-element-disabled.html.ini new file mode 100644 index 00000000000..0273c7dae9a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/semantics/popovers/popover-target-element-disabled.html.ini @@ -0,0 +1,24 @@ +[popover-target-element-disabled.html] + [Disabled popover*target buttons should not affect the popover heirarchy.] + expected: FAIL + + [Disabling popover*target buttons when popovers are open should still cause all popovers to be closed when the formerly outer popover is closed.] + expected: FAIL + + [Disabling popover*target buttons when popovers are open should still cause all popovers to be closed when the formerly inner popover is closed.] + expected: FAIL + + [Setting the form attribute on popover*target buttons when popovers are open should close all popovers.] + expected: FAIL + + [Changing the input type on a popover*target button when popovers are open should close all popovers.] + expected: FAIL + + [Disconnecting popover*target buttons when popovers are open should close all popovers.] + expected: FAIL + + [Changing the popovertarget attribute to break the chain should close all popovers.] + expected: FAIL + + [Modifying popovertarget on a button which doesn't break the chain shouldn't close any popovers.] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini deleted file mode 100644 index 2212b9d731f..00000000000 --- a/tests/wpt/metadata-layout-2020/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[async-script.html?reload] - expected: ERROR - -[async-script.html] diff --git a/tests/wpt/metadata-layout-2020/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata-layout-2020/html/syntax/parsing/DOMContentLoaded-defer.html.ini new file mode 100644 index 00000000000..b8bdf33cb65 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/syntax/parsing/DOMContentLoaded-defer.html.ini @@ -0,0 +1,3 @@ +[DOMContentLoaded-defer.html] + [The end: DOMContentLoaded and defer scripts] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini deleted file mode 100644 index fc0233f5241..00000000000 --- a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[module-delayed.html] - [async document.write in a module] - expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini new file mode 100644 index 00000000000..f9a4f08cd70 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini @@ -0,0 +1,3 @@ +[module-tla-delayed.html] + [document.write in an imported module] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini index 7237f5792de..dbe1def99e3 100644 --- a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini +++ b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini @@ -1,10 +1,9 @@ [promise-job-entry-different-function-realm.html] - expected: TIMEOUT [Fulfillment handler on fulfilled promise] expected: FAIL [Rejection handler on pending-then-rejected promise] - expected: TIMEOUT + expected: FAIL [Thenable resolution] expected: FAIL @@ -13,4 +12,4 @@ expected: FAIL [Fulfillment handler on pending-then-fulfilled promise] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini index 1d71471b73c..4a48dd15a9d 100644 --- a/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini +++ b/tests/wpt/metadata-layout-2020/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini @@ -1,7 +1,6 @@ [promise-rejection-events.html] - expected: TIMEOUT [delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire] - expected: TIMEOUT + expected: FAIL [unhandledrejection: from createImageBitmap which is UA triggered] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/resource-timing/response-status-code.html.ini b/tests/wpt/metadata-layout-2020/resource-timing/response-status-code.html.ini index b84e3cf7b11..38df5f01300 100644 --- a/tests/wpt/metadata-layout-2020/resource-timing/response-status-code.html.ini +++ b/tests/wpt/metadata-layout-2020/resource-timing/response-status-code.html.ini @@ -265,10 +265,10 @@ expected: FAIL [This test validates the response status of resources. 88] - expected: TIMEOUT + expected: FAIL [This test validates the response status of resources. 89] - expected: NOTRUN + expected: TIMEOUT [This test validates the response status of resources. 90] expected: NOTRUN diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini index 20a8f9a4320..1f70062991c 100644 --- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini +++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini @@ -1,5 +1,4 @@ [realtimeanalyser-fft-scaling.html] - expected: TIMEOUT [X 2048-point FFT peak position is not equal to 64. Got 0.] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini new file mode 100644 index 00000000000..b7b36c1d3a4 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini @@ -0,0 +1,4 @@ +[018.html] + expected: TIMEOUT + [origin of the script that invoked the method, javascript:] + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini deleted file mode 100644 index c7946fc91b4..00000000000 --- a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/017.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini new file mode 100644 index 00000000000..80f9a4f15b8 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/workers/constructors/Worker/Worker-constructor.html.ini @@ -0,0 +1,2 @@ +[Worker-constructor.html] + expected: ERROR diff --git a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini index 282ab0b2525..cdeaf7f7080 100644 --- a/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini +++ b/tests/wpt/metadata/FileAPI/url/url-in-tags-revoke.window.js.ini @@ -7,7 +7,7 @@ expected: FAIL [Opening a blob URL in a new window immediately before revoking it works.] - expected: FAIL + expected: TIMEOUT [Opening a blob URL in a noopener about:blank window immediately before revoking it works.] expected: TIMEOUT diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 8dba53dd1ca..4425fa85278 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -324419,7 +324419,7 @@ }, "tools": { "make_tests.py": [ - "e8bb1aec5a77e697bd9dbc2f23a301dd6ba2bae3", + "6890baa296170f05ac8e1eeef4c3e5e6813a62af", [] ], "samples": { @@ -324751,7 +324751,7 @@ }, "tools": { "protocol-server.py": [ - "e5d121000177a27176194d860bba9bd003b9bc20", + "fc8fa74997781164e49bb7fc00f62f2a324a761c", [] ] } @@ -324771,7 +324771,7 @@ [] ], "vocab_tester.py": [ - "7d9cc5b8a2e535ac48cf3c8c2c2c500df513f011", + "86453a7a2997d8874246b5deebd96d417ef28223", [] ] } @@ -326740,7 +326740,7 @@ [] ], "generate.py": [ - "176e0ebbebc07ac44cbf735c67a1b50ea028d0d7", + "409b4f195ff72c0427e51c523940302586243636", [] ], "spec.src.json": [ @@ -326748,7 +326748,7 @@ [] ], "spec_validator.py": [ - "3ac3f530169e5461ae070a7568aaff2cdba9c398", + "f8a1390ef0d440d21986c8c34803dd34c5dcb815", [] ], "template": { @@ -326770,7 +326770,7 @@ ] }, "util.py": [ - "72541c781429be479a02809bef14532a7c1900b3", + "5da06f9d51eb084770340c39d826079d2126b52a", [] ] }, @@ -381135,7 +381135,7 @@ [] ], "makegsubfonts.py": [ - "e519b4936de26e9819419d91d5cc8c3254a4f783", + "b46fa0e632b0ca903513c2694e505ff7fb930863", [] ], "pass.woff": [ @@ -392785,7 +392785,7 @@ ], "tools": { "generate-segment-break-transformation-rules-tests.py": [ - "fc894161bda1b4e3f5b643b6e668a6d1d0bcc614", + "6689ef5f18259e5b6e9fc6864db862825ac61691", [] ] } @@ -395382,15 +395382,15 @@ }, "tools": { "generate-text-emphasis-line-height-tests.py": [ - "12fb6a3ad850b357808c47a90a818dd73be2de5b", + "e2a4457f38e4659534fc35c794d2000e3c61635f", [] ], "generate-text-emphasis-position-property-tests.py": [ - "527959068762f5a7185bf11bdc2536054d2db258", + "f2baf023325ad45c7793d30a5eafcf2fde84bf06", [] ], "generate-text-emphasis-ruby-tests.py": [ - "fdbaec052e4e4bdfdcad1e9fc9731bf26a518509", + "f1158f5f843fcabda15aed4e2f6155303f8252a6", [] ], "generate-text-emphasis-style-property-010-tests.sh": [ @@ -395398,7 +395398,7 @@ [] ], "generate-text-emphasis-style-property-tests.py": [ - "1b1d6fc16f24b91eef28cd99c428f426cc61c349", + "b6ad1f7291b2b91cc22f0096c169b7b844e295ed", [] ] } @@ -404724,7 +404724,7 @@ [] ], "requirements.txt": [ - "0ad8484f60b3f16d7318f6ad8983501d81f67eea", + "589a98eaa2ab33b4d330b5e355eb8b0bdc43d31f", [] ], "reviewing-tests": { @@ -405262,7 +405262,7 @@ }, "scrolling": { "scroll_support.js": [ - "74b531cd3dfedfe8409f1918afebdff7b73e48fa", + "f561b6995344432c7030790ba98417fafae3e590", [] ] } @@ -405410,7 +405410,7 @@ [] ], "generate.py": [ - "a0bca546c75fdba873b5a99d2e593acdda2e5499", + "20c866bee80b94d36863cbd724a7e4abfc1ff635", [] ], "mathml.html": [ @@ -407025,7 +407025,7 @@ [] ], "make-polyfill-tests.py": [ - "532037e2a33226e31309a5838f4d7afd2c51227d", + "97c6fc74e93ba0f89f34c75cab3d4fb6ad183626", [] ] }, @@ -408592,7 +408592,7 @@ [] ], "support.sub.js": [ - "c07fd2c2acee68967c57826fd093abb013b05761", + "0cf3d2532e7ffd5ff24d9dd3d1653cf60b62c071", [] ], "worker-blob-fetcher.html": [ @@ -409084,6 +409084,40 @@ ] } }, + "fledge": { + "tentative": { + "TODO": [ + "839d286b38882f94bf97f0f6d749a33aa165cf46", + [] + ], + "resources": { + "bidding-logic.sub.py": [ + "dfc4d86be359d22783da86c2c38aa97b3f8060b8", + [] + ], + "decision-logic.sub.py": [ + "8d5303ac5a41c3540b6b1289346b3cd2d3cc6147", + [] + ], + "fenced_frame.sub.html": [ + "eaca3f49fd15840a3688a10a91b56524566893c5", + [] + ], + "fenced_frame.sub.html.headers": [ + "bc74b5851b6cb95c057d9787185f061b6357e4e0", + [] + ], + "fledge-util.js": [ + "9f95a59e43a3bbf6817cc541f9a796689834b1c9", + [] + ], + "request_tracker.py": [ + "5fedd727debf9c25321952fd0b053e7efb0550bd", + [] + ] + } + } + }, "focus": { "support": { "activeelement-after-calling-window-focus-inner.html": [ @@ -410365,7 +410399,7 @@ [] ], "FileSystemBaseHandle-buckets.js": [ - "98261995f9659b939027d914d9f9ce0d3c2a980e", + "01c41231808e2c18d707c0b4413c03d825918578", [] ], "FileSystemBaseHandle-getUniqueId.js": [ @@ -414337,7 +414371,7 @@ [] ], "compositing.yaml": [ - "c0b7b83e001a0e93f381f7773b76ed4485658f55", + "e808206bdab407172413dc1dd518e431da4677ea", [] ], "conformance_requirements.yaml": [ @@ -414345,7 +414379,7 @@ [] ], "drawing-images-to-the-canvas.yaml": [ - "e263bf0253dd121a97f32e3747c32e7799518ccd", + "4442f1ad481d65677b38b01616fc189ec6977d7c", [] ], "drawing-rectangles-to-the-canvas.yaml": [ @@ -425075,7 +425109,7 @@ [] ], "update_html5lib_tests.py": [ - "f1a99416fc8a4a5cd4fd3b32b92cd23b72b521ce", + "7ad9bc6f862b724f73a32e688327f7f8206146b8", [] ] }, @@ -425767,10 +425801,6 @@ "2ff648a04905f9090df637f2140c1c092cc3a247", [] ], - "cicp.png": [ - "8fa0ce2123c4f876a71b1ca80e04931614f3b87f", - [] - ], "clear-100x50.png": [ "eeedd0ff05889ffd4468bf19a2e8e9e0a094201c", [] @@ -425921,10 +425951,6 @@ "55f8e69325bc61ff83f769a6524f7f9c3310be1f", [] ], - "trns.png": [ - "4e309a89a8a27a9f7afb6eee6a4a604a3ef7c249", - [] - ], "undecodable.png": [ "f2581017b43d44664e7137a78c0803554b50f3b1", [] @@ -426190,7 +426216,7 @@ }, "tools": { "ahem-generate-table.py": [ - "8790da02e2793664f7e1f0808f8d2b998718d54a", + "314279f67105958badfa56b37a4bcc2625797f5d", [] ] } @@ -431698,7 +431724,17 @@ "META.yml": [ "da174ac614d820479e25a9ae86217b128f2c63fa", [] - ] + ], + "support": { + "cicp-display-p3.png": [ + "8fa0ce2123c4f876a71b1ca80e04931614f3b87f", + [] + ], + "trns-high-bits-set.png": [ + "4e309a89a8a27a9f7afb6eee6a4a604a3ef7c249", + [] + ] + } }, "pointerevents": { "META.yml": [ @@ -438862,7 +438898,7 @@ [] ], "presentation-request.html": [ - "62829556bb438c1396a0f17c7e3b45456f2bdad9", + "18475a3d67f7d8688269ee7b433617e1fbb5c6e6", [] ], "prompt-by-before-unload-inner-frame.html": [ @@ -439047,7 +439083,13 @@ "META.yml": [ "4f215060f5abf6ba31f55e1fbe5a41b1daaa7a47", [] - ] + ], + "resources": { + "util.js": [ + "50abce14cdc520f81178d452d6f165e9401bfbd0", + [] + ] + } }, "helpers.js": [ "b524c1b82cfb7b7f8810d1150ff3df8b98f31017", @@ -439267,11 +439309,11 @@ ], "tools": { "generate_javascript.py": [ - "300e1703b177765ea3df7c35fbbfae3d0aa8817a", + "fed3e5445fe86ac5869b7b30e912be7ecdd08df3", [] ], "list_hashes.py": [ - "5f189ce44b2260ea2187a5b880868efd7f793542", + "52f46ffd74788e5940afebb3b8b8ba93fc0123b7", [] ] } @@ -440511,7 +440553,7 @@ [] ], "requirements_tc.txt": [ - "7189b7b58f9d6c2fd32424b4b30cf19bee1e1e5e", + "95753d91681e4a562226b47c17948668f4d8dbc2", [] ], "run_tc.py": [ @@ -440643,7 +440685,7 @@ [] ], "requirements.txt": [ - "06d168a18d293effcb2c868ba01921ad9c3944cc", + "75dd52bde00438cc8dfa410be9f1fc48a85af4b8", [] ], "retry.py": [ @@ -440955,7 +440997,7 @@ [] ], "requirements.txt": [ - "9f5bc8a143bffa934424eadab5fc34229f70362b", + "0236020bc1f52a5cf4944da6e5d28f3c05b2f9d1", [] ], "sourcefile.py": [ @@ -441022,15 +441064,15 @@ [] ], "requirements_mypy.txt": [ - "af7bf35b21a3418dd8250cd283ee448089ab9644", + "48b6fecce53c66dbd1bd939ac41caa2ce6ed5a7c", [] ], "requirements_pytest.txt": [ - "e7678941a7f22320a60a0e4568974e82ae56626c", + "a724ff23e51d37d46041b5f80df9aeb5fd78161e", [] ], "requirements_tests.txt": [ - "4d8f2a5d22399568f3211c20add58c45e20887b5", + "27dea42bf5dabf7a6683b81f4d53e38c7e673da2", [] ], "runner": { @@ -448683,7 +448725,7 @@ [] ], "requirements.txt": [ - "5c0369b9f56b601663f0c54ce5925c5252b64a13", + "f814994b483e86b28d74de4bd5650295df420d2d", [] ], "resources": { @@ -449099,7 +449141,7 @@ ] }, "requirements.txt": [ - "8743e0317d39a93908e2e9469a9dd253c65d9fc6", + "d3b88d7f0464318d610aa15f16fa7cc392af36b4", [] ] }, @@ -449137,7 +449179,7 @@ [] ], "requirements.txt": [ - "a743bbe341f33f5668aef1fa28c8252af2fc8c00", + "ba07d192a2d5bcac1b60f3afa725e90a8146fe55", [] ], "requirements_install.txt": [ @@ -449153,7 +449195,7 @@ [] ], "testfiles.py": [ - "172ad201fc8df1bb4b4973fc9592ee54c7f8c49b", + "74c97ceefe2e58746135e9cb516b6bb605e4b11c", [] ], "tests": { @@ -449305,35 +449347,35 @@ ] }, "requirements.txt": [ - "202e80741333a46d53a26c9b4d73f550401be2c4", + "ccf09be728d5aefd44c3b2a484d636b3ad358bdf", [] ], "requirements_chromium.txt": [ - "8743e0317d39a93908e2e9469a9dd253c65d9fc6", + "d3b88d7f0464318d610aa15f16fa7cc392af36b4", [] ], "requirements_edge.txt": [ - "12920a9956a837724a9c35d2b033cb1b9a1ee7a2", + "dfbdc6d9e3471ebb301de7f7852849df11973c44", [] ], "requirements_firefox.txt": [ - "1f9033c09fe8db7e9684a3e336559af48d51331e", + "644df3bfd44aef4fe82b1d3eb60073ff258df609", [] ], "requirements_ie.txt": [ - "1726afa607908c45769c2c476a2cafa37c8c22cb", + "83948c668e4b9bfb9e7cb1a801a13cdedc8819c9", [] ], "requirements_opera.txt": [ - "1726afa607908c45769c2c476a2cafa37c8c22cb", + "83948c668e4b9bfb9e7cb1a801a13cdedc8819c9", [] ], "requirements_safari.txt": [ - "8d303aa45280f24149fd636551ca3af59d801258", + "e2e2f09f708592d511126d114c95019bf93c62ff", [] ], "requirements_sauce.txt": [ - "5089b0c1838d73d18ea3aa303160ef8b29d6e0f5", + "64fb1390c044d703a2d0865680b714b44f540925", [] ], "setup.py": [ @@ -452810,7 +452852,7 @@ }, "bidi": { "__init__.py": [ - "6ac8c3394ce73797b351cd71acc7904075485948", + "625cd3a6304c4d7d9118aa8071b66aaa970d9182", [] ], "browsing_context": { @@ -453510,7 +453552,7 @@ [] ], "helpers.py": [ - "e79a31448a323d06f583d35c6ffc9cbeef6d6f44", + "b0c065dca1189b711c44d23454760fde0181244c", [] ], "html": { @@ -453548,10 +453590,18 @@ "62067dd1667cd5535d4f90d35ae21474d4481666", [] ], + "cached.py": [ + "a43410f8856a861c8ad4633e40ea3ba298a5e31c", + [] + ], "headers.py": [ "ddae62dc6afabfaa9ceca93f5215d4afc5d002ed", [] ], + "must-revalidate.py": [ + "94f5a795a294c8b17aefb4e29e64cacb5c8e5ddf", + [] + ], "redirect.py": [ "f2fd1ebd51d4ad5f4ef0582510600eb3731fd2c7", [] @@ -463389,7 +463439,7 @@ ] ], "storage-buckets.https.any.js": [ - "24923ffcf8d7f224a525a34d1f110011370c8aee", + "4271722a425b7b52f50e53cb99dfa2d512f24d09", [ "IndexedDB/storage-buckets.https.any.html", { @@ -463405,6 +463455,10 @@ [ "script", "resources/support-promises.js" + ], + [ + "script", + "/storage/buckets/resources/util.js" ] ] } @@ -463424,6 +463478,10 @@ [ "script", "resources/support-promises.js" + ], + [ + "script", + "/storage/buckets/resources/util.js" ] ] } @@ -463443,6 +463501,10 @@ [ "script", "resources/support-promises.js" + ], + [ + "script", + "/storage/buckets/resources/util.js" ] ] } @@ -463462,6 +463524,10 @@ [ "script", "resources/support-promises.js" + ], + [ + "script", + "/storage/buckets/resources/util.js" ] ] } @@ -495400,6 +495466,27 @@ null, {} ] + ], + "table-parts-offsets-vertical-lr.tentative.html": [ + "bdac1f40607d2f63dee3cb8aadf6ac93f450a58c", + [ + null, + {} + ] + ], + "table-parts-offsets-vertical-rl.tentative.html": [ + "9d4a472d4382825c13af35114acc48a3b5face2a", + [ + null, + {} + ] + ], + "table-parts-offsets.tentative.html": [ + "265d761ffb30fd3e99214927a34ee33e3811f977", + [ + null, + {} + ] ] }, "transform-010.html": [ @@ -516403,7 +516490,7 @@ ] ], "all-with-discrete.tentative.html": [ - "f12c14e4c55285fd0d5a4c541c7b8b37146165b0", + "a048bc7a1cc3958f5b2758369d30b3472771c388", [ null, {} @@ -519527,10 +519614,14 @@ ] }, "appearance-cssom-001.html": [ - "1618c2b8a2825381661d470435f0dae4c3a40b8c", + "2da20a0ac923ea5bd975577c67976d63c82afe3b", [ null, {} + ], + [ + "css/css-ui/appearance-cssom-001.html?exclude=Invalid", + {} ] ], "appearance-initial-value-001.html": [ @@ -560106,7 +560197,7 @@ ] ], "redirect.https.window.js": [ - "f8a53ad1889e61712b98e0794de398307385b299", + "edbd5a19fbc963c7b37dedac88e31829d9268421", [ "fetch/local-network-access/redirect.https.window.html", { @@ -562112,6 +562203,108 @@ ] ] }, + "fledge": { + "tentative": { + "join-leave-ad-interest-group.https.sub.window.js": [ + "e967d92618cfce83ad01c421202164bbe49f7a3a", + [ + "fledge/tentative/join-leave-ad-interest-group.https.sub.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.js" + ] + ] + } + ] + ], + "no-winner.https.sub.window.js": [ + "4d24b5738eaaed58c9ef809a291d0a20021fc972", + [ + "fledge/tentative/no-winner.https.sub.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.js" + ] + ] + } + ] + ], + "reporting-arguments.https.sub.window.js": [ + "69b7d2fddda4e2a12f42b9549da8177c5dc0ccf3", + [ + "fledge/tentative/reporting-arguments.https.sub.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ] + ], + "send-report-to.https.sub.window.js": [ + "bb0e7873a7024a562794d257441b038e5256f853", + [ + "fledge/tentative/send-report-to.https.sub.window.html", + { + "script_metadata": [ + [ + "script", + "/resources/testdriver.js" + ], + [ + "script", + "/common/utils.js" + ], + [ + "script", + "resources/fledge-util.js" + ], + [ + "timeout", + "long" + ] + ], + "timeout": "long" + } + ] + ] + } + }, "focus": { "activeelement-after-calling-window-focus.sub.html": [ "34579fb2a6301bacdc5e069e214d833f59564c59", @@ -562677,7 +562870,7 @@ ] ], "FileSystemBaseHandle-buckets.https.any.js": [ - "6bb7d7711949de6fdbe014dc38b5a8f3cb77adff", + "cd78c5a9508d13912bd8420e52067dd9a1a71701", [ "fs/FileSystemBaseHandle-buckets.https.any.html", { @@ -562692,6 +562885,10 @@ ], [ "script", + "/storage/buckets/resources/util.js" + ], + [ + "script", "script-tests/FileSystemBaseHandle-buckets.js" ] ] @@ -562711,6 +562908,10 @@ ], [ "script", + "/storage/buckets/resources/util.js" + ], + [ + "script", "script-tests/FileSystemBaseHandle-buckets.js" ] ] @@ -572706,7 +572907,7 @@ ] ], "2d.drawImage.9arg.basic.html": [ - "eddf3c1ea91686c8f8b7f8affc09723fc3548bfc", + "80cda234bb886fd868c3cddf483659a5087e9064", [ null, {} @@ -572727,21 +572928,21 @@ ] ], "2d.drawImage.9arg.sourcepos.html": [ - "48ab9376ffbe42bb0c6e2739af696a32c031b58a", + "b7487e09991b6794b6ccd1e9cdcf34dd4101cb84", [ null, {} ] ], "2d.drawImage.9arg.sourcesize.html": [ - "5946cb30c9aa6033cdc0b7dd4fe1f302269bc48d", + "567b4abfcff06d5a37aed6ae530c7f58673db829", [ null, {} ] ], "2d.drawImage.alpha.html": [ - "36db82e4edb912e7b4ea92f2b5605c19f90c9526", + "8926a72c9da80ca7f80661d346fd755912785403", [ null, {} @@ -572762,14 +572963,14 @@ ] ], "2d.drawImage.animated.poster.html": [ - "6afc4e713c4c5942e3cb0fe69cccb83b3094e381", + "779397f6b9b8bd5e3e9752e6db0bcea49107cafa", [ null, {} ] ], "2d.drawImage.broken.html": [ - "4b22ffc8ba6a1795f11dba87fd592d107ec2c33a", + "7e9f145196369839e4d286d23f226ea1c4b7b847", [ null, {} @@ -572783,21 +572984,21 @@ ] ], "2d.drawImage.clip.html": [ - "fac98fe949d85aa870988c968bbc7c7ae4cb8729", + "380620faf34c2badfcaacfb4d8e2e1725134c8f6", [ null, {} ] ], "2d.drawImage.composite.html": [ - "60204a5d27b7259b0cb1306183ed175c5e15d4ad", + "7b7deb0f91e2ab0f63263ec9e941b9a5b121fe09", [ null, {} ] ], "2d.drawImage.floatsource.html": [ - "4b715f29feaae425e20bf7b93841219b9df2c658", + "02e4626133d80d623c91fee7e95474bdf45c1039", [ null, {} @@ -572839,21 +573040,21 @@ ] ], "2d.drawImage.negativedest.html": [ - "8418f635d4865fa89ef65ff1f15b068d5bbd7859", + "1020754fa8f871ceaf878c2f2e5794668e31fd6b", [ null, {} ] ], "2d.drawImage.negativedir.html": [ - "9a42e5af85490f2e66dd898b25519634d1a44672", + "e02d0ff439d858660b8efa0483b31ba7f5360a8d", [ null, {} ] ], "2d.drawImage.negativesource.html": [ - "07b154b1f02ebc8a3beb5170633c227bb103d3fd", + "f15fc3adcb0f045a1bf968e9c29b851ab3ee4223", [ null, {} @@ -572867,14 +573068,14 @@ ] ], "2d.drawImage.nonfinite.html": [ - "673cd3e64aa21aa65ca483808b424f529b96cf5b", + "f1ad616355d4630777e2c6a762b30d4e2a45785d", [ null, {} ] ], "2d.drawImage.nowrap.html": [ - "71b45a52d43763c059a8b6864a5af47ebf004f9f", + "3fde82454a878d3d365082640e85144f749ce6d1", [ null, {} @@ -572888,7 +573089,7 @@ ] ], "2d.drawImage.path.html": [ - "7cc5afe094274f7885e857468b629a16f6a34f68", + "ebc7040fa4bcf415bc0593b0d33b57a8bcad9ff2", [ null, {} @@ -572909,14 +573110,14 @@ ] ], "2d.drawImage.svg.html": [ - "b01232d447d6c7056d4f6449f5f8a4f16f4607d9", + "5464e63e2301ced5d2323d996fec05d597cea420", [ null, {} ] ], "2d.drawImage.transform.html": [ - "c49070e69cbe542c6c437307412117201658678d", + "2c8f930262bdfba0c37b7113551030c479ff4983", [ null, {} @@ -572944,14 +573145,14 @@ ] ], "2d.drawImage.zerosource.html": [ - "3831f3cc86494d48ff67a76dacadbc6b92bf7697", + "c3ce69d9e0b148bc7ebf3222c95335a034ff233d", [ null, {} ] ], "2d.drawImage.zerosource.image.html": [ - "b37cd4d19da45cc07899a7720ee100b13f67f271", + "403df3db463c2297be366d9cfd9aec5bce3b0c1c", [ null, {} @@ -579210,28 +579411,28 @@ ] ], "2d.composite.globalAlpha.image.html": [ - "32c690d9784eb3acd9739eb82d237bcf72de02b1", + "cd7ee9cf2a5ea7313a84b0842f71ea3f6ddce4a6", [ null, {} ] ], "2d.composite.globalAlpha.image.worker.js": [ - "010fbd8bfa9d8c9a9194e9bfb274dc02bee0f632", + "1c804a3961e4560833f427f3b8eb80a1f1e549c5", [ "html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.html", {} ] ], "2d.composite.globalAlpha.imagepattern.html": [ - "f057141895de4b578f926698f352c543743bc448", + "af1ca48e9d894bac428139d7a8cba34cfec896dd", [ null, {} ] ], "2d.composite.globalAlpha.imagepattern.worker.js": [ - "5607972635ead409bea5b29a6b0cd969606dfef5", + "58ef4f3b9dcc3cfd14f4c902684c369d548e05f2", [ "html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.html", {} @@ -580224,7 +580425,7 @@ ] ], "2d.drawImage.9arg.basic.html": [ - "e7034126cf900c2268e3498bcef475868b13f260", + "508376cd60cf205030b56c3c9fe22135890af549", [ null, { @@ -580233,7 +580434,7 @@ ] ], "2d.drawImage.9arg.basic.worker.js": [ - "244bc90fe7fe8445591cdc4f6ae511c2580ddcab", + "36770f779bea8bdf9d21189fe8418737ea03d43f", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.html", { @@ -580296,7 +580497,7 @@ ] ], "2d.drawImage.9arg.sourcepos.html": [ - "ce6c758b3c801797282da0d09ccc947d643d497e", + "4742fa21220a42968dbde728378a485a9072b345", [ null, { @@ -580305,7 +580506,7 @@ ] ], "2d.drawImage.9arg.sourcepos.worker.js": [ - "1522353ad6ee4e781027f94539c589e486a31e38", + "2780240bd883d5d7943adf007a4fc7b2ee57a468", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.html", { @@ -580320,7 +580521,7 @@ ] ], "2d.drawImage.9arg.sourcesize.html": [ - "89acdb8e3621ed1fecc2e44f1478d3c5a88a1c2a", + "fd1c853b88a34b12278cca3e0880861f862d3007", [ null, { @@ -580329,7 +580530,7 @@ ] ], "2d.drawImage.9arg.sourcesize.worker.js": [ - "6658e217505480b0ad21e88e9f1a7e5250965c8e", + "2bb379e7ebb965be523b6d6cd88c0f85676a8042", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.html", { @@ -580344,7 +580545,7 @@ ] ], "2d.drawImage.alpha.html": [ - "eb8476f7c3a1ddc2bdf25a46840f10ac7e2ba6e3", + "77134adfac58ed035c220028bffd3b576125a95c", [ null, { @@ -580353,7 +580554,7 @@ ] ], "2d.drawImage.alpha.worker.js": [ - "92cb23fe14d02fa669285b1665e2ba1d78c4f358", + "07d8d9288df7d645a2be580adaf5ada2a5c6a12d", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.html", { @@ -580368,7 +580569,7 @@ ] ], "2d.drawImage.animated.poster.html": [ - "ea4205abd448fdb477a82cc5881033dfc710427d", + "2b33b7dd2d7cf39a48046e2cd47ee2bb4918948b", [ null, { @@ -580377,7 +580578,7 @@ ] ], "2d.drawImage.animated.poster.worker.js": [ - "94ca08a075b32350ee7af47f393afe8257dc4f39", + "5f246feb2601492aed878d13173352c4b2fa8e56", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.html", { @@ -580392,7 +580593,7 @@ ] ], "2d.drawImage.broken.html": [ - "37aae52a53985249a8a1d6cc1b93d2c9d58be209", + "d9890f3057b76539da6c2824950868806fe8e72f", [ null, { @@ -580401,7 +580602,7 @@ ] ], "2d.drawImage.broken.worker.js": [ - "d3f1b7e4a1165d1cfcff42eca8e29c0b77e301a6", + "51560c443dba32d29706eb744637a4d2b5da248d", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.html", { @@ -580440,7 +580641,7 @@ ] ], "2d.drawImage.clip.html": [ - "970cb4d5a5a47a0c97fda39011f6d9b50662400e", + "994f601651d4de3e289c306b84671d9bb07978dc", [ null, { @@ -580449,7 +580650,7 @@ ] ], "2d.drawImage.clip.worker.js": [ - "d30a05fa9dbc96fc1f38bbb62c18d7ed4c68c481", + "1a462aff68131856f58af8675b25ebb6103a7fdf", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.html", { @@ -580464,7 +580665,7 @@ ] ], "2d.drawImage.composite.html": [ - "90afbcbda8b59f9ae211062b3f506295cbc73e86", + "b4bc6f39ce9564af23e3df1b8ec185079a51df6e", [ null, { @@ -580473,7 +580674,7 @@ ] ], "2d.drawImage.composite.worker.js": [ - "0c4a7fe10a849cd3edf359e5f1f36a3d4e7e160c", + "f6d4a5d284ae29391de3033990c1a3e45d8233d4", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.html", { @@ -580488,7 +580689,7 @@ ] ], "2d.drawImage.floatsource.html": [ - "c6a3fbcf005df07513cd43a66b638abf55300ef5", + "98ca580e591036c7872b335afd35dbbef014bd85", [ null, { @@ -580497,7 +580698,7 @@ ] ], "2d.drawImage.floatsource.worker.js": [ - "7b16cbb4f5f1d2c0c900912e6e7a1fcf4d0c26a3", + "7206099837deca57de41cb359fa13bdb68a6aa04", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.html", { @@ -580512,7 +580713,7 @@ ] ], "2d.drawImage.negativedest.html": [ - "1c207673963954f381469bfb98f330aeed491ca2", + "bfe2a9c96f64593b1976d7652fc73abc9c35c3eb", [ null, { @@ -580521,7 +580722,7 @@ ] ], "2d.drawImage.negativedest.worker.js": [ - "5ca4d14ef635f56e09affb9e976664fbf6c0a846", + "aebbb34b3edd9d1efc42b1c5f0c87bbd04a04595", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.html", { @@ -580536,7 +580737,7 @@ ] ], "2d.drawImage.negativedir.html": [ - "af274bf9bcd1803711c2de62dcccb05d135e314d", + "46c571f15398d83ecaaeb74883397f627c029c21", [ null, { @@ -580545,7 +580746,7 @@ ] ], "2d.drawImage.negativedir.worker.js": [ - "2a6cc81058d3e3e6442c136a638f0678728b0569", + "4bfb5433b8615a68109902f57335b352bec2f039", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.html", { @@ -580560,7 +580761,7 @@ ] ], "2d.drawImage.negativesource.html": [ - "5a7b2af7f2a98660530944e34f2cac375b359a3c", + "4e60d7e5e91dec508528ceef585876706b8f88b9", [ null, { @@ -580569,7 +580770,7 @@ ] ], "2d.drawImage.negativesource.worker.js": [ - "ada79f9137d865b5864d07597990f7c7ec6cf2d8", + "6d0bec1a1dbc096f79494d50be7489e826d10af3", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.html", { @@ -580584,7 +580785,7 @@ ] ], "2d.drawImage.nonfinite.html": [ - "4a6a23b0fc39d5d1915ebb3345322067403acc75", + "dc932df3cd0283df44b3113dba13906dad657621", [ null, { @@ -580593,7 +580794,7 @@ ] ], "2d.drawImage.nonfinite.worker.js": [ - "a2e77832a20d8cde747939d048038be9b0f2c046", + "7dee18058062dcf3e05cfc170ebb494ada38fee2", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.html", { @@ -580608,7 +580809,7 @@ ] ], "2d.drawImage.nowrap.html": [ - "a45fa15daedbaa7cf2d1a91807087e0a9ab5cdac", + "fc16787978663107fb4caf942b3eb1c684949c09", [ null, { @@ -580617,7 +580818,7 @@ ] ], "2d.drawImage.nowrap.worker.js": [ - "ab3a9367dd3168b4ee0ac36f26d40cefd1bfcba0", + "539c6bf9772a5e244360276b6cd51cb301878586", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.html", { @@ -580646,7 +580847,7 @@ ] ], "2d.drawImage.path.html": [ - "938c014c7ab2751625a59c8829fa23a6376cb488", + "3977880de19735d0f574fd2da763d88acad3dbf1", [ null, { @@ -580655,7 +580856,7 @@ ] ], "2d.drawImage.path.worker.js": [ - "5521290977879fc171c8116cd060e650e11f8131", + "5132aa994f1f33df1f90acfed45bbb64c65ba05a", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.html", { @@ -580698,7 +580899,7 @@ ] ], "2d.drawImage.svg.html": [ - "559eb9420e624d81e9e923e08729b9a8b9bec53c", + "d5317dd00638cb46a26e6999ff9a5561a85b1485", [ null, { @@ -580707,7 +580908,7 @@ ] ], "2d.drawImage.svg.worker.js": [ - "2d832be3636f35944b232742ab406f20a70d5fff", + "fda62017c269d1fec944523fab69ddc6e8c4b397", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.html", { @@ -580722,7 +580923,7 @@ ] ], "2d.drawImage.transform.html": [ - "e4d905474a4a142400d5b17d5a1abc0bbfc23158", + "bdbdb393cf8534f26464b45eb3330886c236fc0a", [ null, { @@ -580731,7 +580932,7 @@ ] ], "2d.drawImage.transform.worker.js": [ - "2fc0caf1c3150a3ed8d9df1e4402cb725e8c751a", + "a42f2785164b6621466f82ef0ff2d90160d79f28", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.html", { @@ -580784,7 +580985,7 @@ ] ], "2d.drawImage.zerosource.html": [ - "d91a196060893d39d57889e3a880e6370deae645", + "bdd68d20080e98e95801f07ce616b448afa84121", [ null, { @@ -580793,7 +580994,7 @@ ] ], "2d.drawImage.zerosource.image.html": [ - "25cd54b57a0f25a41fcc9858eb95c6590456beec", + "5a0d4fcda29e36825d9e61b54dd39db52b107a52", [ null, { @@ -580802,7 +581003,7 @@ ] ], "2d.drawImage.zerosource.image.worker.js": [ - "1465d6c1bc274fe341cedb04d5385ae56074202c", + "729e0e97a4cd1ec22a3e9635fbe731da7640bdd8", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.html", { @@ -580817,7 +581018,7 @@ ] ], "2d.drawImage.zerosource.worker.js": [ - "654e9bdd744ec6f404ec590d03e6e335bebf5c2f", + "2655e3e91f51b8bcee1d16a5b61ad0510d978bdd", [ "html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.html", { @@ -606926,6 +607127,13 @@ {} ] ], + "selectmenu-value-option.tentative.html": [ + "bf58630816addcb025ad7ac4e59c5ccfe16aa74f", + [ + null, + {} + ] + ], "selectmenu-value-selectedOption.tentative.html": [ "3ba7da6b5a2f893f0b5ec71ad25b4b8b5479c729", [ @@ -608071,7 +608279,7 @@ ] ], "popover-target-element-disabled.html": [ - "92c28a4b6c58d6726533e0c59f580e01448fc06c", + "59392f428ae3eacaa476dc0376069dce3831c459", [ null, {} @@ -622712,7 +622920,7 @@ ] ], "loaf-event-listener.html": [ - "6349c28b3202262c444aaefc558620c7baa19ff3", + "f866a1dfd83b7af311e3ab9c03be6d19074ab901", [ null, { @@ -622721,7 +622929,7 @@ ] ], "loaf-first-ui-event.html": [ - "f2d8dac3f1179f2ba3d56295d6a44652728f55e6", + "b30b645d2fab262e77b922c0d0d075b23d1f844d", [ null, { @@ -635140,14 +635348,14 @@ }, "png": { "cicp-chunk.html": [ - "4afc262dcf5ead61423a5bea21ae6e6f998a401c", + "8add5d602ea0c3478b27fd627e9ad5e9eb465083", [ null, {} ] ], "trns-chunk.html": [ - "652cda0e32089b7ade4e41c0f69a9637177bd9dd", + "3a24753382b20b4a1d5803ee64c730427dd62c54", [ null, {} @@ -652890,6 +653098,13 @@ {} ] ], + "yield-priority-idle-callbacks.html": [ + "d47e8c5eba2ed6eca2df695e93a4f1bb7a324b0b", + [ + null, + {} + ] + ], "yield-priority-posttask.any.js": [ "0700094dcf3679d18099204705c885005e070f74", [ @@ -656898,7 +657113,7 @@ ] ], "cache-storage-buckets.https.any.js": [ - "0b5ef7b298df64d9df1a79fa7e1fe3cd00178333", + "fd59ba464db0305de210fc2935d739b2469ec4ae", [ "service-workers/cache-storage/cache-storage-buckets.https.any.html", { @@ -656917,7 +657132,11 @@ ], [ "script", - "./resources/test-helpers.js" + "resources/test-helpers.js" + ], + [ + "script", + "/storage/buckets/resources/util.js" ], [ "timeout", @@ -656945,7 +657164,11 @@ ], [ "script", - "./resources/test-helpers.js" + "resources/test-helpers.js" + ], + [ + "script", + "/storage/buckets/resources/util.js" ], [ "timeout", @@ -656973,7 +657196,11 @@ ], [ "script", - "./resources/test-helpers.js" + "resources/test-helpers.js" + ], + [ + "script", + "/storage/buckets/resources/util.js" ], [ "timeout", @@ -657001,7 +657228,11 @@ ], [ "script", - "./resources/test-helpers.js" + "resources/test-helpers.js" + ], + [ + "script", + "/storage/buckets/resources/util.js" ], [ "timeout", @@ -663098,6 +663329,15 @@ {} ] ], + "SpeechSynthesisEvent-properties.html": [ + "f6c8f5fc321d8dca382205c741de742711225212", + [ + null, + { + "testdriver": true + } + ] + ], "SpeechSynthesisUtterance-basics.https.html": [ "2fd394150e941ccbeb8d63b99e598cc53e55446d", [ @@ -663139,7 +663379,7 @@ "storage": { "buckets": { "buckets_storage_policy.tentative.https.any.js": [ - "4aaa02e4be464a34ff02294ba2f6d5898b5904e2", + "d6dce3675d0bca18a379518c6ecf2c7ec1310930", [ "storage/buckets/buckets_storage_policy.tentative.https.any.html", { @@ -663149,6 +663389,10 @@ "Buckets API: Tests for bucket storage policies." ], [ + "script", + "/storage/buckets/resources/util.js" + ], + [ "global", "window,worker" ] @@ -663164,6 +663408,10 @@ "Buckets API: Tests for bucket storage policies." ], [ + "script", + "/storage/buckets/resources/util.js" + ], + [ "global", "window,worker" ] @@ -663179,6 +663427,10 @@ "Buckets API: Tests for bucket storage policies." ], [ + "script", + "/storage/buckets/resources/util.js" + ], + [ "global", "window,worker" ] @@ -663194,6 +663446,10 @@ "Buckets API: Tests for bucket storage policies." ], [ + "script", + "/storage/buckets/resources/util.js" + ], + [ "global", "window,worker" ] @@ -663902,7 +664158,7 @@ ] ], "storage-access-permission.sub.https.window.js": [ - "82794061bd013ced4d8a42f3337fddd6a53d6d0a", + "f0aadf4828dcb549c0d66ef4745b1e190d56f8d6", [ "storage-access-api/storage-access-permission.sub.https.window.html", { @@ -664523,7 +664779,7 @@ ] ], "general.any.js": [ - "bec3480f65394461dea9cbdda84a5fe4c21e8ed5", + "faeb8e321af208543472e2d212c0701faeb09eb6", [ "streams/piping/general.any.html", { @@ -682490,7 +682746,7 @@ ] ], "storage-buckets.tentative.https.any.js": [ - "73cc0ac3725c36929357b702360035edb780c064", + "a6b4f59a95d715aaff638a3c2b3a6c9ab3532ab8", [ "web-locks/storage-buckets.tentative.https.any.html", { @@ -682504,6 +682760,10 @@ "resources/helpers.js" ], [ + "script", + "/storage/buckets/resources/util.js" + ], + [ "global", "window,dedicatedworker,sharedworker,serviceworker" ] @@ -682523,6 +682783,10 @@ "resources/helpers.js" ], [ + "script", + "/storage/buckets/resources/util.js" + ], + [ "global", "window,dedicatedworker,sharedworker,serviceworker" ] @@ -682542,6 +682806,10 @@ "resources/helpers.js" ], [ + "script", + "/storage/buckets/resources/util.js" + ], + [ "global", "window,dedicatedworker,sharedworker,serviceworker" ] @@ -682561,6 +682829,10 @@ "resources/helpers.js" ], [ + "script", + "/storage/buckets/resources/util.js" + ], + [ "global", "window,dedicatedworker,sharedworker,serviceworker" ] @@ -737312,6 +737584,13 @@ ] }, "response_started": { + "response_started_cached_tentative.py": [ + "5022511f792894c6d1be2b72460836747c7181d5", + [ + null, + {} + ] + ], "response_started_tentative.py": [ "b1a0741f202a95eb3544a22e4e08548fdaef2e7d", [ diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini new file mode 100644 index 00000000000..13bd6abf376 --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini @@ -0,0 +1,3 @@ +[hit-test-floats-004.html] + [Miss float below something else] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini index 51432362d66..ee34bc91078 100644 --- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini +++ b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-002.html.ini @@ -1,3 +1,6 @@ [block-in-inline-hittest-002.html] [elementsFromPoint] expected: FAIL + + [elementFromPoint] + expected: FAIL diff --git a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini deleted file mode 100644 index 3e5096beef3..00000000000 --- a/tests/wpt/metadata/css/CSS2/normal-flow/block-in-inline-hittest-float-002.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[block-in-inline-hittest-float-002.html] - [block-in-inline-hittest-float-002] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-flexbox/hittest-anonymous-box.html.ini b/tests/wpt/metadata/css/css-flexbox/hittest-anonymous-box.html.ini new file mode 100644 index 00000000000..b8f8d45a31f --- /dev/null +++ b/tests/wpt/metadata/css/css-flexbox/hittest-anonymous-box.html.ini @@ -0,0 +1,3 @@ +[hittest-anonymous-box.html] + [Hit-testing within an anonymous flex-item should return the flexbox as the hittest result.] + expected: FAIL diff --git a/tests/wpt/metadata/css/css-flexbox/hittest-before-pseudo.html.ini b/tests/wpt/metadata/css/css-flexbox/hittest-before-pseudo.html.ini deleted file mode 100644 index 5b685485f3c..00000000000 --- a/tests/wpt/metadata/css/css-flexbox/hittest-before-pseudo.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[hittest-before-pseudo.html] - [Hit-testing text within a pseudo-element flex-item should return the flexbox as the hittest result.] - expected: FAIL diff --git a/tests/wpt/metadata/css/css-ui/appearance-cssom-001.html.ini b/tests/wpt/metadata/css/css-ui/appearance-cssom-001.html.ini index 5a31ee65da0..51ce991b693 100644 --- a/tests/wpt/metadata/css/css-ui/appearance-cssom-001.html.ini +++ b/tests/wpt/metadata/css/css-ui/appearance-cssom-001.html.ini @@ -1084,3 +1084,101 @@ [appearance: square-button (compat)] expected: FAIL + + +[appearance-cssom-001.html?exclude=Invalid] + [-webkit-appearance: none] + expected: FAIL + + [-webkit-appearance: auto] + expected: FAIL + + [-webkit-appearance: textfield] + expected: FAIL + + [-webkit-appearance: menulist-button] + expected: FAIL + + [-webkit-appearance: button (compat)] + expected: FAIL + + [-webkit-appearance: checkbox (compat)] + expected: FAIL + + [-webkit-appearance: listbox (compat)] + expected: FAIL + + [-webkit-appearance: menulist (compat)] + expected: FAIL + + [-webkit-appearance: meter (compat)] + expected: FAIL + + [-webkit-appearance: progress-bar (compat)] + expected: FAIL + + [-webkit-appearance: radio (compat)] + expected: FAIL + + [-webkit-appearance: searchfield (compat)] + expected: FAIL + + [-webkit-appearance: textarea (compat)] + expected: FAIL + + [-webkit-appearance: slider-horizontal (compat)] + expected: FAIL + + [-webkit-appearance: push-button (compat)] + expected: FAIL + + [-webkit-appearance: square-button (compat)] + expected: FAIL + + [appearance: none] + expected: FAIL + + [appearance: auto] + expected: FAIL + + [appearance: textfield] + expected: FAIL + + [appearance: menulist-button] + expected: FAIL + + [appearance: button (compat)] + expected: FAIL + + [appearance: checkbox (compat)] + expected: FAIL + + [appearance: listbox (compat)] + expected: FAIL + + [appearance: menulist (compat)] + expected: FAIL + + [appearance: meter (compat)] + expected: FAIL + + [appearance: progress-bar (compat)] + expected: FAIL + + [appearance: radio (compat)] + expected: FAIL + + [appearance: searchfield (compat)] + expected: FAIL + + [appearance: textarea (compat)] + expected: FAIL + + [appearance: slider-horizontal (compat)] + expected: FAIL + + [appearance: push-button (compat)] + expected: FAIL + + [appearance: square-button (compat)] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini new file mode 100644 index 00000000000..f18b8d2fcf9 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/CaretPosition-001.html.ini @@ -0,0 +1,3 @@ +[CaretPosition-001.html] + [Element at (400, 100)] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini new file mode 100644 index 00000000000..72b09371038 --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini @@ -0,0 +1,3 @@ +[elementFromPoint-001.html] + [CSSOM View - 5 - extensions to the Document interface] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini index cf67b5d03dd..80ed711305d 100644 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-dynamic-anon-box.html.ini @@ -1,3 +1,4 @@ [elementFromPoint-dynamic-anon-box.html] + expected: CRASH [Link should be clickable after hiding a scrollbox with an anonymous table inside] expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini deleted file mode 100644 index b905fe70fcb..00000000000 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-ellipsis-in-inline-box.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[elementFromPoint-ellipsis-in-inline-box.html] - [elementFromPoint-ellipsis-in-inline-box] - expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-relative.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-relative.html.ini deleted file mode 100644 index 7e9331b6bc2..00000000000 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-float-in-relative.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[elementFromPoint-float-in-relative.html] - [elementFromPoint-float-in-relative] - expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini index 8ae9bae3500..df64baf81ee 100644 --- a/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementFromPoint-list-001.html.ini @@ -13,3 +13,6 @@ [<li>Outside 3</li>] expected: FAIL + + [<li>Image Inside 2</li>] + expected: FAIL diff --git a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini index 898f39c4330..9f2a3229231 100644 --- a/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementFromPosition.html.ini @@ -20,3 +20,6 @@ [test the top of layer] expected: FAIL + + [test some point of the element: top left corner] + expected: FAIL diff --git a/tests/wpt/metadata/fetch/api/basic/keepalive.any.js.ini b/tests/wpt/metadata/fetch/api/basic/keepalive.any.js.ini index e9ab91fc80e..4c1c78640bb 100644 --- a/tests/wpt/metadata/fetch/api/basic/keepalive.any.js.ini +++ b/tests/wpt/metadata/fetch/api/basic/keepalive.any.js.ini @@ -1,3 +1,4 @@ [keepalive.any.html] + expected: TIMEOUT [keepalive in onunload in nested frame in another window] expected: FAIL diff --git a/tests/wpt/metadata/fetch/api/redirect/redirect-keepalive.any.js.ini b/tests/wpt/metadata/fetch/api/redirect/redirect-keepalive.any.js.ini new file mode 100644 index 00000000000..c57e48f2078 --- /dev/null +++ b/tests/wpt/metadata/fetch/api/redirect/redirect-keepalive.any.js.ini @@ -0,0 +1,2 @@ +[redirect-keepalive.any.html] + expected: TIMEOUT diff --git a/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini b/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini index ed2ce3392d0..0d48169e3cc 100644 --- a/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini +++ b/tests/wpt/metadata/fetch/metadata/generated/css-images.sub.tentative.html.ini @@ -147,8 +147,5 @@ [list-style-image sec-fetch-site - HTTPS downgrade-upgrade] expected: FAIL - [border-image sec-fetch-mode - Not sent to non-trustworthy cross-site destination] - expected: FAIL - - [border-image sec-fetch-site - HTTPS downgrade (header not sent)] - expected: FAIL + [background-image sec-fetch-site - HTTPS downgrade (header not sent)] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini index 6e9f7acf151..c8a3c8f9e68 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html.ini @@ -1,6 +1,6 @@ [scroll-restoration-fragment-scrolling-cross-origin.html] type: testharness - expected: TIMEOUT + expected: ERROR [Manual scroll restoration should take precedent over scrolling to fragment in cross origin navigation] expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini index 149bcb4ff8c..b8fd22e2b81 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-iframe-contentWindow.html.ini @@ -10,3 +10,6 @@ [load & pageshow events do not fire on contentWindow of <iframe> element created with src='about:blank'] expected: FAIL + + [load & pageshow events do not fire on contentWindow of <iframe> element created with src=''] + expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini b/tests/wpt/metadata/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/metadata/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/load-pageshow-events-window-open.html.ini +++ b/tests/wpt/metadata/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/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini index 8ae58f9f1e2..b169452e04a 100644 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini +++ b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/javascript-url-return-value-handling-dynamic.html.ini @@ -10,12 +10,3 @@ [0080 00FF set in href="" targeting a frame and clicked] expected: FAIL - - [0080 00FF 0100 set in href="" targeting a frame and clicked] - expected: FAIL - - [D83D DE0D set in href="" targeting a frame and clicked] - expected: FAIL - - [DE0D 0041 set in href="" targeting a frame and clicked] - expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini b/tests/wpt/metadata/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/metadata/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/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini b/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini deleted file mode 100644 index 60a4fa51f8a..00000000000 --- a/tests/wpt/metadata/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[a-click.html] - [aElement.click() before the load event must NOT replace] - expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini new file mode 100644 index 00000000000..ca84728f1e9 --- /dev/null +++ b/tests/wpt/metadata/html/browsers/the-window-object/open-close/creating_browsing_context_test_01.html.ini @@ -0,0 +1,4 @@ +[creating_browsing_context_test_01.html] + expected: TIMEOUT + [first argument: absolute url] + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html.ini b/tests/wpt/metadata/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html.ini deleted file mode 100644 index adaff1bb3fe..00000000000 --- a/tests/wpt/metadata/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.svg.html] - [drawImage() of an SVG image] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini b/tests/wpt/metadata/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini index 76d431df3a0..bea609ed103 100644 --- a/tests/wpt/metadata/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini +++ b/tests/wpt/metadata/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini @@ -1,7 +1,3 @@ [2d.drawImage.zerosource.image.html] [drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR] expected: FAIL - - [drawImage with zero-sized source rectangle from image draws nothing without exception] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html.ini b/tests/wpt/metadata/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html.ini deleted file mode 100644 index 844abdcced8..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[2d.composite.globalAlpha.image.html] - [OffscreenCanvas test: 2d.composite.globalAlpha.image] - expected: FAIL diff --git a/tests/wpt/metadata/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js.ini deleted file mode 100644 index a66bd4c9607..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js.ini +++ /dev/null @@ -1,3 +0,0 @@ -[2d.composite.globalAlpha.image.worker.html] - [2d] - expected: FAIL diff --git a/tests/wpt/metadata/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html.ini b/tests/wpt/metadata/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html.ini deleted file mode 100644 index 5dd24f42848..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[2d.composite.globalAlpha.imagepattern.html] - [OffscreenCanvas test: 2d.composite.globalAlpha.imagepattern] - expected: FAIL diff --git a/tests/wpt/metadata/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js.ini deleted file mode 100644 index 1718e787f1c..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js.ini +++ /dev/null @@ -1,3 +0,0 @@ -[2d.composite.globalAlpha.imagepattern.worker.html] - [2d] - expected: FAIL diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html.ini deleted file mode 100644 index f312f1589b8..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.9arg.basic.html] - [OffscreenCanvas test: 2d.drawImage.9arg.basic] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js.ini deleted file mode 100644 index 2ff0b98dcb5..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.9arg.basic.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html.ini deleted file mode 100644 index 3e8e707a8be..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.9arg.sourcepos.html] - [OffscreenCanvas test: 2d.drawImage.9arg.sourcepos] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js.ini deleted file mode 100644 index 3ec5cbbadc9..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.9arg.sourcepos.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html.ini deleted file mode 100644 index 44ad1e2efb0..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.9arg.sourcesize.html] - [OffscreenCanvas test: 2d.drawImage.9arg.sourcesize] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js.ini deleted file mode 100644 index 150dc88d58e..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.9arg.sourcesize.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html.ini deleted file mode 100644 index 0b04a0d852d..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.alpha.html] - [OffscreenCanvas test: 2d.drawImage.alpha] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js.ini deleted file mode 100644 index 93ca873d5aa..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.alpha.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html.ini deleted file mode 100644 index dba65871688..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.animated.poster.html] - [drawImage() of an APNG draws the poster frame] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js.ini deleted file mode 100644 index 19ec8e5782b..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.animated.poster.worker.html] - [drawImage() of an APNG draws the poster frame] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html.ini deleted file mode 100644 index 38c46fe7e71..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.broken.html] - [OffscreenCanvas test: 2d.drawImage.broken] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js.ini deleted file mode 100644 index b85d2727a7a..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.broken.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html.ini deleted file mode 100644 index ddc364f4b22..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.clip.html] - [OffscreenCanvas test: 2d.drawImage.clip] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js.ini deleted file mode 100644 index f387c1acd65..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.clip.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html.ini deleted file mode 100644 index 0d1eb846146..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.composite.html] - [OffscreenCanvas test: 2d.drawImage.composite] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js.ini deleted file mode 100644 index 14975992b26..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.composite.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html.ini deleted file mode 100644 index e3c09955f13..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.floatsource.html] - [OffscreenCanvas test: 2d.drawImage.floatsource] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js.ini deleted file mode 100644 index 5186c30c1a7..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.floatsource.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html.ini deleted file mode 100644 index d9c00e020cb..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.negativedest.html] - [Negative destination width/height represents the correct rectangle] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js.ini deleted file mode 100644 index 31b9ec54018..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.negativedest.worker.html] - [Negative destination width/height represents the correct rectangle] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html.ini deleted file mode 100644 index cf30b485857..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.negativedir.html] - [Negative dimensions do not affect the direction of the image] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js.ini deleted file mode 100644 index b789fbb639b..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.negativedir.worker.html] - [Negative dimensions do not affect the direction of the image] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html.ini deleted file mode 100644 index fe6fe1317b3..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.negativesource.html] - [Negative source width/height represents the correct rectangle] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js.ini deleted file mode 100644 index d20b4175b81..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.negativesource.worker.html] - [Negative source width/height represents the correct rectangle] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html.ini deleted file mode 100644 index 968631ac458..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.nonfinite.html] - [drawImage() with Infinity/NaN is ignored] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js.ini deleted file mode 100644 index d88e35b08a4..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.nonfinite.worker.html] - [drawImage() with Infinity/NaN is ignored] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html.ini deleted file mode 100644 index aac6b35b06d..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.nowrap.html] - [Stretched images do not get pixels wrapping around the edges] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js.ini deleted file mode 100644 index 61d2ac9b727..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.nowrap.worker.html] - [Stretched images do not get pixels wrapping around the edges] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html.ini deleted file mode 100644 index 0a613ba46a2..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.path.html] - [OffscreenCanvas test: 2d.drawImage.path] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js.ini deleted file mode 100644 index e3dc6d5ad67..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.path.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html.ini deleted file mode 100644 index adaff1bb3fe..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.svg.html] - [drawImage() of an SVG image] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js.ini deleted file mode 100644 index a97b8b37d07..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.svg.worker.html] - [drawImage() of an SVG image] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html.ini deleted file mode 100644 index 43c1fd403c1..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.transform.html] - [OffscreenCanvas test: 2d.drawImage.transform] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js.ini deleted file mode 100644 index 864d3b3ba40..00000000000 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js.ini +++ /dev/null @@ -1,4 +0,0 @@ -[2d.drawImage.transform.worker.html] - [2d] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html.ini index efa68741600..d6114b0db21 100644 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html.ini +++ b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html.ini @@ -1,7 +1,3 @@ [2d.drawImage.zerosource.html] [drawImage with zero-sized source rectangle throws INDEX_SIZE_ERR] expected: FAIL - - [drawImage with zero-sized source rectangle draws nothing without exception] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini index 76d431df3a0..bea609ed103 100644 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini +++ b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html.ini @@ -1,7 +1,3 @@ [2d.drawImage.zerosource.image.html] [drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR] expected: FAIL - - [drawImage with zero-sized source rectangle from image draws nothing without exception] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js.ini index 6f5d45f8dd9..2e4d62fc879 100644 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js.ini +++ b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js.ini @@ -1,7 +1,3 @@ [2d.drawImage.zerosource.image.worker.html] [drawImage with zero-sized source rectangle from image throws INDEX_SIZE_ERR] expected: FAIL - - [drawImage with zero-sized source rectangle from image draws nothing without exception] - expected: FAIL - diff --git a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js.ini b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js.ini index a9d64261e96..a7f8c7ee0ce 100644 --- a/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js.ini +++ b/tests/wpt/metadata/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js.ini @@ -1,7 +1,3 @@ [2d.drawImage.zerosource.worker.html] [drawImage with zero-sized source rectangle throws INDEX_SIZE_ERR] expected: FAIL - - [drawImage with zero-sized source rectangle draws nothing without exception] - expected: FAIL - diff --git a/tests/wpt/metadata/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini new file mode 100644 index 00000000000..09c049e4b58 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/embedded-content/media-elements/media_fragment_seek.html.ini @@ -0,0 +1,3 @@ +[media_fragment_seek.html] + [Video should seek to time specified in media fragment syntax] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini index f9138fb999a..6f7461b9472 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini @@ -1,5 +1,4 @@ [iframe_sandbox_popups_nonescaping-1.html] type: testharness - expected: TIMEOUT [Check that popups from a sandboxed iframe do not escape the sandbox] - expected: NOTRUN + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini index 31928ad3947..31745fdcdcf 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/sandbox-top-navigation-child-special-cases.tentative.sub.window.js.ini @@ -1,5 +1,4 @@ [sandbox-top-navigation-child-special-cases.tentative.sub.window.html] - expected: TIMEOUT [Allow top with user activation + user activation] expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini index 3cdeb8ebcbc..47b45e65a1c 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-img-element/non-active-document.html.ini @@ -1,3 +1,9 @@ [non-active-document.html] [DOMParser] expected: FAIL + + [createHTMLDocument] + expected: FAIL + + [<template>] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html.ini b/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html.ini new file mode 100644 index 00000000000..693bd4e2994 --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html.ini @@ -0,0 +1,3 @@ +[selectmenu-value-option.tentative.html] + [selectmenu.value should reflect option.value] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/popovers/popover-target-element-disabled.html.ini b/tests/wpt/metadata/html/semantics/popovers/popover-target-element-disabled.html.ini index a6015cfed6b..0273c7dae9a 100644 --- a/tests/wpt/metadata/html/semantics/popovers/popover-target-element-disabled.html.ini +++ b/tests/wpt/metadata/html/semantics/popovers/popover-target-element-disabled.html.ini @@ -16,3 +16,9 @@ [Disconnecting popover*target buttons when popovers are open should close all popovers.] expected: FAIL + + [Changing the popovertarget attribute to break the chain should close all popovers.] + expected: FAIL + + [Modifying popovertarget on a button which doesn't break the chain shouldn't close any popovers.] + expected: FAIL diff --git a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini b/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini deleted file mode 100644 index 1181798bd79..00000000000 --- a/tests/wpt/metadata/html/semantics/scripting-1/the-script-element/defer-script/async-script.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[async-script.html] - -[async-script.html?reload] - expected: ERROR diff --git a/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini new file mode 100644 index 00000000000..b8bdf33cb65 --- /dev/null +++ b/tests/wpt/metadata/html/syntax/parsing/DOMContentLoaded-defer.html.ini @@ -0,0 +1,3 @@ +[DOMContentLoaded-defer.html] + [The end: DOMContentLoaded and defer scripts] + expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini deleted file mode 100644 index fc0233f5241..00000000000 --- a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[module-delayed.html] - [async document.write in a module] - expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini new file mode 100644 index 00000000000..f9a4f08cd70 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-tla-delayed.html.ini @@ -0,0 +1,3 @@ +[module-tla-delayed.html] + [document.write in an imported module] + expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini index 7237f5792de..dbe1def99e3 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-job-queue/promise-job-entry-different-function-realm.html.ini @@ -1,10 +1,9 @@ [promise-job-entry-different-function-realm.html] - expected: TIMEOUT [Fulfillment handler on fulfilled promise] expected: FAIL [Rejection handler on pending-then-rejected promise] - expected: TIMEOUT + expected: FAIL [Thenable resolution] expected: FAIL @@ -13,4 +12,4 @@ expected: FAIL [Fulfillment handler on pending-then-fulfilled promise] - expected: TIMEOUT + expected: FAIL diff --git a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini index 1d71471b73c..4a48dd15a9d 100644 --- a/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini +++ b/tests/wpt/metadata/html/webappapis/scripting/processing-model-2/unhandled-promise-rejections/promise-rejection-events.html.ini @@ -1,7 +1,6 @@ [promise-rejection-events.html] - expected: TIMEOUT [delayed handling: delaying handling rejected promise created from createImageBitmap will cause both events to fire] - expected: TIMEOUT + expected: FAIL [unhandledrejection: from createImageBitmap which is UA triggered] expected: FAIL diff --git a/tests/wpt/metadata/resource-timing/response-status-code.html.ini b/tests/wpt/metadata/resource-timing/response-status-code.html.ini index b84e3cf7b11..38df5f01300 100644 --- a/tests/wpt/metadata/resource-timing/response-status-code.html.ini +++ b/tests/wpt/metadata/resource-timing/response-status-code.html.ini @@ -265,10 +265,10 @@ expected: FAIL [This test validates the response status of resources. 88] - expected: TIMEOUT + expected: FAIL [This test validates the response status of resources. 89] - expected: NOTRUN + expected: TIMEOUT [This test validates the response status of resources. 90] expected: NOTRUN diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini index 20a8f9a4320..1f70062991c 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-analysernode-interface/realtimeanalyser-fft-scaling.html.ini @@ -1,5 +1,4 @@ [realtimeanalyser-fft-scaling.html] - expected: TIMEOUT [X 2048-point FFT peak position is not equal to 64. Got 0.] expected: FAIL diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini new file mode 100644 index 00000000000..b7b36c1d3a4 --- /dev/null +++ b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini @@ -0,0 +1,4 @@ +[018.html] + expected: TIMEOUT + [origin of the script that invoked the method, javascript:] + expected: TIMEOUT diff --git a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini b/tests/wpt/metadata/webmessaging/without-ports/017.html.ini deleted file mode 100644 index c7946fc91b4..00000000000 --- a/tests/wpt/metadata/webmessaging/without-ports/017.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[017.html] - expected: TIMEOUT - [origin of the script that invoked the method, about:blank] - expected: TIMEOUT diff --git a/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini new file mode 100644 index 00000000000..80f9a4f15b8 --- /dev/null +++ b/tests/wpt/metadata/workers/constructors/Worker/Worker-constructor.html.ini @@ -0,0 +1,2 @@ +[Worker-constructor.html] + expected: ERROR diff --git a/tests/wpt/mozilla/meta/css/stylesheet_media_queries.html.ini b/tests/wpt/mozilla/meta/css/stylesheet_media_queries.html.ini deleted file mode 100644 index 77ca6b0688d..00000000000 --- a/tests/wpt/mozilla/meta/css/stylesheet_media_queries.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[stylesheet_media_queries.html] - [Media queries within stylesheets] - expected: FAIL diff --git a/tests/wpt/mozilla/meta/mozilla/task_queue_throttling.any.js.ini b/tests/wpt/mozilla/meta/mozilla/task_queue_throttling.any.js.ini new file mode 100644 index 00000000000..6ef3d276974 --- /dev/null +++ b/tests/wpt/mozilla/meta/mozilla/task_queue_throttling.any.js.ini @@ -0,0 +1,6 @@ +[task_queue_throttling.any.html] + [Throttling the performance timeline task queue.] + expected: FAIL + + +[task_queue_throttling.any.worker.html] diff --git a/tests/wpt/web-platform-tests/IndexedDB/storage-buckets.https.any.js b/tests/wpt/web-platform-tests/IndexedDB/storage-buckets.https.any.js index 24923ffcf8d..4271722a425 100644 --- a/tests/wpt/web-platform-tests/IndexedDB/storage-buckets.https.any.js +++ b/tests/wpt/web-platform-tests/IndexedDB/storage-buckets.https.any.js @@ -1,14 +1,12 @@ // META: title=Buckets API: Tests for indexedDB API. // META: global=window,worker // META: script=resources/support-promises.js +// META: script=/storage/buckets/resources/util.js promise_test(async testCase => { + await prepareForBucketTest(testCase); const inboxBucket = await navigator.storageBuckets.open('inbox_bucket'); const outboxBucket = await navigator.storageBuckets.open('outbox_bucket'); - testCase.add_cleanup(async () => { - await navigator.storageBuckets.delete('inbox_bucket'); - await navigator.storageBuckets.delete('outbox_bucket'); - }); // Set up similar databases in two buckets. const inboxDb = await new Promise((resolve, reject) => { @@ -77,6 +75,7 @@ promise_test(async testCase => { }, 'Basic test that buckets create independent databases.'); promise_test(async testCase => { + await prepareForBucketTest(testCase); const inboxBucket = await navigator.storageBuckets.open('inbox'); await navigator.storageBuckets.delete('inbox'); diff --git a/tests/wpt/web-platform-tests/annotation-model/tools/make_tests.py b/tests/wpt/web-platform-tests/annotation-model/tools/make_tests.py index e8bb1aec5a7..6890baa2961 100644 --- a/tests/wpt/web-platform-tests/annotation-model/tools/make_tests.py +++ b/tests/wpt/web-platform-tests/annotation-model/tools/make_tests.py @@ -1,8 +1,6 @@ # This tool creates .html test files for the WPT harness from corresponding .test # files that it finds in the tree for this test collection. -from __future__ import print_function - import re import time import json diff --git a/tests/wpt/web-platform-tests/annotation-protocol/tools/protocol-server.py b/tests/wpt/web-platform-tests/annotation-protocol/tools/protocol-server.py index e5d12100017..fc8fa749977 100644 --- a/tests/wpt/web-platform-tests/annotation-protocol/tools/protocol-server.py +++ b/tests/wpt/web-platform-tests/annotation-protocol/tools/protocol-server.py @@ -5,8 +5,6 @@ # Developed by Benjamin Young (@bigbulehat) and Shane McCarron (@halindrome). # Sponsored by Spec-Ops (https://spec-ops.io) -from __future__ import print_function - import os import sys diff --git a/tests/wpt/web-platform-tests/annotation-vocab/tools/vocab_tester.py b/tests/wpt/web-platform-tests/annotation-vocab/tools/vocab_tester.py index 7d9cc5b8a2e..86453a7a299 100644 --- a/tests/wpt/web-platform-tests/annotation-vocab/tools/vocab_tester.py +++ b/tests/wpt/web-platform-tests/annotation-vocab/tools/vocab_tester.py @@ -3,8 +3,6 @@ # License: Apache2 # Last Modified: 2016-09-02 -from __future__ import print_function - import json from rdflib import ConjunctiveGraph, URIRef from pyld import jsonld diff --git a/tests/wpt/web-platform-tests/common/security-features/tools/generate.py b/tests/wpt/web-platform-tests/common/security-features/tools/generate.py index 176e0ebbebc..409b4f195ff 100755 --- a/tests/wpt/web-platform-tests/common/security-features/tools/generate.py +++ b/tests/wpt/web-platform-tests/common/security-features/tools/generate.py @@ -1,7 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function - import argparse import collections import copy diff --git a/tests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py b/tests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py index 3ac3f530169..f8a1390ef0d 100755 --- a/tests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py +++ b/tests/wpt/web-platform-tests/common/security-features/tools/spec_validator.py @@ -1,7 +1,5 @@ #!/usr/bin/env python3 -from __future__ import print_function - import json, sys diff --git a/tests/wpt/web-platform-tests/common/security-features/tools/util.py b/tests/wpt/web-platform-tests/common/security-features/tools/util.py index 72541c78142..5da06f9d51e 100644 --- a/tests/wpt/web-platform-tests/common/security-features/tools/util.py +++ b/tests/wpt/web-platform-tests/common/security-features/tools/util.py @@ -1,5 +1,3 @@ -from __future__ import print_function - import os, sys, json, json5, re import collections diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-parts-offsets-vertical-lr.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/table-parts-offsets-vertical-lr.tentative.html new file mode 100644 index 00000000000..bdac1f40607 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-parts-offsets-vertical-lr.tentative.html @@ -0,0 +1,141 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="author" title="Andreu Botella" href="mailto:abotella@igalia.com"> +<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting"> +<link rel="help" href="https://www.w3.org/TR/cssom-view/#extensions-to-the-htmlelement-interface"> +<div + style="column-width:200px; column-gap: 0; column-fill:auto; width:70px; height:600px; background:yellow; writing-mode: vertical-lr;"> + <div id="table" style="display:table; border-spacing:7px; border:2px solid; padding:1px;"> + <div id="colgroup" style="display:table-column-group;"> + <div id="col" style="display:table-column;"></div> + <div id="col2" style="display:table-column;"></div> + </div> + <div id="colgroup2" style="display:table-column-group;"> + <div id="col3" style="display:table-column;"></div> + </div> + <div id="rowgroup" style="display:table-row-group;"> + <div id="row" style="display:table-row;"> + <div id="cell" style="display:table-cell;"> + <div id="content" style="width:100px; height:50px; background:blue;"></div> + </div> + <div id="cell2" style="display:table-cell;"> + <div id="content2" style="width:100px; height:50px; background:blue;"></div> + </div> + <div id="cell3" style="display:table-cell;"> + <div id="content3" style="width:100px; height:50px; background:blue;"></div> + </div> + </div> + <div id="row2" style="display:table-row;"> + <div id="cell4" style="display:table-cell;"> + <div id="content4" style="width:50px; height: 50px; background: blue;"></div> + </div> + </div> + </div> + </div> +</div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + test(() => { + assert_equals(table.offsetTop, 8, "offsetTop"); + assert_equals(table.offsetLeft, 8, "offsetLeft"); + assert_equals(table.offsetWidth, 177, "offsetWidth"); + assert_equals(table.offsetHeight, 184, "offsetHeight"); + }, "table"); + test(() => { + assert_equals(colgroup.offsetTop, 18, "offsetTop"); + assert_equals(colgroup.offsetLeft, 18, "offsetLeft"); + assert_equals(colgroup.offsetWidth, 157, "offsetWidth"); + assert_equals(colgroup.offsetHeight, 107, "offsetHeight"); + }, "colgroup"); + test(() => { + assert_equals(col.offsetTop, 18, "offsetTop"); + assert_equals(col.offsetLeft, 18, "offsetLeft"); + assert_equals(col.offsetWidth, 157, "offsetWidth"); + assert_equals(col.offsetHeight, 50, "offsetHeight"); + }, "col"); + test(() => { + assert_equals(col2.offsetTop, 75, "offsetTop"); + assert_equals(col2.offsetLeft, 18, "offsetLeft"); + assert_equals(col2.offsetWidth, 157, "offsetWidth"); + assert_equals(col2.offsetHeight, 50, "offsetHeight"); + }, "col2"); + test(() => { + assert_equals(colgroup2.offsetTop, 132, "offsetTop"); + assert_equals(colgroup2.offsetLeft, 18, "offsetLeft"); + assert_equals(colgroup2.offsetWidth, 157, "offsetWidth"); + assert_equals(colgroup2.offsetHeight, 50, "offsetHeight"); + }, "colgroup2"); + test(() => { + assert_equals(col3.offsetTop, 132, "offsetTop"); + assert_equals(col3.offsetLeft, 18, "offsetLeft"); + assert_equals(col3.offsetWidth, 157, "offsetWidth"); + assert_equals(col3.offsetHeight, 50, "offsetHeight"); + }, "col3"); + test(() => { + assert_equals(rowgroup.offsetTop, 18, "offsetTop"); + assert_equals(rowgroup.offsetLeft, 18, "offsetLeft"); + assert_equals(rowgroup.offsetWidth, 157, "offsetWidth"); + assert_equals(rowgroup.offsetHeight, 164, "offsetHeight"); + }, "rowgroup"); + test(() => { + assert_equals(row.offsetTop, 18, "offsetTop"); + assert_equals(row.offsetLeft, 18, "offsetLeft"); + assert_equals(row.offsetWidth, 100, "offsetWidth"); + assert_equals(row.offsetHeight, 164, "offsetHeight"); + }, "row"); + test(() => { + assert_equals(cell.offsetTop, 18, "offsetTop"); + assert_equals(cell.offsetLeft, 18, "offsetLeft"); + assert_equals(cell.offsetWidth, 100, "offsetWidth"); + assert_equals(cell.offsetHeight, 50, "offsetHeight"); + }, "cell"); + test(() => { + assert_equals(content.offsetTop, 18, "offsetTop"); + assert_equals(content.offsetLeft, 18, "offsetLeft"); + assert_equals(content.offsetWidth, 100, "offsetWidth"); + assert_equals(content.offsetHeight, 50, "offsetHeight"); + }, "content"); + test(() => { + assert_equals(cell2.offsetTop, 75, "offsetTop"); + assert_equals(cell2.offsetLeft, 18, "offsetLeft"); + assert_equals(cell2.offsetWidth, 100, "offsetWidth"); + assert_equals(cell2.offsetHeight, 50, "offsetHeight"); + }, "cell2"); + test(() => { + assert_equals(content2.offsetTop, 75, "offsetTop"); + assert_equals(content2.offsetLeft, 18, "offsetLeft"); + assert_equals(content2.offsetWidth, 100, "offsetWidth"); + assert_equals(content2.offsetHeight, 50, "offsetHeight"); + }, "content2"); + test(() => { + assert_equals(cell3.offsetTop, 132, "offsetTop"); + assert_equals(cell3.offsetLeft, 18, "offsetLeft"); + assert_equals(cell3.offsetWidth, 100, "offsetWidth"); + assert_equals(cell3.offsetHeight, 50, "offsetHeight"); + }, "cell3"); + test(() => { + assert_equals(content3.offsetTop, 132, "offsetTop"); + assert_equals(content3.offsetLeft, 18, "offsetLeft"); + assert_equals(content3.offsetWidth, 100, "offsetWidth"); + assert_equals(content3.offsetHeight, 50, "offsetHeight"); + }, "content3"); + test(() => { + assert_equals(row2.offsetTop, 218, "offsetTop"); + assert_equals(row2.offsetLeft, 55, "offsetLeft"); + assert_equals(row2.offsetWidth, 50, "offsetWidth"); + assert_equals(row2.offsetHeight, 164, "offsetHeight"); + }, "row2"); + test(() => { + assert_equals(cell4.offsetTop, 218, "offsetTop"); + assert_equals(cell4.offsetLeft, 55, "offsetLeft"); + assert_equals(cell4.offsetWidth, 50, "offsetWidth"); + assert_equals(cell4.offsetHeight, 50, "offsetHeight"); + }, "cell4"); + test(() => { + assert_equals(content4.offsetTop, 218, "offsetTop"); + assert_equals(content4.offsetLeft, 55, "offsetLeft"); + assert_equals(content4.offsetWidth, 50, "offsetWidth"); + assert_equals(content4.offsetHeight, 50, "offsetHeight"); + }, "content4"); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-parts-offsets-vertical-rl.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/table-parts-offsets-vertical-rl.tentative.html new file mode 100644 index 00000000000..9d4a472d438 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-parts-offsets-vertical-rl.tentative.html @@ -0,0 +1,141 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="author" title="Andreu Botella" href="mailto:abotella@igalia.com"> +<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting"> +<link rel="help" href="https://www.w3.org/TR/cssom-view/#extensions-to-the-htmlelement-interface"> +<div + style="column-width:200px; column-gap: 0; column-fill:auto; width:70px; height:600px; background:yellow; writing-mode: vertical-rl;"> + <div id="table" style="display:table; border-spacing:7px; border:2px solid; padding:1px;"> + <div id="colgroup" style="display:table-column-group;"> + <div id="col" style="display:table-column;"></div> + <div id="col2" style="display:table-column;"></div> + </div> + <div id="colgroup2" style="display:table-column-group;"> + <div id="col3" style="display:table-column;"></div> + </div> + <div id="rowgroup" style="display:table-row-group;"> + <div id="row" style="display:table-row;"> + <div id="cell" style="display:table-cell;"> + <div id="content" style="width:100px; height:50px; background:blue;"></div> + </div> + <div id="cell2" style="display:table-cell;"> + <div id="content2" style="width:100px; height:50px; background:blue;"></div> + </div> + <div id="cell3" style="display:table-cell;"> + <div id="content3" style="width:100px; height:50px; background:blue;"></div> + </div> + </div> + <div id="row2" style="display:table-row;"> + <div id="cell4" style="display:table-cell;"> + <div id="content4" style="width:50px; height: 50px; background: blue;"></div> + </div> + </div> + </div> + </div> +</div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + test(() => { + assert_equals(table.offsetTop, 408, "offsetTop"); + assert_equals(table.offsetLeft, 41, "offsetLeft"); + assert_equals(table.offsetWidth, 177, "offsetWidth"); + assert_equals(table.offsetHeight, 184, "offsetHeight"); + }, "table"); + test(() => { + assert_equals(colgroup.offsetTop, 418, "offsetTop"); + assert_equals(colgroup.offsetLeft, 51, "offsetLeft"); + assert_equals(colgroup.offsetWidth, 157, "offsetWidth"); + assert_equals(colgroup.offsetHeight, 107, "offsetHeight"); + }, "colgroup"); + test(() => { + assert_equals(col.offsetTop, 418, "offsetTop"); + assert_equals(col.offsetLeft, 51, "offsetLeft"); + assert_equals(col.offsetWidth, 157, "offsetWidth"); + assert_equals(col.offsetHeight, 50, "offsetHeight"); + }, "col"); + test(() => { + assert_equals(col2.offsetTop, 475, "offsetTop"); + assert_equals(col2.offsetLeft, 51, "offsetLeft"); + assert_equals(col2.offsetWidth, 157, "offsetWidth"); + assert_equals(col2.offsetHeight, 50, "offsetHeight"); + }, "col2"); + test(() => { + assert_equals(colgroup2.offsetTop, 532, "offsetTop"); + assert_equals(colgroup2.offsetLeft, 51, "offsetLeft"); + assert_equals(colgroup2.offsetWidth, 157, "offsetWidth"); + assert_equals(colgroup2.offsetHeight, 50, "offsetHeight"); + }, "colgroup2"); + test(() => { + assert_equals(col3.offsetTop, 532, "offsetTop"); + assert_equals(col3.offsetLeft, 51, "offsetLeft"); + assert_equals(col3.offsetWidth, 157, "offsetWidth"); + assert_equals(col3.offsetHeight, 50, "offsetHeight"); + }, "col3"); + test(() => { + assert_equals(rowgroup.offsetTop, 418, "offsetTop"); + assert_equals(rowgroup.offsetLeft, 51, "offsetLeft"); + assert_equals(rowgroup.offsetWidth, 157, "offsetWidth"); + assert_equals(rowgroup.offsetHeight, 164, "offsetHeight"); + }, "rowgroup"); + test(() => { + assert_equals(row.offsetTop, 218, "offsetTop"); + assert_equals(row.offsetLeft, 38, "offsetLeft"); + assert_equals(row.offsetWidth, 100, "offsetWidth"); + assert_equals(row.offsetHeight, 164, "offsetHeight"); + }, "row"); + test(() => { + assert_equals(cell.offsetTop, 218, "offsetTop"); + assert_equals(cell.offsetLeft, 38, "offsetLeft"); + assert_equals(cell.offsetWidth, 100, "offsetWidth"); + assert_equals(cell.offsetHeight, 50, "offsetHeight"); + }, "cell"); + test(() => { + assert_equals(content.offsetTop, 218, "offsetTop"); + assert_equals(content.offsetLeft, 38, "offsetLeft"); + assert_equals(content.offsetWidth, 100, "offsetWidth"); + assert_equals(content.offsetHeight, 50, "offsetHeight"); + }, "content"); + test(() => { + assert_equals(cell2.offsetTop, 275, "offsetTop"); + assert_equals(cell2.offsetLeft, 38, "offsetLeft"); + assert_equals(cell2.offsetWidth, 100, "offsetWidth"); + assert_equals(cell2.offsetHeight, 50, "offsetHeight"); + }, "cell2"); + test(() => { + assert_equals(content2.offsetTop, 275, "offsetTop"); + assert_equals(content2.offsetLeft, 38, "offsetLeft"); + assert_equals(content2.offsetWidth, 100, "offsetWidth"); + assert_equals(content2.offsetHeight, 50, "offsetHeight"); + }, "content2"); + test(() => { + assert_equals(cell3.offsetTop, 332, "offsetTop"); + assert_equals(cell3.offsetLeft, 38, "offsetLeft"); + assert_equals(cell3.offsetWidth, 100, "offsetWidth"); + assert_equals(cell3.offsetHeight, 50, "offsetHeight"); + }, "cell3"); + test(() => { + assert_equals(content3.offsetTop, 332, "offsetTop"); + assert_equals(content3.offsetLeft, 38, "offsetLeft"); + assert_equals(content3.offsetWidth, 100, "offsetWidth"); + assert_equals(content3.offsetHeight, 50, "offsetHeight"); + }, "content3"); + test(() => { + assert_equals(row2.offsetTop, 418, "offsetTop"); + assert_equals(row2.offsetLeft, 51, "offsetLeft"); + assert_equals(row2.offsetWidth, 50, "offsetWidth"); + assert_equals(row2.offsetHeight, 164, "offsetHeight"); + }, "row2"); + test(() => { + assert_equals(cell4.offsetTop, 418, "offsetTop"); + assert_equals(cell4.offsetLeft, 51, "offsetLeft"); + assert_equals(cell4.offsetWidth, 50, "offsetWidth"); + assert_equals(cell4.offsetHeight, 50, "offsetHeight"); + }, "cell4"); + test(() => { + assert_equals(content4.offsetTop, 418, "offsetTop"); + assert_equals(content4.offsetLeft, 51, "offsetLeft"); + assert_equals(content4.offsetWidth, 50, "offsetWidth"); + assert_equals(content4.offsetHeight, 50, "offsetHeight"); + }, "content4"); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-break/table/table-parts-offsets.tentative.html b/tests/wpt/web-platform-tests/css/css-break/table/table-parts-offsets.tentative.html new file mode 100644 index 00000000000..265d761ffb3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-break/table/table-parts-offsets.tentative.html @@ -0,0 +1,140 @@ +<!DOCTYPE html> +<link rel="author" title="Morten Stenshorne" href="mailto:mstensho@chromium.org"> +<link rel="author" title="Andreu Botella" href="mailto:abotella@igalia.com"> +<link rel="help" href="https://www.w3.org/TR/css-break-3/#box-splitting"> +<link rel="help" href="https://www.w3.org/TR/cssom-view/#extensions-to-the-htmlelement-interface"> +<div style="column-width:200px; column-gap: 0; column-fill:auto; height:70px; width:600px; background:yellow;"> + <div id="table" style="display:table; border-spacing:7px; border:2px solid; padding:1px;"> + <div id="colgroup" style="display:table-column-group;"> + <div id="col" style="display:table-column;"></div> + <div id="col2" style="display:table-column;"></div> + </div> + <div id="colgroup2" style="display:table-column-group;"> + <div id="col3" style="display:table-column;"></div> + </div> + <div id="rowgroup" style="display:table-row-group;"> + <div id="row" style="display:table-row;"> + <div id="cell" style="display:table-cell;"> + <div id="content" style="width:50px; height:100px; background:blue;"></div> + </div> + <div id="cell2" style="display:table-cell;"> + <div id="content2" style="width:50px; height:100px; background:blue;"></div> + </div> + <div id="cell3" style="display:table-cell;"> + <div id="content3" style="width:50px; height:100px; background:blue;"></div> + </div> + </div> + <div id="row2" style="display:table-row;"> + <div id="cell4" style="display:table-cell;"> + <div id="content4" style="width:50px; height: 50px; background: blue;"></div> + </div> + </div> + </div> + </div> +</div> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + test(() => { + assert_equals(table.offsetTop, 8, "offsetTop"); + assert_equals(table.offsetLeft, 8, "offsetLeft"); + assert_equals(table.offsetWidth, 184, "offsetWidth"); + assert_equals(table.offsetHeight, 177, "offsetHeight"); + }, "table"); + test(() => { + assert_equals(colgroup.offsetTop, 18, "offsetTop"); + assert_equals(colgroup.offsetLeft, 18, "offsetLeft"); + assert_equals(colgroup.offsetWidth, 107, "offsetWidth"); + assert_equals(colgroup.offsetHeight, 157, "offsetHeight"); + }, "colgroup"); + test(() => { + assert_equals(col.offsetTop, 18, "offsetTop"); + assert_equals(col.offsetLeft, 18, "offsetLeft"); + assert_equals(col.offsetWidth, 50, "offsetWidth"); + assert_equals(col.offsetHeight, 157, "offsetHeight"); + }, "col"); + test(() => { + assert_equals(col2.offsetTop, 18, "offsetTop"); + assert_equals(col2.offsetLeft, 75, "offsetLeft"); + assert_equals(col2.offsetWidth, 50, "offsetWidth"); + assert_equals(col2.offsetHeight, 157, "offsetHeight"); + }, "col2"); + test(() => { + assert_equals(colgroup2.offsetTop, 18, "offsetTop"); + assert_equals(colgroup2.offsetLeft, 132, "offsetLeft"); + assert_equals(colgroup2.offsetWidth, 50, "offsetWidth"); + assert_equals(colgroup2.offsetHeight, 157, "offsetHeight"); + }, "colgroup2"); + test(() => { + assert_equals(col3.offsetTop, 18, "offsetTop"); + assert_equals(col3.offsetLeft, 132, "offsetLeft"); + assert_equals(col3.offsetWidth, 50, "offsetWidth"); + assert_equals(col3.offsetHeight, 157, "offsetHeight"); + }, "col3"); + test(() => { + assert_equals(rowgroup.offsetTop, 18, "offsetTop"); + assert_equals(rowgroup.offsetLeft, 18, "offsetLeft"); + assert_equals(rowgroup.offsetWidth, 164, "offsetWidth"); + assert_equals(rowgroup.offsetHeight, 157, "offsetHeight"); + }, "rowgroup"); + test(() => { + assert_equals(row.offsetTop, 18, "offsetTop"); + assert_equals(row.offsetLeft, 18, "offsetLeft"); + assert_equals(row.offsetWidth, 164, "offsetWidth"); + assert_equals(row.offsetHeight, 100, "offsetHeight"); + }, "row"); + test(() => { + assert_equals(cell.offsetTop, 18, "offsetTop"); + assert_equals(cell.offsetLeft, 18, "offsetLeft"); + assert_equals(cell.offsetWidth, 50, "offsetWidth"); + assert_equals(cell.offsetHeight, 100, "offsetHeight"); + }, "cell"); + test(() => { + assert_equals(content.offsetTop, 18, "offsetTop"); + assert_equals(content.offsetLeft, 18, "offsetLeft"); + assert_equals(content.offsetWidth, 50, "offsetWidth"); + assert_equals(content.offsetHeight, 100, "offsetHeight"); + }, "content"); + test(() => { + assert_equals(cell2.offsetTop, 18, "offsetTop"); + assert_equals(cell2.offsetLeft, 75, "offsetLeft"); + assert_equals(cell2.offsetWidth, 50, "offsetWidth"); + assert_equals(cell2.offsetHeight, 100, "offsetHeight"); + }, "cell2"); + test(() => { + assert_equals(content2.offsetTop, 18, "offsetTop"); + assert_equals(content2.offsetLeft, 75, "offsetLeft"); + assert_equals(content2.offsetWidth, 50, "offsetWidth"); + assert_equals(content2.offsetHeight, 100, "offsetHeight"); + }, "content2"); + test(() => { + assert_equals(cell3.offsetTop, 18, "offsetTop"); + assert_equals(cell3.offsetLeft, 132, "offsetLeft"); + assert_equals(cell3.offsetWidth, 50, "offsetWidth"); + assert_equals(cell3.offsetHeight, 100, "offsetHeight"); + }, "cell3"); + test(() => { + assert_equals(content3.offsetTop, 18, "offsetTop"); + assert_equals(content3.offsetLeft, 132, "offsetLeft"); + assert_equals(content3.offsetWidth, 50, "offsetWidth"); + assert_equals(content3.offsetHeight, 100, "offsetHeight"); + }, "content3"); + test(() => { + assert_equals(row2.offsetTop, 55, "offsetTop"); + assert_equals(row2.offsetLeft, 218, "offsetLeft"); + assert_equals(row2.offsetWidth, 164, "offsetWidth"); + assert_equals(row2.offsetHeight, 50, "offsetHeight"); + }, "row2"); + test(() => { + assert_equals(cell4.offsetTop, 55, "offsetTop"); + assert_equals(cell4.offsetLeft, 218, "offsetLeft"); + assert_equals(cell4.offsetWidth, 50, "offsetWidth"); + assert_equals(cell4.offsetHeight, 50, "offsetHeight"); + }, "cell4"); + test(() => { + assert_equals(content4.offsetTop, 55, "offsetTop"); + assert_equals(content4.offsetLeft, 218, "offsetLeft"); + assert_equals(content4.offsetWidth, 50, "offsetWidth"); + assert_equals(content4.offsetHeight, 50, "offsetHeight"); + }, "content4"); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-fonts/support/fonts/makegsubfonts.py b/tests/wpt/web-platform-tests/css/css-fonts/support/fonts/makegsubfonts.py index e519b4936de..b46fa0e632b 100644 --- a/tests/wpt/web-platform-tests/css/css-fonts/support/fonts/makegsubfonts.py +++ b/tests/wpt/web-platform-tests/css/css-fonts/support/fonts/makegsubfonts.py @@ -1,5 +1,3 @@ -from __future__ import print_function - import os import textwrap from xml.etree import ElementTree diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-line-height-tests.py b/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-line-height-tests.py index 12fb6a3ad85..e2a4457f38e 100644 --- a/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-line-height-tests.py +++ b/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-line-height-tests.py @@ -8,8 +8,6 @@ script outputs a list of all tests it generated in the format of Mozilla reftest.list to the stdout. """ -from __future__ import unicode_literals, print_function, absolute_import - TEST_FILE = 'text-emphasis-line-height-{:03}{}.html' TEST_TEMPLATE = '''<!DOCTYPE html> <meta charset="utf-8"> diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-position-property-tests.py b/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-position-property-tests.py index 52795906876..f2baf023325 100644 --- a/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-position-property-tests.py +++ b/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-position-property-tests.py @@ -9,8 +9,6 @@ test files are generated by this script. It also outputs a list of all tests it generated in the format of Mozilla reftest.list to the stdout. """ -from __future__ import unicode_literals, print_function, absolute_import - import itertools TEST_FILE = 'text-emphasis-position-property-{:03}{}.html' diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-ruby-tests.py b/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-ruby-tests.py index fdbaec052e4..f1158f5f843 100644 --- a/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-ruby-tests.py +++ b/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-ruby-tests.py @@ -7,8 +7,6 @@ emphasis marks with ruby in four directions. It outputs a list of all tests it generated in the format of Mozilla reftest.list to the stdout. """ -from __future__ import unicode_literals, print_function, absolute_import - TEST_FILE = 'text-emphasis-ruby-{:03}{}.html' TEST_TEMPLATE = '''<!DOCTYPE html> <meta charset="utf-8"> diff --git a/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-style-property-tests.py b/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-style-property-tests.py index 1b1d6fc16f2..b6ad1f7291b 100644 --- a/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-style-property-tests.py +++ b/tests/wpt/web-platform-tests/css/css-text-decor/tools/generate-text-emphasis-style-property-tests.py @@ -8,8 +8,6 @@ and <string>, with horizontal writing mode. It outputs a list of all tests it generated in the format of Mozilla reftest.list to the stdout. """ -from __future__ import unicode_literals, print_function, absolute_import - TEST_FILE = 'text-emphasis-style-property-{:03}{}.html' TEST_TEMPLATE = '''<!DOCTYPE html> <meta charset="utf-8"> diff --git a/tests/wpt/web-platform-tests/css/css-text/line-breaking/tools/generate-segment-break-transformation-rules-tests.py b/tests/wpt/web-platform-tests/css/css-text/line-breaking/tools/generate-segment-break-transformation-rules-tests.py index fc894161bda..6689ef5f182 100644 --- a/tests/wpt/web-platform-tests/css/css-text/line-breaking/tools/generate-segment-break-transformation-rules-tests.py +++ b/tests/wpt/web-platform-tests/css/css-text/line-breaking/tools/generate-segment-break-transformation-rules-tests.py @@ -18,8 +18,6 @@ So there are 49 different combinations. It outputs a list of all tests it generated in the format of Mozilla reftest.list to the stdout. """ -from __future__ import unicode_literals, print_function, absolute_import - TEST_FILE = 'segment-break-transformation-rules-{:03}.html' TEST_TEMPLATE = '''<!DOCTYPE html> <meta charset="utf-8"> diff --git a/tests/wpt/web-platform-tests/css/css-transitions/all-with-discrete.tentative.html b/tests/wpt/web-platform-tests/css/css-transitions/all-with-discrete.tentative.html index f12c14e4c55..a048bc7a1cc 100644 --- a/tests/wpt/web-platform-tests/css/css-transitions/all-with-discrete.tentative.html +++ b/tests/wpt/web-platform-tests/css/css-transitions/all-with-discrete.tentative.html @@ -3,6 +3,7 @@ <link rel=help href="https://github.com/w3c/csswg-drafts/issues/4441"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="/css/css-animations/support/testcommon.js"></script> <div id=target1 class=target>hello</div> <div id=target2 class=target>hello</div> @@ -32,9 +33,9 @@ promise_test(async () => { target1.addEventListener('transitionstart', () => { transitionstartFired = true; }); - await new Promise(resolve => requestAnimationFrame(resolve)); + await waitForAnimationFrames(2); target1.classList.add('animated'); - await new Promise(resolve => requestAnimationFrame(resolve)); + await waitForAnimationFrames(1); assert_true(transitionstartFired); }, 'all with an explicit discrete property should animate.'); @@ -43,9 +44,9 @@ promise_test(async () => { target2.addEventListener('transitionstart', () => { transitionstartFired = true; }); - await new Promise(resolve => requestAnimationFrame(resolve)); + await waitForAnimationFrames(2); target2.classList.add('animated'); - await new Promise(resolve => requestAnimationFrame(resolve)); + await waitForAnimationFrames(1); assert_false(transitionstartFired); }, 'all without an explicit discrete property should not animate.'); </script> diff --git a/tests/wpt/web-platform-tests/css/css-ui/appearance-cssom-001.html b/tests/wpt/web-platform-tests/css/css-ui/appearance-cssom-001.html index 1618c2b8a28..2da20a0ac92 100644 --- a/tests/wpt/web-platform-tests/css/css-ui/appearance-cssom-001.html +++ b/tests/wpt/web-platform-tests/css/css-ui/appearance-cssom-001.html @@ -2,8 +2,11 @@ <title>CSS Basic User Interface Test: appearance CSSOM</title> <link rel="help" href="https://drafts.csswg.org/css-ui-4/#appearance-switching"> <meta name="assert" content="CSSOM for the appearance/-webkit-appearance property is correct."> +<meta name="variant" content=""> +<meta name="variant" content="?exclude=Invalid"> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> +<script src="/common/subset-tests-by-key.js"></script> <button id=button>Test</button> <script> const button = document.getElementById('button'); @@ -191,7 +194,7 @@ } for (const prop of ["-webkit-appearance", "appearance"]) { for (const value of values) { - test(() => { + subsetTestByKey(`Values`, test, () => { button.removeAttribute('style'); button.style.setProperty(prop, value); assert_style_for_prop(button.style, prop, value); @@ -204,7 +207,7 @@ } for (const value of compat_values) { - test(() => { + subsetTestByKey(`Compat`, test, () => { button.removeAttribute('style'); button.style.setProperty(prop, value); assert_style_for_prop(button.style, prop, [value, ""]); @@ -217,7 +220,7 @@ } for (const value of invalid_values) { - test(() => { + subsetTestByKey(`Invalid`, test, () => { button.removeAttribute('style'); button.style.setProperty(prop, value); assert_style_for_prop(button.style, prop, ""); @@ -245,7 +248,7 @@ "-tc-", ]) { const prop = `${prefix}appearance`; - test(() => { + subsetTestByKey(`Prefixes`, test, () => { button.removeAttribute('style'); button.style.setProperty(prop, 'none'); assert_equals(button.style.getPropertyValue(prop), ''); diff --git a/tests/wpt/web-platform-tests/docs/requirements.txt b/tests/wpt/web-platform-tests/docs/requirements.txt index 0ad8484f60b..589a98eaa2a 100644 --- a/tests/wpt/web-platform-tests/docs/requirements.txt +++ b/tests/wpt/web-platform-tests/docs/requirements.txt @@ -1,5 +1,5 @@ recommonmark==0.7.1 -sphinx-argparse==0.3.1 +sphinx-argparse==0.3.2 sphinx-autobuild==2021.3.14 sphinx-js==3.2.1 sphinx==4.4.0 diff --git a/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js b/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js index 74b531cd3df..f561b699534 100644 --- a/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js +++ b/tests/wpt/web-platform-tests/dom/events/scrolling/scroll_support.js @@ -42,8 +42,8 @@ async function verifyScrollStopped(test, target_div) { const y = target_div.scrollTop; return new Promise(resolve => { test.step_timeout(() => { - assert_equals(x, target_div.scrollLeft); - assert_equals(y, target_div.scrollTop); + assert_equals(target_div.scrollLeft, x); + assert_equals(target_div.scrollTop, y); resolve(); }, unscaled_pause_time_in_ms); }); diff --git a/tests/wpt/web-platform-tests/dom/nodes/Document-createElement-namespace-tests/generate.py b/tests/wpt/web-platform-tests/dom/nodes/Document-createElement-namespace-tests/generate.py index a0bca546c75..20c866bee80 100755 --- a/tests/wpt/web-platform-tests/dom/nodes/Document-createElement-namespace-tests/generate.py +++ b/tests/wpt/web-platform-tests/dom/nodes/Document-createElement-namespace-tests/generate.py @@ -1,7 +1,5 @@ #!/usr/bin/python -from __future__ import print_function - import os import sys diff --git a/tests/wpt/web-platform-tests/encrypted-media/polyfill/make-polyfill-tests.py b/tests/wpt/web-platform-tests/encrypted-media/polyfill/make-polyfill-tests.py index 532037e2a33..97c6fc74e93 100644 --- a/tests/wpt/web-platform-tests/encrypted-media/polyfill/make-polyfill-tests.py +++ b/tests/wpt/web-platform-tests/encrypted-media/polyfill/make-polyfill-tests.py @@ -1,7 +1,5 @@ #!/usr/bin/python -from __future__ import print_function - import os, re, os.path, glob head = re.compile( r"^(\s*</head>)", re.MULTILINE ) diff --git a/tests/wpt/web-platform-tests/fetch/local-network-access/redirect.https.window.js b/tests/wpt/web-platform-tests/fetch/local-network-access/redirect.https.window.js index f8a53ad1889..edbd5a19fbc 100644 --- a/tests/wpt/web-platform-tests/fetch/local-network-access/redirect.https.window.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/redirect.https.window.js @@ -365,8 +365,8 @@ promise_test(t => fetchTest(t, { server: Server.HTTPS_LOCAL, treatAsPublic: true, }, - server: Server.HTTPS_PRIVATE, target: { + server: Server.HTTPS_PRIVATE, behavior: { preflight: PreflightBehavior.noPnaHeader(token()), response: ResponseBehavior.allowCrossOrigin(), diff --git a/tests/wpt/web-platform-tests/fetch/local-network-access/resources/support.sub.js b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/support.sub.js index c07fd2c2ace..0cf3d2532e7 100644 --- a/tests/wpt/web-platform-tests/fetch/local-network-access/resources/support.sub.js +++ b/tests/wpt/web-platform-tests/fetch/local-network-access/resources/support.sub.js @@ -205,6 +205,7 @@ function sourceResolveOptions({ server, treatAsPublic }) { // - `response`: The result of calling one of `ResponseBehavior`'s methods. // - `redirect`: A URL to which the target should redirect GET requests. function preflightUrl({ server, behavior }) { + assert_not_equals(server, undefined, 'server'); const options = {...server}; if (behavior) { const { preflight, response, redirect } = behavior; diff --git a/tests/wpt/web-platform-tests/fledge/tentative/TODO b/tests/wpt/web-platform-tests/fledge/tentative/TODO new file mode 100644 index 00000000000..839d286b388 --- /dev/null +++ b/tests/wpt/web-platform-tests/fledge/tentative/TODO @@ -0,0 +1,33 @@ +Need tests for (likely not a complete list): + +* directFromSellerSignals. +* All generateBid() and scoreAd() input parameters. +* All interest group fields (passed to auction, have effect on auction). + Validation when joining/leaving interest group is covered. +* Updates. +* All auctionConfig parameters (including invalid auctionConfigs, and ones + with no buyers). +* Interest group expiration. +* Multiple buyers. +* Multiple interest group with same owner. +* Multiple origin auctions (buyer != publisher != seller). +* Multiple frame tests (including join IG policy, run auction policy, + loading URNs in fencedframes in other frames, loading component + ad URNs in fenced frames of other frames, etc) +* adAuctionConfig passed to reportResult(). +* trusted bidding / scoring signals. +* Component ads. +* Component auctions. +* In reporting methods, browserSignals fields: dataVersion, topLevelSeller, + componentSeller, modifiedBid, adCost, madeHighestScoringOtherBid + (with interest group from another origin). +* Loading ads in iframes. +* In fencedframes window.fence.setReportEventDataForAutomaticBeacons() +* Calling leaveAdInterestGroup() in the frame of a winning ad (and one + of its component ads) +* Network errors / timeouts. + +If possible: +* Aggregate reporting. +* Join/leave permission delegation via .well-known files. +* k-anonymity. diff --git a/tests/wpt/web-platform-tests/fledge/tentative/join-leave-ad-interest-group.https.sub.window.js b/tests/wpt/web-platform-tests/fledge/tentative/join-leave-ad-interest-group.https.sub.window.js new file mode 100644 index 00000000000..e967d92618c --- /dev/null +++ b/tests/wpt/web-platform-tests/fledge/tentative/join-leave-ad-interest-group.https.sub.window.js @@ -0,0 +1,542 @@ +// META: script=/resources/testdriver.js +// META: script=/common/utils.js +// META: script=resources/fledge-util.js + +// These tests are focused on joinAdInterestGroup() and leaveAdInterestGroup(). +// Most join tests do not run auctions, but instead only check the result of +// the returned promise, since testing that interest groups are actually +// joined, and that each interestGroup field behaves as intended, are covered +// by other tests. + +// Minimal fields needed for a valid interest group. Used in most test cases. +const BASE_INTEREST_GROUP = { + owner: window.location.origin, + name: 'default name', +} + +// Each test case attempts to join and then leave an interest group, checking +// if any exceptions are thrown from either operation. +const SIMPLE_JOIN_LEAVE_TEST_CASES = [ + { expectJoinSucces: false, + expectLeaveSucces: false, + interestGroup: null + }, + { expectJoinSucces: false, + expectLeaveSucces: false, + interestGroup: {} + }, + + // Basic success test case. + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: BASE_INTEREST_GROUP + }, + + // "owner" tests + { expectJoinSucces: false, + expectLeaveSucces: false, + interestGroup: { name: 'default name' } + }, + { expectJoinSucces: false, + expectLeaveSucces: false, + interestGroup: { ...BASE_INTEREST_GROUP, + owner: null} + }, + { expectJoinSucces: false, + expectLeaveSucces: false, + interestGroup: { ...BASE_INTEREST_GROUP, + owner: window.location.origin.replace('https', 'http')} + }, + { expectJoinSucces: false, + expectLeaveSucces: false, + interestGroup: { ...BASE_INTEREST_GROUP, + owner: window.location.origin.replace('https', 'wss')} + }, + // Cross-origin joins and leaves are not allowed without .well-known + // permissions. + { expectJoinSucces: false, + expectLeaveSucces: false, + interestGroup: { ...BASE_INTEREST_GROUP, + owner: '{{hosts[][www]}}' } + }, + + // "name" tests + { expectJoinSucces: false, + expectLeaveSucces: false, + interestGroup: { owner: window.location.origin } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + name: ''} + }, + + // "priority" tests + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + priority: 1} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + priority: 0} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + priority: -1.5} + }, + + // "priorityVector" tests + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + priorityVector: null} + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + priorityVector: 1} + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + priorityVector: {a: 'apple'}} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + priorityVector: {}} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + priorityVector: {a: 1}} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + priorityVector: {'a': 1, 'b': -4.5, 'a.b': 0}} + }, + + // "prioritySignalsOverrides" tests + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + prioritySignalsOverrides: null} + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + prioritySignalsOverrides: 1} + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + prioritySignalsOverrides: {a: 'apple'}} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + prioritySignalsOverrides: {}} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + prioritySignalsOverrides: {a: 1}} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + prioritySignalsOverrides: {'a': 1, 'b': -4.5, 'a.b': 0}} + }, + + // "enableBiddingSignalsPrioritization" tests + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + enableBiddingSignalsPrioritization: true} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + enableBiddingSignalsPrioritization: false} + }, + + // "biddingLogicUrl" tests + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + biddingLogicUrl: null } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + biddingLogicUrl: 'https://{{hosts[][www]}}/foo.js' } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + biddingLogicUrl: 'data:text/javascript,Foo' } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + biddingLogicUrl: `${window.location.origin}/foo.js`} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + biddingLogicUrl: 'relative/path' } + }, + + // "biddingWasmHelperUrl" tests + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + biddingWasmHelperUrl: null } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + biddingWasmHelperUrl: 'https://{{hosts[][www]}}/foo.js' } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + biddingWasmHelperUrl: 'data:application/wasm,Foo' } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + biddingWasmHelperUrl: `${window.location.origin}/foo.js`} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + biddingWasmHelperUrl: 'relative/path' } + }, + + // "dailyUpdateUrl" tests + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + dailyUpdateUrl: null } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + dailyUpdateUrl: 'https://{{hosts[][www]}}/foo.js' } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + dailyUpdateUrl: 'data:application/wasm,Foo' } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + dailyUpdateUrl: `${window.location.origin}/foo.js`} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + dailyUpdateUrl: 'relative/path' } + }, + + // "executionMode" tests + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + executionMode: 'compatibility' } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + executionMode: 'groupByOrigin' } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + executionMode: 'unknownValuesAreValid' } + }, + + // "trustedBiddingSignalsUrl" tests + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + trustedBiddingSignalsUrl: null } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + trustedBiddingSignalsUrl: 'https://{{hosts[][www]}}/foo.js' } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + trustedBiddingSignalsUrl: 'data:application/json,{}' } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + trustedBiddingSignalsUrl: `${window.location.origin}/foo.js`} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + trustedBiddingSignalsUrl: 'relative/path' } + }, + + // "trustedBiddingSignalsKeys" tests + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + trustedBiddingSignalsKeys: null } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + trustedBiddingSignalsKeys: {}} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + trustedBiddingSignalsKeys: []} + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + trustedBiddingSignalsKeys: ['a', 4, 'Foo']} + }, + + // "userBiddingSignals" tests + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + userBiddingSignals: null } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + userBiddingSignals: 'foo' } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + userBiddingSignals: 15 } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + userBiddingSignals: [5, 'foo', [-6.4, {a: 'b'}]] } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + userBiddingSignals: {a: [5, 'foo', {b: -6.4}] }} + }, + + // "ads" tests + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + ads: null } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + ads: 5 } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + ads: {} } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + ads: [] } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + ads: [{}] } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + ads: [{metadata: [{a:'b'}, 'c'], 1:[2,3]}] } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + ads: [{renderUrl: 'https://somewhere.test/'}] } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + ads: [{renderUrl: 'https://somewhere.test/'}, + {renderUrl: 'https://somewhere-else.test/'}] } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + ads: [{renderUrl: 'https://somewhere.test/', + metadata: null}] } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + ads: [{renderUrl: 'https://somewhere.test/', + metadata: null, + someOtherField: 'foo'}] } + }, + + // "adComponents" tests + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + adComponents: null } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + adComponents: 5 } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + adComponents: {} } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + adComponents: [] } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + adComponents: [{}] } + }, + { expectJoinSucces: false, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + adComponents: [{metadata: [{a:'b'}, 'c'], 1:[2,3]}] } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + adComponents: [{renderUrl: 'https://somewhere.test/'}] } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + adComponents: [{renderUrl: 'https://somewhere.test/'}, + {renderUrl: 'https://elsewhere.test/'}] } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + adComponents: [{renderUrl: 'https://somewhere.test/', + metadata: null}] } + }, + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + adComponents: [{renderUrl: 'https://somewhere.test/', + metadata: null, + someOtherField: 'foo'}] } + }, + + // Miscellaneous tests. + { expectJoinSucces: true, + expectLeaveSucces: true, + interestGroup: { ...BASE_INTEREST_GROUP, + extra: false, + fields: {do:'not'}, + matter: 'at', + all: [3,4,5] } + }, +]; + +for (testCase of SIMPLE_JOIN_LEAVE_TEST_CASES) { + promise_test((async (testCase) => { + const INTEREST_GROUP_LIFETIME_SECS = 1; + + let join_promise = navigator.joinAdInterestGroup(testCase.interestGroup, + INTEREST_GROUP_LIFETIME_SECS); + assert_true(join_promise instanceof Promise, "join should return a promise"); + if (testCase.expectJoinSucces) { + assert_equals(await join_promise, undefined); + } else { + let joinExceptionThrown = false; + try { + await join_promise; + } catch (e) { + joinExceptionThrown = true; + } + assert_true(joinExceptionThrown, 'Exception not thrown on join.'); + } + + let leave_promise = navigator.leaveAdInterestGroup(testCase.interestGroup, + INTEREST_GROUP_LIFETIME_SECS); + assert_true(leave_promise instanceof Promise, "leave should return a promise"); + if (testCase.expectLeaveSucces) { + assert_equals(await leave_promise, undefined); + } else { + let leaveExceptionThrown = false; + try { + await leave_promise; + } catch (e) { + leaveExceptionThrown = true; + } + assert_true(leaveExceptionThrown, 'Exception not thrown on leave.'); + } + }).bind(undefined, testCase), 'Join and leave interest group: ' + JSON.stringify(testCase)); +} + +promise_test(async test => { + const uuid = generateUuid(test); + + // Joining an interest group without a bidding script and run an auction. + // There should be no winner. + await joinInterestGroup(test, uuid, { biddingLogicUrl: null }); + assert_equals(null, await runBasicFledgeAuction(test, uuid), + 'Auction unexpectedly had a winner'); + + // Joining an interest group with a bidding script and the same owner/name as + // the previously joined interest group, and re-run the auction. There should + // be a winner this time. + await joinInterestGroup(test, uuid); + let url = await runBasicFledgeAuction(test, uuid); + assert_true('string' === typeof url, + 'Wrong value type returned from auction: ' + typeof url); + + // Re-join the first interest group, and re-run the auction. The interest + // group should be overwritten again, and there should be no winner. + await joinInterestGroup(test, uuid, { biddingLogicUrl: null }); + assert_equals(null, await runBasicFledgeAuction(test, uuid), + 'Auction unexpectedly had a winner'); +}, 'Join same interest group overwrites old matching group.'); + +promise_test(async test => { + const uuid = generateUuid(test); + + // Join an interest group, run an auction to make sure it was joined. + await joinInterestGroup(test, uuid); + let url = await runBasicFledgeAuction(test, uuid); + assert_true('string' === typeof url, + 'Wrong value type returned from auction: ' + typeof url); + + // Leave the interest group, re-run the auction. There should be no winner. + await leaveInterestGroup(); + assert_equals(null, await runBasicFledgeAuction(test, uuid), + 'Auction unexpectedly had a winner'); +}, 'Leaving interest group actually leaves interest group.'); + +promise_test(async test => { + // This should not throw. + await leaveInterestGroup({ name: 'Never join group' }); +}, 'Leave an interest group that was never joined.'); diff --git a/tests/wpt/web-platform-tests/fledge/tentative/no-winner.https.sub.window.js b/tests/wpt/web-platform-tests/fledge/tentative/no-winner.https.sub.window.js new file mode 100644 index 00000000000..4d24b5738ea --- /dev/null +++ b/tests/wpt/web-platform-tests/fledge/tentative/no-winner.https.sub.window.js @@ -0,0 +1,76 @@ +// META: script=/resources/testdriver.js +// META: script=/common/utils.js +// META: script=resources/fledge-util.js + +// The tests in this file focus on simple auctions (one bidder, one seller, one +// origin, one frame) which have no winning bid, either due to errors or due to +// there being no bids, except where tests fit better with another set of tests. + +// Errors common to bidding and decision logic scripts. These atrings will be +// appended to script URLs to make the python scripts that generate bidding +// logic and decision logic scripts with errors. +const COMMON_SCRIPT_ERRORS = [ + 'error=http-error', + 'error=no-content-type', + 'error=wrong-content-type', + 'error=bad-allow-fledge', + 'error=fledge-not-allowed', + 'error=no-allow-fledge', + 'error=no-body', +]; + +const BIDDING_LOGIC_SCRIPT_ERRORS = [ + ...COMMON_SCRIPT_ERRORS, + 'error=no-generateBid', + 'generateBid=throw 1;', + 'generateBid=This does not compile', + // Default timeout test. Doesn't check how long timing out takes. + 'generateBid=while(1);', + // Bad return values: + 'generateBid=return 5;', + 'generateBid=return "Foo";', + 'generateBid=return interestGroup.ads[0].renderUrl;', + 'generateBid=return {bid: 1, render: "https://not-in-ads-array.test/"};', + 'generateBid=return {bid: 1};', + 'generateBid=return {render: interestGroup.ads[0].renderUrl};', + // These are not bidding rather than errors. + 'generateBid=return {bid:0, render: interestGroup.ads[0].renderUrl};', + 'generateBid=return {bid:-1, render: interestGroup.ads[0].renderUrl};', +]; + +const DECISION_LOGIC_SCRIPT_ERRORS = [ + ...COMMON_SCRIPT_ERRORS, + 'error=no-scoreAd', + 'scoreAd=throw 1;', + 'scoreAd=This does not compile', + // Default timeout test. Doesn't check how long timing out takes. + 'scoreAd=while(1);', + // Bad return values: + 'scoreAd=return "Foo";', + 'scoreAd=return {desirability: "Foo"};', + // These are rejecting the bid rather than errors. + 'scoreAd=return 0;', + 'scoreAd=return -1;', + 'scoreAd=return {desirability: 0};', + 'scoreAd=return {desirability: -1};', +]; + +for (error of BIDDING_LOGIC_SCRIPT_ERRORS) { + promise_test((async (error, test) => { + let biddingLogicUrl = `${BASE_URL}resources/bidding-logic.sub.py?${error}`; + await runBasicFledgeTestExpectingNoWinner( + test, + {interestGroupOverrides: {biddingLogicUrl: biddingLogicUrl}} + ); + }).bind(undefined, error), `Bidding logic script: ${error}`); +} + +for (error of DECISION_LOGIC_SCRIPT_ERRORS) { + promise_test((async (error, test) => { + let decisionLogicUrl = + `${BASE_URL}resources/decision-logic.sub.py?${error}`; + await runBasicFledgeTestExpectingNoWinner( + test, {auctionConfigOverrides: {decisionLogicUrl: decisionLogicUrl}} + ); + }).bind(undefined, error), `Decision logic script: ${error}`); +} diff --git a/tests/wpt/web-platform-tests/fledge/tentative/reporting-arguments.https.sub.window.js b/tests/wpt/web-platform-tests/fledge/tentative/reporting-arguments.https.sub.window.js new file mode 100644 index 00000000000..69b7d2fddda --- /dev/null +++ b/tests/wpt/web-platform-tests/fledge/tentative/reporting-arguments.https.sub.window.js @@ -0,0 +1,289 @@ +// META: script=/resources/testdriver.js +// META: script=/common/utils.js +// META: script=resources/fledge-util.js +// META: timeout=long + +// Simplified version of reportTest() for validating arguments to reporting +// methods. Only takes expressions to check in reporting methods. "uuid" is +// optional, and one is generated if not passed one. +async function runReportArgumentValidationTest( + test, reportResultSuccessCondition, reportWinSuccessCondition, uuid) { + if (!uuid) + uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + reportResultSuccessCondition, + `sendReportTo('${createSellerReportUrl(uuid)}');`, + // reportWin: + reportWinSuccessCondition, + `sendReportTo('${createBidderReportUrl(uuid)}');`, + [createSellerReportUrl(uuid), createBidderReportUrl(uuid)] + ); +} + +///////////////////////////////////////////////////////////////////// +// reportResult() to reportWin() message passing tests +///////////////////////////////////////////////////////////////////// + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + `sendReportTo('${createSellerReportUrl(uuid)}'); + return 45;`, + // reportWin: + 'sellerSignals === 45', + `sendReportTo('${createBidderReportUrl(uuid)}');`, + // expectedReportUrls: + [createSellerReportUrl(uuid), createBidderReportUrl(uuid)] + ); +}, 'Seller passes number to bidder.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + `sendReportTo('${createSellerReportUrl(uuid)}'); + return 'foo';`, + // reportWin: + 'sellerSignals === "foo"', + `sendReportTo('${createBidderReportUrl(uuid)}');`, + // expectedReportUrls: + [createSellerReportUrl(uuid), createBidderReportUrl(uuid)] + ); +}, 'Seller passes string to bidder.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + `sendReportTo('${createSellerReportUrl(uuid)}'); + return [3, 1, 2];`, + // reportWin: + 'JSON.stringify(sellerSignals) === "[3,1,2]"', + `sendReportTo('${createBidderReportUrl(uuid)}');`, + // expectedReportUrls: + [createSellerReportUrl(uuid), createBidderReportUrl(uuid)] + ); +}, 'Seller passes array to bidder.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + `sendReportTo('${createSellerReportUrl(uuid)}'); + return {a: 4, b:['c', null, {}]};`, + // reportWin: + `JSON.stringify(sellerSignals) === '{"a":4,"b":["c",null,{}]}'`, + `sendReportTo('${createBidderReportUrl(uuid)}');`, + // expectedReportUrls: + [createSellerReportUrl(uuid), createBidderReportUrl(uuid)] + ); +}, 'Seller passes object to bidder.'); + +///////////////////////////////////////////////////////////////////// +// reportResult() / reportWin() browserSignals tests. +///////////////////////////////////////////////////////////////////// + +promise_test(async test => { + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.topWindowHostname === "${window.location.hostname}"`, + // reportWinSuccessCondition: + `browserSignals.topWindowHostname === "${window.location.hostname}"` + ); +}, 'browserSignals.topWindowHostname test.'); + +promise_test(async test => { + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.seller === undefined`, + // reportWinSuccessCondition: + `browserSignals.seller === "${window.location.origin}"` + ); +}, 'browserSignals.seller test.'); + +promise_test(async test => { + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.topLevelSeller === undefined && + browserSignals.componentSeller === undefined`, + // reportWinSuccessCondition: + `browserSignals.topLevelSeller === undefined && + browserSignals.componentSeller === undefined` + ); +}, 'browserSignals.topLevelSeller and browserSignals.componentSeller test.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.renderUrl === "${createRenderUrl(uuid)}"`, + // reportWinSuccessCondition: + `browserSignals.renderUrl === "${createRenderUrl(uuid)}"`, + uuid + ); +}, 'browserSignals.renderUrl test.'); + +promise_test(async test => { + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.bid === 9`, + // reportWinSuccessCondition: + `browserSignals.bid === 9` + ); +}, 'browserSignals.bid test.'); + +promise_test(async test => { + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.desirability === 18`, + // reportWinSuccessCondition: + `browserSignals.desirability === undefined` + ); +}, 'browserSignals.desirability test.'); + +promise_test(async test => { + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.topLevelSellerSignals === undefined`, + // reportWinSuccessCondition: + `browserSignals.topLevelSellerSignals === undefined` + ); +}, 'browserSignals.topLevelSellerSignals test.'); + +promise_test(async test => { + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.dataVersion === undefined`, + // reportWinSuccessCondition: + `browserSignals.dataVersion === undefined` + ); +}, 'browserSignals.dataVersion test.'); + +promise_test(async test => { + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.modifiedBid === undefined`, + // reportWinSuccessCondition: + `browserSignals.modifiedBid === undefined` + ); +}, 'browserSignals.modifiedBid test.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.highestScoringOtherBid === 0`, + // reportWinSuccessCondition: + `browserSignals.highestScoringOtherBid === 0`, + uuid + ); +}, 'browserSignals.highestScoringOtherBid with no other interest groups test.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await joinInterestGroup(test, uuid, + { biddingLogicUrl: createBiddingScriptUrl({bid: -2}), + name: 'other interest group 1' }); + await joinInterestGroup(test, uuid, + { biddingLogicUrl: createBiddingScriptUrl({bid: -1}), + name: 'other interest group 2' }); + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.highestScoringOtherBid === 0`, + // reportWinSuccessCondition: + `browserSignals.highestScoringOtherBid === 0`, + uuid + ); +}, 'browserSignals.highestScoringOtherBid with other groups that do not bid.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await joinInterestGroup(test, uuid, + { biddingLogicUrl: createBiddingScriptUrl({bid: 2}), + name: 'other interest group 1' }); + await joinInterestGroup(test, uuid, + { biddingLogicUrl: createBiddingScriptUrl({bid: 5}), + name: 'other interest group 2' }); + await joinInterestGroup(test, uuid, + { biddingLogicUrl: createBiddingScriptUrl({bid: 2}), + name: 'other interest group 3' }); + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.highestScoringOtherBid === 5`, + // reportWinSuccessCondition: + `browserSignals.highestScoringOtherBid === 5`, + uuid + ); +}, 'browserSignals.highestScoringOtherBid with other bids.'); + +promise_test(async test => { + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.interestGroupName === undefined`, + // reportWinSuccessCondition: + `browserSignals.interestGroupName === "default name"` + ); +}, 'browserSignals.interestGroupName test.'); + +promise_test(async test => { + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.madeHighestScoringOtherBid === undefined`, + // reportWinSuccessCondition: + `browserSignals.madeHighestScoringOtherBid === false` + ); +}, 'browserSignals.madeHighestScoringOtherBid with no other bids.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await joinInterestGroup(test, uuid, + { biddingLogicUrl: createBiddingScriptUrl({bid: -1}), + name: 'other interest group 2' }); + await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.madeHighestScoringOtherBid === undefined`, + // reportWinSuccessCondition: + `browserSignals.madeHighestScoringOtherBid === false` + ); +}, 'browserSignals.madeHighestScoringOtherBid with group that did not bid.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await joinInterestGroup(test, uuid, + { biddingLogicUrl: createBiddingScriptUrl({bid: 1}), + name: 'other interest group 2' }); +await runReportArgumentValidationTest( + test, + // reportResultSuccessCondition: + `browserSignals.madeHighestScoringOtherBid === undefined`, + // reportWinSuccessCondition: + `browserSignals.madeHighestScoringOtherBid === true`, + uuid + ); +}, 'browserSignals.madeHighestScoringOtherBid with other bid.'); diff --git a/tests/wpt/web-platform-tests/fledge/tentative/resources/bidding-logic.sub.py b/tests/wpt/web-platform-tests/fledge/tentative/resources/bidding-logic.sub.py new file mode 100644 index 00000000000..dfc4d86be35 --- /dev/null +++ b/tests/wpt/web-platform-tests/fledge/tentative/resources/bidding-logic.sub.py @@ -0,0 +1,50 @@ +# General bidding logic script. Depending on query parameters, it can +# simulate a variety of network errors, and its generateBid() and +# reportWin() functions can have arbitrary Javascript code injected +# in them. generateBid() will by default return a bid of 9 for the +# first ad. +def main(request, response): + error = request.GET.first(b"error", None) + + if error == b"http-error": + response.status = (404, b"OK") + else: + response.status = (200, b"OK") + + if error == b"wrong-content-type": + response.headers.set(b"Content-Type", b"application/json") + elif error != b"no-content-type": + response.headers.set(b"Content-Type", b"application/javascript") + + if error == b"bad-allow-fledge": + response.headers.set(b"X-Allow-FLEDGE", b"sometimes") + elif error == b"fledge-not-allowed": + response.headers.set(b"X-Allow-FLEDGE", b"false") + elif error != b"no-allow-fledge": + response.headers.set(b"X-Allow-FLEDGE", b"true") + + body = b'' + if error == b"no-body": + return body + if error != b"no-generateBid": + body += b""" + function generateBid(interestGroup, auctionSignals, perBuyerSignals, + trustedBiddingSignals, browserSignals, + directFromSellerSignals) { + {{GET[generateBid]}}; + return { + 'bid': 9, + 'render': interestGroup.ads[0].renderUrl + }; + }""" + bid = request.GET.first(b"bid", None) + if bid != None: + body = body.replace(b"9", bid) + if error != b"no-reportWin": + body += b""" + function reportWin(auctionSignals, perBuyerSignals, sellerSignals, + browserSignals, directFromSellerSignals) { + {{GET[reportWin]}}; + }""" + return body + diff --git a/tests/wpt/web-platform-tests/fledge/tentative/resources/decision-logic.sub.py b/tests/wpt/web-platform-tests/fledge/tentative/resources/decision-logic.sub.py new file mode 100644 index 00000000000..8d5303ac5a4 --- /dev/null +++ b/tests/wpt/web-platform-tests/fledge/tentative/resources/decision-logic.sub.py @@ -0,0 +1,47 @@ +# General decision logic script. Depending on query parameters, it can +# simulate a variety of network errors, and its scoreAd() and +# reportResult() functions can have arbitrary Javascript code injected +# in them. scoreAd() will by default return a desirability score of +# twice the bid for each ad, as long as the ad URL ends with the uuid. +def main(request, response): + error = request.GET.first(b"error", None) + + if error == b"http-error": + response.status = (404, b"OK") + else: + response.status = (200, b"OK") + + if error == b"wrong-content-type": + response.headers.set(b"Content-Type", b"application/json") + elif error != b"no-content-type": + response.headers.set(b"Content-Type", b"application/javascript") + + if error == b"bad-allow-fledge": + response.headers.set(b"X-Allow-FLEDGE", b"sometimes") + elif error == b"fledge-not-allowed": + response.headers.set(b"X-Allow-FLEDGE", b"false") + elif error != b"no-allow-fledge": + response.headers.set(b"X-Allow-FLEDGE", b"true") + + body = b'' + if error == b"no-body": + return body + if error != b"no-scoreAd": + body += b""" + function scoreAd(adMetadata, bid, auctionConfig, trustedScoringSignals, + browserSignals) { + // Don't bid on interest group with the wrong uuid. This is to prevent + // left over interest groups from other tests from affecting auction + // results. + if (!browserSignals.renderUrl.endsWith('{{GET[uuid]}}')) + return 0; + + {{GET[scoreAd]}}; + return {desirability: 2 * bid, allowComponentAuction: true}; + }""" + if error != b"no-reportResult": + body += b""" + function reportResult(auctionConfig, browserSignals, directFromSellerSignals) { + {{GET[reportResult]}}; + }""" + return body diff --git a/tests/wpt/web-platform-tests/fledge/tentative/resources/fenced_frame.sub.html b/tests/wpt/web-platform-tests/fledge/tentative/resources/fenced_frame.sub.html new file mode 100644 index 00000000000..eaca3f49fd1 --- /dev/null +++ b/tests/wpt/web-platform-tests/fledge/tentative/resources/fenced_frame.sub.html @@ -0,0 +1,5 @@ +<!DOCTYPE html> +<html> +<body> +</body> +</html> diff --git a/tests/wpt/web-platform-tests/fledge/tentative/resources/fenced_frame.sub.html.headers b/tests/wpt/web-platform-tests/fledge/tentative/resources/fenced_frame.sub.html.headers new file mode 100644 index 00000000000..bc74b5851b6 --- /dev/null +++ b/tests/wpt/web-platform-tests/fledge/tentative/resources/fenced_frame.sub.html.headers @@ -0,0 +1,2 @@ +Content-Type: text/html +Supports-Loading-Mode: fenced-frame diff --git a/tests/wpt/web-platform-tests/fledge/tentative/resources/fledge-util.js b/tests/wpt/web-platform-tests/fledge/tentative/resources/fledge-util.js new file mode 100644 index 00000000000..9f95a59e43a --- /dev/null +++ b/tests/wpt/web-platform-tests/fledge/tentative/resources/fledge-util.js @@ -0,0 +1,275 @@ +const FULL_URL = window.location.href; +const BASE_URL = FULL_URL.substring(0, FULL_URL.lastIndexOf('/') + 1); +const BASE_PATH = (new URL(BASE_URL)).pathname; + +const DEFAULT_INTEREST_GROUP_NAME = 'default name'; + +// Creates a URL that will be sent to the URL request tracker script. +// `uuid` is used to identify the stash shard to use. +// `dispatch` affects what the tracker script does. +// `id` can be used to uniquely identify tracked requests. It has no effect +// on behavior of the script; it only serves to make the URL unique. +function createTrackerUrl(origin, uuid, dispatch, id = null) { + let url = new URL(`${origin}${BASE_PATH}resources/request_tracker.py`); + url.searchParams.append('uuid', uuid); + url.searchParams.append('dispatch', dispatch); + if (id) + url.searchParams.append('id', id); + return url.toString(); +} + +// Create tracked bidder/seller URLs. The only difference is the prefix added +// to the `id` passed to createTrackerUrl. The optional `id` field allows +// multiple bidder/seller report URLs to be distinguishable from each other. +function createBidderReportUrl(uuid, id = '1') { + return createTrackerUrl(window.location.origin, uuid, `track_get`, + `bidder_report_${id}`); +} +function createSellerReportUrl(uuid, id = '1') { + return createTrackerUrl(window.location.origin, uuid, `track_get`, + `seller_report_${id}`); +} + +// Generates a UUID and registers a cleanup method with the test fixture to +// request a URL from the request tracking script that clears all data +// associated with the generated uuid when requested. +function generateUuid(test) { + let uuid = token(); + test.add_cleanup(async () => { + let cleanupUrl = createTrackerUrl(window.location.origin, uuid, 'clean_up'); + let response = await fetch(cleanupUrl, {credentials: 'omit', mode: 'cors'}); + assert_equals(await response.text(), 'cleanup complete', + `Sever state cleanup failed`); + }); + return uuid; +} + +// Repeatedly requests "request_list" URL until exactly the URLs listed +// in "expectedRequests" have been observed by the request tracker script (in +// any order, since report URLs are not guaranteed to be sent in any order). +// +// If any other strings are received from the tracking script, or the tracker +// script reports an error, fails the test. +async function waitForObservedRequests(uuid, expectedRequests) { + let trackedRequestsUrl = createTrackerUrl(window.location.origin, uuid, + 'request_list'); + // Sort array for easier comparison, since order doesn't matter. + expectedRequests.sort(); + while (true) { + let response = await fetch(trackedRequestsUrl, + {credentials: 'omit', mode: 'cors'}); + let trackerData = await response.json(); + + // Fail on fetch error. + if (trackerData.error) { + throw trackedRequestsUrl + ' fetch failed:' + + JSON.stringify(trackerData); + } + + // Fail on errors reported by the tracker script. + if (trackerData.errors.length > 0) { + throw 'Errors reported by request_tracker.py:' + + JSON.stringify(trackerData.errors); + } + + // If expected number of requests have been observed, compare with list of + // all expected requests and exit. + let trackedRequests = trackerData.trackedRequests; + if (trackedRequests.length == expectedRequests.length) { + assert_array_equals(trackedRequests.sort(), 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); + } + } +} + +// Creates a bidding script with the provided code in the method bodies. The +// bidding script's generateBid() method will return a bid of 9 for the first +// ad, after the passed in code in the "generateBid" input argument has been +// run, unless it returns something or throws. +// +// The default reportWin() method is empty. +function createBiddingScriptUrl(params = {}) { + let url = new URL(`${BASE_URL}resources/bidding-logic.sub.py`); + if (params.generateBid) + url.searchParams.append('generateBid', params.generateBid); + if (params.reportWin) + url.searchParams.append('reportWin', params.reportWin); + if (params.error) + url.searchParams.append('error', params.error); + if (params.bid) + url.searchParams.append('bid', params.bid); + return url.toString(); +} + +// Creates a decision script with the provided code in the method bodies. The +// decision script's scoreAd() method will reject ads with renderUrls that +// don't ends with "uuid", and will return a score equal to the bid, after the +// passed in code in the "scoreAd" input argument has been run, unless it +// returns something or throws. +// +// The default reportResult() method is empty. +function createDecisionScriptUrl(uuid, params = {}) { + let url = new URL(`${BASE_URL}resources/decision-logic.sub.py`); + url.searchParams.append('uuid', uuid); + if (params.scoreAd) + url.searchParams.append('scoreAd', params.scoreAd); + if (params.reportResult) + url.searchParams.append('reportResult', params.reportResult); + if (params.error) + url.searchParams.append('error', params.error); + return url.toString(); +} + +// Creates a renderUrl for an ad that runs the passed in "script". "uuid" has +// no effect, beyond making the URL distinct between tests, and being verified +// by the decision logic script before accepting a bid. +function createRenderUrl(uuid) { + let url = new URL(`${BASE_URL}resources/fenced_frame.sub.html`); + url.searchParams.append('uuid', uuid); + return url.toString(); +} + +// Joins an interest group that, by default, is owned by the current frame's +// origin, is named DEFAULT_INTEREST_GROUP_NAME, has a bidding script that +// issues a bid of 9 with a renderUrl of "https://not.checked.test/${uuid}", +// and sends a report to createBidderReportUrl(uuid) if it wins. Waits for the +// join command to complete. Adds cleanup command to `test` to leave the +// interest group when the test completes. +// +// `interestGroupOverrides` may be used to override fields in the joined +// interest group. +async function joinInterestGroup(test, uuid, interestGroupOverrides = {}) { + const INTEREST_GROUP_LIFETIME_SECS = 60; + + let interestGroup = { + owner: window.location.origin, + name: DEFAULT_INTEREST_GROUP_NAME, + biddingLogicUrl: createBiddingScriptUrl( + { reportWin: `sendReportTo('${createBidderReportUrl(uuid)}');` }), + ads: [{renderUrl: createRenderUrl(uuid)}], + ...interestGroupOverrides + }; + + await navigator.joinAdInterestGroup(interestGroup, + INTEREST_GROUP_LIFETIME_SECS); + test.add_cleanup( + async () => {await navigator.leaveAdInterestGroup(interestGroup)}); +} + +// Similar to joinInterestGroup, but leaves the interest group instead. +// Generally does not need to be called manually when using +// "joinInterestGroup()". +async function leaveInterestGroup(interestGroupOverrides = {}) { + let interestGroup = { + owner: window.location.origin, + name: DEFAULT_INTEREST_GROUP_NAME, + ...interestGroupOverrides + }; + + await navigator.leaveAdInterestGroup(interestGroup); +} + +// Runs a FLEDGE auction and returns the result. By default, the seller is the +// current frame's origin, and the only buyer is as well. The seller script +// rejects bids for URLs that don't contain "uuid" (to avoid running into issues +// with any interest groups from other tests), and reportResult() sends a report +// to createSellerReportUrl(uuid). +// +// `auctionConfigOverrides` may be used to override fields in the auction +// configuration. +async function runBasicFledgeAuction(test, uuid, auctionConfigOverrides = {}) { + let auctionConfig = { + seller: window.location.origin, + decisionLogicUrl: createDecisionScriptUrl( + uuid, + { reportResult: `sendReportTo('${createSellerReportUrl(uuid)}');` }), + interestGroupBuyers: [window.location.origin], + ...auctionConfigOverrides + }; + return await navigator.runAdAuction(auctionConfig); +} + +// Calls runBasicFledgeAuction(), expecting the auction to have a winner. +// Creates a fenced frame that will be destroyed on completion of "test", and +// navigates it to the URN URL returned by the auction. Does not wait for the +// fenced frame to finish loading, since there's no API that can do that. +async function runBasicFledgeAuctionAndNavigate(test, uuid, + auctionConfigOverrides = {}) { + let url = await runBasicFledgeAuction(test, uuid, auctionConfigOverrides); + assert_equals(typeof url, 'string', + `Wrong value type returned from auction: ${typeof url}`); + + let fencedFrame = document.createElement('fencedframe'); + fencedFrame.mode = 'opaque-ads'; + fencedFrame.src = url; + document.body.appendChild(fencedFrame); + test.add_cleanup(() => { document.body.removeChild(fencedFrame); }); +} + +// Joins an interest group and runs an auction, expecting no winner to be +// returned. "testConfig" can optionally modify the interest group or +// auctionConfig. +async function runBasicFledgeTestExpectingNoWinner(test, testConfig = {}) { + const uuid = generateUuid(test); + await joinInterestGroup(test, uuid, testConfig.interestGroupOverrides); + let result = await runBasicFledgeAuction( + test, uuid, testConfig.auctionConfigOverrides); + assert_equals(result, null, 'Auction unexpectedly had a winner'); +} + +// Test helper for report phase of auctions that lets the caller specify the +// body of reportResult() and reportWin(). Passing in null will cause there +// to be no reportResult() or reportWin() method. +// +// If the "SuccessCondition" fields are non-null and evaluate to false in +// the corresponding reporting method, the report is sent to an error URL. +// Otherwise, the corresponding 'reportResult' / 'reportWin' values are run. +// +// Requesting error report URLs causes waitForObservedRequests() to throw +// rather than hang. +async function runReportTest(test, uuid, reportResultSuccessCondition, + reportResult, reportWinSuccessCondition, reportWin, + expectedReportUrls) { + if (reportResultSuccessCondition) { + reportResult = `if (!(${reportResultSuccessCondition})) { + sendReportTo('${createSellerReportUrl(uuid, 'error')}'); + return false; + } + ${reportResult}`; + } + let decisionScriptUrlParams = {}; + if (reportResult !== null) + decisionScriptUrlParams.reportResult = reportResult; + else + decisionScriptUrlParams.error = 'no-reportResult'; + + if (reportWinSuccessCondition) { + reportWin = `if (!(${reportWinSuccessCondition})) { + sendReportTo('${createSellerReportUrl(uuid, 'error')}'); + return false; + } + ${reportWin}`; + } + let biddingScriptUrlParams = {}; + if (reportWin !== null) + biddingScriptUrlParams.reportWin = reportWin; + else + biddingScriptUrlParams.error = 'no-reportWin'; + + let interestGroupOverrides = + { biddingLogicUrl: createBiddingScriptUrl(biddingScriptUrlParams) }; + + await joinInterestGroup(test, uuid, interestGroupOverrides); + await runBasicFledgeAuctionAndNavigate( + test, uuid, + { decisionLogicUrl: createDecisionScriptUrl( + uuid, decisionScriptUrlParams) }); + await waitForObservedRequests(uuid, expectedReportUrls); +} diff --git a/tests/wpt/web-platform-tests/fledge/tentative/resources/request_tracker.py b/tests/wpt/web-platform-tests/fledge/tentative/resources/request_tracker.py new file mode 100644 index 00000000000..5fedd727deb --- /dev/null +++ b/tests/wpt/web-platform-tests/fledge/tentative/resources/request_tracker.py @@ -0,0 +1,78 @@ +import mimetypes +import os +import json +import wptserve.stash + +from wptserve.utils import isomorphic_decode, isomorphic_encode + +# Test server that tracks requests it has previously seen, keyed by a token. +# +# All requests have a "dispatch" field indicating what to do, and a "uuid" +# field which should be unique for each test, to avoid tests that fail to +# clean up after themselves, or that are running concurrently, from interfering +# with other tests. +# +# Each uuid has a stash entry with a dictionary with two entries: +# "trackedRequests" is a list of all observed requested URLs with a +# dispatch of "track_get". +# "errors" is a list of an errors that occurred. +# +# A dispatch of "request_list" will return the "trackedRequests" dictionary +# associated with the in uuid, as a JSON string. +# +# A dispatch of "clean_up" will delete all information associated with the uuid. +def main(request, response): + # Don't cache responses, since tests expect duplicate requests to always + # reach the server. + response.headers.set(b"Cache-Control", b"no-store") + + dispatch = request.GET.first(b"dispatch", None) + uuid = request.GET.first(b"uuid", None) + + if not uuid or not dispatch: + return simple_response(request, response, 404, b"Not found", + b"Invalid query parameters") + + stash = request.server.stash + with stash.lock: + # Take ownership of stashed entry, if any. This removes the entry of the + # stash. + server_state = stash.take(uuid) or {"trackedRequests": [], "errors": []} + + # Clear the entire stash. No work to do, since stash entry was already + # removed. + if dispatch == b"clean_up": + return simple_response(request, response, 200, b"OK", + b"cleanup complete") + + # Return the list of entries in the stash. Need to add data back to the + # stash first. + if dispatch == b"request_list": + stash.put(uuid, server_state) + return simple_response(request, response, 200, b"OK", + json.dumps(server_state)) + + # Tracks a request that's expected to be a GET. + if dispatch == b"track_get": + if request.method != "GET": + server_state["errors"].append( + request.url + " has wrong method: " + request.method) + else: + server_state["trackedRequests"].append(request.url) + + stash.put(uuid, server_state) + return simple_response(request, response, 200, b"OK", b"") + + # Report unrecognized dispatch line. + server_state["errors"].append( + request.url + " request with unknown dispatch value received: " + + dispatch.decode("utf-8")) + stash.put(uuid, server_state) + return simple_response(request, response, 404, b"Not Found", + b"Unrecognized dispatch parameter: " + dispatch) + +def simple_response(request, response, status_code, status_message, body, + content_type=b"text/plain"): + response.status = (status_code, status_message) + response.headers.set(b"Content-Type", content_type) + return body diff --git a/tests/wpt/web-platform-tests/fledge/tentative/send-report-to.https.sub.window.js b/tests/wpt/web-platform-tests/fledge/tentative/send-report-to.https.sub.window.js new file mode 100644 index 00000000000..bb0e7873a70 --- /dev/null +++ b/tests/wpt/web-platform-tests/fledge/tentative/send-report-to.https.sub.window.js @@ -0,0 +1,161 @@ +// META: script=/resources/testdriver.js +// META: script=/common/utils.js +// META: script=resources/fledge-util.js +// META: timeout=long + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + `sendReportTo('${createSellerReportUrl(uuid)}');`, + // reportWin: + 'sellerSignals === null', + `sendReportTo('${createBidderReportUrl(uuid)}');`, + [createSellerReportUrl(uuid), createBidderReportUrl(uuid)] + ); +}, 'Both send reports, seller passes nothing to bidder.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + `sendReportTo('${createSellerReportUrl(uuid)}');`, + // reportWin: + null, + '', + // expectedReportUrls: + [createSellerReportUrl(uuid)] + ); +}, 'Only seller sends a report'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + `sendReportTo('${createSellerReportUrl(uuid)}');`, + // reportWin: + null, + 'throw new Error("Very serious exception")', + // expectedReportUrls: + [createSellerReportUrl(uuid)] + ); +}, 'Only seller sends a report, bidder throws an exception'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + `sendReportTo('${createSellerReportUrl(uuid)}');`, + // reportWin: + null, + null, + // expectedReportUrls: + [createSellerReportUrl(uuid)] + ); +}, 'Only seller sends a report, bidder has no reportWin() method'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + '', + // reportWin: + 'sellerSignals === null', + `sendReportTo('${createBidderReportUrl(uuid)}');`, + // expectedReportUrls: + [createBidderReportUrl(uuid)] + ); +}, 'Only bidder sends a report'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + 'return "foo";', + // reportWin: + 'sellerSignals === "foo"', + `sendReportTo('${createBidderReportUrl(uuid)}');`, + // expectedReportUrls: + [createBidderReportUrl(uuid)] + ); +}, 'Only bidder sends a report, seller passes a message to bidder'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + 'throw new Error("Very serious exception")', + // reportWin: + 'sellerSignals === null', + `sendReportTo('${createBidderReportUrl(uuid)}');`, + // expectedReportUrls: + [createBidderReportUrl(uuid)] + ); +}, 'Only bidder sends a report, seller throws an exception'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + null, + // reportWin: + 'sellerSignals === null', + `sendReportTo('${createBidderReportUrl(uuid)}');`, + // expectedReportUrls: + [createBidderReportUrl(uuid)] + ); +}, 'Only bidder sends a report, seller has no reportResult() method'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + `sendReportTo('${createSellerReportUrl(uuid)}'); + sendReportTo('${createSellerReportUrl(uuid)}'); + return 5;`, + // reportWin: + 'sellerSignals === null', + `sendReportTo('${createBidderReportUrl(uuid)}');`, + // expectedReportUrls: + [createBidderReportUrl(uuid)] + ); +}, 'Seller calls sendReportTo() twice, which throws an exception.'); + +promise_test(async test => { + const uuid = generateUuid(test); + await runReportTest( + test, uuid, + // reportResult: + null, + `sendReportTo('${createSellerReportUrl(uuid)}');`, + // reportWin: + null, + `sendReportTo('${createBidderReportUrl(uuid)}'); + sendReportTo('${createBidderReportUrl(uuid)}');`, + // expectedReportUrls: + [createSellerReportUrl(uuid)] + ); + // Seller reports may be sent before bidder reports, since reportWin() + // takes output from reportResult() as input. Wait to make sure the + // bidder report URL really is not being requested. + await new Promise(resolve => test.step_timeout(resolve, 200)); + await waitForObservedRequests(uuid, [createSellerReportUrl(uuid)]); +}, 'Bidder calls sendReportTo() twice, which throws an exception.'); diff --git a/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-buckets.https.any.js b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-buckets.https.any.js index 6bb7d771194..cd78c5a9508 100644 --- a/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-buckets.https.any.js +++ b/tests/wpt/web-platform-tests/fs/FileSystemBaseHandle-buckets.https.any.js @@ -1,3 +1,4 @@ // META: script=resources/test-helpers.js // META: script=resources/sandboxed-fs-test-helpers.js +// META: script=/storage/buckets/resources/util.js // META: script=script-tests/FileSystemBaseHandle-buckets.js diff --git a/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-buckets.js b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-buckets.js index 98261995f96..01c41231808 100644 --- a/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-buckets.js +++ b/tests/wpt/web-platform-tests/fs/script-tests/FileSystemBaseHandle-buckets.js @@ -1,6 +1,8 @@ 'use strict'; directory_test(async (t, root_dir) => { + await prepareForBucketTest(t); + const inboxBucket = await navigator.storageBuckets.open('inbox'); const inboxRootDir = await inboxBucket.getDirectory(); @@ -12,6 +14,8 @@ directory_test(async (t, root_dir) => { }, 'isSameEntry works as expected with buckets'); directory_test(async (t, root_dir) => { + await prepareForBucketTest(t); + const inboxBucket = await navigator.storageBuckets.open('inbox'); await navigator.storageBuckets.delete('inbox'); const directoryPromise = inboxBucket.getDirectory(); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html index eddf3c1ea91..80cda234bb8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html @@ -21,11 +21,18 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -ctx.drawImage(document.getElementById('green.png'), 0, 0, 100, 50, 0, 0, 100, 50); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); +fetch('/images/green.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, 50); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html index 48ab9376ffb..b7487e09991 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html @@ -21,11 +21,18 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -ctx.drawImage(document.getElementById('rgrg-256x256.png'), 140, 20, 100, 50, 0, 0, 100, 50); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); +fetch('/images/rgrg-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 140, 20, 100, 50, 0, 0, 100, 50); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html index 5946cb30c9a..567b4abfcff 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html @@ -21,18 +21,25 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -ctx.drawImage(document.getElementById('rgrg-256x256.png'), 0, 0, 256, 256, 0, 0, 100, 50); -ctx.fillStyle = '#0f0'; -ctx.fillRect(0, 0, 51, 26); -ctx.fillRect(49, 24, 51, 26); -_assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); -_assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); -_assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); -_assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); -_assertPixelApprox(canvas, 20,20, 0,255,0,255, 2); -_assertPixelApprox(canvas, 80,20, 0,255,0,255, 2); -_assertPixelApprox(canvas, 20,30, 0,255,0,255, 2); -_assertPixelApprox(canvas, 80,30, 0,255,0,255, 2); +fetch('/images/rgrg-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 0, 256, 256, 0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 51, 26); + ctx.fillRect(49, 24, 51, 26); + _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); + _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); + _assertPixelApprox(canvas, 20,20, 0,255,0,255, 2); + _assertPixelApprox(canvas, 80,20, 0,255,0,255, 2); + _assertPixelApprox(canvas, 20,30, 0,255,0,255, 2); + _assertPixelApprox(canvas, 80,30, 0,255,0,255, 2); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.alpha.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.alpha.html index 36db82e4edb..8926a72c9da 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.alpha.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.alpha.html @@ -22,8 +22,15 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0; -ctx.drawImage(document.getElementById('red.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html index 6afc4e713c4..779397f6b9b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html @@ -19,8 +19,15 @@ var t = async_test("drawImage() of an APNG draws the poster frame"); _addTest(function(canvas, ctx) { -ctx.drawImage(document.getElementById('anim-poster-gr.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +fetch('anim-poster-gr.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.broken.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.broken.html index 4b22ffc8ba6..7e9f1451963 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.broken.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.broken.html @@ -19,13 +19,19 @@ var t = async_test(""); _addTest(function(canvas, ctx) { -ctx.fillStyle = '#0f0'; -ctx.fillRect(0, 0, 100, 50); -var img = document.getElementById('broken.png'); -assert_throws_dom("INVALID_STATE_ERR", function() { ctx.drawImage(img, 0, 0); }); +fetch('/images/broken.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.drawImage(bitmap, 0, 0); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); +}); }); </script> -<img src="/images/broken.png" id="broken.png" class="resource"> diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.clip.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.clip.html index fac98fe949d..380620faf34 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.clip.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.clip.html @@ -23,8 +23,19 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.rect(-10, -10, 1, 1); ctx.clip(); -ctx.drawImage(document.getElementById('red.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(-10, -10, 1, 1); + ctx.clip(); + ctx.drawImage(document.getElementById('red.png'), 0, 0); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.composite.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.composite.html index 60204a5d27b..7b7deb0f91e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.composite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.composite.html @@ -22,8 +22,15 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; -ctx.drawImage(document.getElementById('red.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.floatsource.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.floatsource.html index 4b715f29fea..02e4626133d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.floatsource.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.floatsource.html @@ -13,17 +13,23 @@ <p class="output">Actual output:</p> <canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas> -<p class="output expectedtext">Expected output:<p><img src="/images/green-100x50.png" class="output expected" id="expected" alt=""> + <ul id="d"></ul> <script> var t = async_test(""); _addTest(function(canvas, ctx) { -ctx.drawImage(document.getElementById('green.png'), 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); +}); }); </script> -<img src="/images/green.png" id="green.png" class="resource"> diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedest.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedest.html index 8418f635d48..1020754fa8f 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedest.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedest.html @@ -21,18 +21,25 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 78, 50, 50, 0, 50, 50, -50); -ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 128, 50, -50, 100, 50, -50, -50); -_assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); -_assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); -_assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); -_assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); -_assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); -_assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); -_assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); -_assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); -_assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); -_assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); +fetch('/images/ggrr-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 100, 78, 50, 50, 0, 50, 50, -50); + ctx.drawImage(bitmap, 100, 128, 50, -50, 100, 50, -50, -50); + _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedir.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedir.html index 9a42e5af854..e02d0ff439d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedir.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativedir.html @@ -21,18 +21,25 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -ctx.drawImage(document.getElementById('ggrr-256x256.png'), 0, 178, 50, -100, 0, 0, 50, 100); -ctx.drawImage(document.getElementById('ggrr-256x256.png'), 0, 78, 50, 100, 50, 100, 50, -100); -_assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); -_assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); -_assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); -_assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); -_assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); -_assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); -_assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); -_assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); -_assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); -_assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); +fetch('/images/ggrr-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 178, 50, -100, 0, 0, 50, 100); + ctx.drawImage(bitmap, 0, 78, 50, 100, 50, 100, 50, -100); + _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativesource.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativesource.html index 07b154b1f02..f15fc3adcb0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativesource.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.negativesource.html @@ -21,18 +21,25 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 78, -100, 50, 0, 0, 50, 50); -ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 128, -100, -50, 50, 0, 50, 50); -_assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); -_assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); -_assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); -_assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); -_assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); -_assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); -_assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); -_assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); -_assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); -_assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); +fetch('/images/ggrr-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 100, 78, -100, 50, 0, 0, 50, 50); + ctx.drawImage(bitmap, 100, 128, -100, -50, 50, 0, 50, 50); + _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 1,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 98,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 48,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,1, 0,255,0,255, 2); + _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); + _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html index 673cd3e64aa..f1ad616355d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html @@ -21,309 +21,315 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -var red = document.getElementById('red.png'); -ctx.drawImage(red, Infinity, 0); -ctx.drawImage(red, -Infinity, 0); -ctx.drawImage(red, NaN, 0); -ctx.drawImage(red, 0, Infinity); -ctx.drawImage(red, 0, -Infinity); -ctx.drawImage(red, 0, NaN); -ctx.drawImage(red, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, 100, 50); -ctx.drawImage(red, -Infinity, 0, 100, 50); -ctx.drawImage(red, NaN, 0, 100, 50); -ctx.drawImage(red, 0, Infinity, 100, 50); -ctx.drawImage(red, 0, -Infinity, 100, 50); -ctx.drawImage(red, 0, NaN, 100, 50); -ctx.drawImage(red, 0, 0, Infinity, 50); -ctx.drawImage(red, 0, 0, -Infinity, 50); -ctx.drawImage(red, 0, 0, NaN, 50); -ctx.drawImage(red, 0, 0, 100, Infinity); -ctx.drawImage(red, 0, 0, 100, -Infinity); -ctx.drawImage(red, 0, 0, 100, NaN); -ctx.drawImage(red, Infinity, Infinity, 100, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, 50); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, 100, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, 50); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, 100, Infinity); -ctx.drawImage(red, 0, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, 100, 50, 0, 0, 100, 50); -ctx.drawImage(red, -Infinity, 0, 100, 50, 0, 0, 100, 50); -ctx.drawImage(red, NaN, 0, 100, 50, 0, 0, 100, 50); -ctx.drawImage(red, 0, Infinity, 100, 50, 0, 0, 100, 50); -ctx.drawImage(red, 0, -Infinity, 100, 50, 0, 0, 100, 50); -ctx.drawImage(red, 0, NaN, 100, 50, 0, 0, 100, 50); -ctx.drawImage(red, 0, 0, Infinity, 50, 0, 0, 100, 50); -ctx.drawImage(red, 0, 0, -Infinity, 50, 0, 0, 100, 50); -ctx.drawImage(red, 0, 0, NaN, 50, 0, 0, 100, 50); -ctx.drawImage(red, 0, 0, 100, Infinity, 0, 0, 100, 50); -ctx.drawImage(red, 0, 0, 100, -Infinity, 0, 0, 100, 50); -ctx.drawImage(red, 0, 0, 100, NaN, 0, 0, 100, 50); -ctx.drawImage(red, 0, 0, 100, 50, Infinity, 0, 100, 50); -ctx.drawImage(red, 0, 0, 100, 50, -Infinity, 0, 100, 50); -ctx.drawImage(red, 0, 0, 100, 50, NaN, 0, 100, 50); -ctx.drawImage(red, 0, 0, 100, 50, 0, Infinity, 100, 50); -ctx.drawImage(red, 0, 0, 100, 50, 0, -Infinity, 100, 50); -ctx.drawImage(red, 0, 0, 100, 50, 0, NaN, 100, 50); -ctx.drawImage(red, 0, 0, 100, 50, 0, 0, Infinity, 50); -ctx.drawImage(red, 0, 0, 100, 50, 0, 0, -Infinity, 50); -ctx.drawImage(red, 0, 0, 100, 50, 0, 0, NaN, 50); -ctx.drawImage(red, 0, 0, 100, 50, 0, 0, 100, Infinity); -ctx.drawImage(red, 0, 0, 100, 50, 0, 0, 100, -Infinity); -ctx.drawImage(red, 0, 0, 100, 50, 0, 0, 100, NaN); -ctx.drawImage(red, Infinity, Infinity, 100, 50, 0, 0, 100, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, 0, 0, 100, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, 0, 0, 100, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, Infinity, 0, 100, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, 100, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, Infinity, 0, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, Infinity, 0, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, 0, Infinity, 100, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, 0, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, 0, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, 0, 0, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, 0, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, Infinity, 0, 0, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, Infinity, 0, 100, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, Infinity, Infinity, 100, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, Infinity, 0, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, Infinity, 0, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, 0, Infinity, 100, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, 0, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, 0, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, 0, 0, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, 0, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, Infinity, 50, 0, 0, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, 0, 0, 100, 50); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, Infinity, 0, 100, 50); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, Infinity, Infinity, 100, 50); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, Infinity, 0, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, Infinity, 0, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, 0, Infinity, 100, 50); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, 0, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, 0, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, 0, 0, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, 0, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, Infinity, 0, 0, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, 50, Infinity, 0, 100, 50); -ctx.drawImage(red, Infinity, Infinity, 100, 50, Infinity, Infinity, 100, 50); -ctx.drawImage(red, Infinity, Infinity, 100, 50, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, 100, 50, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, 50, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, 50, Infinity, 0, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, 100, 50, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, 50, Infinity, 0, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, 50, 0, Infinity, 100, 50); -ctx.drawImage(red, Infinity, Infinity, 100, 50, 0, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, 100, 50, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, 50, 0, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, 50, 0, 0, Infinity, 50); -ctx.drawImage(red, Infinity, Infinity, 100, 50, 0, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, Infinity, 100, 50, 0, 0, 100, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, 50, 0, 0, 100, 50); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, 0, 0, 100, 50); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, Infinity, 0, 100, 50); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, Infinity, Infinity, 100, 50); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, Infinity, 0, Infinity, 50); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, Infinity, 0, 100, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, 0, Infinity, 100, 50); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, 0, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, 0, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, 0, 0, Infinity, 50); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, 0, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, Infinity, 0, 0, 100, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, 50, Infinity, 0, 100, 50); -ctx.drawImage(red, Infinity, 0, Infinity, 50, Infinity, Infinity, 100, 50); -ctx.drawImage(red, Infinity, 0, Infinity, 50, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, 0, Infinity, 50, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, 50, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, 50, Infinity, 0, Infinity, 50); -ctx.drawImage(red, Infinity, 0, Infinity, 50, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, 50, Infinity, 0, 100, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, 50, 0, Infinity, 100, 50); -ctx.drawImage(red, Infinity, 0, Infinity, 50, 0, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, 0, Infinity, 50, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, 50, 0, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, 50, 0, 0, Infinity, 50); -ctx.drawImage(red, Infinity, 0, Infinity, 50, 0, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, Infinity, 50, 0, 0, 100, Infinity); -ctx.drawImage(red, Infinity, 0, 100, Infinity, 0, 0, 100, 50); -ctx.drawImage(red, Infinity, 0, 100, Infinity, Infinity, 0, 100, 50); -ctx.drawImage(red, Infinity, 0, 100, Infinity, Infinity, Infinity, 100, 50); -ctx.drawImage(red, Infinity, 0, 100, Infinity, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, 0, 100, Infinity, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, 100, Infinity, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, 0, 100, Infinity, Infinity, 0, Infinity, 50); -ctx.drawImage(red, Infinity, 0, 100, Infinity, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, 100, Infinity, Infinity, 0, 100, Infinity); -ctx.drawImage(red, Infinity, 0, 100, Infinity, 0, Infinity, 100, 50); -ctx.drawImage(red, Infinity, 0, 100, Infinity, 0, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, 0, 100, Infinity, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, 100, Infinity, 0, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, 0, 100, Infinity, 0, 0, Infinity, 50); -ctx.drawImage(red, Infinity, 0, 100, Infinity, 0, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, 100, Infinity, 0, 0, 100, Infinity); -ctx.drawImage(red, Infinity, 0, 100, 50, Infinity, 0, 100, 50); -ctx.drawImage(red, Infinity, 0, 100, 50, Infinity, Infinity, 100, 50); -ctx.drawImage(red, Infinity, 0, 100, 50, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, 0, 100, 50, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, 100, 50, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, 0, 100, 50, Infinity, 0, Infinity, 50); -ctx.drawImage(red, Infinity, 0, 100, 50, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, 100, 50, Infinity, 0, 100, Infinity); -ctx.drawImage(red, Infinity, 0, 100, 50, 0, Infinity, 100, 50); -ctx.drawImage(red, Infinity, 0, 100, 50, 0, Infinity, Infinity, 50); -ctx.drawImage(red, Infinity, 0, 100, 50, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, 100, 50, 0, Infinity, 100, Infinity); -ctx.drawImage(red, Infinity, 0, 100, 50, 0, 0, Infinity, 50); -ctx.drawImage(red, Infinity, 0, 100, 50, 0, 0, Infinity, Infinity); -ctx.drawImage(red, Infinity, 0, 100, 50, 0, 0, 100, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, 50, 0, 0, 100, 50); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, 0, 0, 100, 50); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, Infinity, 0, 100, 50); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, Infinity, Infinity, 100, 50); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, Infinity, 0, Infinity, 50); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, Infinity, 0, 100, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, 0, Infinity, 100, 50); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, 0, Infinity, Infinity, 50); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, 0, Infinity, 100, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, 0, 0, Infinity, 50); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, 0, 0, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, Infinity, 0, 0, 100, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, 50, Infinity, 0, 100, 50); -ctx.drawImage(red, 0, Infinity, Infinity, 50, Infinity, Infinity, 100, 50); -ctx.drawImage(red, 0, Infinity, Infinity, 50, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, 0, Infinity, Infinity, 50, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, 50, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, 50, Infinity, 0, Infinity, 50); -ctx.drawImage(red, 0, Infinity, Infinity, 50, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, 50, Infinity, 0, 100, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, 50, 0, Infinity, 100, 50); -ctx.drawImage(red, 0, Infinity, Infinity, 50, 0, Infinity, Infinity, 50); -ctx.drawImage(red, 0, Infinity, Infinity, 50, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, 50, 0, Infinity, 100, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, 50, 0, 0, Infinity, 50); -ctx.drawImage(red, 0, Infinity, Infinity, 50, 0, 0, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, Infinity, 50, 0, 0, 100, Infinity); -ctx.drawImage(red, 0, Infinity, 100, Infinity, 0, 0, 100, 50); -ctx.drawImage(red, 0, Infinity, 100, Infinity, Infinity, 0, 100, 50); -ctx.drawImage(red, 0, Infinity, 100, Infinity, Infinity, Infinity, 100, 50); -ctx.drawImage(red, 0, Infinity, 100, Infinity, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, 0, Infinity, 100, Infinity, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, 100, Infinity, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, 0, Infinity, 100, Infinity, Infinity, 0, Infinity, 50); -ctx.drawImage(red, 0, Infinity, 100, Infinity, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, 100, Infinity, Infinity, 0, 100, Infinity); -ctx.drawImage(red, 0, Infinity, 100, Infinity, 0, Infinity, 100, 50); -ctx.drawImage(red, 0, Infinity, 100, Infinity, 0, Infinity, Infinity, 50); -ctx.drawImage(red, 0, Infinity, 100, Infinity, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, 100, Infinity, 0, Infinity, 100, Infinity); -ctx.drawImage(red, 0, Infinity, 100, Infinity, 0, 0, Infinity, 50); -ctx.drawImage(red, 0, Infinity, 100, Infinity, 0, 0, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, 100, Infinity, 0, 0, 100, Infinity); -ctx.drawImage(red, 0, Infinity, 100, 50, Infinity, 0, 100, 50); -ctx.drawImage(red, 0, Infinity, 100, 50, Infinity, Infinity, 100, 50); -ctx.drawImage(red, 0, Infinity, 100, 50, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, 0, Infinity, 100, 50, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, 100, 50, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, 0, Infinity, 100, 50, Infinity, 0, Infinity, 50); -ctx.drawImage(red, 0, Infinity, 100, 50, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, 100, 50, Infinity, 0, 100, Infinity); -ctx.drawImage(red, 0, Infinity, 100, 50, 0, Infinity, 100, 50); -ctx.drawImage(red, 0, Infinity, 100, 50, 0, Infinity, Infinity, 50); -ctx.drawImage(red, 0, Infinity, 100, 50, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, 100, 50, 0, Infinity, 100, Infinity); -ctx.drawImage(red, 0, Infinity, 100, 50, 0, 0, Infinity, 50); -ctx.drawImage(red, 0, Infinity, 100, 50, 0, 0, Infinity, Infinity); -ctx.drawImage(red, 0, Infinity, 100, 50, 0, 0, 100, Infinity); -ctx.drawImage(red, 0, 0, Infinity, Infinity, 0, 0, 100, 50); -ctx.drawImage(red, 0, 0, Infinity, Infinity, Infinity, 0, 100, 50); -ctx.drawImage(red, 0, 0, Infinity, Infinity, Infinity, Infinity, 100, 50); -ctx.drawImage(red, 0, 0, Infinity, Infinity, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, 0, 0, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, 0, Infinity, Infinity, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, 0, 0, Infinity, Infinity, Infinity, 0, Infinity, 50); -ctx.drawImage(red, 0, 0, Infinity, Infinity, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, 0, 0, Infinity, Infinity, Infinity, 0, 100, Infinity); -ctx.drawImage(red, 0, 0, Infinity, Infinity, 0, Infinity, 100, 50); -ctx.drawImage(red, 0, 0, Infinity, Infinity, 0, Infinity, Infinity, 50); -ctx.drawImage(red, 0, 0, Infinity, Infinity, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, 0, Infinity, Infinity, 0, Infinity, 100, Infinity); -ctx.drawImage(red, 0, 0, Infinity, Infinity, 0, 0, Infinity, 50); -ctx.drawImage(red, 0, 0, Infinity, Infinity, 0, 0, Infinity, Infinity); -ctx.drawImage(red, 0, 0, Infinity, Infinity, 0, 0, 100, Infinity); -ctx.drawImage(red, 0, 0, Infinity, 50, Infinity, 0, 100, 50); -ctx.drawImage(red, 0, 0, Infinity, 50, Infinity, Infinity, 100, 50); -ctx.drawImage(red, 0, 0, Infinity, 50, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, 0, 0, Infinity, 50, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, 0, Infinity, 50, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, 0, 0, Infinity, 50, Infinity, 0, Infinity, 50); -ctx.drawImage(red, 0, 0, Infinity, 50, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, 0, 0, Infinity, 50, Infinity, 0, 100, Infinity); -ctx.drawImage(red, 0, 0, Infinity, 50, 0, Infinity, 100, 50); -ctx.drawImage(red, 0, 0, Infinity, 50, 0, Infinity, Infinity, 50); -ctx.drawImage(red, 0, 0, Infinity, 50, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, 0, Infinity, 50, 0, Infinity, 100, Infinity); -ctx.drawImage(red, 0, 0, Infinity, 50, 0, 0, Infinity, 50); -ctx.drawImage(red, 0, 0, Infinity, 50, 0, 0, Infinity, Infinity); -ctx.drawImage(red, 0, 0, Infinity, 50, 0, 0, 100, Infinity); -ctx.drawImage(red, 0, 0, 100, Infinity, Infinity, 0, 100, 50); -ctx.drawImage(red, 0, 0, 100, Infinity, Infinity, Infinity, 100, 50); -ctx.drawImage(red, 0, 0, 100, Infinity, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, 0, 0, 100, Infinity, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, 0, 100, Infinity, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, 0, 0, 100, Infinity, Infinity, 0, Infinity, 50); -ctx.drawImage(red, 0, 0, 100, Infinity, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, 0, 0, 100, Infinity, Infinity, 0, 100, Infinity); -ctx.drawImage(red, 0, 0, 100, Infinity, 0, Infinity, 100, 50); -ctx.drawImage(red, 0, 0, 100, Infinity, 0, Infinity, Infinity, 50); -ctx.drawImage(red, 0, 0, 100, Infinity, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, 0, 100, Infinity, 0, Infinity, 100, Infinity); -ctx.drawImage(red, 0, 0, 100, Infinity, 0, 0, Infinity, 50); -ctx.drawImage(red, 0, 0, 100, Infinity, 0, 0, Infinity, Infinity); -ctx.drawImage(red, 0, 0, 100, Infinity, 0, 0, 100, Infinity); -ctx.drawImage(red, 0, 0, 100, 50, Infinity, Infinity, 100, 50); -ctx.drawImage(red, 0, 0, 100, 50, Infinity, Infinity, Infinity, 50); -ctx.drawImage(red, 0, 0, 100, 50, Infinity, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, 0, 100, 50, Infinity, Infinity, 100, Infinity); -ctx.drawImage(red, 0, 0, 100, 50, Infinity, 0, Infinity, 50); -ctx.drawImage(red, 0, 0, 100, 50, Infinity, 0, Infinity, Infinity); -ctx.drawImage(red, 0, 0, 100, 50, Infinity, 0, 100, Infinity); -ctx.drawImage(red, 0, 0, 100, 50, 0, Infinity, Infinity, 50); -ctx.drawImage(red, 0, 0, 100, 50, 0, Infinity, Infinity, Infinity); -ctx.drawImage(red, 0, 0, 100, 50, 0, Infinity, 100, Infinity); -ctx.drawImage(red, 0, 0, 100, 50, 0, 0, Infinity, Infinity); -_assertPixel(canvas, 50,25, 0,255,0,255); +fetch('/images/redtransparent.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, Infinity, 0); +ctx.drawImage(bitmap, -Infinity, 0); +ctx.drawImage(bitmap, NaN, 0); +ctx.drawImage(bitmap, 0, Infinity); +ctx.drawImage(bitmap, 0, -Infinity); +ctx.drawImage(bitmap, 0, NaN); +ctx.drawImage(bitmap, Infinity, Infinity); + ctx.drawImage(bitmap, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, -Infinity, 0, 100, 50); +ctx.drawImage(bitmap, NaN, 0, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, -Infinity, 100, 50); +ctx.drawImage(bitmap, 0, NaN, 100, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, -Infinity, 50); +ctx.drawImage(bitmap, 0, 0, NaN, 50); +ctx.drawImage(bitmap, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, -Infinity); +ctx.drawImage(bitmap, 0, 0, 100, NaN); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity); + ctx.drawImage(bitmap, Infinity, 0, 100, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, -Infinity, 0, 100, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, NaN, 0, 100, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, -Infinity, 100, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, NaN, 100, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, -Infinity, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, NaN, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, -Infinity, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, NaN, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, -Infinity, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, NaN, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, -Infinity, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, NaN, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, -Infinity, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, NaN, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, -Infinity); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, NaN); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, 0, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, Infinity, 50, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, 0, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, Infinity, 100, 50, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, 0, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, Infinity, 50, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, 0, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, Infinity, 0, 100, 50, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, Infinity, 50, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, Infinity, 100, 50, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, 0, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, Infinity, 50, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, Infinity, 0, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, 0, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, 0, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, 0, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, Infinity, 0, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, 50, Infinity, Infinity, 100, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, Infinity, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, Infinity, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, 50, Infinity, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, 50, Infinity, 0, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, Infinity, 0, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, 50, Infinity, 0, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, Infinity, 50); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, Infinity, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, 100, Infinity); +ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, Infinity, Infinity); + _assertPixel(canvas, 50,25, 0,255,0,255); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nowrap.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nowrap.html index 71b45a52d43..3fde82454a8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nowrap.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.nowrap.html @@ -21,10 +21,17 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -ctx.drawImage(document.getElementById('redtransparent.png'), -1950, 0, 2000, 50); -_assertPixelApprox(canvas, 45,25, 0,255,0,255, 2); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); -_assertPixelApprox(canvas, 55,25, 0,255,0,255, 2); +fetch('/images/redtransparent.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, -1950, 0, 2000, 50); + _assertPixelApprox(canvas, 45,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + _assertPixelApprox(canvas, 55,25, 0,255,0,255, 2); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.path.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.path.html index 7cc5afe0942..ebc7040fa4b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.path.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.path.html @@ -21,12 +21,18 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.rect(0, 0, 100, 50); -ctx.drawImage(document.getElementById('red.png'), 0, 0); -ctx.fill(); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + ctx.fill(); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); +}); }); </script> -<img src="/images/red.png" id="red.png" class="resource"> diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html index b01232d447d..5464e63e230 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.svg.html @@ -19,11 +19,17 @@ var t = async_test("drawImage() of an SVG image"); _addTest(function(canvas, ctx) { -ctx.drawImage(document.getElementById('green.svg'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +fetch('/images/green.svg') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); +}); }); </script> -<img src="/images/green.svg" id="green.svg" class="resource"> diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.transform.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.transform.html index c49070e69cb..2c8f930262b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.transform.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.transform.html @@ -22,8 +22,15 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.translate(100, 0); -ctx.drawImage(document.getElementById('red.png'), 0, 0); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +fetch('red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 0); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.html index 3831f3cc864..c3ce69d9e0b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.html @@ -21,10 +21,18 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 1, 0, 0, 100, 50); -ctx.drawImage(document.getElementById('red.png'), 10, 10, 1, 0, 0, 0, 100, 50); -ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 0, 0, 0, 100, 50); -_assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); +const red = async () => await createImageBitmap(await (await fetch("/images/red.png")).blob()); +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 10, 10, 0, 1, 0, 0, 100, 50); + ctx.drawImage(bitmap, 10, 10, 1, 0, 0, 0, 100, 50); + ctx.drawImage(bitmap, 10, 10, 0, 0, 0, 0, 100, 50); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); + }); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html index b37cd4d19da..403df3db463 100644 --- a/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html +++ b/tests/wpt/web-platform-tests/html/canvas/element/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html @@ -21,10 +21,17 @@ _addTest(function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -ctx.drawImage(document.getElementById('red-zerowidth.svg'), 0, 0, 100, 50); -ctx.drawImage(document.getElementById('red-zeroheight.svg'), 0, 0, 100, 50); -ctx.drawImage(document.getElementById('red-zerosize.svg'), 0, 0, 100, 50); -_assertPixel(canvas, 50,25, 0,255,0,255); +fetch('/images/red-zerowidth.svg') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 0, 100, 50); + ctx.drawImage(bitmap, 0, 0, 100, 50); + ctx.drawImage(bitmap, 0, 0, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); + }); +}); }); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html index 32c690d9784..cd7ee9cf2a5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.html @@ -24,22 +24,18 @@ await (function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js index 010fbd8bfa9..1c804a3961e 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.image.worker.js @@ -19,21 +19,17 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html index f057141895d..af1ca48e9d8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.html @@ -23,24 +23,20 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + + createImageBitmap(blob) + .then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js index 5607972635e..58ef4f3b9dc 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/compositing/2d.composite.globalAlpha.imagepattern.worker.js @@ -18,23 +18,19 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + + createImageBitmap(blob) + .then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.fillRect(0, 0, 100, 50); _assertPixelApprox(canvas, 50,25, 2,253,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html index e7034126cf9..508376cd60c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.html @@ -24,25 +24,20 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/green.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, 50); _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js index 244bc90fe7f..36770f779be 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.basic.worker.js @@ -19,24 +19,19 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/green.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, 50); _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html index ce6c758b3c8..4742fa21220 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.html @@ -24,25 +24,20 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/rgrg-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/rgrg-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 140, 20, 100, 50, 0, 0, 100, 50); _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js index 1522353ad6e..2780240bd88 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcepos.worker.js @@ -19,24 +19,19 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/rgrg-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/rgrg-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 140, 20, 100, 50, 0, 0, 100, 50); _assertPixelApprox(canvas, 0,0, 0,255,0,255, 2); _assertPixelApprox(canvas, 99,0, 0,255,0,255, 2); _assertPixelApprox(canvas, 0,49, 0,255,0,255, 2); _assertPixelApprox(canvas, 99,49, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html index 89acdb8e362..fd1c853b88a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.html @@ -24,17 +24,11 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/rgrg-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/rgrg-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0, 256, 256, 0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 51, 26); @@ -47,9 +41,10 @@ promise.then(function(response) { _assertPixelApprox(canvas, 80,20, 0,255,0,255, 2); _assertPixelApprox(canvas, 20,30, 0,255,0,255, 2); _assertPixelApprox(canvas, 80,30, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js index 6658e217505..2bb379e7ebb 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.9arg.sourcesize.worker.js @@ -19,17 +19,11 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/rgrg-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/rgrg-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0, 256, 256, 0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 51, 26); @@ -42,8 +36,9 @@ promise.then(function(response) { _assertPixelApprox(canvas, 80,20, 0,255,0,255, 2); _assertPixelApprox(canvas, 20,30, 0,255,0,255, 2); _assertPixelApprox(canvas, 80,30, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html index eb8476f7c3a..77134adfac5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.html @@ -25,22 +25,17 @@ await (function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0; -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js index 92cb23fe14d..07d8d9288df 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.alpha.worker.js @@ -20,21 +20,16 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0; -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html index ea4205abd44..2b33b7dd2d7 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.html @@ -22,22 +22,17 @@ var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/anim-poster-gr.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('anim-poster-gr.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js index 94ca08a075b..5f246feb260 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.animated.poster.worker.js @@ -17,21 +17,16 @@ t.step(function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/anim-poster-gr.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('anim-poster-gr.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html index 37aae52a539..d9890f3057b 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.html @@ -22,24 +22,19 @@ var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/broken.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/broken.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js index d3f1b7e4a11..51560c443db 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.broken.worker.js @@ -17,23 +17,18 @@ t.step(function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/broken.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/broken.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html index 970cb4d5a5a..994f601651d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.html @@ -26,22 +26,21 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.rect(-10, -10, 1, 1); ctx.clip(); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0); +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(-10, -10, 1, 1); + ctx.clip(); + ctx.drawImage(document.getElementById('red.png'), 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js index d30a05fa9db..1a462aff681 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.clip.worker.js @@ -21,21 +21,20 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.rect(-10, -10, 1, 1); ctx.clip(); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0); +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(-10, -10, 1, 1); + ctx.clip(); + ctx.drawImage(document.getElementById('red.png'), 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html index 90afbcbda8b..b4bc6f39ce9 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.html @@ -25,22 +25,17 @@ await (function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js index 0c4a7fe10a8..f6d4a5d284a 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.composite.worker.js @@ -20,21 +20,16 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html index c6a3fbcf005..98ca580e591 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.html @@ -22,22 +22,17 @@ var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); }); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js index 7b16cbb4f5f..7206099837d 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.floatsource.worker.js @@ -17,21 +17,16 @@ t.step(function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); }); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html index 1c207673963..bfe2a9c96f6 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.html @@ -24,17 +24,11 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/ggrr-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/ggrr-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 100, 78, 50, 50, 0, 50, 50, -50); ctx.drawImage(bitmap, 100, 128, 50, -50, 100, 50, -50, -50); _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); @@ -47,9 +41,10 @@ promise.then(function(response) { _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js index 5ca4d14ef63..aebbb34b3ed 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedest.worker.js @@ -19,17 +19,11 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/ggrr-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/ggrr-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 100, 78, 50, 50, 0, 50, 50, -50); ctx.drawImage(bitmap, 100, 128, 50, -50, 100, 50, -50, -50); _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); @@ -42,8 +36,9 @@ promise.then(function(response) { _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html index af274bf9bcd..46c571f1539 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.html @@ -24,17 +24,11 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/ggrr-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/ggrr-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 178, 50, -100, 0, 0, 50, 100); ctx.drawImage(bitmap, 0, 78, 50, 100, 50, 100, 50, -100); _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); @@ -47,9 +41,10 @@ promise.then(function(response) { _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js index 2a6cc81058d..4bfb5433b86 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativedir.worker.js @@ -19,17 +19,11 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/ggrr-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/ggrr-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 178, 50, -100, 0, 0, 50, 100); ctx.drawImage(bitmap, 0, 78, 50, 100, 50, 100, 50, -100); _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); @@ -42,8 +36,9 @@ promise.then(function(response) { _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html index 5a7b2af7f2a..4e60d7e5e91 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.html @@ -24,17 +24,11 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/ggrr-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/ggrr-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 100, 78, -100, 50, 0, 0, 50, 50); ctx.drawImage(bitmap, 100, 128, -100, -50, 50, 0, 50, 50); _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); @@ -47,9 +41,10 @@ promise.then(function(response) { _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js index ada79f9137d..6d0bec1a1db 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.negativesource.worker.js @@ -19,17 +19,11 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/ggrr-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/ggrr-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 100, 78, -100, 50, 0, 0, 50, 50); ctx.drawImage(bitmap, 100, 128, -100, -50, 50, 0, 50, 50); _assertPixelApprox(canvas, 1,1, 0,255,0,255, 2); @@ -42,8 +36,9 @@ promise.then(function(response) { _assertPixelApprox(canvas, 51,48, 0,255,0,255, 2); _assertPixelApprox(canvas, 25,25, 0,255,0,255, 2); _assertPixelApprox(canvas, 75,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html index 4a6a23b0fc3..dc932df3cd0 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.html @@ -24,17 +24,11 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/redtransparent.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/redtransparent.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, Infinity, 0); ctx.drawImage(bitmap, -Infinity, 0); ctx.drawImage(bitmap, NaN, 0); @@ -337,9 +331,10 @@ ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, Infinity, Infinity); ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, 100, Infinity); ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, Infinity, Infinity); _assertPixel(canvas, 50,25, 0,255,0,255); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js index a2e77832a20..7dee1805806 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nonfinite.worker.js @@ -19,17 +19,11 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/redtransparent.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/redtransparent.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, Infinity, 0); ctx.drawImage(bitmap, -Infinity, 0); ctx.drawImage(bitmap, NaN, 0); @@ -332,8 +326,9 @@ ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, Infinity, Infinity); ctx.drawImage(bitmap, 0, 0, 100, 50, 0, Infinity, 100, Infinity); ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, Infinity, Infinity); _assertPixel(canvas, 50,25, 0,255,0,255); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html index a45fa15daed..fc167879786 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.html @@ -24,24 +24,19 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/redtransparent.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/redtransparent.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, -1950, 0, 2000, 50); _assertPixelApprox(canvas, 45,25, 0,255,0,255, 2); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); _assertPixelApprox(canvas, 55,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js index ab3a9367dd3..539c6bf9772 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.nowrap.worker.js @@ -19,23 +19,18 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/redtransparent.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/redtransparent.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, -1950, 0, 2000, 50); _assertPixelApprox(canvas, 45,25, 0,255,0,255, 2); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); _assertPixelApprox(canvas, 55,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html index 938c014c7ab..3977880de19 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.html @@ -24,23 +24,18 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.rect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); ctx.fill(); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js index 55212909778..5132aa994f1 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.path.worker.js @@ -19,22 +19,17 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.rect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); ctx.fill(); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html index 559eb9420e6..d5317dd0063 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.html @@ -22,22 +22,17 @@ var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.svg'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/green.svg') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js index 2d832be3636..fda62017c26 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.svg.worker.js @@ -17,21 +17,16 @@ t.step(function() { var canvas = new OffscreenCanvas(100, 50); var ctx = canvas.getContext('2d'); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.svg'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('/images/green.svg') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html index e4d905474a4..bdbdb393cf8 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.html @@ -25,22 +25,17 @@ await (function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.translate(100, 0); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js index 2fc0caf1c31..a42f2785164 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.transform.worker.js @@ -20,21 +20,16 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.translate(100, 0); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { +fetch('red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); + }); +}); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html index d91a1960608..bdd68d20080 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.html @@ -24,24 +24,20 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 10, 10, 0, 1, 0, 0, 100, 50); - ctx.drawImage(bitmap, 10, 10, 1, 0, 0, 0, 100, 50); - ctx.drawImage(bitmap, 10, 10, 0, 0, 0, 0, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); +const red = async () => await createImageBitmap(await (await fetch("/images/red.png")).blob()); +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 10, 10, 0, 1, 0, 0, 100, 50); + ctx.drawImage(bitmap, 10, 10, 1, 0, 0, 0, 100, 50); + ctx.drawImage(bitmap, 10, 10, 0, 0, 0, 0, 100, 50); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); + }); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html index 25cd54b57a0..5a0d4fcda29 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.html @@ -24,24 +24,19 @@ var ctx = canvas.getContext('2d'); await (function(canvas, ctx) { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red-zerowidth.svg'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; +fetch('/images/red-zerowidth.svg') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 0, 100, 50); + ctx.drawImage(bitmap, 0, 0, 100, 50); + ctx.drawImage(bitmap, 0, 0, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); + }); }); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0, 100, 50); - ctx.drawImage(bitmap, 0, 0, 100, 50); - ctx.drawImage(bitmap, 0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }, t_fail); -}).then(t_pass, t_fail); })(canvas, ctx); +t.done(); }); </script> diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js index 1465d6c1bc2..729e0e97a4c 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.image.worker.js @@ -19,23 +19,18 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red-zerowidth.svg'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; +fetch('/images/red-zerowidth.svg') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 0, 100, 50); + ctx.drawImage(bitmap, 0, 0, 100, 50); + ctx.drawImage(bitmap, 0, 0, 100, 50); + _assertPixel(canvas, 50,25, 0,255,0,255); + }); }); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0, 100, 50); - ctx.drawImage(bitmap, 0, 0, 100, 50); - ctx.drawImage(bitmap, 0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }, t_fail); -}).then(t_pass, t_fail); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js index 654e9bdd744..2655e3e91f5 100644 --- a/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js +++ b/tests/wpt/web-platform-tests/html/canvas/offscreen/drawing-images-to-the-canvas/2d.drawImage.zerosource.worker.js @@ -19,23 +19,19 @@ var ctx = canvas.getContext('2d'); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); -var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; -}); -promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 10, 10, 0, 1, 0, 0, 100, 50); - ctx.drawImage(bitmap, 10, 10, 1, 0, 0, 0, 100, 50); - ctx.drawImage(bitmap, 10, 10, 0, 0, 0, 0, 100, 50); - _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); - }, t_fail); -}).then(t_pass, t_fail); +const red = async () => await createImageBitmap(await (await fetch("/images/red.png")).blob()); +fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 10, 10, 0, 1, 0, 0, 100, 50); + ctx.drawImage(bitmap, 10, 10, 1, 0, 0, 0, 100, 50); + ctx.drawImage(bitmap, 10, 10, 0, 0, 0, 0, 100, 50); + _assertPixelApprox(canvas, 50,25, 0,255,0,255, 2); + }); + }); +t.done(); }); done(); diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/compositing.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/compositing.yaml index c0b7b83e001..e808206bdab 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/compositing.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/compositing.yaml @@ -36,19 +36,6 @@ @assert pixel 50,25 ==~ 2,253,0,255; expected: green -- name: 2d.composite.globalAlpha.image - images: - - red.png - canvasType: - ['HTMLCanvas'] - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations - ctx.drawImage(document.getElementById('red.png'), 0, 0); - @assert pixel 50,25 ==~ 2,253,0,255; - expected: green - - name: 2d.composite.globalAlpha.canvas canvasType: ['HTMLCanvas'] code: | @@ -66,19 +53,6 @@ @assert pixel 50,25 ==~ 2,253,0,255; expected: green -- name: 2d.composite.globalAlpha.imagepattern - images: - - red.png - canvasType: ['HTMLCanvas'] - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = ctx.createPattern(document.getElementById('red.png'), 'no-repeat'); - ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 ==~ 2,253,0,255; - expected: green - - name: 2d.composite.globalAlpha.canvaspattern canvasType: ['HTMLCanvas'] code: | @@ -181,21 +155,17 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); @assert pixel 50,25 ==~ 2,253,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.composite.globalAlpha.canvas canvasType: ['OffscreenCanvas'] @@ -215,23 +185,19 @@ code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + + createImageBitmap(blob) + .then(bitmap => { ctx.fillStyle = ctx.createPattern(bitmap, 'no-repeat'); ctx.globalAlpha = 0.01; // avoid any potential alpha=0 optimisations ctx.fillRect(0, 0, 100, 50); @assert pixel 50,25 ==~ 2,253,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.composite.globalAlpha.canvaspattern canvasType: ['OffscreenCanvas'] diff --git a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/drawing-images-to-the-canvas.yaml b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/drawing-images-to-the-canvas.yaml index e263bf0253d..4442f1ad481 100644 --- a/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/drawing-images-to-the-canvas.yaml +++ b/tests/wpt/web-platform-tests/html/canvas/tools/yaml-new/drawing-images-to-the-canvas.yaml @@ -35,55 +35,6 @@ @assert pixel 99,49 ==~ 0,255,0,255; expected: green -- name: 2d.drawImage.9arg.basic - canvasType: ['HTMLCanvas'] - images: - - green.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('green.png'), 0, 0, 100, 50, 0, 0, 100, 50); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.9arg.sourcepos - canvasType: ['HTMLCanvas'] - images: - - rgrg-256x256.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('rgrg-256x256.png'), 140, 20, 100, 50, 0, 0, 100, 50); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.9arg.sourcesize - canvasType: ['HTMLCanvas'] - images: - - rgrg-256x256.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('rgrg-256x256.png'), 0, 0, 256, 256, 0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 51, 26); - ctx.fillRect(49, 24, 51, 26); - @assert pixel 0,0 ==~ 0,255,0,255; - @assert pixel 99,0 ==~ 0,255,0,255; - @assert pixel 0,49 ==~ 0,255,0,255; - @assert pixel 99,49 ==~ 0,255,0,255; - @assert pixel 20,20 ==~ 0,255,0,255; - @assert pixel 80,20 ==~ 0,255,0,255; - @assert pixel 20,30 ==~ 0,255,0,255; - @assert pixel 80,30 ==~ 0,255,0,255; - expected: green - - name: 2d.drawImage.9arg.destpos canvasType: ['HTMLCanvas'] images: @@ -198,114 +149,6 @@ code: | @assert throws TypeError ctx.drawImage(document.createElement('p'), 0, 0); -- name: 2d.drawImage.floatsource - canvasType: ['HTMLCanvas'] - images: - - green.png - code: | - ctx.drawImage(document.getElementById('green.png'), 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.zerosource - desc: drawImage with zero-sized source rectangle draws nothing without exception - canvasType: ['HTMLCanvas'] - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 1, 0, 0, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 10, 10, 1, 0, 0, 0, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 10, 10, 0, 0, 0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.zerosource.image - desc: drawImage with zero-sized source rectangle from image draws nothing without exception - canvasType: ['HTMLCanvas'] - images: - - red-zerowidth.svg - - red-zeroheight.svg - - red-zerosize.svg - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('red-zerowidth.svg'), 0, 0, 100, 50); - ctx.drawImage(document.getElementById('red-zeroheight.svg'), 0, 0, 100, 50); - ctx.drawImage(document.getElementById('red-zerosize.svg'), 0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - expected: green - -- name: 2d.drawImage.negativesource - desc: Negative source width/height represents the correct rectangle - canvasType: ['HTMLCanvas'] - mozilla: {throws: !!null ''} - images: - - ggrr-256x256.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 78, -100, 50, 0, 0, 50, 50); - ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 128, -100, -50, 50, 0, 50, 50); - @assert pixel 1,1 ==~ 0,255,0,255; - @assert pixel 1,48 ==~ 0,255,0,255; - @assert pixel 98,1 ==~ 0,255,0,255; - @assert pixel 98,48 ==~ 0,255,0,255; - @assert pixel 48,1 ==~ 0,255,0,255; - @assert pixel 48,48 ==~ 0,255,0,255; - @assert pixel 51,1 ==~ 0,255,0,255; - @assert pixel 51,48 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.negativedest - desc: Negative destination width/height represents the correct rectangle - canvasType: ['HTMLCanvas'] - mozilla: {throws: !!null ''} - images: - - ggrr-256x256.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 78, 50, 50, 0, 50, 50, -50); - ctx.drawImage(document.getElementById('ggrr-256x256.png'), 100, 128, 50, -50, 100, 50, -50, -50); - @assert pixel 1,1 ==~ 0,255,0,255; - @assert pixel 1,48 ==~ 0,255,0,255; - @assert pixel 98,1 ==~ 0,255,0,255; - @assert pixel 98,48 ==~ 0,255,0,255; - @assert pixel 48,1 ==~ 0,255,0,255; - @assert pixel 48,48 ==~ 0,255,0,255; - @assert pixel 51,1 ==~ 0,255,0,255; - @assert pixel 51,48 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.negativedir - desc: Negative dimensions do not affect the direction of the image - canvasType: ['HTMLCanvas'] - mozilla: {throws: !!null ''} - images: - - ggrr-256x256.png - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('ggrr-256x256.png'), 0, 178, 50, -100, 0, 0, 50, 100); - ctx.drawImage(document.getElementById('ggrr-256x256.png'), 0, 78, 50, 100, 50, 100, 50, -100); - @assert pixel 1,1 ==~ 0,255,0,255; - @assert pixel 1,48 ==~ 0,255,0,255; - @assert pixel 98,1 ==~ 0,255,0,255; - @assert pixel 98,48 ==~ 0,255,0,255; - @assert pixel 48,1 ==~ 0,255,0,255; - @assert pixel 48,48 ==~ 0,255,0,255; - @assert pixel 51,1 ==~ 0,255,0,255; - @assert pixel 51,48 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - expected: green - - name: 2d.drawImage.outsidesource DISABLED: fix this to match the current spec (transparent black outside source) canvasType: ['HTMLCanvas'] @@ -403,17 +246,6 @@ @assert pixel 50,25 ==~ 0,255,0,255; expected: green -- name: 2d.drawImage.broken - canvasType: ['HTMLCanvas'] - images: - - broken.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('broken.png'); - @assert throws INVALID_STATE_ERR ctx.drawImage(img, 0, 0); - expected: green - - name: 2d.drawImage.nonexistent canvasType: ['HTMLCanvas'] images: @@ -439,16 +271,6 @@ canvas2.height = 0; @assert throws INVALID_STATE_ERR ctx.drawImage(canvas2, 0, 0); -- name: 2d.drawImage.svg - desc: drawImage() of an SVG image - canvasType: ['HTMLCanvas'] - images: - - green.svg - code: | - ctx.drawImage(document.getElementById('green.svg'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - - name: 2d.drawImage.animated.gif desc: drawImage() of an animated GIF draws the first frame canvasType: ['HTMLCanvas'] @@ -475,108 +297,8 @@ }), 500); expected: green -- name: 2d.drawImage.animated.poster - desc: drawImage() of an APNG draws the poster frame - canvasType: ['HTMLCanvas'] - images: - - anim-poster-gr.png - code: | - ctx.drawImage(document.getElementById('anim-poster-gr.png'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo - expected: green - -- name: 2d.drawImage.path - canvasType: ['HTMLCanvas'] - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.rect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('red.png'), 0, 0); - ctx.fill(); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.transform - canvasType: ['HTMLCanvas'] - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 0); - ctx.drawImage(document.getElementById('red.png'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - # TODO: drawImage shadows -- name: 2d.drawImage.alpha - canvasType: ['HTMLCanvas'] - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalAlpha = 0; - ctx.drawImage(document.getElementById('red.png'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.clip - canvasType: ['HTMLCanvas'] - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.rect(-10, -10, 1, 1); - ctx.clip(); - ctx.drawImage(document.getElementById('red.png'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.composite - canvasType: ['HTMLCanvas'] - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = 'destination-over'; - ctx.drawImage(document.getElementById('red.png'), 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.nowrap - desc: Stretched images do not get pixels wrapping around the edges - canvasType: ['HTMLCanvas'] - images: - - redtransparent.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.drawImage(document.getElementById('redtransparent.png'), -1950, 0, 2000, 50); - @assert pixel 45,25 ==~ 0,255,0,255; - @assert pixel 50,25 ==~ 0,255,0,255; - @assert pixel 55,25 ==~ 0,255,0,255; - expected: green - -- name: 2d.drawImage.nonfinite - desc: drawImage() with Infinity/NaN is ignored - canvasType: ['HTMLCanvas'] - images: - - red.png - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var red = document.getElementById('red.png'); - @nonfinite ctx.drawImage(<red>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); - @nonfinite ctx.drawImage(<red>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); - @nonfinite ctx.drawImage(<red>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); - @assert pixel 50,25 == 0,255,0,255; - expected: green - - name: 2d.drawImage.3arg canvasType: ['OffscreenCanvas'] timeout: long @@ -661,78 +383,59 @@ }).then(t_pass, t_fail); - name: 2d.drawImage.9arg.basic - canvasType: ['OffscreenCanvas'] images: - green.png timeout: long code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/green.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0, 100, 50, 0, 0, 100, 50); @assert pixel 0,0 ==~ 0,255,0,255; @assert pixel 99,0 ==~ 0,255,0,255; @assert pixel 0,49 ==~ 0,255,0,255; @assert pixel 99,49 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.9arg.sourcepos - canvasType: ['OffscreenCanvas'] images: - rgrg-256x256.png timeout: long code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/rgrg-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/rgrg-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 140, 20, 100, 50, 0, 0, 100, 50); @assert pixel 0,0 ==~ 0,255,0,255; @assert pixel 99,0 ==~ 0,255,0,255; @assert pixel 0,49 ==~ 0,255,0,255; @assert pixel 99,49 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.9arg.sourcesize - canvasType: ['OffscreenCanvas'] images: - rgrg-256x256.png timeout: long code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/rgrg-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/rgrg-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0, 256, 256, 0, 0, 100, 50); ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 51, 26); @@ -745,8 +448,9 @@ @assert pixel 80,20 ==~ 0,255,0,255; @assert pixel 20,30 ==~ 0,255,0,255; @assert pixel 80,30 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.9arg.destpos canvasType: ['OffscreenCanvas'] @@ -865,55 +569,43 @@ @assert throws INVALID_STATE_ERR ctx.drawImage(offscreenCanvas2, 0, 0); - name: 2d.drawImage.floatsource - canvasType: ['OffscreenCanvas'] timeout: long code: | - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; + fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; + }); }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 10.1, 10.1, 0.1, 0.1, 0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + Expected: green - name: 2d.drawImage.zerosource desc: drawImage with zero-sized source rectangle draws nothing without exception - canvasType: ['OffscreenCanvas'] timeout: long images: - red.png code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 10, 10, 0, 1, 0, 0, 100, 50); - ctx.drawImage(bitmap, 10, 10, 1, 0, 0, 0, 100, 50); - ctx.drawImage(bitmap, 10, 10, 0, 0, 0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + const red = async () => await createImageBitmap(await (await fetch("/images/red.png")).blob()); + fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 10, 10, 0, 1, 0, 0, 100, 50); + ctx.drawImage(bitmap, 10, 10, 1, 0, 0, 0, 100, 50); + ctx.drawImage(bitmap, 10, 10, 0, 0, 0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; + }); + }); + expected: green - name: 2d.drawImage.zerosource.image desc: drawImage with zero-sized source rectangle from image draws nothing without exception - canvasType: ['OffscreenCanvas'] images: - red-zerowidth.svg - red-zeroheight.svg @@ -922,27 +614,21 @@ code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red-zerowidth.svg'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; + fetch('/images/red-zerowidth.svg') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.drawImage(bitmap, 0, 0, 100, 50); + ctx.drawImage(bitmap, 0, 0, 100, 50); + ctx.drawImage(bitmap, 0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + }); }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0, 100, 50); - ctx.drawImage(bitmap, 0, 0, 100, 50); - ctx.drawImage(bitmap, 0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + expected: green - name: 2d.drawImage.negativesource desc: Negative source width/height represents the correct rectangle - canvasType: ['OffscreenCanvas'] mozilla: {throws: !!null ''} images: - ggrr-256x256.png @@ -950,17 +636,11 @@ code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/ggrr-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/ggrr-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 100, 78, -100, 50, 0, 0, 50, 50); ctx.drawImage(bitmap, 100, 128, -100, -50, 50, 0, 50, 50); @assert pixel 1,1 ==~ 0,255,0,255; @@ -973,12 +653,12 @@ @assert pixel 51,48 ==~ 0,255,0,255; @assert pixel 25,25 ==~ 0,255,0,255; @assert pixel 75,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.negativedest desc: Negative destination width/height represents the correct rectangle - canvasType: ['OffscreenCanvas'] mozilla: {throws: !!null ''} timeout: long images: @@ -986,17 +666,11 @@ code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/ggrr-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/ggrr-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 100, 78, 50, 50, 0, 50, 50, -50); ctx.drawImage(bitmap, 100, 128, 50, -50, 100, 50, -50, -50); @assert pixel 1,1 ==~ 0,255,0,255; @@ -1009,12 +683,12 @@ @assert pixel 51,48 ==~ 0,255,0,255; @assert pixel 25,25 ==~ 0,255,0,255; @assert pixel 75,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.negativedir desc: Negative dimensions do not affect the direction of the image - canvasType: ['OffscreenCanvas'] mozilla: {throws: !!null ''} timeout: long images: @@ -1022,17 +696,11 @@ code: | ctx.fillStyle = '#f00'; ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/ggrr-256x256.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/ggrr-256x256.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 178, 50, -100, 0, 0, 50, 100); ctx.drawImage(bitmap, 0, 78, 50, 100, 50, 100, 50, -100); @assert pixel 1,1 ==~ 0,255,0,255; @@ -1045,8 +713,9 @@ @assert pixel 51,48 ==~ 0,255,0,255; @assert pixel 25,25 ==~ 0,255,0,255; @assert pixel 75,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.outsidesource DISABLED: fix this to match the current spec (transparent black outside source) @@ -1086,100 +755,76 @@ @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 0, 0, 5, -5, 0, 0, 100, 50); @assert throws INDEX_SIZE_ERR ctx.drawImage(bitmap1, 110, 60, -20, -20, 0, 0, 100, 50); @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.broken - canvasType: ['OffscreenCanvas'] timeout: long code: | - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/broken.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/broken.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.drawImage(bitmap, 0, 0); @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.svg desc: drawImage() of an SVG image - canvasType: ['OffscreenCanvas'] timeout: long code: | - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/green.svg'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/green.svg') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.animated.poster desc: drawImage() of an APNG draws the poster frame - canvasType: ['OffscreenCanvas'] images: - anim-poster-gr.png timeout: long code: | - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/anim-poster-gr.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('anim-poster-gr.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); @assert pixel 50,25 ==~ 0,255,0,255; @moz-todo - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.path - canvasType: ['OffscreenCanvas'] timeout: long code: | ctx.fillStyle = '#0f0'; ctx.rect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); ctx.fill(); @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.transform - canvasType: ['OffscreenCanvas'] images: - red.png timeout: long @@ -1187,24 +832,18 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.translate(100, 0); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.alpha - canvasType: ['OffscreenCanvas'] images: - red.png timeout: long @@ -1212,24 +851,18 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalAlpha = 0; - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.clip - canvasType: ['OffscreenCanvas'] images: - red.png timeout: long @@ -1238,24 +871,22 @@ ctx.fillRect(0, 0, 100, 50); ctx.rect(-10, -10, 1, 1); ctx.clip(); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { - ctx.drawImage(bitmap, 0, 0); + fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(-10, -10, 1, 1); + ctx.clip(); + ctx.drawImage(document.getElementById('red.png'), 0, 0); @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.composite - canvasType: ['OffscreenCanvas'] images: - red.png timeout: long @@ -1263,72 +894,55 @@ ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); ctx.globalCompositeOperation = 'destination-over'; - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/red.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/red.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, 0, 0); @assert pixel 50,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.nowrap desc: Stretched images do not get pixels wrapping around the edges - canvasType: ['OffscreenCanvas'] images: - redtransparent.png timeout: long code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/redtransparent.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/redtransparent.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { ctx.drawImage(bitmap, -1950, 0, 2000, 50); @assert pixel 45,25 ==~ 0,255,0,255; @assert pixel 50,25 ==~ 0,255,0,255; @assert pixel 55,25 ==~ 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green - name: 2d.drawImage.nonfinite desc: drawImage() with Infinity/NaN is ignored - canvasType: ['OffscreenCanvas'] images: - red.png timeout: long code: | ctx.fillStyle = '#0f0'; ctx.fillRect(0, 0, 100, 50); - var promise = new Promise(function(resolve, reject) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", '/images/redtransparent.png'); - xhr.responseType = 'blob'; - xhr.send(); - xhr.onload = function() { - resolve(xhr.response); - }; - }); - promise.then(function(response) { - createImageBitmap(response).then(bitmap => { + fetch('/images/redtransparent.png') + .then(response => response.blob()) + .then(blob => { + createImageBitmap(blob) + .then(bitmap => { @nonfinite ctx.drawImage(<bitmap>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); @nonfinite ctx.drawImage(<bitmap>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); @nonfinite ctx.drawImage(<bitmap>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <100 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); @assert pixel 50,25 == 0,255,0,255; - }, t_fail); - }).then(t_pass, t_fail); + }); + }); + expected: green diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html new file mode 100644 index 00000000000..bf58630816a --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/the-selectmenu-element/selectmenu-value-option.tentative.html @@ -0,0 +1,20 @@ +<!DOCTYPE html> +<link rel=author href="mailto:jarhar@chromium.org"> +<link rel=help href="https://github.com/openui/open-ui/issues/664"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<selectmenu id=selectmenu> + <option id=optone>innertext one</option> + <option id=opttwo value=valueattribute>innertext two</option> +</selectmenu> + +<script> +test(() => { + assert_equals(selectmenu.value, 'innertext one', + 'The first option should be selected initially.'); + selectmenu.value = 'valueattribute'; + assert_equals(selectmenu.value, 'valueattribute', + 'Assigning value should look at the options value, not innertext'); +}, 'selectmenu.value should reflect option.value'); +</script> diff --git a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-target-element-disabled.html b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-target-element-disabled.html index 92c28a4b6c5..59392f428ae 100644 --- a/tests/wpt/web-platform-tests/html/semantics/popovers/popover-target-element-disabled.html +++ b/tests/wpt/web-platform-tests/html/semantics/popovers/popover-target-element-disabled.html @@ -124,3 +124,53 @@ test(() => { 'The outer popover be should be closed when the hierarchy is broken.'); }, 'Disconnecting popover*target buttons when popovers are open should close all popovers.'); </script> + +<div id=outerpopover7 popover=auto> + <button id=togglebutton7 popovertarget=innerpopover7>toggle popover</button> +</div> +<div id=innerpopover7 popover=auto>popover</div> +<script> +test(() => { + outerpopover7.showPopover(); + innerpopover7.showPopover(); + assert_true(innerpopover7.matches(':open'), + 'The inner popover should be able to open successfully.'); + assert_true(outerpopover7.matches(':open'), + 'The outer popover should stay open when opening the inner one.'); + + togglebutton7.setAttribute('popovertarget', 'otherpopover7'); + assert_false(innerpopover7.matches(':open'), + 'The inner popover be should be closed when the hierarchy is broken.'); + assert_false(outerpopover7.matches(':open'), + 'The outer popover be should be closed when the hierarchy is broken.'); +}, 'Changing the popovertarget attribute to break the chain should close all popovers.'); +</script> + +<div id=outerpopover8 popover=auto> + <div id=middlepopover8 popover=auto> + <div id=innerpopover8 popover=auto>hello</div> + </div> +</div> +<div id=otherpopover8 popover=auto>other popover</div> +<button id=togglebutton8 popovertarget=middlepopover8>other button</div> +<script> +test(() => { + outerpopover8.showPopover(); + middlepopover8.showPopover(); + innerpopover8.showPopover(); + assert_true(innerpopover8.matches(':open'), + 'The inner popover should be able to open successfully.'); + assert_true(middlepopover8.matches(':open'), + 'The middle popover should stay open when opening the inner one.'); + assert_true(outerpopover8.matches(':open'), + 'The outer popover should stay open when opening the inner one.'); + + togglebutton8.setAttribute('popovertarget', 'otherpopover8'); + assert_true(innerpopover8.matches(':open'), + 'The inner popover should remain open.'); + assert_true(middlepopover8.matches(':open'), + 'The middle popover should remain open.'); + assert_true(outerpopover8.matches(':open'), + 'The outer popover should remain open.'); +}, `Modifying popovertarget on a button which doesn't break the chain shouldn't close any popovers.`); +</script> diff --git a/tests/wpt/web-platform-tests/html/tools/update_html5lib_tests.py b/tests/wpt/web-platform-tests/html/tools/update_html5lib_tests.py index f1a99416fc8..7ad9bc6f862 100644 --- a/tests/wpt/web-platform-tests/html/tools/update_html5lib_tests.py +++ b/tests/wpt/web-platform-tests/html/tools/update_html5lib_tests.py @@ -1,5 +1,3 @@ -from __future__ import print_function - import glob import hashlib import itertools diff --git a/tests/wpt/web-platform-tests/infrastructure/assumptions/tools/ahem-generate-table.py b/tests/wpt/web-platform-tests/infrastructure/assumptions/tools/ahem-generate-table.py index 8790da02e27..314279f6710 100644 --- a/tests/wpt/web-platform-tests/infrastructure/assumptions/tools/ahem-generate-table.py +++ b/tests/wpt/web-platform-tests/infrastructure/assumptions/tools/ahem-generate-table.py @@ -1,5 +1,3 @@ -from __future__ import print_function, unicode_literals - import itertools import unicodedata diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-event-listener.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-event-listener.html index 6349c28b320..f866a1dfd83 100644 --- a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-event-listener.html +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-event-listener.html @@ -17,9 +17,20 @@ test_self_event_listener(t => { img.addEventListener("load", () => { busy_wait(); }); + img.id = "image"; document.body.appendChild(img); t.add_cleanup(() => img.remove()); -}, "IMG.onload"); +}, "IMG#image.onload"); + +test_self_event_listener(t => { + const img = document.createElement("img"); + img.src = "/images/green.png"; + img.addEventListener("load", () => { + busy_wait(); + }); + document.body.appendChild(img); + t.add_cleanup(() => img.remove()); +}, "IMG[src=/images/green.png].onload"); test_self_event_listener(t => { const xhr = new XMLHttpRequest(); diff --git a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-first-ui-event.html b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-first-ui-event.html index f2d8dac3f11..b30b645d2fa 100644 --- a/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-first-ui-event.html +++ b/tests/wpt/web-platform-tests/long-animation-frame/tentative/loaf-first-ui-event.html @@ -91,7 +91,7 @@ promise_test(async t => { document.body.appendChild(img); t.add_cleanup(() => img.remove()); return promise; - }, s => s.name === "IMG.onload", t); + }, s => s.name === "IMG[src=/images/green.png].onload", t); const [entry] = await entryPromise; assert_equals(entry.firstUIEventTimestamp, 0); diff --git a/tests/wpt/web-platform-tests/png/cicp-chunk.html b/tests/wpt/web-platform-tests/png/cicp-chunk.html index 4afc262dcf5..8add5d602ea 100644 --- a/tests/wpt/web-platform-tests/png/cicp-chunk.html +++ b/tests/wpt/web-platform-tests/png/cicp-chunk.html @@ -36,5 +36,5 @@ img.onload = () => { assert_approx_equals(pixel[3], pixel_expected[3], epsilon); }, {colorSpace: "display-p3"}); }; -img.src = "./images/cicp.png"; +img.src = "support/cicp-display-p3.png"; </script> diff --git a/tests/wpt/web-platform-tests/images/cicp.png b/tests/wpt/web-platform-tests/png/support/cicp-display-p3.png Binary files differindex 8fa0ce2123c..8fa0ce2123c 100644 --- a/tests/wpt/web-platform-tests/images/cicp.png +++ b/tests/wpt/web-platform-tests/png/support/cicp-display-p3.png diff --git a/tests/wpt/web-platform-tests/images/trns.png b/tests/wpt/web-platform-tests/png/support/trns-high-bits-set.png Binary files differindex 4e309a89a8a..4e309a89a8a 100644 --- a/tests/wpt/web-platform-tests/images/trns.png +++ b/tests/wpt/web-platform-tests/png/support/trns-high-bits-set.png diff --git a/tests/wpt/web-platform-tests/png/trns-chunk.html b/tests/wpt/web-platform-tests/png/trns-chunk.html index 652cda0e320..3a24753382b 100644 --- a/tests/wpt/web-platform-tests/png/trns-chunk.html +++ b/tests/wpt/web-platform-tests/png/trns-chunk.html @@ -33,5 +33,5 @@ img.onload = () => { assert_approx_equals(pixel[3], pixel_expected[3], epsilon); }); }; -img.src = "../images/trns.png"; +img.src = "support/trns-high-bits-set.png"; </script> diff --git a/tests/wpt/web-platform-tests/scheduler/tentative/yield/yield-priority-idle-callbacks.html b/tests/wpt/web-platform-tests/scheduler/tentative/yield/yield-priority-idle-callbacks.html new file mode 100644 index 00000000000..d47e8c5eba2 --- /dev/null +++ b/tests/wpt/web-platform-tests/scheduler/tentative/yield/yield-priority-idle-callbacks.html @@ -0,0 +1,60 @@ +<!doctype html> +<title>Scheduler: yield inheritance in requestIdleCallback</title> +<link rel="help" href="https://github.com/WICG/scheduling-apis"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> + +<script> +'use strict'; + +// Queues a requestIdleCallback that schedules 2 user-visible tasks, 2 +// background tasks, another requestIdleCallback, and then yields 3 times using +// `yieldParams`. +// +// Returns {tasks, ids} where `tasks` is an array of promises associated with +// the tasks and `ids` is an array of task ids appended to by the scheduled +// tasks. +function postTestTasks(yieldParams) { + const ids = []; + const task = new Promise(resolve => { + requestIdleCallback(async () => { + ids.push('i1'); + + const subtasks = []; + subtasks.push(scheduler.postTask(() => { ids.push('uv1'); })); + subtasks.push(scheduler.postTask(() => { ids.push('uv2'); })); + subtasks.push(scheduler.postTask(() => { ids.push('bg1'); }, {priority: 'background'})); + subtasks.push(scheduler.postTask(() => { ids.push('bg2'); }, {priority: 'background'})); + subtasks.push(new Promise(resolve => { + requestIdleCallback(() => { + ids.push('i2'); + resolve(); + }); + })); + + for (let i = 1; i <= 3; i++) { + await scheduler.yield(yieldParams); + ids.push('y' + i); + } + await Promise.all(subtasks); + resolve(); + }); + }); + return {task, ids}; +} + +const expected_inherited_task_order = 'i1,uv1,uv2,y1,y2,y3,bg1,bg2,i2'; + +promise_test(async t => { + const {task, ids} = postTestTasks({priority: "inherit"}); + await task; + assert_equals(ids.join(), expected_inherited_task_order); +}, 'requestIdleCallback() yields at background priority when inheriting priority'); + +promise_test(async t => { + const {task, ids} = postTestTasks({signal: "inherit"}); + await task; + assert_equals(ids.join(), expected_inherited_task_order); +}, 'requestIdleCallback() yields at background priority when inheriting signal'); + +</script> diff --git a/tests/wpt/web-platform-tests/service-workers/cache-storage/cache-storage-buckets.https.any.js b/tests/wpt/web-platform-tests/service-workers/cache-storage/cache-storage-buckets.https.any.js index 0b5ef7b298d..fd59ba464db 100644 --- a/tests/wpt/web-platform-tests/service-workers/cache-storage/cache-storage-buckets.https.any.js +++ b/tests/wpt/web-platform-tests/service-workers/cache-storage/cache-storage-buckets.https.any.js @@ -1,7 +1,8 @@ // META: title=Cache.put // META: global=window,worker // META: script=/common/get-host-info.sub.js -// META: script=./resources/test-helpers.js +// META: script=resources/test-helpers.js +// META: script=/storage/buckets/resources/util.js // META: timeout=long var test_url = 'https://example.com/foo'; @@ -9,14 +10,10 @@ var test_body = 'Hello world!'; const { REMOTE_HOST } = get_host_info(); promise_test(async function(test) { + await prepareForBucketTest(test); var inboxBucket = await navigator.storageBuckets.open('inbox'); var draftsBucket = await navigator.storageBuckets.open('drafts'); - test.add_cleanup(async function() { - await navigator.storageBuckets.delete('inbox'); - await navigator.storageBuckets.delete('drafts'); - }); - const cacheName = 'attachments'; const cacheKey = 'receipt1.txt'; @@ -43,14 +40,10 @@ promise_test(async function(test) { }, 'caches from different buckets have different contents'); promise_test(async function(test) { + await prepareForBucketTest(test); var inboxBucket = await navigator.storageBuckets.open('inbox'); var draftBucket = await navigator.storageBuckets.open('drafts'); - test.add_cleanup(async function() { - await navigator.storageBuckets.delete('inbox'); - await navigator.storageBuckets.delete('drafts'); - }); - var caches = inboxBucket.caches; var attachments = await caches.open('attachments'); await attachments.put('receipt1.txt', new Response('bread x 2')); diff --git a/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/presentation-request.html b/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/presentation-request.html index 62829556bb4..18475a3d67f 100644 --- a/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/presentation-request.html +++ b/tests/wpt/web-platform-tests/speculation-rules/prerender/resources/presentation-request.html @@ -1,6 +1,7 @@ <!DOCTYPE html> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="utils.js"></script> <script> assert_true(document.prerendering); diff --git a/tests/wpt/web-platform-tests/speech-api/SpeechSynthesisEvent-properties.html b/tests/wpt/web-platform-tests/speech-api/SpeechSynthesisEvent-properties.html new file mode 100644 index 00000000000..f6c8f5fc321 --- /dev/null +++ b/tests/wpt/web-platform-tests/speech-api/SpeechSynthesisEvent-properties.html @@ -0,0 +1,25 @@ +<!doctype html> +<title>Properties of SpeechSynthesisEvent</title> +<link rel="help" href="https://wicg.github.io/speech-api/#utterance-events"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<body> +<script> +// Written for https://github.com/WICG/speech-api/issues/103 +promise_test(async (t) => { + const utterance = new SpeechSynthesisUtterance('test'); + const eventWatcher = new EventWatcher(t, utterance, ['start', 'end', 'error']); + await test_driver.bless('speechSynthesis.speak', + () => { speechSynthesis.speak(utterance) }); + const events = await eventWatcher.wait_for(['start', 'end'], { record: 'all' }); + assert_equals(events.length, 2, 'number of events'); + for (const event of events) { + assert_true(event instanceof SpeechSynthesisEvent, 'is SpeechSynthesisEvent'); + assert_false(event.bubbles, 'bubbles'); + assert_false(event.cancelable, 'cancelable'); + assert_equals(event.utterance, utterance, 'utterance'); + } +}); +</script> diff --git a/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js b/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js index 82794061bd0..f0aadf4828d 100644 --- a/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js +++ b/tests/wpt/web-platform-tests/storage-access-api/storage-access-permission.sub.https.window.js @@ -4,16 +4,17 @@ 'use strict'; (async function() { - // This is cross-domain from the current document. + // These are cross-domain from the current document. const wwwAlt = "https://{{hosts[alt][www]}}:{{ports[https][0]}}"; + const www1Alt = "https://{{hosts[alt][www1]}}:{{ports[https][0]}}"; + const responder_html = "/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js"; if (window === window.top) { // Test the interaction between two (same-origin) iframes. promise_test(async (t) => { - const responder_html = `${wwwAlt}/storage-access-api/resources/script-with-cookie-header.py?script=embedded_responder.js`; const [frame1, frame2] = await Promise.all([ - CreateFrame(responder_html), - CreateFrame(responder_html), + CreateFrame(wwwAlt + responder_html), + CreateFrame(wwwAlt + responder_html), ]); t.add_cleanup(async () => { @@ -27,6 +28,24 @@ assert_equals(state, "granted"); }, "Permissions grants are observable across same-origin iframes"); + // Test the interaction between two cross-origin but same-site iframes. + promise_test(async (t) => { + const [frame1, frame2] = await Promise.all([ + CreateFrame(wwwAlt + responder_html), + CreateFrame(www1Alt + responder_html), + ]); + + t.add_cleanup(async () => { + await SetPermissionInFrame(frame1, [{ name: 'storage-access' }, 'prompt']); + }); + + const observed = ObservePermissionChange(frame2); + await SetPermissionInFrame(frame1, [{ name: 'storage-access' }, 'granted']); + + const state = await observed; + assert_equals(state, "granted"); + }, "Permissions grants are observable across same-site iframes"); + promise_test(async (t) => { // Finally run the simple tests below in a separate cross-origin iframe. await RunTestsInIFrame('https://{{domains[www]}}:{{ports[https][0]}}/storage-access-api/resources/permissions-iframe.https.html'); diff --git a/tests/wpt/web-platform-tests/storage/buckets/buckets_storage_policy.tentative.https.any.js b/tests/wpt/web-platform-tests/storage/buckets/buckets_storage_policy.tentative.https.any.js index 4aaa02e4be4..d6dce3675d0 100644 --- a/tests/wpt/web-platform-tests/storage/buckets/buckets_storage_policy.tentative.https.any.js +++ b/tests/wpt/web-platform-tests/storage/buckets/buckets_storage_policy.tentative.https.any.js @@ -1,15 +1,11 @@ // META: title=Buckets API: Tests for bucket storage policies. +// META: script=/storage/buckets/resources/util.js // META: global=window,worker 'use strict'; promise_test(async testCase => { - testCase.add_cleanup(async () => { - const bucketNames = await navigator.storageBuckets.keys(); - for (const bucketName of bucketNames) { - await navigator.storageBuckets.delete(bucketName); - } - }); + await prepareForBucketTest(testCase); await promise_rejects_js( testCase, TypeError, diff --git a/tests/wpt/web-platform-tests/storage/buckets/resources/util.js b/tests/wpt/web-platform-tests/storage/buckets/resources/util.js new file mode 100644 index 00000000000..50abce14cdc --- /dev/null +++ b/tests/wpt/web-platform-tests/storage/buckets/resources/util.js @@ -0,0 +1,15 @@ +'use strict'; + +// Makes sure initial bucket state is as expected and to clean up after the test +// is over (whether it passes or fails). +async function prepareForBucketTest(test) { + // Verify initial state. + assert_equals('', (await navigator.storageBuckets.keys()).join()); + // Clean up after test. + test.add_cleanup(async function() { + const keys = await navigator.storageBuckets.keys(); + for (const key of keys) { + await navigator.storageBuckets.delete(key); + } + }); +} diff --git a/tests/wpt/web-platform-tests/streams/piping/general.any.js b/tests/wpt/web-platform-tests/streams/piping/general.any.js index bec3480f653..faeb8e321af 100644 --- a/tests/wpt/web-platform-tests/streams/piping/general.any.js +++ b/tests/wpt/web-platform-tests/streams/piping/general.any.js @@ -209,3 +209,16 @@ promise_test(t => { return rs.pipeTo(ws, null); }, 'pipeTo() promise should resolve if null is passed'); + +promise_test(async t => { + /** @type {ReadableStreamDefaultController} */ + var con; + let synchronous = false; + new ReadableStream({ start(c) { con = c }}, { highWaterMark: 0 }).pipeTo( + new WritableStream({ write() { synchronous = true; } }) + ) + // wait until start algorithm finishes + await Promise.resolve(); + con.enqueue(); + assert_false(synchronous, 'write algorithm must not run synchronously'); +}, "enqueue() must not synchronously call write algorithm"); diff --git a/tests/wpt/web-platform-tests/subresource-integrity/tools/generate_javascript.py b/tests/wpt/web-platform-tests/subresource-integrity/tools/generate_javascript.py index 300e1703b17..fed3e5445fe 100644 --- a/tests/wpt/web-platform-tests/subresource-integrity/tools/generate_javascript.py +++ b/tests/wpt/web-platform-tests/subresource-integrity/tools/generate_javascript.py @@ -1,5 +1,3 @@ -from __future__ import print_function - from os import path, listdir from hashlib import sha512, sha256, md5 from base64 import b64encode diff --git a/tests/wpt/web-platform-tests/subresource-integrity/tools/list_hashes.py b/tests/wpt/web-platform-tests/subresource-integrity/tools/list_hashes.py index 5f189ce44b2..52f46ffd747 100644 --- a/tests/wpt/web-platform-tests/subresource-integrity/tools/list_hashes.py +++ b/tests/wpt/web-platform-tests/subresource-integrity/tools/list_hashes.py @@ -1,5 +1,3 @@ -from __future__ import print_function - from os import path, listdir from hashlib import sha512, sha384, sha256, md5 from base64 import b64encode diff --git a/tests/wpt/web-platform-tests/tools/ci/requirements_tc.txt b/tests/wpt/web-platform-tests/tools/ci/requirements_tc.txt index 7189b7b58f9..95753d91681 100644 --- a/tests/wpt/web-platform-tests/tools/ci/requirements_tc.txt +++ b/tests/wpt/web-platform-tests/tools/ci/requirements_tc.txt @@ -1,4 +1,4 @@ -pygithub==1.56 +pygithub==1.58.1 pyyaml==6.0 -requests==2.27.1 +requests==2.28.2 taskcluster==47.0.2 diff --git a/tests/wpt/web-platform-tests/tools/docker/requirements.txt b/tests/wpt/web-platform-tests/tools/docker/requirements.txt index 06d168a18d2..75dd52bde00 100644 --- a/tests/wpt/web-platform-tests/tools/docker/requirements.txt +++ b/tests/wpt/web-platform-tests/tools/docker/requirements.txt @@ -1,2 +1,2 @@ pyyaml==6.0 -requests==2.27.1 +requests==2.28.2 diff --git a/tests/wpt/web-platform-tests/tools/manifest/requirements.txt b/tests/wpt/web-platform-tests/tools/manifest/requirements.txt index 9f5bc8a143b..0236020bc1f 100644 --- a/tests/wpt/web-platform-tests/tools/manifest/requirements.txt +++ b/tests/wpt/web-platform-tests/tools/manifest/requirements.txt @@ -1 +1 @@ -zstandard==0.17.0 +zstandard==0.20.0 diff --git a/tests/wpt/web-platform-tests/tools/requirements_mypy.txt b/tests/wpt/web-platform-tests/tools/requirements_mypy.txt index af7bf35b21a..48b6fecce53 100644 --- a/tests/wpt/web-platform-tests/tools/requirements_mypy.txt +++ b/tests/wpt/web-platform-tests/tools/requirements_mypy.txt @@ -7,6 +7,6 @@ types-python-dateutil==2.8.19 types-PyYAML==6.0.12.3 types-requests==2.28.11.5 types-setuptools==67.6.0.5 -types-six==1.16.19 +types-six==1.16.21.7 types-ujson==4.2.1 typing-extensions==4.1.1 diff --git a/tests/wpt/web-platform-tests/tools/requirements_pytest.txt b/tests/wpt/web-platform-tests/tools/requirements_pytest.txt index e7678941a7f..a724ff23e51 100644 --- a/tests/wpt/web-platform-tests/tools/requirements_pytest.txt +++ b/tests/wpt/web-platform-tests/tools/requirements_pytest.txt @@ -1,3 +1,3 @@ pytest==7.0.1 -pytest-cov==3.0.0 +pytest-cov==4.0.0 hypothesis==6.70.0 diff --git a/tests/wpt/web-platform-tests/tools/requirements_tests.txt b/tests/wpt/web-platform-tests/tools/requirements_tests.txt index 4d8f2a5d223..27dea42bf5d 100644 --- a/tests/wpt/web-platform-tests/tools/requirements_tests.txt +++ b/tests/wpt/web-platform-tests/tools/requirements_tests.txt @@ -1,5 +1,5 @@ httpx[http2]==0.22.0 -json-e==4.4.3 +json-e==4.5.1 jsonschema==3.2.0 pyyaml==6.0 taskcluster==47.0.2 diff --git a/tests/wpt/web-platform-tests/tools/wave/requirements.txt b/tests/wpt/web-platform-tests/tools/wave/requirements.txt index 5c0369b9f56..f814994b483 100644 --- a/tests/wpt/web-platform-tests/tools/wave/requirements.txt +++ b/tests/wpt/web-platform-tests/tools/wave/requirements.txt @@ -1,2 +1,2 @@ -ua-parser==0.10.0 +ua-parser==0.16.1 python-dateutil==2.8.2 diff --git a/tests/wpt/web-platform-tests/tools/webtransport/requirements.txt b/tests/wpt/web-platform-tests/tools/webtransport/requirements.txt index 8743e0317d3..d3b88d7f046 100644 --- a/tests/wpt/web-platform-tests/tools/webtransport/requirements.txt +++ b/tests/wpt/web-platform-tests/tools/webtransport/requirements.txt @@ -1 +1 @@ -aioquic==0.9.19 +aioquic==0.9.20 diff --git a/tests/wpt/web-platform-tests/tools/wpt/requirements.txt b/tests/wpt/web-platform-tests/tools/wpt/requirements.txt index a743bbe341f..ba07d192a2d 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/requirements.txt +++ b/tests/wpt/web-platform-tests/tools/wpt/requirements.txt @@ -1 +1 @@ -requests==2.27.1 +requests==2.28.2 diff --git a/tests/wpt/web-platform-tests/tools/wpt/testfiles.py b/tests/wpt/web-platform-tests/tools/wpt/testfiles.py index 172ad201fc8..74c97ceefe2 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/testfiles.py +++ b/tests/wpt/web-platform-tests/tools/wpt/testfiles.py @@ -35,7 +35,7 @@ if MYPY: from typing import Text from typing import Tuple -DEFAULT_IGNORE_RULERS = ("resources/testharness*", "resources/testdriver*") +DEFAULT_IGNORE_RULES = ("resources/testharness*", "resources/testdriver*") here = os.path.dirname(__file__) wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir)) @@ -189,7 +189,7 @@ def repo_files_changed(revish, include_uncommitted=False, include_new=False): def exclude_ignored(files, ignore_rules): # type: (Iterable[Text], Optional[Sequence[Text]]) -> Tuple[List[Text], List[Text]] if ignore_rules is None: - ignore_rules = DEFAULT_IGNORE_RULERS + ignore_rules = DEFAULT_IGNORE_RULES compiled_ignore_rules = [compile_ignore_rule(item) for item in set(ignore_rules)] changed = [] @@ -362,7 +362,7 @@ def get_parser(): "or the end matching anything other than a path separator and ** in that " "position matching anything. This flag can be used multiple times for " "multiple rules. Specifying this flag overrides the default: " + - ", ".join(DEFAULT_IGNORE_RULERS)) + ", ".join(DEFAULT_IGNORE_RULES)) parser.add_argument("--modified", action="store_true", help="Include files under version control that have been " "modified or staged") diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt index 202e8074133..ccf09be728d 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements.txt @@ -4,6 +4,6 @@ mozinfo==1.2.2 # https://bugzilla.mozilla.org/show_bug.cgi?id=1621226 mozlog==7.1.0 mozprocess==1.3.0 pillow==8.4.0 -requests==2.27.1 +requests==2.28.2 six==1.16.0 urllib3[secure]==1.26.15 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_chromium.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_chromium.txt index 8743e0317d3..d3b88d7f046 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_chromium.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_chromium.txt @@ -1 +1 @@ -aioquic==0.9.19 +aioquic==0.9.20 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_edge.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_edge.txt index 12920a9956a..dfbdc6d9e34 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_edge.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_edge.txt @@ -1 +1 @@ -selenium==4.3.0 +selenium==4.8.2 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt index 1f9033c09fe..644df3bfd44 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_firefox.txt @@ -6,4 +6,4 @@ mozleak==0.2 mozprofile==2.5.0 mozrunner==8.2.1 mozversion==2.3.0 -psutil==5.9.1 +psutil==5.9.2 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_ie.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_ie.txt index 1726afa6079..83948c668e4 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_ie.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_ie.txt @@ -1,2 +1,2 @@ mozprocess==1.3.0 -selenium==4.3.0 +selenium==4.8.2 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_opera.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_opera.txt index 1726afa6079..83948c668e4 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_opera.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_opera.txt @@ -1,2 +1,2 @@ mozprocess==1.3.0 -selenium==4.3.0 +selenium==4.8.2 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_safari.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_safari.txt index 8d303aa4528..e2e2f09f708 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_safari.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_safari.txt @@ -1 +1 @@ -psutil==5.9.1 +psutil==5.9.2 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt index 5089b0c1838..64fb1390c04 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt +++ b/tests/wpt/web-platform-tests/tools/wptrunner/requirements_sauce.txt @@ -1,2 +1,2 @@ -selenium==4.3.0 -requests==2.27.1 +selenium==4.8.2 +requests==2.28.2 diff --git a/tests/wpt/web-platform-tests/web-locks/storage-buckets.tentative.https.any.js b/tests/wpt/web-platform-tests/web-locks/storage-buckets.tentative.https.any.js index 73cc0ac3725..a6b4f59a95d 100644 --- a/tests/wpt/web-platform-tests/web-locks/storage-buckets.tentative.https.any.js +++ b/tests/wpt/web-platform-tests/web-locks/storage-buckets.tentative.https.any.js @@ -1,5 +1,6 @@ // META: title=Web Locks API: Storage Buckets have independent lock sets // META: script=resources/helpers.js +// META: script=/storage/buckets/resources/util.js // META: global=window,dedicatedworker,sharedworker,serviceworker 'use strict'; @@ -26,6 +27,8 @@ async function locksAreShared(t, bucket1, bucket2) { } promise_test(async t => { + await prepareForBucketTest(t); + const inboxBucket = await navigator.storageBuckets.open('inbox'); const draftsBucket = await navigator.storageBuckets.open('drafts'); @@ -50,4 +53,4 @@ promise_test(async t => { assert_true( await self.locksAreShared(t, inboxBucket, inboxBucket2), 'A two instances of the same non default bucket should share locks with theirselves'); -}, 'Storage buckets have independent locks');
\ No newline at end of file +}, 'Storage buckets have independent locks'); diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/__init__.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/__init__.py index 6ac8c3394ce..625cd3a6304 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/bidi/__init__.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/__init__.py @@ -66,6 +66,9 @@ def int_interval(start: int, end: int) -> Callable[[Any], None]: return _ +def positive_int(actual: Any) -> None: + assert isinstance(actual, int) and actual > 0 + async def create_console_api_message(bidi_session, context, text): await bidi_session.script.call_function( diff --git a/tests/wpt/web-platform-tests/webdriver/tests/bidi/network/response_started/response_started_cached_tentative.py b/tests/wpt/web-platform-tests/webdriver/tests/bidi/network/response_started/response_started_cached_tentative.py new file mode 100644 index 00000000000..5022511f792 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/bidi/network/response_started/response_started_cached_tentative.py @@ -0,0 +1,207 @@ +import pytest +import random + +from tests.support.sync import AsyncPoll + +from .. import assert_response_event + +PAGE_EMPTY_TEXT = "/webdriver/tests/bidi/network/support/empty.txt" + +# The following tests are marked as tentative until +# https://github.com/w3c/webdriver-bidi/pull/204 is merged. + + +@pytest.mark.asyncio +async def test_cached( + bidi_session, + top_context, + wait_for_event, + url, + fetch, + setup_network_test, +): + network_events = await setup_network_test( + events=[ + "network.responseStarted", + ] + ) + events = network_events["network.responseStarted"] + + cached_url = url( + f"/webdriver/tests/support/http_handlers/cached.py?status=200&nocache={random.random()}" + ) + on_response_started = wait_for_event("network.responseStarted") + await fetch(cached_url) + await on_response_started + + assert len(events) == 1 + expected_request = {"method": "GET", "url": cached_url} + + # The first request/response is used to fill the browser cache, so we expect + # fromCache to be False here. + expected_response = { + "url": cached_url, + "fromCache": False, + "status": 200, + } + assert_response_event( + events[0], + expected_request=expected_request, + expected_response=expected_response, + ) + + on_response_started = wait_for_event("network.responseStarted") + await fetch(cached_url) + await on_response_started + + assert len(events) == 2 + + # The second request for the same URL has to be read from the local cache. + expected_response = { + "url": cached_url, + "fromCache": True, + "status": 200, + } + assert_response_event( + events[1], + expected_request=expected_request, + expected_response=expected_response, + ) + + +@pytest.mark.asyncio +async def test_cached_redirect( + bidi_session, + top_context, + wait_for_event, + url, + fetch, + setup_network_test, +): + network_events = await setup_network_test( + events=[ + "network.responseStarted", + ] + ) + events = network_events["network.responseStarted"] + + text_url = url(PAGE_EMPTY_TEXT) + cached_url = url( + f"/webdriver/tests/support/http_handlers/cached.py?status=301&location={text_url}&nocache={random.random()}" + ) + + await fetch(cached_url) + + # Expect two events, one for the initial request and one for the redirect. + wait = AsyncPoll(bidi_session, timeout=2) + await wait.until(lambda _: len(events) >= 2) + assert len(events) == 2 + + # The first request/response is used to fill the cache, so we expect + # fromCache to be False here. + expected_request = {"method": "GET", "url": cached_url} + expected_response = { + "url": cached_url, + "fromCache": False, + "status": 301, + } + assert_response_event( + events[0], + expected_request=expected_request, + expected_response=expected_response, + ) + + # The second request is the redirect + redirected_request = {"method": "GET", "url": text_url} + redirected_response = {"url": text_url, "status": 200} + assert_response_event( + events[1], + expected_request=redirected_request, + expected_response=redirected_response, + ) + + await fetch(cached_url) + wait = AsyncPoll(bidi_session, timeout=2) + await wait.until(lambda _: len(events) >= 4) + assert len(events) == 4 + + # The third request hits cached_url again and has to be read from the local cache. + expected_response = { + "url": cached_url, + "fromCache": True, + "status": 301, + } + assert_response_event( + events[2], + expected_request=expected_request, + expected_response=expected_response, + ) + + # The fourth request is the redirect + assert_response_event( + events[3], + expected_request=redirected_request, + expected_response=redirected_response, + ) + + +@pytest.mark.parametrize( + "method", + [ + "GET", + "HEAD", + "OPTIONS", + ], +) +@pytest.mark.asyncio +async def test_cached_revalidate( + bidi_session, top_context, wait_for_event, url, fetch, setup_network_test, method +): + network_events = await setup_network_test( + events=[ + "network.responseStarted", + ] + ) + events = network_events["network.responseStarted"] + + revalidate_url = url( + f"/webdriver/tests/support/http_handlers/must-revalidate.py?nocache={random.random()}" + ) + on_response_started = wait_for_event("network.responseStarted") + await fetch(revalidate_url, method=method) + await on_response_started + + assert len(events) == 1 + expected_request = {"method": method, "url": revalidate_url} + expected_response = { + "url": revalidate_url, + "fromCache": False, + "status": 200, + } + assert_response_event( + events[0], + expected_request=expected_request, + expected_response=expected_response, + ) + + on_response_started = wait_for_event("network.responseStarted") + + # Note that we pass a specific header so that the must-revalidate.py handler + # can decide to return a 304 without having to use another URL. + await fetch(revalidate_url, method=method, headers={"return-304": "true"}) + await on_response_started + + assert len(events) == 2 + + # Here fromCache should still be false, because for a 304 response the response + # cache state is "validated" and fromCache is only true if cache state is "local" + expected_response = { + "url": revalidate_url, + "fromCache": False, + "status": 304, + } + assert_response_event( + events[1], + expected_request=expected_request, + expected_response=expected_response, + ) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/helpers.py b/tests/wpt/web-platform-tests/webdriver/tests/support/helpers.py index e79a31448a3..b0c065dca11 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/helpers.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/helpers.py @@ -1,5 +1,3 @@ -from __future__ import print_function - import collections import math import sys diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/http_handlers/cached.py b/tests/wpt/web-platform-tests/webdriver/tests/support/http_handlers/cached.py new file mode 100644 index 00000000000..a43410f8856 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/http_handlers/cached.py @@ -0,0 +1,14 @@ +def main(request, response): + """Simple handler that returns a response with Cache-Control max-age=3600. + """ + + status = int(request.GET.get(b"status", None)) + # For redirects, a "location" get parameter can indicate the redirected url + if status == 301 and b"location" in request.GET: + response.headers.set(b"Location", request.GET.first(b"location")) + + response.status = status + response.headers.set(b"Content-Type", "text/plain") + response.headers.set(b"Expires", "Thu, 01 Dec 2100 20:00:00 GMT") + response.headers.set(b"Cache-Control", "max-age=3600") + return "Cached HTTP Response" diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/http_handlers/must-revalidate.py b/tests/wpt/web-platform-tests/webdriver/tests/support/http_handlers/must-revalidate.py new file mode 100644 index 00000000000..94f5a795a29 --- /dev/null +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/http_handlers/must-revalidate.py @@ -0,0 +1,17 @@ +def main(request, response): + """Simple handler that returns a response with Cache-Control max-age=0 and + must-revalidate. + The request can include a return-304 header to trigger the handler to return + a 304 instead of a 200. + """ + response.headers.set(b"Content-Type", "text/plain") + + if b"true" == request.headers.get(b"return-304", None): + # instruct the browser that the response was not modified and the cache + # can be used. + response.status = 304 + return "" + else: + response.headers.set(b"Cache-Control", b"max-age=0, must-revalidate") + response.status = 200 + return "must-revalidate HTTP Response" |