From 260441296f23d6a4c28cf7364601a41ac09fcd7a Mon Sep 17 00:00:00 2001 From: WPT Sync Bot Date: Tue, 23 Jun 2020 08:20:40 +0000 Subject: [PATCH 1/3] Update web-platform-tests to revision 401d9618fcda9dfbeac49b8055df98386f6118f1 --- .../url/url-in-tags-revoke.window.js.ini | 2 +- .../CSS2/floats/hit-test-floats-003.html.ini | 4 - .../CSS2/floats/hit-test-floats-004.html.ini | 4 - .../CSS2/floats/hit-test-floats-005.html.ini | 4 - .../view-box-mutation-001.html.ini | 2 + .../view-box-mutation-002.html.ini | 2 + .../view-box-mutation-003.html.ini | 2 + .../transform-scale-hittest.html.ini | 3 - .../text-overflow-change-color.html.ini | 2 +- ...QueryList-addListener-handleEvent.html.ini | 3 + .../cssom-view/elementFromPoint-001.html.ini | 4 - .../cssom-view/elementFromPosition.html.ini | 3 - .../reactions/HTMLMediaElement.html.ini | 2 - .../fetch/content-type/response.window.js.ini | 13 +- .../fetch/content-type/script.window.js.ini | 3 - .../http-cache/split-cache.tentative.html.ini | 6 + .../traverse_the_history_1.html.ini | 4 + .../traverse_the_history_3.html.ini | 4 - ...ross-origin-objects-on-new-window.html.ini | 2 - .../textarea-scroll-selection.html.ini | 4 + .../iframe_sandbox_popups_escaping-2.html.ini | 1 + .../iframe_sandbox_popups_escaping-3.html.ini | 3 +- ...rame_sandbox_popups_nonescaping-3.html.ini | 3 +- .../form-double-submit-2.html.ini | 4 - .../form-double-submit-3.html.ini | 4 + .../jsurl-form-submit.tentative.html.ini | 4 + .../promise-job-entry.html.ini | 5 +- .../realtimeanalyser-fft-scaling.html.ini | 1 - .../webmessaging/with-ports/017.html.ini | 5 + .../webmessaging/with-ports/018.html.ini | 5 + .../url/url-in-tags-revoke.window.js.ini | 2 +- tests/wpt/metadata/MANIFEST.json | 319 ++++++++++++------ .../CSS2/floats/hit-test-floats-003.html.ini | 4 - .../CSS2/floats/hit-test-floats-004.html.ini | 4 - .../CSS2/floats/hit-test-floats-005.html.ini | 4 - .../view-box-mutation-001.html.ini | 2 + .../view-box-mutation-002.html.ini | 2 + .../view-box-mutation-003.html.ini | 2 + .../transform-box/view-box-mutation.html.ini | 2 - .../transform-scale-hittest.html.ini | 3 - .../text-overflow-change-color.html.ini | 2 +- ...QueryList-addListener-handleEvent.html.ini | 3 + .../cssom-view/elementFromPoint-001.html.ini | 4 - .../cssom-view/elementFromPosition.html.ini | 3 - .../reactions/HTMLMediaElement.html.ini | 2 - .../fetch/content-type/response.window.js.ini | 13 +- .../fetch/content-type/script.window.js.ini | 3 - .../http-cache/split-cache.tentative.html.ini | 6 + .../traverse_the_history_1.html.ini | 4 + .../traverse_the_history_3.html.ini | 4 - ...ross-origin-objects-on-new-window.html.ini | 2 - .../textarea-scroll-selection.html.ini | 4 + .../flex-legend-float-abspos.html.ini | 13 - .../iframe_sandbox_popups_escaping-2.html.ini | 1 + .../iframe_sandbox_popups_escaping-3.html.ini | 3 +- ...rame_sandbox_popups_nonescaping-3.html.ini | 3 +- .../form-double-submit-2.html.ini | 4 - .../form-double-submit-3.html.ini | 4 + .../jsurl-form-submit.tentative.html.ini | 4 + .../promise-job-entry.html.ini | 5 +- .../realtimeanalyser-fft-scaling.html.ini | 1 - .../webmessaging/with-ports/017.html.ini | 5 + .../webmessaging/with-ports/018.html.ini | 5 + .../FileAPI/url/url-charset.window.js | 11 +- .../css-break/trailing-child-margin-000.html | 13 + .../css-break/trailing-child-margin-001.html | 11 + .../css-break/trailing-child-margin-002.html | 11 + .../css/css-display/display-with-float.html | 24 -- .../fontface-load-in-modal-dialog.html | 30 ++ .../parsing/scrollbar-gutter-invalid.html | 29 ++ .../parsing/scrollbar-gutter-valid.html | 26 ++ .../paint-function-arguments-ref.html | 5 +- .../paint-function-arguments.https.html | 2 +- .../replaced-element-012.tentative.html | 13 + ...tation.html => view-box-mutation-001.html} | 0 .../transform-box/view-box-mutation-002.html | 26 ++ .../transform-box/view-box-mutation-003.html | 26 ++ .../properties/scrollbar-gutter.html | 30 ++ ...tml => split-cache-popup-with-iframe.html} | 2 +- ...igin-popup.html => split-cache-popup.html} | 0 .../http-cache/split-cache.tentative.html | 46 ++- .../forced-colors-mode-28-ref.html | 24 ++ .../forced-colors-mode-28.html | 34 ++ .../textarea-scroll-selection.html | 46 +++ .../flex-legend-float-abspos.html | 97 ------ .../input-image-content-crash.html | 17 + .../jsurl-form-submit.tentative.html | 32 ++ .../resources/jsurl-form-submit-iframe.html | 12 + .../module/nested-imports-a.js | 1 - .../module/nested-imports-b.js | 2 - .../module/nested-imports-c.js | 2 - .../module/nested-imports-d.js | 3 - .../module/nested-imports-e.js | 2 - .../module/nested-imports-f.js | 2 - .../module/nested-imports-g.js | 2 - .../module/nested-imports-h.js | 2 - .../module/nested-imports.html | 29 -- .../interfaces/webauthn.idl | 18 + .../detached.tentative.window.js | 7 + .../about-blank.https.sub.html | 53 +++ .../about-blank.https.sub.html.headers | 1 + .../resources/child-frame-script.mjs | 43 +++ .../origin-isolation/resources/helpers.mjs | 28 +- .../resources/send-origin-isolation-header.py | 39 +-- .../resources/idlharness.js | 66 +++- .../animations/animate-stop-currentcolor.html | 26 ++ .../tools/requirements_mypy.txt | 2 +- .../tools/wptrunner/wptrunner/testloader.py | 9 +- .../url/resources/urltestdata.json | 15 + .../xhr/resources/accept-language.py | 4 +- .../xhr/resources/accept.py | 2 +- .../resources/access-control-allow-lists.py | 26 +- .../access-control-allow-with-body.py | 16 +- .../resources/access-control-auth-basic.py | 18 +- ...cess-control-basic-allow-no-credentials.py | 6 +- .../access-control-basic-allow-star.py | 6 +- .../resources/access-control-basic-allow.py | 8 +- ...l-basic-cors-safelisted-request-headers.py | 14 +- .../resources/access-control-basic-denied.py | 6 +- ...ess-control-basic-options-not-supported.py | 10 +- ...trol-basic-preflight-cache-invalidation.py | 50 +-- ...s-control-basic-preflight-cache-timeout.py | 52 +-- .../access-control-basic-preflight-cache.py | 49 +-- .../access-control-basic-put-allow.py | 30 +- ...ontrol-basic-whitelist-response-headers.py | 18 +- .../xhr/resources/access-control-cookie.py | 12 +- .../resources/access-control-origin-header.py | 12 +- .../access-control-preflight-denied.py | 46 +-- ...trol-preflight-request-header-lowercase.py | 20 +- .../xhr/resources/corsenabled.py | 32 +- .../web-platform-tests/xhr/resources/delay.py | 4 +- .../xhr/resources/echo-headers.py | 2 +- .../xhr/resources/echo-method.py | 2 +- .../xhr/resources/empty-div-utf8-html.py | 4 +- .../web-platform-tests/xhr/resources/form.py | 2 +- .../web-platform-tests/xhr/resources/gzip.py | 23 +- .../xhr/resources/header-user-agent.py | 18 +- .../xhr/resources/headers.py | 18 +- .../xhr/resources/img-utf8-html.py | 4 +- 139 files changed, 1268 insertions(+), 715 deletions(-) delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-transforms/transform-box/view-box-mutation-001.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-transforms/transform-box/view-box-mutation-002.html.ini create mode 100644 tests/wpt/metadata-layout-2020/css/css-transforms/transform-box/view-box-mutation-003.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/custom-elements/reactions/HTMLMediaElement.html.ini create mode 100644 tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini create mode 100644 tests/wpt/metadata-layout-2020/html/interaction/focus/processing-model/textarea-scroll-selection.html.ini delete mode 100644 tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini create mode 100644 tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini create mode 100644 tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/jsurl-form-submit.tentative.html.ini create mode 100644 tests/wpt/metadata-layout-2020/webmessaging/with-ports/017.html.ini create mode 100644 tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini delete mode 100644 tests/wpt/metadata/css/CSS2/floats/hit-test-floats-003.html.ini delete mode 100644 tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini delete mode 100644 tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-box/view-box-mutation-001.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-box/view-box-mutation-002.html.ini create mode 100644 tests/wpt/metadata/css/css-transforms/transform-box/view-box-mutation-003.html.ini delete mode 100644 tests/wpt/metadata/css/css-transforms/transform-box/view-box-mutation.html.ini delete mode 100644 tests/wpt/metadata/css/cssom-view/elementFromPoint-001.html.ini delete mode 100644 tests/wpt/metadata/custom-elements/reactions/HTMLMediaElement.html.ini create mode 100644 tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_1.html.ini delete mode 100644 tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini delete mode 100644 tests/wpt/metadata/html/browsers/origin/cross-origin-objects/cross-origin-objects-on-new-window.html.ini create mode 100644 tests/wpt/metadata/html/interaction/focus/processing-model/textarea-scroll-selection.html.ini delete mode 100644 tests/wpt/metadata/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/flex-legend-float-abspos.html.ini delete mode 100644 tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-2.html.ini create mode 100644 tests/wpt/metadata/html/semantics/forms/form-submission-0/form-double-submit-3.html.ini create mode 100644 tests/wpt/metadata/html/semantics/forms/form-submission-0/jsurl-form-submit.tentative.html.ini create mode 100644 tests/wpt/metadata/webmessaging/with-ports/017.html.ini create mode 100644 tests/wpt/metadata/webmessaging/with-ports/018.html.ini create mode 100644 tests/wpt/web-platform-tests/css/css-break/trailing-child-margin-000.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/trailing-child-margin-001.html create mode 100644 tests/wpt/web-platform-tests/css/css-break/trailing-child-margin-002.html delete mode 100644 tests/wpt/web-platform-tests/css/css-display/display-with-float.html create mode 100644 tests/wpt/web-platform-tests/css/css-font-loading/fontface-load-in-modal-dialog.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/parsing/scrollbar-gutter-invalid.html create mode 100644 tests/wpt/web-platform-tests/css/css-overflow/parsing/scrollbar-gutter-valid.html create mode 100644 tests/wpt/web-platform-tests/css/css-sizing/aspect-ratio/replaced-element-012.tentative.html rename tests/wpt/web-platform-tests/css/css-transforms/transform-box/{view-box-mutation.html => view-box-mutation-001.html} (100%) create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-box/view-box-mutation-002.html create mode 100644 tests/wpt/web-platform-tests/css/css-transforms/transform-box/view-box-mutation-003.html create mode 100644 tests/wpt/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/scrollbar-gutter.html rename tests/wpt/web-platform-tests/fetch/http-cache/resources/{split-origin-popup-with-iframe.html => split-cache-popup-with-iframe.html} (95%) rename tests/wpt/web-platform-tests/fetch/http-cache/resources/{split-origin-popup.html => split-cache-popup.html} (100%) create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-28-ref.html create mode 100644 tests/wpt/web-platform-tests/forced-colors-mode/forced-colors-mode-28.html create mode 100644 tests/wpt/web-platform-tests/html/interaction/focus/processing-model/textarea-scroll-selection.html delete mode 100644 tests/wpt/web-platform-tests/html/rendering/non-replaced-elements/the-fieldset-and-legend-elements/flex-legend-float-abspos.html create mode 100644 tests/wpt/web-platform-tests/html/rendering/replaced-elements/attributes-for-embedded-content-and-images/input-image-content-crash.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/jsurl-form-submit.tentative.html create mode 100644 tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/jsurl-form-submit-iframe.html delete mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-a.js delete mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-b.js delete mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-c.js delete mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-d.js delete mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-e.js delete mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-f.js delete mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-g.js delete mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-h.js delete mode 100644 tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/about-blank.https.sub.html create mode 100644 tests/wpt/web-platform-tests/origin-isolation/about-blank.https.sub.html.headers create mode 100644 tests/wpt/web-platform-tests/origin-isolation/resources/child-frame-script.mjs create mode 100644 tests/wpt/web-platform-tests/svg/animations/animate-stop-currentcolor.html 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 76b44d9e9cf9..3605e8f3fc99 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/floats/hit-test-floats-003.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini deleted file mode 100644 index f29da48a2a08..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-003.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-003.html] - [Miss float below something else] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini deleted file mode 100644 index 4bfb0c2053a4..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-004.html] - [Miss float below something else] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini deleted file mode 100644 index baa9f1a7541b..000000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-005.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-005.html] - [Miss clipped float] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-box/view-box-mutation-001.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-box/view-box-mutation-001.html.ini new file mode 100644 index 000000000000..fa5c7586c067 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-box/view-box-mutation-001.html.ini @@ -0,0 +1,2 @@ +[view-box-mutation-001.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-box/view-box-mutation-002.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-box/view-box-mutation-002.html.ini new file mode 100644 index 000000000000..745572f183c7 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-box/view-box-mutation-002.html.ini @@ -0,0 +1,2 @@ +[view-box-mutation-002.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-box/view-box-mutation-003.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-box/view-box-mutation-003.html.ini new file mode 100644 index 000000000000..79f8d325f15b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-box/view-box-mutation-003.html.ini @@ -0,0 +1,2 @@ +[view-box-mutation-003.html] + expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini index f8e7e539aae9..4a1e8110f6fb 100644 --- a/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-transforms/transform-scale-hittest.html.ini @@ -2,6 +2,3 @@ [Hit test intersecting scaled box] expected: FAIL - [Hit test within unscaled box] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/css-ui/text-overflow-change-color.html.ini b/tests/wpt/metadata-layout-2020/css/css-ui/text-overflow-change-color.html.ini index 5f89cf293162..a474a92193a5 100644 --- a/tests/wpt/metadata-layout-2020/css/css-ui/text-overflow-change-color.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-ui/text-overflow-change-color.html.ini @@ -1,2 +1,2 @@ [text-overflow-change-color.html] - expected: FAIL + expected: CRASH diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini index a6c39d500875..d080f72a9622 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini @@ -8,3 +8,6 @@ [throws if handleEvent is thruthy and not callable] expected: FAIL + [doesn't look up handleEvent method on callable event listeners] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini deleted file mode 100644 index e38782d8c85a..000000000000 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementFromPoint-001.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[elementFromPoint-001.html] - [CSSOM View - 5 - extensions to the Document interface] - 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 23c61ede1a13..c131078eaceb 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 @@ -17,6 +17,3 @@ [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/custom-elements/reactions/HTMLMediaElement.html.ini b/tests/wpt/metadata-layout-2020/custom-elements/reactions/HTMLMediaElement.html.ini deleted file mode 100644 index 2ca05f57bb00..000000000000 --- a/tests/wpt/metadata-layout-2020/custom-elements/reactions/HTMLMediaElement.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[HTMLMediaElement.html] - expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini index f3c2e13a050c..987cea685621 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini @@ -312,27 +312,24 @@ [Response: combined response Content-Type: text/html;" \\" text/plain ";charset=GBK] expected: NOTRUN - [ +
+ + diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/jsurl-form-submit-iframe.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/jsurl-form-submit-iframe.html new file mode 100644 index 000000000000..00a1eefd0fce --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/resources/jsurl-form-submit-iframe.html @@ -0,0 +1,12 @@ + + + +
+anchor + + diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-a.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-a.js deleted file mode 100644 index a127aeb559a0..000000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-a.js +++ /dev/null @@ -1 +0,0 @@ -import { b } from "./nested-imports-b.js"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-b.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-b.js deleted file mode 100644 index 18a5af40cc0e..000000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-b.js +++ /dev/null @@ -1,2 +0,0 @@ -import { c } from "./nested-imports-c.js"; -export const b = "b"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-c.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-c.js deleted file mode 100644 index ec44596aeae7..000000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-c.js +++ /dev/null @@ -1,2 +0,0 @@ -import { d } from "./nested-imports-d.js"; -export const c = "c"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-d.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-d.js deleted file mode 100644 index cee87849c625..000000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-d.js +++ /dev/null @@ -1,3 +0,0 @@ -import { e } from "./nested-imports-e.js"; -import "./resources/delayed-modulescript.py"; -export const d = "d"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-e.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-e.js deleted file mode 100644 index ec6f0360a608..000000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-e.js +++ /dev/null @@ -1,2 +0,0 @@ -import { f } from "./nested-imports-f.js"; -export const e = "e"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-f.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-f.js deleted file mode 100644 index 0591e0b31669..000000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-f.js +++ /dev/null @@ -1,2 +0,0 @@ -import { g } from "./nested-imports-g.js"; -export const f = "f"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-g.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-g.js deleted file mode 100644 index 86cbe7d3f8e0..000000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-g.js +++ /dev/null @@ -1,2 +0,0 @@ -import { h } from "./nested-imports-h.js"; -export const g = "g"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-h.js b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-h.js deleted file mode 100644 index a1612912599a..000000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports-h.js +++ /dev/null @@ -1,2 +0,0 @@ -import { c } from "./nested-imports-c.js"; -export const h = "h"; diff --git a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports.html b/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports.html deleted file mode 100644 index 23bb595d0ebc..000000000000 --- a/tests/wpt/web-platform-tests/html/semantics/scripting-1/the-script-element/module/nested-imports.html +++ /dev/null @@ -1,29 +0,0 @@ - -Test imports under more than 3 levels in different modules - - - - - - diff --git a/tests/wpt/web-platform-tests/interfaces/webauthn.idl b/tests/wpt/web-platform-tests/interfaces/webauthn.idl index 70f250286cdc..562718086758 100644 --- a/tests/wpt/web-platform-tests/interfaces/webauthn.idl +++ b/tests/wpt/web-platform-tests/interfaces/webauthn.idl @@ -191,3 +191,21 @@ dictionary CredentialPropertiesOutput { partial dictionary AuthenticationExtensionsClientOutputs { CredentialPropertiesOutput credProps; }; + +partial dictionary AuthenticationExtensionsClientInputs { + AuthenticationExtensionsLargeBlobInputs largeBlob; +}; + +dictionary AuthenticationExtensionsLargeBlobInputs { + boolean read; + ArrayBuffer write; +}; + +partial dictionary AuthenticationExtensionsClientOutputs { + AuthenticationExtensionsLargeBlobOutputs largeBlob; +}; + +dictionary AuthenticationExtensionsLargeBlobOutputs { + ArrayBuffer blob; + boolean written; +}; diff --git a/tests/wpt/web-platform-tests/measure-memory/detached.tentative.window.js b/tests/wpt/web-platform-tests/measure-memory/detached.tentative.window.js index 87c93160526e..c6a133cfe456 100644 --- a/tests/wpt/web-platform-tests/measure-memory/detached.tentative.window.js +++ b/tests/wpt/web-platform-tests/measure-memory/detached.tentative.window.js @@ -66,6 +66,7 @@ promise_test(async testCase => { iframes['same-origin-3'].src, iframes['same-origin-4'].src, iframes['cross-origin-5'].src, + iframes['same-origin-8'].sec, windows['same-origin-7'].location.href, windows['same-origin-12'].location.href, ]; @@ -89,11 +90,17 @@ promise_test(async testCase => { // 2) By closing the window: windows['cross-origin-9'].close(); + await waitForMessage('cross-site-1'); + await waitForMessage('same-origin-3'); + await waitForMessage('same-origin-7'); + try { const result = await performance.measureMemory(); checkMeasureMemory(result, { allowed: allowed.concat([ iframes['cross-site-1'].src, + iframes['same-origin-3'].contentWindow.location.href, + windows['same-origin-7'].location.href, ]), required: [ window.location.href, diff --git a/tests/wpt/web-platform-tests/origin-isolation/about-blank.https.sub.html b/tests/wpt/web-platform-tests/origin-isolation/about-blank.https.sub.html new file mode 100644 index 000000000000..ec24853a1605 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/about-blank.https.sub.html @@ -0,0 +1,53 @@ + + +The initial about:blank respects origin isolation + + + +
+ + diff --git a/tests/wpt/web-platform-tests/origin-isolation/about-blank.https.sub.html.headers b/tests/wpt/web-platform-tests/origin-isolation/about-blank.https.sub.html.headers new file mode 100644 index 000000000000..ea3f6b335c76 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/about-blank.https.sub.html.headers @@ -0,0 +1 @@ +Origin-Isolation: ?1 diff --git a/tests/wpt/web-platform-tests/origin-isolation/resources/child-frame-script.mjs b/tests/wpt/web-platform-tests/origin-isolation/resources/child-frame-script.mjs new file mode 100644 index 000000000000..038c0f3a8487 --- /dev/null +++ b/tests/wpt/web-platform-tests/origin-isolation/resources/child-frame-script.mjs @@ -0,0 +1,43 @@ +import { sendWasmModule } from "./helpers.mjs"; + +window.onmessage = async (e) => { + // These could come from the parent or siblings. + if (e.data.constructor === WebAssembly.Module) { + e.source.postMessage("WebAssembly.Module message received", "*"); + } + + // These only come from the parent. + if (e.data.command === "set document.domain") { + document.domain = e.data.newDocumentDomain; + parent.postMessage("document.domain is set", "*"); + } else if (e.data.command === "send WASM module") { + const destinationFrameWindow = parent.frames[e.data.indexIntoParentFrameOfDestination]; + const whatHappened = await sendWasmModule(destinationFrameWindow); + parent.postMessage(whatHappened, "*"); + } else if (e.data.command === "access document") { + const destinationFrameWindow = parent.frames[e.data.indexIntoParentFrameOfDestination]; + try { + destinationFrameWindow.document; + parent.postMessage("accessed document successfully", "*"); + } catch (e) { + parent.postMessage(e.name, "*"); + } + } else if (e.data.command === "access location.href") { + const destinationFrameWindow = parent.frames[e.data.indexIntoParentFrameOfDestination]; + try { + destinationFrameWindow.location.href; + parent.postMessage("accessed location.href successfully", "*"); + } catch (e) { + parent.postMessage(e.name, "*"); + } + } + + // We could also receive e.data === "WebAssembly.Module message received", + // but that's handled by await sendWasmModule() above. +}; + +window.onmessageerror = e => { + e.source.postMessage("messageerror", "*"); +}; + +document.body.textContent = location.href; diff --git a/tests/wpt/web-platform-tests/origin-isolation/resources/helpers.mjs b/tests/wpt/web-platform-tests/origin-isolation/resources/helpers.mjs index 4b742c2b6e73..8943707778c3 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/resources/helpers.mjs +++ b/tests/wpt/web-platform-tests/origin-isolation/resources/helpers.mjs @@ -83,6 +83,9 @@ export function testSameAgentCluster(testFrames, testLabelPrefix) { // Must not throw frameWindow.document; + + // Must not throw + frameWindow.location.href; }, `${prefix}setting document.domain must give sync access`); } else { // Between the two children at the index given by testFrames[0] and @@ -90,14 +93,15 @@ export function testSameAgentCluster(testFrames, testLabelPrefix) { promise_test(async () => { const whatHappened = await sendWasmModuleBetween(testFrames); - assert_equals(whatHappened, "WebAssembly.Module message received"); }, `${prefix}message event must occur`); promise_test(async () => { - const whatHappened = await accessDocumentBetween(testFrames); + const whatHappened1 = await accessDocumentBetween(testFrames); + assert_equals(whatHappened1, "accessed document successfully"); - assert_equals(whatHappened, "accessed document successfully"); + const whatHappened2 = await accessLocationHrefBetween(testFrames); + assert_equals(whatHappened2, "accessed location.href successfully"); }, `${prefix}setting document.domain must give sync access`); } } @@ -131,6 +135,9 @@ export function testDifferentAgentClusters(testFrames, testLabelPrefix) { assert_throws_dom("SecurityError", DOMException, () => { frameWindow.document; }); + assert_throws_dom("SecurityError", DOMException, () => { + frameWindow.location.href; + }); }, `${prefix}setting document.domain must not give sync access`); } else { // Between the two children at the index given by testFrames[0] and @@ -138,14 +145,15 @@ export function testDifferentAgentClusters(testFrames, testLabelPrefix) { promise_test(async () => { const whatHappened = await sendWasmModuleBetween(testFrames); - assert_equals(whatHappened, "messageerror"); }, `${prefix}messageerror event must occur`); promise_test(async () => { - const whatHappened = await accessDocumentBetween(testFrames); + const whatHappened1 = await accessDocumentBetween(testFrames); + assert_equals(whatHappened1, "SecurityError"); - assert_equals(whatHappened, "SecurityError"); + const whatHappened2 = await accessLocationHrefBetween(testFrames); + assert_equals(whatHappened2, "SecurityError"); }, `${prefix}setting document.domain must not give sync access`); } } @@ -215,6 +223,14 @@ async function accessDocumentBetween(testFrames) { return waitForMessage(sourceFrame); } +async function accessLocationHrefBetween(testFrames) { + const sourceFrame = frames[testFrames[0]]; + const indexIntoParentFrameOfDestination = testFrames[1]; + + sourceFrame.postMessage({ command: "access location.href", indexIntoParentFrameOfDestination }, "*"); + return waitForMessage(sourceFrame); +} + function waitForMessage(expectedSource) { return new Promise(resolve => { const handler = e => { diff --git a/tests/wpt/web-platform-tests/origin-isolation/resources/send-origin-isolation-header.py b/tests/wpt/web-platform-tests/origin-isolation/resources/send-origin-isolation-header.py index b0ba30fcd493..67d85620af1e 100644 --- a/tests/wpt/web-platform-tests/origin-isolation/resources/send-origin-isolation-header.py +++ b/tests/wpt/web-platform-tests/origin-isolation/resources/send-origin-isolation-header.py @@ -17,42 +17,5 @@ def main(request, response): Helper page for origin isolation tests - - + """ diff --git a/tests/wpt/web-platform-tests/resources/idlharness.js b/tests/wpt/web-platform-tests/resources/idlharness.js index cb66fcaa98c0..f336df5f6871 100644 --- a/tests/wpt/web-platform-tests/resources/idlharness.js +++ b/tests/wpt/web-platform-tests/resources/idlharness.js @@ -2597,27 +2597,69 @@ IdlInterface.prototype.test_member_iterable = function(member) { var isPairIterator = member.idlType.length === 2; var proto = this.get_interface_object().prototype; - var descriptor = Object.getOwnPropertyDescriptor(proto, Symbol.iterator); + var iteratorDesc = Object.getOwnPropertyDescriptor(proto, Symbol.iterator); - assert_true(descriptor.writable, "@@iterator property should be writable"); - assert_true(descriptor.configurable, "@@iterator property should be configurable"); - assert_false(descriptor.enumerable, "@@iterator property should not be enumerable"); - assert_equals(typeof descriptor.value, "function", "@@iterator property should be a function"); - assert_equals(descriptor.value.length, 0, "@@iterator function object length should be 0"); - assert_equals(descriptor.value.name, isPairIterator ? "entries" : "values", "@@iterator function object should have the right name"); + assert_true(iteratorDesc.writable, "@@iterator property should be writable"); + assert_true(iteratorDesc.configurable, "@@iterator property should be configurable"); + assert_false(iteratorDesc.enumerable, "@@iterator property should not be enumerable"); + assert_equals(typeof iteratorDesc.value, "function", "@@iterator property should be a function"); + assert_equals(iteratorDesc.value.length, 0, "@@iterator function object length should be 0"); + assert_equals(iteratorDesc.value.name, isPairIterator ? "entries" : "values", "@@iterator function object should have the right name"); if (isPairIterator) { assert_equals(proto["entries"], proto[Symbol.iterator], "entries method should be the same as @@iterator method"); + [ + ["entries", 0], + ["keys", 0], + ["values", 0], + ["forEach", 1] + ].forEach(([property, length]) => { + var desc = Object.getOwnPropertyDescriptor(proto, property); + assert_equals(typeof desc.value, "function", property + " property should be a function"); + assert_equals(desc.value.length, length, property + " function object length should be " + length); + assert_equals(desc.value.name, property, property + " function object should have the right name"); + }); } else { assert_equals(proto[Symbol.iterator], Array.prototype[Symbol.iterator], "@@iterator method should be the same as Array prototype's"); - ["entries", "keys", "values", "forEach", Symbol.iterator].forEach(function(property) { + ["entries", "keys", "values", "forEach", Symbol.iterator].forEach(property => { var propertyName = property === Symbol.iterator ? "@@iterator" : property; assert_equals(proto[property], Array.prototype[property], propertyName + " method should be the same as Array prototype's"); - }.bind(this)); + }); } }.bind(this), this.name + " interface: iterable<" + member.idlType.map(function(t) { return t.idlType; }).join(", ") + ">"); }; +IdlInterface.prototype.test_member_async_iterable = function(member) +{ + subsetTestByKey(this.name, test, function() + { + var isPairIterator = member.idlType.length === 2; + var proto = this.get_interface_object().prototype; + var iteratorDesc = Object.getOwnPropertyDescriptor(proto, Symbol.asyncIterator); + + assert_true(iteratorDesc.writable, "@@asyncIterator property should be writable"); + assert_true(iteratorDesc.configurable, "@@asyncIterator property should be configurable"); + assert_false(iteratorDesc.enumerable, "@@asyncIterator property should not be enumerable"); + assert_equals(typeof iteratorDesc.value, "function", "@@asyncIterator property should be a function"); + assert_equals(iteratorDesc.value.length, 0, "@@asyncIterator function object length should be 0"); + assert_equals(iteratorDesc.value.name, isPairIterator ? "entries" : "values", "@@asyncIterator function object should have the right name"); + + if (isPairIterator) { + assert_equals(proto["entries"], proto[Symbol.asyncIterator], "entries method should be the same as @@asyncIterator method"); + ["entries", "keys", "values"].forEach(property => { + var desc = Object.getOwnPropertyDescriptor(proto, property); + assert_equals(typeof desc.value, "function", property + " property should be a function"); + assert_equals(desc.value.length, 0, property + " function object length should be 0"); + assert_equals(desc.value.name, property, property + " function object should have the right name"); + }); + } else { + assert_equals(proto["values"], proto[Symbol.asyncIterator], "values method should be the same as @@asyncIterator method"); + assert_false("entries" in proto, "should not have an entries method"); + assert_false("keys" in proto, "should not have a keys method"); + } + }.bind(this), this.name + " interface: async iterable<" + member.idlType.map(function(t) { return t.idlType; }).join(", ") + ">"); +}; + IdlInterface.prototype.test_member_stringifier = function(member) { subsetTestByKey(this.name, test, function() @@ -2734,7 +2776,11 @@ IdlInterface.prototype.test_members = function() break; case "iterable": - this.test_member_iterable(member); + if (member.async) { + this.test_member_async_iterable(member); + } else { + this.test_member_iterable(member); + } break; default: // TODO: check more member types. diff --git a/tests/wpt/web-platform-tests/svg/animations/animate-stop-currentcolor.html b/tests/wpt/web-platform-tests/svg/animations/animate-stop-currentcolor.html new file mode 100644 index 000000000000..1536035dec58 --- /dev/null +++ b/tests/wpt/web-platform-tests/svg/animations/animate-stop-currentcolor.html @@ -0,0 +1,26 @@ + +Animating 'stop-color' from 'currentcolor' + + + + + + + + + + + diff --git a/tests/wpt/web-platform-tests/tools/requirements_mypy.txt b/tests/wpt/web-platform-tests/tools/requirements_mypy.txt index 857c7886e183..dc5df8ef9ece 100644 --- a/tests/wpt/web-platform-tests/tools/requirements_mypy.txt +++ b/tests/wpt/web-platform-tests/tools/requirements_mypy.txt @@ -1,3 +1,3 @@ -mypy==0.780 +mypy==0.781 mypy-extensions==0.4.3 typed-ast==1.4.1 diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py index 0340294dcaa9..af1b00725dc4 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/testloader.py @@ -461,13 +461,16 @@ class GroupFileTestSource(TestSource): def make_queue(cls, tests, **kwargs): tests_by_group = cls.tests_by_group(tests, **kwargs) + ids_to_tests = {test.id: test for test in tests} + test_queue = Queue() - for group_name, tests in iteritems(tests_by_group): + for group_name, test_ids in iteritems(tests_by_group): group_metadata = {"scope": group_name} group = deque() - for test in tests: + for test_id in test_ids: + test = ids_to_tests[test_id] group.append(test) test.update_metadata(group_metadata) @@ -487,6 +490,6 @@ def tests_by_group(cls, tests, **kwargs): except KeyError: logger.error("%s is missing from test groups file" % test.id) raise - tests_by_group[group].append(test) + tests_by_group[group].append(test.id) return tests_by_group diff --git a/tests/wpt/web-platform-tests/url/resources/urltestdata.json b/tests/wpt/web-platform-tests/url/resources/urltestdata.json index 1ed95583c12f..ded7107ff757 100644 --- a/tests/wpt/web-platform-tests/url/resources/urltestdata.json +++ b/tests/wpt/web-platform-tests/url/resources/urltestdata.json @@ -6971,5 +6971,20 @@ "input": "file://xn--/p", "base": "about:blank", "failure": true + }, + "https://bugzilla.mozilla.org/show_bug.cgi?id=1647058", + { + "input": "#link", + "base": "https://example.org/##link", + "href": "https://example.org/#link", + "protocol": "https:", + "username": "", + "password": "", + "host": "example.org", + "hostname": "example.org", + "port": "", + "pathname": "/", + "search": "", + "hash": "#link" } ] diff --git a/tests/wpt/web-platform-tests/xhr/resources/accept-language.py b/tests/wpt/web-platform-tests/xhr/resources/accept-language.py index dd00f4b2ee73..b68cf355038c 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/accept-language.py +++ b/tests/wpt/web-platform-tests/xhr/resources/accept-language.py @@ -1,3 +1,3 @@ def main(request, response): - return [("Content-Type", "text/plain"), - request.headers.get("Accept-Language", "NO")] + return [(b"Content-Type", b"text/plain"), + request.headers.get(b"Accept-Language", b"NO")] diff --git a/tests/wpt/web-platform-tests/xhr/resources/accept.py b/tests/wpt/web-platform-tests/xhr/resources/accept.py index a033ebec6467..842df80cda00 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/accept.py +++ b/tests/wpt/web-platform-tests/xhr/resources/accept.py @@ -1,2 +1,2 @@ def main(request, response): - return [("Content-Type", "text/plain")], request.headers.get("accept", "NO") + return [(b"Content-Type", b"text/plain")], request.headers.get(b"accept", b"NO") diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-allow-lists.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-allow-lists.py index 526d365b3111..32c11a0c39ba 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-allow-lists.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-allow-lists.py @@ -1,20 +1,26 @@ import json +from wptserve.utils import isomorphic_decode + def main(request, response): - if "origin" in request.GET: - response.headers.set("Access-Control-Allow-Origin", request.GET["origin"]) - elif "origins" in request.GET: - for origin in request.GET["origins"].split(','): - response.headers.set("Access-Control-Allow-Origin", request.GET["origin"]) + if b"origin" in request.GET: + response.headers.set(b"Access-Control-Allow-Origin", request.GET[b"origin"]) + elif b"origins" in request.GET: + for origin in request.GET[b"origins"].split(b','): + response.headers.set(b"Access-Control-Allow-Origin", request.GET[b"origin"]) - if "headers" in request.GET: - response.headers.set("Access-Control-Allow-Headers", request.GET["headers"]) - if "methods" in request.GET: - response.headers.set("Access-Control-Allow-Methods", request.GET["methods"]) + if b"headers" in request.GET: + response.headers.set(b"Access-Control-Allow-Headers", request.GET[b"headers"]) + if b"methods" in request.GET: + response.headers.set(b"Access-Control-Allow-Methods", request.GET[b"methods"]) headers = dict(request.headers) for header in headers: headers[header] = headers[header][0] - return json.dumps(headers) + str_headers = {} + for key, val in headers.items(): + str_headers[isomorphic_decode(key)] = isomorphic_decode(val) + + return json.dumps(str_headers) diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-allow-with-body.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-allow-with-body.py index 7c7f45c69013..18564e2d44e7 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-allow-with-body.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-allow-with-body.py @@ -1,15 +1,15 @@ def main(request, response): headers = { - "Cache-Control": "no-store", - "Access-Control-Allow-Headers": "X-Requested-With", - "Access-Control-Max-Age": 0, - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Methods": "*", - "Vary": "Accept-Encoding", - "Content-Type": "text/plain" + b"Cache-Control": b"no-store", + b"Access-Control-Allow-Headers": b"X-Requested-With", + b"Access-Control-Max-Age": 0, + b"Access-Control-Allow-Origin": b"*", + b"Access-Control-Allow-Methods": b"*", + b"Vary": b"Accept-Encoding", + b"Content-Type": b"text/plain" } for (name, value) in headers.items(): response.headers.set(name, value) - response.content = "PASS" + response.content = b"PASS" diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-auth-basic.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-auth-basic.py index af32aab97cd5..d1c5579ce242 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-auth-basic.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-auth-basic.py @@ -1,17 +1,17 @@ def main(request, response): - response.headers.set("Cache-Control", "no-store") - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) - response.headers.set("Access-Control-Allow-Credentials", "true") - uid = request.GET.first("uid", None) + response.headers.set(b"Cache-Control", b"no-store") + response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"origin")) + response.headers.set(b"Access-Control-Allow-Credentials", b"true") + uid = request.GET.first(b"uid", None) - if request.method == "OPTIONS": - response.headers.set("Access-Control-Allow-Methods", "PUT") + if request.method == u"OPTIONS": + response.headers.set(b"Access-Control-Allow-Methods", b"PUT") else: username = request.auth.username password = request.auth.password if (not username) or (username != uid): - response.headers.set("WWW-Authenticate", "Basic realm='Test Realm/Cross Origin'") + response.headers.set(b"WWW-Authenticate", b"Basic realm='Test Realm/Cross Origin'") response.status = 401 - response.content = "Authentication cancelled" + response.content = b"Authentication cancelled" else: - response.content = "User: " + username + ", Password: " + password + response.content = b"User: " + username + b", Password: " + password diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-allow-no-credentials.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-allow-no-credentials.py index 12f8660d1fc2..1b8bcdb8ae98 100755 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-allow-no-credentials.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-allow-no-credentials.py @@ -1,6 +1,6 @@ #!/usr/bin/env python def main(request, response): - response.headers.set("Content-Type", "text/plain") - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) + response.headers.set(b"Content-Type", b"text/plain") + response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"origin")) - response.content = "PASS: Cross-domain access allowed." + response.content = b"PASS: Cross-domain access allowed." diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-allow-star.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-allow-star.py index 4557c06b0e3a..8d4642d098ca 100755 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-allow-star.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-allow-star.py @@ -1,6 +1,6 @@ #!/usr/bin/env python def main(request, response): - response.headers.set("Content-Type", "text/plain") - response.headers.set("Access-Control-Allow-Origin", "*") + response.headers.set(b"Content-Type", b"text/plain") + response.headers.set(b"Access-Control-Allow-Origin", b"*") - response.content = "PASS: Cross-domain access allowed." + response.content = b"PASS: Cross-domain access allowed." diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-allow.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-allow.py index 2325925157c1..6051bc2cdc4f 100755 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-allow.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-allow.py @@ -1,7 +1,7 @@ #!/usr/bin/env python def main(request, response): - response.headers.set("Content-Type", "text/plain") - response.headers.set("Access-Control-Allow-Credentials", "true") - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) + response.headers.set(b"Content-Type", b"text/plain") + response.headers.set(b"Access-Control-Allow-Credentials", b"true") + response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"origin")) - response.content = "PASS: Cross-domain access allowed." + response.content = b"PASS: Cross-domain access allowed." diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-cors-safelisted-request-headers.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-cors-safelisted-request-headers.py index eba0e7d4c5ca..46523a905a9f 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-cors-safelisted-request-headers.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-cors-safelisted-request-headers.py @@ -1,14 +1,16 @@ +from wptserve.utils import isomorphic_decode + def main(request, response): - response.headers.set("Cache-Control", "no-store") + response.headers.set(b"Cache-Control", b"no-store") # This should be a simple request; deny preflight - if request.method != "POST": + if request.method != u"POST": response.status = 400 return - response.headers.set("Access-Control-Allow-Credentials", "true") - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) + response.headers.set(b"Access-Control-Allow-Credentials", b"true") + response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"origin")) - for header in ["Accept", "Accept-Language", "Content-Language", "Content-Type"]: + for header in [b"Accept", b"Accept-Language", b"Content-Language", b"Content-Type"]: value = request.headers.get(header) - response.content += header + ": " + (value if value else "") + '\n' + response.content += isomorphic_decode(header) + u": " + (isomorphic_decode(value) if value else u"") + u'\n' diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-denied.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-denied.py index 9f8687854598..0d3964cb1157 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-denied.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-denied.py @@ -1,5 +1,5 @@ def main(request, response): - response.headers.set("Cache-Control", "no-store") - response.headers.set("Content-Type", "text/plain") + response.headers.set(b"Cache-Control", b"no-store") + response.headers.set(b"Content-Type", b"text/plain") - response.text = "FAIL: Cross-domain access allowed." + response.text = b"FAIL: Cross-domain access allowed." diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-options-not-supported.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-options-not-supported.py index 77b274e957ca..bb3f63e311f6 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-options-not-supported.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-options-not-supported.py @@ -1,11 +1,11 @@ def main(request, response): - response.headers.set("Cache-Control", "no-store") + response.headers.set(b"Cache-Control", b"no-store") # Allow simple requests, but deny preflight - if request.method != "OPTIONS": - if "origin" in request.headers: - response.headers.set("Access-Control-Allow-Credentials", "true") - response.headers.set("Access-Control-Allow-Origin", request.headers["origin"]) + if request.method != u"OPTIONS": + if b"origin" in request.headers: + response.headers.set(b"Access-Control-Allow-Credentials", b"true") + response.headers.set(b"Access-Control-Allow-Origin", request.headers[b"origin"]) else: response.status = 500 else: diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-preflight-cache-invalidation.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-preflight-cache-invalidation.py index 6dc8a2a15079..f4f592dac792 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-preflight-cache-invalidation.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-preflight-cache-invalidation.py @@ -1,46 +1,48 @@ +from wptserve.utils import isomorphic_encode + def main(request, response): def fail(message): - response.content = "FAIL " + request.method + ": " + str(message) + response.content = b"FAIL " + isomorphic_encode(request.method) + b": " + message def getState(token): server_state = request.server.stash.take(token) if not server_state: - return "Uninitialized" + return b"Uninitialized" return server_state def setState(state, token): request.server.stash.put(token, state) - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) - response.headers.set("Access-Control-Allow-Credentials", "true") - token = request.GET.first("token", None) + response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"origin")) + response.headers.set(b"Access-Control-Allow-Credentials", b"true") + token = request.GET.first(b"token", None) state = getState(token) - if state == "Uninitialized": - if request.method == "OPTIONS": - response.headers.set("Access-Control-Allow-Methods", "PUT") - response.headers.set("Access-Control-Max-Age", 10) - setState("OPTIONSSent", token) + if state == b"Uninitialized": + if request.method == u"OPTIONS": + response.headers.set(b"Access-Control-Allow-Methods", b"PUT") + response.headers.set(b"Access-Control-Max-Age", 10) + setState(b"OPTIONSSent", token) else: fail(state) - elif state == "OPTIONSSent": - if request.method == "PUT": - response.content = "PASS: First PUT request." - setState("FirstPUTSent", token) + elif state == b"OPTIONSSent": + if request.method == u"PUT": + response.content = b"PASS: First PUT request." + setState(b"FirstPUTSent", token) else: fail(state) - elif state == "FirstPUTSent": - if request.method == "OPTIONS": - response.headers.set("Access-Control-Allow-Methods", "PUT, XMETHOD") - response.headers.set("Access-Control-Allow-Headers", "x-test") - setState("SecondOPTIONSSent", token) - elif request.method == "PUT": - fail("Second PUT request sent without preflight") + elif state == b"FirstPUTSent": + if request.method == u"OPTIONS": + response.headers.set(b"Access-Control-Allow-Methods", b"PUT, XMETHOD") + response.headers.set(b"Access-Control-Allow-Headers", b"x-test") + setState(b"SecondOPTIONSSent", token) + elif request.method == u"PUT": + fail(b"Second PUT request sent without preflight") else: fail(state) - elif state == "SecondOPTIONSSent": - if request.method == "PUT" or request.method == "XMETHOD": - response.content = "PASS: Second OPTIONS request was sent." + elif state == b"SecondOPTIONSSent": + if request.method == u"PUT" or request.method == u"XMETHOD": + response.content = b"PASS: Second OPTIONS request was sent." else: fail(state) else: diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-preflight-cache-timeout.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-preflight-cache-timeout.py index a767d8a4a56d..00c319f082af 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-preflight-cache-timeout.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-preflight-cache-timeout.py @@ -1,47 +1,49 @@ +from wptserve.utils import isomorphic_encode + def main(request, response): def fail(message): - response.content = "FAIL " + request.method + ": " + str(message) + response.content = b"FAIL " + isomorphic_encode(request.method) + b": " + message def getState(token): server_state = request.server.stash.take(token) if not server_state: - return "Uninitialized" + return b"Uninitialized" return server_state def setState(state, token): request.server.stash.put(token, state) - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) - response.headers.set("Access-Control-Allow-Credentials", "true") - token = request.GET.first("token", None) + response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"origin")) + response.headers.set(b"Access-Control-Allow-Credentials", b"true") + token = request.GET.first(b"token", None) state = getState(token) - if state == "Uninitialized": - if request.method == "OPTIONS": - response.headers.set("Access-Control-Allow-Methods", "PUT") - response.headers.set("Access-Control-Allow-Headers", "x-test") - response.headers.set("Access-Control-Max-Age", 1) - setState("OPTIONSSent", token) + if state == b"Uninitialized": + if request.method == u"OPTIONS": + response.headers.set(b"Access-Control-Allow-Methods", b"PUT") + response.headers.set(b"Access-Control-Allow-Headers", b"x-test") + response.headers.set(b"Access-Control-Max-Age", 1) + setState(b"OPTIONSSent", token) else: fail(state) - elif state == "OPTIONSSent": - if request.method == "PUT": - response.content = "PASS: First PUT request." - setState("FirstPUTSent", token) + elif state == b"OPTIONSSent": + if request.method == u"PUT": + response.content = b"PASS: First PUT request." + setState(b"FirstPUTSent", token) else: fail(state) - elif state == "FirstPUTSent": - if request.method == "OPTIONS": - response.headers.set("Access-Control-Allow-Methods", "PUT") - response.headers.set("Access-Control-Allow-Headers", "x-test") - setState("SecondOPTIONSSent", token) - elif request.method == "PUT": - fail("Second PUT request sent without preflight") + elif state == b"FirstPUTSent": + if request.method == u"OPTIONS": + response.headers.set(b"Access-Control-Allow-Methods", b"PUT") + response.headers.set(b"Access-Control-Allow-Headers", b"x-test") + setState(b"SecondOPTIONSSent", token) + elif request.method == u"PUT": + fail(b"Second PUT request sent without preflight") else: fail(state) - elif state == "SecondOPTIONSSent": - if request.method == "PUT": - response.content = "PASS: Second OPTIONS request was sent." + elif state == b"SecondOPTIONSSent": + if request.method == u"PUT": + response.content = b"PASS: Second OPTIONS request was sent." else: fail(state) else: diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-preflight-cache.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-preflight-cache.py index 56892fb6b12c..7a6bb60c01a7 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-preflight-cache.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-preflight-cache.py @@ -1,46 +1,49 @@ + +from wptserve.utils import isomorphic_encode + def main(request, response): def fail(message): - response.content = "FAIL " + request.method + ": " + str(message) + response.content = b"FAIL " + isomorphic_encode(request.method) + b": " + message response.status = 400 def getState(token): server_state = request.server.stash.take(token) if not server_state: - return "Uninitialized" + return b"Uninitialized" return server_state def setState(state, token): request.server.stash.put(token, state) - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) - response.headers.set("Access-Control-Allow-Credentials", "true") - token = request.GET.first("token", None) + response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"origin")) + response.headers.set(b"Access-Control-Allow-Credentials", b"true") + token = request.GET.first(b"token", None) state = getState(token) - if state == "Uninitialized": - if request.method == "OPTIONS": - response.headers.set("Access-Control-Allow-Methods", "PUT") - response.headers.set("Access-Control-Max-Age", 10) - setState("OPTIONSSent", token) + if state == b"Uninitialized": + if request.method == u"OPTIONS": + response.headers.set(b"Access-Control-Allow-Methods", b"PUT") + response.headers.set(b"Access-Control-Max-Age", 10) + setState(b"OPTIONSSent", token) else: fail(state) - elif state == "OPTIONSSent": - if request.method == "PUT": - response.content = "PASS: First PUT request." - setState("FirstPUTSent", token) + elif state == b"OPTIONSSent": + if request.method == u"PUT": + response.content = b"PASS: First PUT request." + setState(b"FirstPUTSent", token) else: fail(state) - elif state == "FirstPUTSent": - if request.method == "PUT": - response.content = "PASS: Second PUT request. Preflight worked." - elif request.method == "OPTIONS": - response.headers.set("Access-Control-Allow-Methods", "PUT") - setState("FAILSecondOPTIONSSent", token) + elif state == b"FirstPUTSent": + if request.method == u"PUT": + response.content = b"PASS: Second PUT request. Preflight worked." + elif request.method == u"OPTIONS": + response.headers.set(b"Access-Control-Allow-Methods", b"PUT") + setState(b"FAILSecondOPTIONSSent", token) else: fail(state) - elif state == "FAILSecondOPTIONSSent": - if request.method == "PUT": - fail("Second OPTIONS request was sent. Preflight failed.") + elif state == b"FAILSecondOPTIONSSent": + if request.method == u"PUT": + fail(b"Second OPTIONS request was sent. Preflight failed.") else: fail(state) else: diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-put-allow.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-put-allow.py index 65f6466f5972..9b347bca4234 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-put-allow.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-put-allow.py @@ -1,20 +1,22 @@ +from wptserve.utils import isomorphic_encode + def main(request, response): - if request.method == "OPTIONS": - response.headers.set("Content-Type", "text/plain") - response.headers.set("Access-Control-Allow-Credentials", "true") - response.headers.set("Access-Control-Allow-Methods", "PUT") - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) + if request.method == u"OPTIONS": + response.headers.set(b"Content-Type", b"text/plain") + response.headers.set(b"Access-Control-Allow-Credentials", b"true") + response.headers.set(b"Access-Control-Allow-Methods", b"PUT") + response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"origin")) - elif request.method == "PUT": - response.headers.set("Content-Type", "text/plain") - response.headers.set("Access-Control-Allow-Credentials", "true") - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) - response.content = "PASS: Cross-domain access allowed." + elif request.method == u"PUT": + response.headers.set(b"Content-Type", b"text/plain") + response.headers.set(b"Access-Control-Allow-Credentials", b"true") + response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"origin")) + response.content = b"PASS: Cross-domain access allowed." try: - response.content += "\n" + request.body + response.content += b"\n" + request.body except: - response.content += "Could not read in content." + response.content += b"Could not read in content." else: - response.headers.set("Content-Type", "text/plain") - response.content = "Wrong method: " + request.method + response.headers.set(b"Content-Type", b"text/plain") + response.content = b"Wrong method: " + isomorphic_encode(request.method) diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-whitelist-response-headers.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-whitelist-response-headers.py index 4dac75331976..346b6b919656 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-whitelist-response-headers.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-basic-whitelist-response-headers.py @@ -1,19 +1,19 @@ def main(request, response): headers = { # CORS-safelisted - "content-type": "text/plain", - "cache-control": "no cache", - "content-language": "en", - "expires": "Fri, 30 Oct 1998 14:19:41 GMT", - "last-modified": "Tue, 15 Nov 1994 12:45:26 GMT", - "pragma": "no-cache", + b"content-type": b"text/plain", + b"cache-control": b"no cache", + b"content-language": b"en", + b"expires": b"Fri, 30 Oct 1998 14:19:41 GMT", + b"last-modified": b"Tue, 15 Nov 1994 12:45:26 GMT", + b"pragma": b"no-cache", # Non-CORS-safelisted - "x-test": "foobar", + b"x-test": b"foobar", - "Access-Control-Allow-Origin": "*" + b"Access-Control-Allow-Origin": b"*" } for header in headers: response.headers.set(header, headers[header]) - response.content = "PASS: Cross-domain access allowed." + response.content = b"PASS: Cross-domain access allowed." diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-cookie.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-cookie.py index 1e0d41d22eaa..8c26475c387a 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-cookie.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-cookie.py @@ -1,16 +1,16 @@ import datetime def main(request, response): - cookie_name = request.GET.first("cookie_name", "") + cookie_name = request.GET.first(b"cookie_name", b"") - response.headers.set("Cache-Control", "no-store") - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) - response.headers.set("Access-Control-Allow-Credentials", "true") + response.headers.set(b"Cache-Control", b"no-store") + response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"origin")) + response.headers.set(b"Access-Control-Allow-Credentials", b"true") for cookie in request.cookies: # Set cookie to expire yesterday - response.set_cookie(cookie, "deleted", expires=-datetime.timedelta(days=1)) + response.set_cookie(cookie, b"deleted", expires=-datetime.timedelta(days=1)) if cookie_name: # Set cookie to expire tomorrow - response.set_cookie(cookie_name, "COOKIE", expires=datetime.timedelta(days=1)) + response.set_cookie(cookie_name, b"COOKIE", expires=datetime.timedelta(days=1)) diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-origin-header.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-origin-header.py index f5128776d2b6..e282fe442500 100755 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-origin-header.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-origin-header.py @@ -1,9 +1,9 @@ #!/usr/bin/env python def main(request, response): - response.headers.set("Content-Type", "text/plain") - response.headers.set("Cache-Control", "no-cache, no-store") - response.headers.set("Access-Control-Allow-External", "true") - response.headers.set("Access-Control-Allow-Origin", "*") + response.headers.set(b"Content-Type", b"text/plain") + response.headers.set(b"Cache-Control", b"no-cache, no-store") + response.headers.set(b"Access-Control-Allow-External", b"true") + response.headers.set(b"Access-Control-Allow-Origin", b"*") - response.content = "PASS: Cross-domain access allowed.\n" - response.content += "HTTP_ORIGIN: " + request.headers.get("origin") + response.content = b"PASS: Cross-domain access allowed.\n" + response.content += b"HTTP_ORIGIN: " + request.headers.get(b"origin") diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-preflight-denied.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-preflight-denied.py index e8010cc0ef71..1ec3037f36b8 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-preflight-denied.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-preflight-denied.py @@ -1,49 +1,49 @@ def main(request, response): def fail(message): - response.content = "FAIL: " + str(message) + response.content = b"FAIL: " + message response.status = 400 def getState(token): server_state = request.server.stash.take(token) if not server_state: - return "Uninitialized" + return b"Uninitialized" return server_state def setState(token, state): request.server.stash.put(token, state) def resetState(token): - setState(token, "") + setState(token, b"") - response.headers.set("Cache-Control", "no-store") - response.headers.set("Access-Control-Allow-Origin", request.headers.get("origin")) - response.headers.set("Access-Control-Max-Age", 1) - token = request.GET.first("token", None) + response.headers.set(b"Cache-Control", b"no-store") + response.headers.set(b"Access-Control-Allow-Origin", request.headers.get(b"origin")) + response.headers.set(b"Access-Control-Max-Age", 1) + token = request.GET.first(b"token", None) state = getState(token) - command = request.GET.first("command", None) + command = request.GET.first(b"command", None) - if command == "reset": - if request.method == "GET": + if command == b"reset": + if request.method == u"GET": resetState(token) - response.content = "Server state reset" + response.content = b"Server state reset" else: - fail("Invalid Method.") - elif state == "Uninitialized": - if request.method == "OPTIONS": - response.content = "This request should not be displayed." - setState(token, "Denied") + fail(b"Invalid Method.") + elif state == b"Uninitialized": + if request.method == u"OPTIONS": + response.content = b"This request should not be displayed." + setState(token, b"Denied") else: fail(state) - elif state == "Denied": - if request.method == "GET" and command == "complete": + elif state == b"Denied": + if request.method == u"GET" and command == b"complete": resetState(token) - response.content = "Request successfully blocked." + response.content = b"Request successfully blocked." else: - setState(token, "Deny Ignored") - fail("The request was not denied.") - elif state == "Deny Ignored": + setState(token, b"Deny Ignored") + fail(b"The request was not denied.") + elif state == b"Deny Ignored": resetState(token) fail(state) else: resetState(token) - fail("Unknown Error.") + fail(b"Unknown Error.") diff --git a/tests/wpt/web-platform-tests/xhr/resources/access-control-preflight-request-header-lowercase.py b/tests/wpt/web-platform-tests/xhr/resources/access-control-preflight-request-header-lowercase.py index d35b89b9f98a..e77fc9a7d2ee 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/access-control-preflight-request-header-lowercase.py +++ b/tests/wpt/web-platform-tests/xhr/resources/access-control-preflight-request-header-lowercase.py @@ -1,16 +1,16 @@ def main(request, response): - response.headers.set("Cache-Control", "no-store") - response.headers.set("Access-Control-Allow-Origin", "*") - response.headers.set("Access-Control-Max-Age", 0) + response.headers.set(b"Cache-Control", b"no-store") + response.headers.set(b"Access-Control-Allow-Origin", b"*") + response.headers.set(b"Access-Control-Max-Age", 0) - if request.method == "OPTIONS": - if "x-test" in [header.strip(" ") for header in - request.headers.get("Access-Control-Request-Headers").split(",")]: - response.headers.set("Access-Control-Allow-Headers", "X-Test") + if request.method == u"OPTIONS": + if b"x-test" in [header.strip(b" ") for header in + request.headers.get(b"Access-Control-Request-Headers").split(b",")]: + response.headers.set(b"Access-Control-Allow-Headers", b"X-Test") else: response.status = 400 - elif request.method == "GET": - if request.headers.get("X-Test"): - response.content = "PASS" + elif request.method == u"GET": + if request.headers.get(b"X-Test"): + response.content = b"PASS" else: response.status = 400 diff --git a/tests/wpt/web-platform-tests/xhr/resources/corsenabled.py b/tests/wpt/web-platform-tests/xhr/resources/corsenabled.py index 4a3e1270b65f..aae19f18f3c9 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/corsenabled.py +++ b/tests/wpt/web-platform-tests/xhr/resources/corsenabled.py @@ -1,23 +1,25 @@ import time +from wptserve.utils import isomorphic_encode + def main(request, response): - headers = [("Access-Control-Allow-Origin", "*"), - ("Access-Control-Allow-Credentials", "true"), - ("Access-Control-Allow-Methods", "GET, POST, PUT, FOO"), - ("Access-Control-Allow-Headers", "x-test, x-foo"), - ("Access-Control-Expose-Headers", "x-request-method, x-request-content-type, x-request-query, x-request-content-length, x-request-data")] + headers = [(b"Access-Control-Allow-Origin", b"*"), + (b"Access-Control-Allow-Credentials", b"true"), + (b"Access-Control-Allow-Methods", b"GET, POST, PUT, FOO"), + (b"Access-Control-Allow-Headers", b"x-test, x-foo"), + (b"Access-Control-Expose-Headers", b"x-request-method, x-request-content-type, x-request-query, x-request-content-length, x-request-data")] - if "delay" in request.GET: - delay = int(request.GET.first("delay")) + if b"delay" in request.GET: + delay = int(request.GET.first(b"delay")) time.sleep(delay) - if "safelist_content_type" in request.GET: - headers.append(("Access-Control-Allow-Headers", "content-type")) + if b"safelist_content_type" in request.GET: + headers.append((b"Access-Control-Allow-Headers", b"content-type")) - headers.append(("X-Request-Method", request.method)) - headers.append(("X-Request-Query", request.url_parts.query if request.url_parts.query else "NO")) - headers.append(("X-Request-Content-Length", request.headers.get("Content-Length", "NO"))) - headers.append(("X-Request-Content-Type", request.headers.get("Content-Type", "NO"))) - headers.append(("X-Request-Data", request.body)) + headers.append((b"X-Request-Method", isomorphic_encode(request.method))) + headers.append((b"X-Request-Query", isomorphic_encode(request.url_parts.query) if request.url_parts.query else b"NO")) + headers.append((b"X-Request-Content-Length", request.headers.get(b"Content-Length", b"NO"))) + headers.append((b"X-Request-Content-Type", request.headers.get(b"Content-Type", b"NO"))) + headers.append((b"X-Request-Data", request.body)) - return headers, "Test" + return headers, b"Test" diff --git a/tests/wpt/web-platform-tests/xhr/resources/delay.py b/tests/wpt/web-platform-tests/xhr/resources/delay.py index 8f97db6f4fc9..61a0ed268844 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/delay.py +++ b/tests/wpt/web-platform-tests/xhr/resources/delay.py @@ -1,7 +1,7 @@ import time def main(request, response): - delay = float(request.GET.first("ms", 500)) + delay = float(request.GET.first(b"ms", 500)) time.sleep(delay / 1E3) - return [("Access-Control-Allow-Origin", "*"), ("Access-Control-Allow-Methods", "YO"), ("Content-type", "text/plain")], "TEST_DELAY" + return [(b"Access-Control-Allow-Origin", b"*"), (b"Access-Control-Allow-Methods", b"YO"), (b"Content-type", b"text/plain")], b"TEST_DELAY" diff --git a/tests/wpt/web-platform-tests/xhr/resources/echo-headers.py b/tests/wpt/web-platform-tests/xhr/resources/echo-headers.py index 8f23d3db019e..1c5bd46709d4 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/echo-headers.py +++ b/tests/wpt/web-platform-tests/xhr/resources/echo-headers.py @@ -1,6 +1,6 @@ def main(request, response): response.writer.write_status(200) - response.writer.write_header("Content-Type", "text/plain") + response.writer.write_header(b"Content-Type", b"text/plain") response.writer.end_headers() response.writer.write(str(request.raw_headers)) response.close_connection = True diff --git a/tests/wpt/web-platform-tests/xhr/resources/echo-method.py b/tests/wpt/web-platform-tests/xhr/resources/echo-method.py index ccb46b6b2eb4..7899c184b768 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/echo-method.py +++ b/tests/wpt/web-platform-tests/xhr/resources/echo-method.py @@ -9,7 +9,7 @@ def main(request, response): content = request.method response.add_required_headers = False - response.writer.write('''HTTP/1.1 200 OK + response.writer.write(u'''HTTP/1.1 200 OK Content-type: text/plain Content-Length: {} diff --git a/tests/wpt/web-platform-tests/xhr/resources/empty-div-utf8-html.py b/tests/wpt/web-platform-tests/xhr/resources/empty-div-utf8-html.py index 26d54b9d1496..5d4c936590c2 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/empty-div-utf8-html.py +++ b/tests/wpt/web-platform-tests/xhr/resources/empty-div-utf8-html.py @@ -1,5 +1,5 @@ def main(request, response): - headers = [("Content-type", "text/html;charset=utf-8")] - content = "
" + headers = [(b"Content-type", b"text/html;charset=utf-8")] + content = b"
" return headers, content diff --git a/tests/wpt/web-platform-tests/xhr/resources/form.py b/tests/wpt/web-platform-tests/xhr/resources/form.py index 6b1c49a993bf..c592943b7955 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/form.py +++ b/tests/wpt/web-platform-tests/xhr/resources/form.py @@ -1,2 +1,2 @@ def main(request, response): - return "id:%s;value:%s;" % (request.POST.first("id"), request.POST.first("value")) + return b"id:%s;value:%s;" % (request.POST.first(b"id"), request.POST.first(b"value")) diff --git a/tests/wpt/web-platform-tests/xhr/resources/gzip.py b/tests/wpt/web-platform-tests/xhr/resources/gzip.py index f17f92e4cc17..17f142c4405f 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/gzip.py +++ b/tests/wpt/web-platform-tests/xhr/resources/gzip.py @@ -1,23 +1,24 @@ import gzip as gzip_module -from cStringIO import StringIO + +from six import BytesIO def main(request, response): - if "content" in request.GET: - output = request.GET["content"] + if b"content" in request.GET: + output = request.GET[b"content"] else: output = request.body - out = StringIO() + out = BytesIO() with gzip_module.GzipFile(fileobj=out, mode="w") as f: f.write(output) output = out.getvalue() - headers = [("Content-type", "text/plain"), - ("Content-Encoding", "gzip"), - ("X-Request-Method", request.method), - ("X-Request-Query", request.url_parts.query if request.url_parts.query else "NO"), - ("X-Request-Content-Length", request.headers.get("Content-Length", "NO")), - ("X-Request-Content-Type", request.headers.get("Content-Type", "NO")), - ("Content-Length", len(output))] + headers = [(b"Content-type", b"text/plain"), + (b"Content-Encoding", b"gzip"), + (b"X-Request-Method", request.method), + (b"X-Request-Query", request.url_parts.query if request.url_parts.query else b"NO"), + (b"X-Request-Content-Length", request.headers.get(b"Content-Length", b"NO")), + (b"X-Request-Content-Type", request.headers.get(b"Content-Type", b"NO")), + (b"Content-Length", len(output))] return headers, output diff --git a/tests/wpt/web-platform-tests/xhr/resources/header-user-agent.py b/tests/wpt/web-platform-tests/xhr/resources/header-user-agent.py index 4778de40268b..ac6af13afe0f 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/header-user-agent.py +++ b/tests/wpt/web-platform-tests/xhr/resources/header-user-agent.py @@ -1,15 +1,15 @@ def main(request, response): - response.headers.set("Access-Control-Allow-Origin", "*") - response.headers.set("Access-Control-Max-Age", 0) - response.headers.set('Access-Control-Allow-Headers', "x-test") + response.headers.set(b"Access-Control-Allow-Origin", b"*") + response.headers.set(b"Access-Control-Max-Age", 0) + response.headers.set(b'Access-Control-Allow-Headers', b"x-test") - if request.method == "OPTIONS": - if not request.headers.get("User-Agent"): - response.content = "FAIL: User-Agent header missing in preflight request." + if request.method == u"OPTIONS": + if not request.headers.get(b"User-Agent"): + response.content = b"FAIL: User-Agent header missing in preflight request." response.status = 400 else: - if request.headers.get("User-Agent"): - response.content = "PASS" + if request.headers.get(b"User-Agent"): + response.content = b"PASS" else: - response.content = "FAIL: User-Agent header missing in request" + response.content = b"FAIL: User-Agent header missing in request" response.status = 400 diff --git a/tests/wpt/web-platform-tests/xhr/resources/headers.py b/tests/wpt/web-platform-tests/xhr/resources/headers.py index 602db35a3cb1..00b37c62abc7 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/headers.py +++ b/tests/wpt/web-platform-tests/xhr/resources/headers.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- def main(request, response): - response.headers.set("Content-Type", "text/plain") - response.headers.set("X-Custom-Header", "test") - response.headers.set("Set-Cookie", "test") - response.headers.set("Set-Cookie2", "test") - response.headers.set("X-Custom-Header-Empty", "") - response.headers.set("X-Custom-Header-Comma", "1") - response.headers.append("X-Custom-Header-Comma", "2") - response.headers.set("X-Custom-Header-Bytes", "…") - return "TEST" + response.headers.set(b"Content-Type", b"text/plain") + response.headers.set(b"X-Custom-Header", b"test") + response.headers.set(b"Set-Cookie", b"test") + response.headers.set(b"Set-Cookie2", b"test") + response.headers.set(b"X-Custom-Header-Empty", b"") + response.headers.set(b"X-Custom-Header-Comma", b"1") + response.headers.append(b"X-Custom-Header-Comma", b"2") + response.headers.set(b"X-Custom-Header-Bytes", u"…".encode("utf-8")) + return b"TEST" diff --git a/tests/wpt/web-platform-tests/xhr/resources/img-utf8-html.py b/tests/wpt/web-platform-tests/xhr/resources/img-utf8-html.py index 085867f9510e..3057674cb603 100644 --- a/tests/wpt/web-platform-tests/xhr/resources/img-utf8-html.py +++ b/tests/wpt/web-platform-tests/xhr/resources/img-utf8-html.py @@ -1,5 +1,5 @@ def main(request, response): - headers = [("Content-type", "text/html;charset=utf-8")] - content = "foo" + headers = [(b"Content-type", b"text/html;charset=utf-8")] + content = b"foo" return headers, content From a39d1313f2d49f2ded32aa2906c7b150489e4942 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Tue, 23 Jun 2020 09:56:16 -0400 Subject: [PATCH 2/3] Fix intermittent crash. --- .../css/css-ui/text-overflow-change-color.html.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/wpt/metadata-layout-2020/css/css-ui/text-overflow-change-color.html.ini b/tests/wpt/metadata-layout-2020/css/css-ui/text-overflow-change-color.html.ini index a474a92193a5..5f89cf293162 100644 --- a/tests/wpt/metadata-layout-2020/css/css-ui/text-overflow-change-color.html.ini +++ b/tests/wpt/metadata-layout-2020/css/css-ui/text-overflow-change-color.html.ini @@ -1,2 +1,2 @@ [text-overflow-change-color.html] - expected: CRASH + expected: FAIL From 7876f9993a350b242b058605e91a891a0c9b128a Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Tue, 23 Jun 2020 09:56:39 -0400 Subject: [PATCH 3/3] Fix intermittent crash expectation. --- .../wpt/metadata/css/css-ui/text-overflow-change-color.html.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/wpt/metadata/css/css-ui/text-overflow-change-color.html.ini b/tests/wpt/metadata/css/css-ui/text-overflow-change-color.html.ini index a474a92193a5..5f89cf293162 100644 --- a/tests/wpt/metadata/css/css-ui/text-overflow-change-color.html.ini +++ b/tests/wpt/metadata/css/css-ui/text-overflow-change-color.html.ini @@ -1,2 +1,2 @@ [text-overflow-change-color.html] - expected: CRASH + expected: FAIL