diff options
author | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2020-11-19 08:20:44 +0000 |
---|---|---|
committer | WPT Sync Bot <josh+wptsync@joshmatthews.net> | 2020-11-19 10:59:58 +0000 |
commit | 927b34500fed7c0883a3c6c96a74e74b74f0c908 (patch) | |
tree | 04ce66e20cd2142a18ca7bd93ec696509c4cbf10 | |
parent | e2687b5da8ffb7c983c2c16d08373aef3ce2d827 (diff) | |
download | servo-927b34500fed7c0883a3c6c96a74e74b74f0c908.tar.gz servo-927b34500fed7c0883a3c6c96a74e74b74f0c908.zip |
Update web-platform-tests to revision c12517985bca8a3fafd1d3f4f78df75ea4ea79cf
121 files changed, 2407 insertions, 254 deletions
diff --git a/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-form-controls.tentative.html.ini b/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-form-controls.tentative.html.ini new file mode 100644 index 00000000000..80508a92b6c --- /dev/null +++ b/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-form-controls.tentative.html.ini @@ -0,0 +1,37 @@ +[send-file-form-controls.tentative.html] + [Upload file-for-upload-in-form-ESC-[\x1b\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-BS-[\x08\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-VT-[\x0b\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-LF-CR-[\n\r\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-FF-[\x0c\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-LF-[\n\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-CR-LF-[\r\n\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-SPACE-[ \].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-CR-[\r\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-HT-[\t\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-NUL-[\x00\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-DEL-[\].txt (ASCII) in UTF-8 form] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-form-punctuation.tentative.html.ini b/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-form-punctuation.tentative.html.ini new file mode 100644 index 00000000000..2d61eed22bf --- /dev/null +++ b/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-form-punctuation.tentative.html.ini @@ -0,0 +1,82 @@ +[send-file-form-punctuation.tentative.html] + [Upload file-for-upload-in-form-CIRCUMFLEX-ACCENT-[^\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-QUOTATION-MARK-["\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-LEFT-SQUARE-BRACKET-[[\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-EQUALS-SIGN-[=\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-TILDE-[~\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-LEFT-PARENTHESIS-[(\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-VERTICAL-LINE-[|\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-ASTERISK-[*\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-RIGHT-PARENTHESIS-[)\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-PERCENT-SIGN-[%\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-DOLLAR-SIGN-[$\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-COMMA-[,\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-RIGHT-CURLY-BRACKET-[}\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-QUESTION-MARK-[?\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-SOLIDUS-[/\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-LEFT-CURLY-BRACKET-[{\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-APOSTROPHE-['\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-RIGHT-SQUARE-BRACKET-[\]\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-COLON-[:\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload 'file-for-upload-in-form-single-quoted.txt' (ASCII) in UTF-8 form] + expected: FAIL + + [Upload "file-for-upload-in-form-double-quoted.txt" (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-SEMICOLON-[;\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-AMPERSAND-[&\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-PLUS-SIGN-[+\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-REVERSE-SOLIDUS-[\\\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-EXCLAMATION-MARK-[!\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-FULL-STOP-[.\].txt (ASCII) in UTF-8 form] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-formdata-controls.tentative.html.ini b/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-formdata-controls.tentative.html.ini new file mode 100644 index 00000000000..5fb1b543504 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-formdata-controls.tentative.html.ini @@ -0,0 +1,37 @@ +[send-file-formdata-controls.tentative.html] + [Upload file-for-upload-in-form-BS-[\x08\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-VT-[\x0b\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-NUL-[\x00\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-SPACE-[ \].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-LF-[\n\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-FF-[\x0c\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-CR-[\r\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-HT-[\t\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-LF-CR-[\n\r\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-ESC-[\x1b\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-DEL-[\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-CR-LF-[\r\n\].txt (ASCII) in fetch with FormData] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-formdata-punctuation.tentative.html.ini b/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-formdata-punctuation.tentative.html.ini new file mode 100644 index 00000000000..2f2eef05209 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-formdata-punctuation.tentative.html.ini @@ -0,0 +1,82 @@ +[send-file-formdata-punctuation.tentative.html] + [Upload file-for-upload-in-form-COMMA-[,\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-QUESTION-MARK-[?\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-CIRCUMFLEX-ACCENT-[^\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-SEMICOLON-[;\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-EXCLAMATION-MARK-[!\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-AMPERSAND-[&\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-DOLLAR-SIGN-[$\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-APOSTROPHE-['\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-RIGHT-CURLY-BRACKET-[}\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload 'file-for-upload-in-form-single-quoted.txt' (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-RIGHT-SQUARE-BRACKET-[\]\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-QUOTATION-MARK-["\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload "file-for-upload-in-form-double-quoted.txt" (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-SOLIDUS-[/\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-LEFT-SQUARE-BRACKET-[[\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-LEFT-CURLY-BRACKET-[{\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-EQUALS-SIGN-[=\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-TILDE-[~\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-ASTERISK-[*\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-PLUS-SIGN-[+\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-RIGHT-PARENTHESIS-[)\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-COLON-[:\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-FULL-STOP-[.\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-VERTICAL-LINE-[|\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-LEFT-PARENTHESIS-[(\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-REVERSE-SOLIDUS-[\\\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-PERCENT-SIGN-[%\].txt (ASCII) in fetch with FormData] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-formdata-utf-8.html.ini b/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-formdata-utf-8.html.ini new file mode 100644 index 00000000000..dbab0646d07 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-formdata-utf-8.html.ini @@ -0,0 +1,19 @@ +[send-file-formdata-utf-8.html] + [Upload file-for-upload-in-form-★星★.txt (JIS X 0201 and JIS X 0208) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ.txt (Unicode) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-☺😂.txt (windows-1252) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-☺😂.txt (Unicode) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form.txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-.txt (x-user-defined) in fetch with FormData] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-formdata.html.ini b/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-formdata.html.ini new file mode 100644 index 00000000000..fc2478a1abc --- /dev/null +++ b/tests/wpt/metadata-layout-2020/FileAPI/file/send-file-formdata.html.ini @@ -0,0 +1,4 @@ +[send-file-formdata.html] + [Upload file-for-upload-in-form.txt (ASCII) in fetch with FormData] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini deleted file mode 100644 index f64b45fea6b..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-002.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-002.html] - [Hit test float] - 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 new file mode 100644 index 00000000000..4bfb0c2053a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/CSS2/floats/hit-test-floats-004.html.ini @@ -0,0 +1,4 @@ +[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 baa9f1a7541..00000000000 --- 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/CSS2/normal-flow/hit-test-anonymous-block.html.ini b/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/hit-test-anonymous-block.html.ini deleted file mode 100644 index 8efb7024ae4..00000000000 --- a/tests/wpt/metadata-layout-2020/css/CSS2/normal-flow/hit-test-anonymous-block.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-anonymous-block.html] - [Hit test beside line of text inside anonymous block] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini index 6ef8bb1049f..171592fc08f 100644 --- a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-iframes.html.ini @@ -2,6 +2,3 @@ [elementsFromPoint on the root document for points in iframe elements] expected: FAIL - [elementsFromPoint on inner documents] - expected: FAIL - diff --git a/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini new file mode 100644 index 00000000000..e181af5397f --- /dev/null +++ b/tests/wpt/metadata-layout-2020/css/cssom-view/elementsFromPoint-invalid-cases.html.ini @@ -0,0 +1,4 @@ +[elementsFromPoint-invalid-cases.html] + [The root element is the last element returned for otherwise empty queries within the viewport] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/response.window.js.ini index 83f6e96cbdb..d776797d105 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 @@ -99,9 +99,6 @@ [Request: combined response Content-Type: text/plain;charset=gbk text/plain] expected: NOTRUN - [fetch(): separate response Content-Type: text/plain] - expected: FAIL - [fetch(): combined response Content-Type: text/html;" \\" text/plain ";charset=GBK] expected: NOTRUN @@ -327,6 +324,12 @@ [<iframe>: separate response Content-Type: text/html;" \\" text/plain] expected: FAIL - [<iframe>: combined response Content-Type: text/html;x=" text/plain] + [<iframe>: combined response Content-Type: */* text/html] + expected: FAIL + + [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html;" text/plain] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini index e67f0406fc3..b2ffc8abf78 100644 --- a/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/content-type/script.window.js.ini @@ -53,3 +53,9 @@ [combined text/javascript ] expected: FAIL + [separate text/javascript x/x] + expected: FAIL + + [separate text/javascript error] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini index 30e1b851fd4..58de838d890 100644 --- a/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata-layout-2020/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,3 +11,6 @@ [X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] expected: FAIL + [X-Content-Type-Options%3A%20%22nosniFF%22] + expected: FAIL + diff --git a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini index 51f8272a6de..dc2e45516de 100644 --- a/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini +++ b/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini @@ -1,4 +1,4 @@ -[traverse_the_history_3.html] +[traverse_the_history_5.html] [Multiple history traversals, last would be aborted] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini index 16fa2c5cfc1..dec4c579137 100644 --- a/tests/wpt/metadata-layout-2020/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini +++ b/tests/wpt/metadata-layout-2020/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini @@ -1,4 +1,5 @@ [creating_browsing_context_test_01.html] + expected: TIMEOUT [first argument: absolute url] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata-layout-2020/html/browsers/windows/embedded-opener-remove-frame.html.ini b/tests/wpt/metadata-layout-2020/html/browsers/windows/embedded-opener-remove-frame.html.ini index 9a85a905394..8e2a63e3b7f 100644 --- a/tests/wpt/metadata-layout-2020/html/browsers/windows/embedded-opener-remove-frame.html.ini +++ b/tests/wpt/metadata-layout-2020/html/browsers/windows/embedded-opener-remove-frame.html.ini @@ -1,4 +1,5 @@ [embedded-opener-remove-frame.html] + expected: CRASH [opener of discarded nested browsing context] expected: FAIL diff --git a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini index c12c0f8ae48..6852d7663de 100644 --- a/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini +++ b/tests/wpt/metadata-layout-2020/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini @@ -1,4 +1,8 @@ [skip-document-with-fragment.html] + expected: TIMEOUT [Autofocus elements in iframed documents with URL fragments should be skipped.] expected: FAIL + [Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.] + expected: TIMEOUT + 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 d913fcbb129..1b74d6e073d 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,5 +1,4 @@ [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/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index f4f994c5d6f..7a36937927c 100644 --- a/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/metadata-layout-2020/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -1,5 +1,4 @@ [iframe_sandbox_popups_nonescaping-3.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/forms/form-submission-0/newline-normalization.html.ini b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/newline-normalization.html.ini new file mode 100644 index 00000000000..ff5e9edab6a --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/semantics/forms/form-submission-0/newline-normalization.html.ini @@ -0,0 +1,13 @@ +[newline-normalization.html] + [Form newline normalization: \\n\\r in the name becomes \\r\\n\\r\\n] + expected: FAIL + + [Form newline normalization: \\n\\r in the value becomes \\r\\n\\r\\n] + expected: FAIL + + [Form newline normalization: \\r in the value becomes \\r\\n] + expected: FAIL + + [Form newline normalization: \\r in the name becomes \\r\\n] + 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 new file mode 100644 index 00000000000..59a54fe88e4 --- /dev/null +++ b/tests/wpt/metadata-layout-2020/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini @@ -0,0 +1,4 @@ +[module-delayed.html] + [async document.write in a module] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini index 2aa63e3ae38..afb8ad280f1 100644 --- a/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini +++ b/tests/wpt/metadata-layout-2020/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini @@ -290,3 +290,9 @@ [X SNR (-47.512665238764875 dB) is not greater than or equal to 65.737. Got -47.512665238764875.] expected: FAIL + [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-3.8748168447328256e+16\t9.3139332532882690e-1\t3.8748168447328256e+16\t4.1602368616554424e+16\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 3.8748168447328256e+16 at index of 28696.\n\tMax RelError of 4.1602368616554424e+16 at index of 28696.\n] + expected: FAIL + + [X SNR (-288.33093763692256 dB) is not greater than or equal to 65.737. Got -288.33093763692256.] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/with-ports/017.html.ini new file mode 100644 index 00000000000..064cf47545b --- /dev/null +++ b/tests/wpt/metadata-layout-2020/webmessaging/with-ports/017.html.ini @@ -0,0 +1,5 @@ +[017.html] + expected: TIMEOUT + [origin of the script that invoked the method, about:blank] + expected: TIMEOUT + 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 deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata-layout-2020/webmessaging/with-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[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/018.html.ini b/tests/wpt/metadata-layout-2020/webmessaging/without-ports/018.html.ini deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata-layout-2020/webmessaging/without-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[018.html] - expected: TIMEOUT - [origin of the script that invoked the method, javascript:] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/FileAPI/file/send-file-form-controls.tentative.html.ini b/tests/wpt/metadata/FileAPI/file/send-file-form-controls.tentative.html.ini new file mode 100644 index 00000000000..80508a92b6c --- /dev/null +++ b/tests/wpt/metadata/FileAPI/file/send-file-form-controls.tentative.html.ini @@ -0,0 +1,37 @@ +[send-file-form-controls.tentative.html] + [Upload file-for-upload-in-form-ESC-[\x1b\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-BS-[\x08\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-VT-[\x0b\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-LF-CR-[\n\r\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-FF-[\x0c\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-LF-[\n\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-CR-LF-[\r\n\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-SPACE-[ \].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-CR-[\r\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-HT-[\t\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-NUL-[\x00\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-DEL-[\].txt (ASCII) in UTF-8 form] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/file/send-file-form-punctuation.tentative.html.ini b/tests/wpt/metadata/FileAPI/file/send-file-form-punctuation.tentative.html.ini new file mode 100644 index 00000000000..2d61eed22bf --- /dev/null +++ b/tests/wpt/metadata/FileAPI/file/send-file-form-punctuation.tentative.html.ini @@ -0,0 +1,82 @@ +[send-file-form-punctuation.tentative.html] + [Upload file-for-upload-in-form-CIRCUMFLEX-ACCENT-[^\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-QUOTATION-MARK-["\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-LEFT-SQUARE-BRACKET-[[\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-EQUALS-SIGN-[=\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-TILDE-[~\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-LEFT-PARENTHESIS-[(\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-VERTICAL-LINE-[|\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-ASTERISK-[*\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-RIGHT-PARENTHESIS-[)\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-PERCENT-SIGN-[%\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-DOLLAR-SIGN-[$\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-COMMA-[,\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-RIGHT-CURLY-BRACKET-[}\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-QUESTION-MARK-[?\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-SOLIDUS-[/\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-LEFT-CURLY-BRACKET-[{\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-APOSTROPHE-['\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-RIGHT-SQUARE-BRACKET-[\]\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-COLON-[:\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload 'file-for-upload-in-form-single-quoted.txt' (ASCII) in UTF-8 form] + expected: FAIL + + [Upload "file-for-upload-in-form-double-quoted.txt" (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-SEMICOLON-[;\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-AMPERSAND-[&\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-PLUS-SIGN-[+\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-REVERSE-SOLIDUS-[\\\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-EXCLAMATION-MARK-[!\].txt (ASCII) in UTF-8 form] + expected: FAIL + + [Upload file-for-upload-in-form-FULL-STOP-[.\].txt (ASCII) in UTF-8 form] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/file/send-file-formdata-controls.tentative.html.ini b/tests/wpt/metadata/FileAPI/file/send-file-formdata-controls.tentative.html.ini new file mode 100644 index 00000000000..5fb1b543504 --- /dev/null +++ b/tests/wpt/metadata/FileAPI/file/send-file-formdata-controls.tentative.html.ini @@ -0,0 +1,37 @@ +[send-file-formdata-controls.tentative.html] + [Upload file-for-upload-in-form-BS-[\x08\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-VT-[\x0b\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-NUL-[\x00\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-SPACE-[ \].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-LF-[\n\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-FF-[\x0c\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-CR-[\r\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-HT-[\t\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-LF-CR-[\n\r\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-ESC-[\x1b\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-DEL-[\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-CR-LF-[\r\n\].txt (ASCII) in fetch with FormData] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/file/send-file-formdata-punctuation.tentative.html.ini b/tests/wpt/metadata/FileAPI/file/send-file-formdata-punctuation.tentative.html.ini new file mode 100644 index 00000000000..2f2eef05209 --- /dev/null +++ b/tests/wpt/metadata/FileAPI/file/send-file-formdata-punctuation.tentative.html.ini @@ -0,0 +1,82 @@ +[send-file-formdata-punctuation.tentative.html] + [Upload file-for-upload-in-form-COMMA-[,\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-QUESTION-MARK-[?\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-CIRCUMFLEX-ACCENT-[^\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-SEMICOLON-[;\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-EXCLAMATION-MARK-[!\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-AMPERSAND-[&\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-DOLLAR-SIGN-[$\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-APOSTROPHE-['\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-RIGHT-CURLY-BRACKET-[}\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload 'file-for-upload-in-form-single-quoted.txt' (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-RIGHT-SQUARE-BRACKET-[\]\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-QUOTATION-MARK-["\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload "file-for-upload-in-form-double-quoted.txt" (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-SOLIDUS-[/\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-LEFT-SQUARE-BRACKET-[[\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-LEFT-CURLY-BRACKET-[{\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-EQUALS-SIGN-[=\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-TILDE-[~\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-ASTERISK-[*\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-PLUS-SIGN-[+\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-RIGHT-PARENTHESIS-[)\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-COLON-[:\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-FULL-STOP-[.\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-VERTICAL-LINE-[|\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-LEFT-PARENTHESIS-[(\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-REVERSE-SOLIDUS-[\\\].txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-PERCENT-SIGN-[%\].txt (ASCII) in fetch with FormData] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/file/send-file-formdata-utf-8.html.ini b/tests/wpt/metadata/FileAPI/file/send-file-formdata-utf-8.html.ini new file mode 100644 index 00000000000..dbab0646d07 --- /dev/null +++ b/tests/wpt/metadata/FileAPI/file/send-file-formdata-utf-8.html.ini @@ -0,0 +1,19 @@ +[send-file-formdata-utf-8.html] + [Upload file-for-upload-in-form-★星★.txt (JIS X 0201 and JIS X 0208) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ.txt (Unicode) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-☺😂.txt (windows-1252) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-☺😂.txt (Unicode) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form.txt (ASCII) in fetch with FormData] + expected: FAIL + + [Upload file-for-upload-in-form-.txt (x-user-defined) in fetch with FormData] + expected: FAIL + diff --git a/tests/wpt/metadata/FileAPI/file/send-file-formdata.html.ini b/tests/wpt/metadata/FileAPI/file/send-file-formdata.html.ini new file mode 100644 index 00000000000..fc2478a1abc --- /dev/null +++ b/tests/wpt/metadata/FileAPI/file/send-file-formdata.html.ini @@ -0,0 +1,4 @@ +[send-file-formdata.html] + [Upload file-for-upload-in-form.txt (ASCII) in fetch with FormData] + expected: FAIL + diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 74557f3cc1e..281db812ef7 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -125483,7 +125483,7 @@ ] ], "background-size-006.html": [ - "be082b6799a15ff156296fbaaf3c3963d8466bc8", + "81e4c9ea3ecbfd3598b35bd35c4a7cf1bbbcd082", [ null, [ @@ -125522,7 +125522,7 @@ ] ], "background-size-009.html": [ - "7e187b8e77ba2af5ed305a76f91b425f09f02251", + "9d76478ffade931ef2cd523ae815ddc028cfc8e4", [ null, [ @@ -125587,7 +125587,7 @@ ] ], "background-size-014.html": [ - "bbb246f6d565b2dd89b2c5157fb56926ed3a4249", + "0f602c646418eaad6e8549b76e5ad78479876944", [ null, [ @@ -125626,7 +125626,7 @@ ] ], "background-size-017.html": [ - "d52f62ee0f5bc357e1a3cb6cfafb4eec55d36142", + "71f216ffbba9cd3deda2ea74e3d9d4a3b5829f94", [ null, [ @@ -134106,6 +134106,19 @@ ], {} ] + ], + "content-visibility-078.html": [ + "51382bccf04456ae4adea00cc08daceaf9e952f6", + [ + null, + [ + [ + "/css/css-contain/content-visibility/content-visibility-078-ref.html", + "==" + ] + ], + {} + ] ] }, "counter-scoping-001.html": [ @@ -168646,6 +168659,19 @@ {} ] ], + "first-line-with-inline-block-before.html": [ + "8b454faeda368c4d07fb5767991fc25665ec596a", + [ + null, + [ + [ + "/css/css-pseudo/first-line-with-inline-block-before-ref.html", + "==" + ] + ], + {} + ] + ], "first-line-with-inline-block.html": [ "12e11a3d2e4344b57c755b8a7e749115b299e549", [ @@ -256438,6 +256464,14 @@ "506a59fec1eb33661658850254344e264c323c2e", [] ], + "file": { + "resources": { + "echo-content-escaped.py": [ + "bdbbc0f1ea56591a48a8e06e9a39491a8d49aea6", + [] + ] + } + }, "filelist-section": { "support": { "upload.txt": [ @@ -256476,7 +256510,11 @@ [] ], "send-file-form-helper.js": [ - "a7522c7b08ebc2451637e91dbd6a07040af4939d", + "d6adf21ec337957e22876f601ba05d5711ee3d3b", + [] + ], + "send-file-formdata-helper.js": [ + "53572ef36c8d1b17037117d988c64e8b4fbc2a73", [] ], "upload.txt": [ @@ -301972,6 +302010,10 @@ "4b37070bd7e03bfcef0baaf9440d978859d1e780", [] ], + "content-visibility-078-ref.html": [ + "64629ca11977c77e4b1420881c5bc59a50816323", + [] + ], "inline-container-with-child-ref.html": [ "af51cbd5db8f3eff56411345860548e95fe4d354", [] @@ -315485,6 +315527,10 @@ "fcee7995052717c0509c58a76fa1f420434ceb43", [] ], + "first-line-with-inline-block-before-ref.html": [ + "8cfe779766bb9b152f145d657aedc94f6cb42362", + [] + ], "first-line-with-out-of-flow-ref.html": [ "7193bf25eb88c5443457480f7ce27782acd9473a", [] @@ -355934,6 +355980,10 @@ "944de61c71561d9a96825b9a344bc642a48f262a", [] ], + "__init__.py": [ + "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391", + [] + ], "resource-timing-level1.js": [ "95b5cdfb1ed0ca2bbfd6b692ad565512218dd7a4", [] @@ -358182,6 +358232,10 @@ "dfce9e7ed46d8719409f45f33f21888230b1f3b8", [] ], + "claim-blob-url-worker-fetch-iframe.html": [ + "12ae1a87258f7235c6165029b48e7b4dc2ff90d2", + [] + ], "claim-nested-worker-fetch-iframe.html": [ "2fa15db61d9ce6742f077e72b98629f49e0b7380", [] @@ -367658,7 +367712,7 @@ [] ], "testfiles.py": [ - "4d10878d9d5f57310fe0d7300d312fcae67f193c", + "fee19cd1c49769f972e8856a3b29feba7713b0a1", [] ], "tests": { @@ -368219,7 +368273,7 @@ [] ], "manifestupdate.py": [ - "129457b3fd1270dc66029d3ea873d353714aa607", + "c74632b0486ceb891b855c1573e090459d718a6a", [] ], "metadata.py": [ @@ -368326,7 +368380,7 @@ [] ], "test_update.py": [ - "a1ba8de28780647544b22cb1127568d57d4dcac4", + "770438398215556785fa330148df880393626e0e", [] ], "test_wpttest.py": [ @@ -370843,7 +370897,7 @@ [] ], "fixtures.py": [ - "957c4d05868b9cb3ba440727de79d3c4b120c5a3", + "3eb5ffd26fa5f8e1f909b98214024dffefc704fe", [] ], "helpers.py": [ @@ -375552,6 +375606,13 @@ {} ] ], + "send-file-form-controls.tentative.html": [ + "d11f4a860931b4249f8c15d87143b8904cb61364", + [ + null, + {} + ] + ], "send-file-form-iso-2022-jp.tentative.html": [ "421de301298ba55a70124290066eaf66e6416394", [ @@ -375559,22 +375620,29 @@ {} ] ], + "send-file-form-punctuation.tentative.html": [ + "5c2d6d0bf1fe0196932aa1cbddb3c6669db44698", + [ + null, + {} + ] + ], "send-file-form-utf-8.html": [ - "03417ba72e4c2cccef3ff17f4e41bba76cc598bb", + "1be44f4f4db09efdf155e5fe27bb18cacecf18e9", [ null, {} ] ], "send-file-form-windows-1252.tentative.html": [ - "8e9463f83aecb47ba1da1aa30d1903508e279937", + "a2c37186b3e023d19ba3d731cd642f1f3fcdada8", [ null, {} ] ], "send-file-form-x-user-defined.tentative.html": [ - "072e3bb1e02ea0ccc0e5442c1cae316acb40ce30", + "503b08a51706f77eeda7ca066c18200ad6750699", [ null, {} @@ -375586,6 +375654,34 @@ null, {} ] + ], + "send-file-formdata-controls.tentative.html": [ + "4259741b63ef316613a2fbea4236bbcbe6cfb1df", + [ + null, + {} + ] + ], + "send-file-formdata-punctuation.tentative.html": [ + "d8e84e9d978094f84c5c0fb06526fd0734f13efa", + [ + null, + {} + ] + ], + "send-file-formdata-utf-8.html": [ + "7a7f6cefe776b9d4c9ed29c6652a6978be5dbb4b", + [ + null, + {} + ] + ], + "send-file-formdata.html": [ + "77e048e54741c013ab5ce9395265de28e1de8771", + [ + null, + {} + ] ] }, "fileReader.html": [ @@ -394351,10 +394447,12 @@ ] ], "frame-ancestors-nested-cross-in-same-star-allow.html": [ - "c523b9ef10a7832cc21dbe90902dec16431c0651", + "3658fb65023b0a70a763b1e4e34c39c6d503eb7d", [ null, - {} + { + "timeout": "long" + } ] ], "frame-ancestors-nested-cross-in-same-url-allow.html": [ @@ -398409,10 +398507,12 @@ ] ], "match.html": [ - "14921d1d62c0d80349cf1149e55e3af0b51f77d5", + "e42ee24f3d0af258ac35534301c1626331ec55ed", [ null, - {} + { + "timeout": "long" + } ] ] }, @@ -414668,6 +414768,13 @@ null, {} ] + ], + "position-sticky-container.html": [ + "604b536df17c13467083fb7626001bf3552b71ca", + [ + null, + {} + ] ] }, "visibility-collapse-col-001.html": [ @@ -430190,10 +430297,12 @@ ] ], "xml_xpath_runner.html": [ - "42404562a3c95b3004c7b0b7402ea366faeb4d83", + "03edf50515c231a9f9fbf0a0587261627b949e19", [ null, - {} + { + "timeout": "long" + } ] ] }, @@ -430272,10 +430381,12 @@ ] ], "white-spaces-after-execCommand-delete.tentative.html": [ - "6aafdddcef01b9fb77a3bfd7f9343170a653913b", + "1490bf06f55a6c2b1e10afc044b19b108e5dd482", [ null, - {} + { + "timeout": "long" + } ] ], "white-spaces-after-execCommand-forwarddelete.tentative.html": [ @@ -475333,17 +475444,21 @@ ] ], "popup-coop-by-sw-from-coop.https.html": [ - "fc38ea1c66b3ec5ccd8f517a2e76a0c203846c8e", + "0b7d6d91001d406b575ce4185f2ae68ef2a909e2", [ null, - {} + { + "timeout": "long" + } ] ], "popup-coop-by-sw.https.html": [ - "13d9e79ca77c65e9dbd719e4601f6a8af476ae7f", + "830318c208f3ad52585882bd265500f51a4ea95d", [ null, - {} + { + "timeout": "long" + } ] ], "popup-meta-http-equiv.https.html": [ @@ -478261,6 +478376,22 @@ } }, "links": { + "icon": { + "no-error-event.sub.html": [ + "128b5d2d3c6830b80fe55c6a9663fd85502db548", + [ + null, + {} + ] + ], + "no-load-event.html": [ + "f81399a23093f7978d1241c35048395be36081dd", + [ + null, + {} + ] + ] + }, "manifest": { "link-relationship": { "link-rel-manifest.html": [ @@ -478367,10 +478498,12 @@ }, "rendering": { "dimension-attributes.html": [ - "2c544aac31ead3b04ca8d3fc8cb490c51a74e8bb", + "00a5ff9a9673f1bc5bea22807e2e90a41c3348af", [ null, - {} + { + "timeout": "long" + } ] ], "non-replaced-elements": { @@ -481348,10 +481481,12 @@ ] ], "track-mode.html": [ - "2474a11fb1adb0ccd2a4f7a5b82098fa7ea04e57", + "206ac9968f8e4b47b6defa09f669aeaf57fb5593", [ null, - {} + { + "timeout": "long" + } ] ], "track-node-add-remove.html": [ @@ -484267,6 +484402,13 @@ {} ] ], + "newline-normalization.html": [ + "d3de7699662da75fc37fba31cf994f02a13de191", + [ + null, + {} + ] + ], "reparent-form-during-planned-navigation-task.html": [ "6b50bf599b888b1c3273a4e311ba6af69d67e86b", [ @@ -491281,11 +491423,12 @@ ] ], "consumption-crossorigin.sub.tentative.html": [ - "cc21418e47dbe074b121430f2463aaca76347187", + "ebeeb935c062979bd9758bc4cc66d2ed516976ec", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -491343,11 +491486,12 @@ ] ], "propagation-crossorigin.sub.tentative.html": [ - "c29c9d8440d0ff25fe3ef88ae9b8b3382dfb4bcf", + "467dfb81b75c3ace7f2186856f7404995ee7f24c", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -494447,11 +494591,12 @@ ] ], "pause.html": [ - "72f34c1bde8cf54814cdf91b3fdeeaff90dd07e3", + "ec33c5110292c420009b0ce46461754390975f76", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -508098,11 +508243,12 @@ ] ], "pointerevent_touch-action-inherit_child-auto-child-none_touch.html": [ - "257043f2249c63b5ac6e3245d17acb80caa83732", + "53eafbb2f2ae2854ffe54c49b66f760b0bc94e10", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -508116,11 +508262,12 @@ ] ], "pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html": [ - "c2f4bd35aebbb67194f4cc17d3d52709d63f732a", + "a820b4f3cf4ca29a6b37286e084a18102cc054af", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -508143,11 +508290,12 @@ ] ], "pointerevent_touch-action-inherit_parent-none_touch.html": [ - "04db243676fd2f454421d10b6a7e6a1cef4e3e04", + "e8c205a042f283296c39d0d249739a2b0d23afe0", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -508198,11 +508346,12 @@ ] ], "pointerevent_touch-action-pan-right-css_touch.html": [ - "c211e17b17c8fd5d817dc31de060d26a550d1a74", + "99882a079c91c23212c7689d5141fb863815a0b0", [ null, { - "testdriver": true + "testdriver": true, + "timeout": "long" } ] ], @@ -508901,10 +509050,12 @@ ] ], "preload-with-type.html": [ - "eb5675f993b1e98014fd38d8674858f7c66ed7e6", + "7f92606cb7954cab45f28495499fbd84c3446459", [ null, - {} + { + "timeout": "long" + } ] ], "preload-xhr.html": [ @@ -519654,10 +519805,12 @@ ] ], "callback-idle-periods.html": [ - "c066c6055d86f7814dfed52674da1103bbcb4ffb", + "3c2de61bfeadd452ea1a80d30c42a799704ab1b3", [ null, - {} + { + "timeout": "long" + } ] ], "callback-iframe.html": [ @@ -519670,10 +519823,12 @@ ] ], "callback-invoked.html": [ - "5e799cf39f985a9bb66b418771ca0fa57ee85ad8", + "dc52f1422b08f3e07521fa09995d6da4ce68452b", [ null, - {} + { + "timeout": "long" + } ] ], "callback-multiple-calls.html": [ @@ -521397,10 +521552,12 @@ }, "secure-payment-confirmation": { "secure-payment-confirmation.tenative.https.html": [ - "1cc12d49eba1369d57512a52de30eab4fa477da2", + "1eabdd41145b3edae1a5b68c0219fd5e178f7a71", [ null, - {} + { + "timeout": "long" + } ] ] }, @@ -522590,7 +522747,7 @@ ] ], "claim-worker-fetch.https.html": [ - "4b49a8152a42c9e45104139b46b9fa56762de6bb", + "c55b965be6e923ae40b4d6db2df745fa772c5bba", [ null, {} @@ -523923,8 +524080,17 @@ {} ] ], + "update-bytecheck-cors-import.https.html": [ + "de7023c86cade4aff9a3564e5801bd237ccdf6a9", + [ + null, + { + "timeout": "long" + } + ] + ], "update-bytecheck.https.html": [ - "6628dba6ee7d11ae0cd45941c726df017afb9336", + "3329938bcaf982718f6a58cd7e54e2a76575a7b5", [ null, { @@ -554313,10 +554479,12 @@ ] ], "Worker_terminate_event_queue.htm": [ - "5d9472a1c46f460e0606e99e3302b3039cd390c9", + "e4f106ad3a86b07efb3e4f449c0de904e667f30e", [ null, - {} + { + "timeout": "long" + } ] ], "abrupt-completion.html": [ @@ -581243,7 +581411,7 @@ }, "close_window": { "close.py": [ - "53af5730f83fbd158e8540ac680c44896f5323ba", + "2d665d5a8836df3f5bca6928d6fb6fe58d9b87db", [ null, {} @@ -581315,7 +581483,7 @@ }, "element_clear": { "clear.py": [ - "0189c38c27709aecd6ece4c9ec0cd90f5a0fca5e", + "8b7bb501043f79f41611fb9724ab64ba76d53e19", [ null, { @@ -581349,7 +581517,7 @@ ] ], "click.py": [ - "3a5d737216d95de1110f48cc004438b0913d1ca0", + "50982fe4bdd8add9e1f10a9df60e1104238c71c9", [ null, {} @@ -581458,7 +581626,7 @@ ] ], "send_keys.py": [ - "edf91e776148562721f89d8f7aef8e8eefbde78a", + "acdc1164a406ee6364492c6d12bd70f4fa025db5", [ null, {} @@ -581737,7 +581905,7 @@ }, "get_element_attribute": { "get.py": [ - "b18d9ca8b22a8a576dac66863408337992151a27", + "f67a6c3d7c0ac63b8eac1cf800e6ca855a526366", [ null, {} @@ -581755,7 +581923,7 @@ }, "get_element_css_value": { "get.py": [ - "4e8704d50af93cfe94d496302a2d33807a7a3a5a", + "25fae26a69c549173f8504ffdc340c6a9f100280", [ null, {} @@ -581773,7 +581941,7 @@ }, "get_element_property": { "get.py": [ - "5c0247edb7020599306dada98c8e7d35b31b7751", + "27b4bea5f173d83f4ef3517acc650ede136cf281", [ null, {} @@ -581791,7 +581959,7 @@ }, "get_element_rect": { "get.py": [ - "494c45f8e45b847909d3d602186423bfd9d2e7ad", + "d461c01c3120dc5aa95bb893b1f84544a9429bce", [ null, {} @@ -581809,7 +581977,7 @@ }, "get_element_tag_name": { "get.py": [ - "ffe6dd641e82a3982da89f11f773d019858450ef", + "4ca818f76a5704b5875be5e22206840c3a248d4d", [ null, {} @@ -581827,7 +581995,7 @@ }, "get_element_text": { "get.py": [ - "5f169a3a233b50de73de31f241a3bff4d749d6c2", + "642bc1d2c62298a6dc9e9f4d38b2a63345027c6d", [ null, {} @@ -581978,7 +582146,7 @@ }, "is_element_enabled": { "enabled.py": [ - "88b1534ded1ae5d7a34a83cd8f763d115b6312a5", + "64058ebd577e23c55a81a745fa63a9228f98d28c", [ null, {} @@ -581996,7 +582164,7 @@ }, "is_element_selected": { "selected.py": [ - "79a1615dd9fdfcc7f3fd07f971f0bbec84247bca", + "b09927c7a12e0c7cbc235a204bec990f8530ebff", [ null, {} @@ -582489,7 +582657,7 @@ ] ], "switch.py": [ - "9e5315588e3bbea859a10d2c367d41354c3240ea", + "88a1a244b2d27bcf60f1be55752b3633863b4ad6", [ null, {} diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini deleted file mode 100644 index f64b45fea6b..00000000000 --- a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-002.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-floats-002.html] - [Hit test float] - expected: FAIL - 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..4bfb0c2053a --- /dev/null +++ b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-004.html.ini @@ -0,0 +1,4 @@ +[hit-test-floats-004.html] + [Miss float below something else] + expected: FAIL + diff --git a/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini b/tests/wpt/metadata/css/CSS2/floats/hit-test-floats-005.html.ini deleted file mode 100644 index baa9f1a7541..00000000000 --- a/tests/wpt/metadata/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/css/CSS2/normal-flow/hit-test-anonymous-block.html.ini b/tests/wpt/metadata/css/CSS2/normal-flow/hit-test-anonymous-block.html.ini deleted file mode 100644 index 8efb7024ae4..00000000000 --- a/tests/wpt/metadata/css/CSS2/normal-flow/hit-test-anonymous-block.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[hit-test-anonymous-block.html] - [Hit test beside line of text inside anonymous block] - expected: FAIL - diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini index 6ef8bb1049f..171592fc08f 100644 --- a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini +++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-iframes.html.ini @@ -2,6 +2,3 @@ [elementsFromPoint on the root document for points in iframe elements] expected: FAIL - [elementsFromPoint on inner documents] - expected: FAIL - diff --git a/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini new file mode 100644 index 00000000000..e181af5397f --- /dev/null +++ b/tests/wpt/metadata/css/cssom-view/elementsFromPoint-invalid-cases.html.ini @@ -0,0 +1,4 @@ +[elementsFromPoint-invalid-cases.html] + [The root element is the last element returned for otherwise empty queries within the viewport] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/content-type/response.window.js.ini b/tests/wpt/metadata/fetch/content-type/response.window.js.ini index 8d48307a7c4..ab6c4d2daae 100644 --- a/tests/wpt/metadata/fetch/content-type/response.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/response.window.js.ini @@ -309,6 +309,27 @@ [fetch(): separate response Content-Type: text/plain ] expected: NOTRUN - [<iframe>: combined response Content-Type: text/html;x=" text/plain] + [<iframe>: combined response Content-Type: */* text/html] + expected: FAIL + + [<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html;" text/plain] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html */*] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html;x=" text/plain] + expected: FAIL + + [<iframe>: combined response Content-Type: text/html;" \\" text/plain] + expected: FAIL + + [<iframe>: separate response Content-Type: text/html;" \\" text/plain] + expected: FAIL + + [<iframe>: separate response Content-Type: text/plain */*;charset=gbk] expected: FAIL diff --git a/tests/wpt/metadata/fetch/content-type/script.window.js.ini b/tests/wpt/metadata/fetch/content-type/script.window.js.ini index e67f0406fc3..b2ffc8abf78 100644 --- a/tests/wpt/metadata/fetch/content-type/script.window.js.ini +++ b/tests/wpt/metadata/fetch/content-type/script.window.js.ini @@ -53,3 +53,9 @@ [combined text/javascript ] expected: FAIL + [separate text/javascript x/x] + expected: FAIL + + [separate text/javascript error] + expected: FAIL + diff --git a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini index 30e1b851fd4..58de838d890 100644 --- a/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini +++ b/tests/wpt/metadata/fetch/nosniff/parsing-nosniff.window.js.ini @@ -11,3 +11,6 @@ [X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] expected: FAIL + [X-Content-Type-Options%3A%20%22nosniFF%22] + expected: FAIL + diff --git a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini index 51f8272a6de..dc2e45516de 100644 --- a/tests/wpt/metadata-layout-2020/html/browsers/history/the-history-interface/traverse_the_history_3.html.ini +++ b/tests/wpt/metadata/html/browsers/history/the-history-interface/traverse_the_history_5.html.ini @@ -1,4 +1,4 @@ -[traverse_the_history_3.html] +[traverse_the_history_5.html] [Multiple history traversals, last would be aborted] expected: FAIL diff --git a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini index 16fa2c5cfc1..dec4c579137 100644 --- a/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini +++ b/tests/wpt/metadata/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html.ini @@ -1,4 +1,5 @@ [creating_browsing_context_test_01.html] + expected: TIMEOUT [first argument: absolute url] - expected: FAIL + expected: TIMEOUT diff --git a/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini b/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini index 442db3cb549..2532dceabac 100644 --- a/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini +++ b/tests/wpt/metadata/html/browsers/windows/embedded-opener-remove-frame.html.ini @@ -1,4 +1,5 @@ [embedded-opener-remove-frame.html] + expected: CRASH [opener and "removed" embedded documents] expected: FAIL diff --git a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini index c12c0f8ae48..6852d7663de 100644 --- a/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini +++ b/tests/wpt/metadata/html/interaction/focus/the-autofocus-attribute/skip-document-with-fragment.html.ini @@ -1,4 +1,8 @@ [skip-document-with-fragment.html] + expected: TIMEOUT [Autofocus elements in iframed documents with URL fragments should be skipped.] expected: FAIL + [Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.] + expected: TIMEOUT + 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 9df1ac56f2a..3f7e3e9544f 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,6 +1,5 @@ [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/iframe_sandbox_popups_nonescaping-3.html.ini b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini index e440b1e38c6..dc856a3d5a3 100644 --- a/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini +++ b/tests/wpt/metadata/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-3.html.ini @@ -1,6 +1,5 @@ [iframe_sandbox_popups_nonescaping-3.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/forms/form-submission-0/newline-normalization.html.ini b/tests/wpt/metadata/html/semantics/forms/form-submission-0/newline-normalization.html.ini new file mode 100644 index 00000000000..ff5e9edab6a --- /dev/null +++ b/tests/wpt/metadata/html/semantics/forms/form-submission-0/newline-normalization.html.ini @@ -0,0 +1,13 @@ +[newline-normalization.html] + [Form newline normalization: \\n\\r in the name becomes \\r\\n\\r\\n] + expected: FAIL + + [Form newline normalization: \\n\\r in the value becomes \\r\\n\\r\\n] + expected: FAIL + + [Form newline normalization: \\r in the value becomes \\r\\n] + expected: FAIL + + [Form newline normalization: \\r in the name becomes \\r\\n] + 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 new file mode 100644 index 00000000000..59a54fe88e4 --- /dev/null +++ b/tests/wpt/metadata/html/webappapis/dynamic-markup-insertion/document-write/module-delayed.html.ini @@ -0,0 +1,4 @@ +[module-delayed.html] + [async document.write in a module] + expected: FAIL + diff --git a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini index 663cdb7b83b..46675e26767 100644 --- a/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini +++ b/tests/wpt/metadata/webaudio/the-audio-api/the-audiobuffersourcenode-interface/sub-sample-buffer-stitching.html.ini @@ -518,3 +518,9 @@ [X SNR (-47.512665238764875 dB) is not greater than or equal to 65.737. Got -47.512665238764875.] expected: FAIL + [X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[28696\]\t-3.8748168447328256e+16\t9.3139332532882690e-1\t3.8748168447328256e+16\t4.1602368616554424e+16\t3.8985999999999999e-3\n\t[28697\]\t7.0477002859115601e-1\t9.0675884485244751e-1\t2.0198881626129150e-1\t2.2275913536212616e-1\t3.8985999999999999e-3\n\tMax AbsError of 3.8748168447328256e+16 at index of 28696.\n\tMax RelError of 4.1602368616554424e+16 at index of 28696.\n] + expected: FAIL + + [X SNR (-288.33093763692256 dB) is not greater than or equal to 65.737. Got -288.33093763692256.] + expected: FAIL + diff --git a/tests/wpt/metadata/webmessaging/with-ports/017.html.ini b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini new file mode 100644 index 00000000000..064cf47545b --- /dev/null +++ b/tests/wpt/metadata/webmessaging/with-ports/017.html.ini @@ -0,0 +1,5 @@ +[017.html] + expected: TIMEOUT + [origin of the script that invoked the method, about:blank] + expected: TIMEOUT + diff --git a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini b/tests/wpt/metadata/webmessaging/with-ports/018.html.ini deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata/webmessaging/with-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[018.html] - expected: TIMEOUT - [origin of the script that invoked the method, javascript:] - expected: TIMEOUT - diff --git a/tests/wpt/metadata/webmessaging/without-ports/018.html.ini b/tests/wpt/metadata/webmessaging/without-ports/018.html.ini deleted file mode 100644 index 663a1f8fa30..00000000000 --- a/tests/wpt/metadata/webmessaging/without-ports/018.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[018.html] - expected: TIMEOUT - [origin of the script that invoked the method, javascript:] - expected: TIMEOUT - diff --git a/tests/wpt/web-platform-tests/FileAPI/file/resources/echo-content-escaped.py b/tests/wpt/web-platform-tests/FileAPI/file/resources/echo-content-escaped.py new file mode 100644 index 00000000000..bdbbc0f1ea5 --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/file/resources/echo-content-escaped.py @@ -0,0 +1,24 @@ +from wptserve.utils import isomorphic_encode + +# Outputs the request body, with controls and non-ASCII bytes escaped +# (b"\n" becomes b"\\x0a"), and with backslashes doubled. +# As a convenience, CRLF newlines are left as is. + +def escape_byte(byte): + if b"\0" <= byte <= b"\x1F" or byte >= b"\x7F": + return b"\\x%02x" % ord(byte) + if byte == b"\\": + return b"\\\\" + return byte + +def main(request, response): + + headers = [(b"X-Request-Method", isomorphic_encode(request.method)), + (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")), + # Avoid any kind of content sniffing on the response. + (b"Content-Type", b"text/plain; charset=UTF-8")] + + content = b"".join(map(escape_byte, request.body)).replace(b"\\x0d\\x0a", b"\r\n") + + return headers, content diff --git a/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-controls.tentative.html b/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-controls.tentative.html new file mode 100644 index 00000000000..d11f4a86093 --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-controls.tentative.html @@ -0,0 +1,117 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>Upload files named using controls (tentative)</title> +<!-- + NOTE: This test is tentative because encoding for filename + control characters is not yet standardized. + --> +<link + rel="help" + href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data" +/> +<link + rel="help" + href="https://html.spec.whatwg.org/multipage/dnd.html#datatransferitemlist" +/> +<link rel="help" href="https://w3c.github.io/FileAPI/#file-constructor" /> +<link + rel="author" + title="Benjamin C. Wiley Sittler" + href="mailto:bsittler@chromium.org" +/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../support/send-file-form-helper.js"></script> +<script> + "use strict"; + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-NUL-[\0].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-NUL-[\0].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-BS-[\b].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-BS-[\b].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-VT-[\v].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-VT-[\v].txt", + }); + + // These have characters that undergo processing in name=, + // filename=, and/or value; formPostFileUploadTest postprocesses + // expectedEncodedBaseName for these internally. + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-LF-[\n].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-LF-[\n].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-LF-CR-[\n\r].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-LF-CR-[\n\r].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-CR-[\r].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-CR-[\r].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-CR-LF-[\r\n].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-CR-LF-[\r\n].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-HT-[\t].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-HT-[\t].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-FF-[\f].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-FF-[\f].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-DEL-[\x7F].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-DEL-[\x7F].txt", + }); + + // The rest should be passed through unmodified: + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-ESC-[\x1B].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-ESC-[\x1B].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-SPACE-[ ].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-SPACE-[ ].txt", + }); +</script> diff --git a/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-punctuation.tentative.html b/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-punctuation.tentative.html new file mode 100644 index 00000000000..5c2d6d0bf1f --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-punctuation.tentative.html @@ -0,0 +1,230 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>Upload files named using punctuation (tentative)</title> +<!-- + NOTE: This test is tentative because encoding for filename + punctuation characters is not yet standardized. + --> +<link + rel="help" + href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data" +/> +<link + rel="help" + href="https://html.spec.whatwg.org/multipage/dnd.html#datatransferitemlist" +/> +<link rel="help" href="https://w3c.github.io/FileAPI/#file-constructor" /> +<link + rel="author" + title="Benjamin C. Wiley Sittler" + href="mailto:bsittler@chromium.org" +/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../support/send-file-form-helper.js"></script> +<script> + "use strict"; + + // These have characters that undergo processing in name=, + // filename=, and/or value; formPostFileUploadTest postprocesses + // expectedEncodedBaseName for these internally. + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-QUOTATION-MARK-[\x22].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: + "file-for-upload-in-form-QUOTATION-MARK-[\x22].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: '"file-for-upload-in-form-double-quoted.txt"', + formEncoding: "UTF-8", + expectedEncodedBaseName: '"file-for-upload-in-form-double-quoted.txt"', + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-REVERSE-SOLIDUS-[\\].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: + "file-for-upload-in-form-REVERSE-SOLIDUS-[\\].txt", + }); + + // The rest should be passed through unmodified: + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-EXCLAMATION-MARK-[!].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-EXCLAMATION-MARK-[!].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-DOLLAR-SIGN-[$].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-DOLLAR-SIGN-[$].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-PERCENT-SIGN-[%].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-PERCENT-SIGN-[%].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-AMPERSAND-[&].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-AMPERSAND-[&].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-APOSTROPHE-['].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-APOSTROPHE-['].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-LEFT-PARENTHESIS-[(].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-LEFT-PARENTHESIS-[(].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-RIGHT-PARENTHESIS-[)].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: + "file-for-upload-in-form-RIGHT-PARENTHESIS-[)].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-ASTERISK-[*].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-ASTERISK-[*].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-PLUS-SIGN-[+].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-PLUS-SIGN-[+].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-COMMA-[,].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-COMMA-[,].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-FULL-STOP-[.].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-FULL-STOP-[.].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-SOLIDUS-[/].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-SOLIDUS-[/].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-COLON-[:].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-COLON-[:].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-SEMICOLON-[;].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-SEMICOLON-[;].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-EQUALS-SIGN-[=].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-EQUALS-SIGN-[=].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-QUESTION-MARK-[?].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-QUESTION-MARK-[?].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-CIRCUMFLEX-ACCENT-[^].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: + "file-for-upload-in-form-CIRCUMFLEX-ACCENT-[^].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-LEFT-SQUARE-BRACKET-[[].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: + "file-for-upload-in-form-LEFT-SQUARE-BRACKET-[[].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-RIGHT-SQUARE-BRACKET-[]].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: + "file-for-upload-in-form-RIGHT-SQUARE-BRACKET-[]].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-LEFT-CURLY-BRACKET-[{].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: + "file-for-upload-in-form-LEFT-CURLY-BRACKET-[{].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-VERTICAL-LINE-[|].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-VERTICAL-LINE-[|].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-RIGHT-CURLY-BRACKET-[}].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: + "file-for-upload-in-form-RIGHT-CURLY-BRACKET-[}].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-TILDE-[~].txt", + formEncoding: "UTF-8", + expectedEncodedBaseName: "file-for-upload-in-form-TILDE-[~].txt", + }); + + formPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "'file-for-upload-in-form-single-quoted.txt'", + formEncoding: "UTF-8", + expectedEncodedBaseName: "'file-for-upload-in-form-single-quoted.txt'", + }); +</script> diff --git a/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-utf-8.html b/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-utf-8.html index 03417ba72e4..1be44f4f4db 100644 --- a/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-utf-8.html +++ b/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-utf-8.html @@ -27,35 +27,36 @@ formPostFileUploadTest({ fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt', formEncoding: 'UTF-8', expectedEncodedBaseName: ( - 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt'), + 'file-for-upload-in-form-\xEF\x9F\xB0\xEF\x9E\x93\xEF\x9E\x83\xEF\x9E\xA0.txt'), }); formPostFileUploadTest({ fileNameSource: 'windows-1252', fileBaseName: 'file-for-upload-in-form-☺😂.txt', formEncoding: 'UTF-8', - expectedEncodedBaseName: 'file-for-upload-in-form-☺😂.txt', + expectedEncodedBaseName: ( + 'file-for-upload-in-form-\xC3\xA2\xCB\x9C\xC2\xBA\xC3\xB0\xC5\xB8\xCB\x9C\xE2\x80\x9A.txt'), }); formPostFileUploadTest({ fileNameSource: 'JIS X 0201 and JIS X 0208', fileBaseName: 'file-for-upload-in-form-★星★.txt', formEncoding: 'UTF-8', - expectedEncodedBaseName: 'file-for-upload-in-form-★星★.txt', + expectedEncodedBaseName: 'file-for-upload-in-form-\xE2\x98\x85\xE6\x98\x9F\xE2\x98\x85.txt', }); formPostFileUploadTest({ fileNameSource: 'Unicode', fileBaseName: 'file-for-upload-in-form-☺😂.txt', formEncoding: 'UTF-8', - expectedEncodedBaseName: 'file-for-upload-in-form-☺😂.txt', + expectedEncodedBaseName: 'file-for-upload-in-form-\xE2\x98\xBA\xF0\x9F\x98\x82.txt', }); formPostFileUploadTest({ fileNameSource: 'Unicode', fileBaseName: `file-for-upload-in-form-${kTestChars}.txt`, formEncoding: 'UTF-8', - expectedEncodedBaseName: `file-for-upload-in-form-${kTestChars}.txt`, + expectedEncodedBaseName: `file-for-upload-in-form-${kTestFallbackUtf8}.txt`, }); </script> diff --git a/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative.html b/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative.html index 8e9463f83ae..a2c37186b3e 100644 --- a/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative.html +++ b/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-windows-1252.tentative.html @@ -33,15 +33,14 @@ formPostFileUploadTest({ fileNameSource: 'x-user-defined', fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt', formEncoding: 'windows-1252', - expectedEncodedBaseName: ( - 'file-for-upload-in-form-.txt'), + expectedEncodedBaseName: 'file-for-upload-in-form-.txt', }); formPostFileUploadTest({ fileNameSource: 'windows-1252', fileBaseName: 'file-for-upload-in-form-☺😂.txt', formEncoding: 'windows-1252', - expectedEncodedBaseName: 'file-for-upload-in-form-☺😂.txt', + expectedEncodedBaseName: 'file-for-upload-in-form-\xE2\x98\xBA\xF0\x9F\x98\x82.txt', }); formPostFileUploadTest({ diff --git a/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative.html b/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative.html index 072e3bb1e02..503b08a5170 100644 --- a/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative.html +++ b/tests/wpt/web-platform-tests/FileAPI/file/send-file-form-x-user-defined.tentative.html @@ -33,7 +33,7 @@ formPostFileUploadTest({ fileNameSource: 'x-user-defined', fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt', formEncoding: 'x-user-defined', - expectedEncodedBaseName: 'file-for-upload-in-form-𓃠.txt', + expectedEncodedBaseName: 'file-for-upload-in-form-\xF0\x93\x83\xA0.txt', }); formPostFileUploadTest({ diff --git a/tests/wpt/web-platform-tests/FileAPI/file/send-file-formdata-controls.tentative.html b/tests/wpt/web-platform-tests/FileAPI/file/send-file-formdata-controls.tentative.html new file mode 100644 index 00000000000..4259741b63e --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/file/send-file-formdata-controls.tentative.html @@ -0,0 +1,93 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>FormData: Upload files named using controls (tentative)</title> +<!-- + NOTE: This test is tentative because encoding for filename + control characters is not yet standardized. + --> +<link + rel="help" + href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data" +/> +<link + rel="help" + href="https://html.spec.whatwg.org/multipage/dnd.html#datatransferitemlist" +/> +<link rel="help" href="https://w3c.github.io/FileAPI/#file-constructor" /> +<link + rel="author" + title="Benjamin C. Wiley Sittler" + href="mailto:bsittler@chromium.org" +/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../support/send-file-formdata-helper.js"></script> +<script> + "use strict"; + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-NUL-[\0].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-BS-[\b].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-VT-[\v].txt", + }); + + // These have characters that undergo processing in name=, + // filename=, and/or value; formDataPostFileUploadTest postprocesses + // expectedEncodedBaseName for these internally. + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-LF-[\n].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-LF-CR-[\n\r].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-CR-[\r].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-CR-LF-[\r\n].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-HT-[\t].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-FF-[\f].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-DEL-[\x7F].txt", + }); + + // The rest should be passed through unmodified: + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-ESC-[\x1B].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-SPACE-[ ].txt", + }); +</script> diff --git a/tests/wpt/web-platform-tests/FileAPI/file/send-file-formdata-punctuation.tentative.html b/tests/wpt/web-platform-tests/FileAPI/file/send-file-formdata-punctuation.tentative.html new file mode 100644 index 00000000000..d8e84e9d978 --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/file/send-file-formdata-punctuation.tentative.html @@ -0,0 +1,168 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>FormData: Upload files named using punctuation (tentative)</title> +<!-- + NOTE: This test is tentative because encoding for filename + punctuation characters is not yet standardized. + --> +<link + rel="help" + href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data" +/> +<link + rel="help" + href="https://html.spec.whatwg.org/multipage/dnd.html#datatransferitemlist" +/> +<link rel="help" href="https://w3c.github.io/FileAPI/#file-constructor" /> +<link + rel="author" + title="Benjamin C. Wiley Sittler" + href="mailto:bsittler@chromium.org" +/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../support/send-file-formdata-helper.js"></script> +<script> + "use strict"; + + // These have characters that undergo processing in name=, + // filename=, and/or value; formDataPostFileUploadTest postprocesses + // expectedEncodedBaseName for these internally. + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-QUOTATION-MARK-[\x22].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: '"file-for-upload-in-form-double-quoted.txt"', + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-REVERSE-SOLIDUS-[\\].txt", + }); + + // The rest should be passed through unmodified: + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-EXCLAMATION-MARK-[!].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-DOLLAR-SIGN-[$].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-PERCENT-SIGN-[%].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-AMPERSAND-[&].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-APOSTROPHE-['].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-LEFT-PARENTHESIS-[(].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-RIGHT-PARENTHESIS-[)].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-ASTERISK-[*].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-PLUS-SIGN-[+].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-COMMA-[,].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-FULL-STOP-[.].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-SOLIDUS-[/].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-COLON-[:].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-SEMICOLON-[;].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-EQUALS-SIGN-[=].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-QUESTION-MARK-[?].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-CIRCUMFLEX-ACCENT-[^].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-LEFT-SQUARE-BRACKET-[[].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-RIGHT-SQUARE-BRACKET-[]].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-LEFT-CURLY-BRACKET-[{].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-VERTICAL-LINE-[|].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-RIGHT-CURLY-BRACKET-[}].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form-TILDE-[~].txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "'file-for-upload-in-form-single-quoted.txt'", + }); +</script> diff --git a/tests/wpt/web-platform-tests/FileAPI/file/send-file-formdata-utf-8.html b/tests/wpt/web-platform-tests/FileAPI/file/send-file-formdata-utf-8.html new file mode 100644 index 00000000000..7a7f6cefe77 --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/file/send-file-formdata-utf-8.html @@ -0,0 +1,53 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>FormData: Upload files in UTF-8 fetch()</title> +<link + rel="help" + href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data" +/> +<link + rel="help" + href="https://html.spec.whatwg.org/multipage/dnd.html#datatransferitemlist" +/> +<link rel="help" href="https://w3c.github.io/FileAPI/#file-constructor" /> +<link + rel="author" + title="Benjamin C. Wiley Sittler" + href="mailto:bsittler@chromium.org" +/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../support/send-file-formdata-helper.js"></script> +<script> + "use strict"; + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form.txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "x-user-defined", + fileBaseName: "file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "windows-1252", + fileBaseName: "file-for-upload-in-form-☺😂.txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "JIS X 0201 and JIS X 0208", + fileBaseName: "file-for-upload-in-form-★星★.txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "Unicode", + fileBaseName: "file-for-upload-in-form-☺😂.txt", + }); + + formDataPostFileUploadTest({ + fileNameSource: "Unicode", + fileBaseName: `file-for-upload-in-form-${kTestChars}.txt`, + }); +</script> diff --git a/tests/wpt/web-platform-tests/FileAPI/file/send-file-formdata.html b/tests/wpt/web-platform-tests/FileAPI/file/send-file-formdata.html new file mode 100644 index 00000000000..77e048e5474 --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/file/send-file-formdata.html @@ -0,0 +1,28 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>FormData: Upload ASCII-named file in UTF-8 form</title> +<link + rel="help" + href="https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#multipart-form-data" +/> +<link + rel="help" + href="https://html.spec.whatwg.org/multipage/dnd.html#datatransferitemlist" +/> +<link rel="help" href="https://w3c.github.io/FileAPI/#file-constructor" /> +<link + rel="author" + title="Benjamin C. Wiley Sittler" + href="mailto:bsittler@chromium.org" +/> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../support/send-file-formdata-helper.js"></script> +<script> + "use strict"; + + formDataPostFileUploadTest({ + fileNameSource: "ASCII", + fileBaseName: "file-for-upload-in-form.txt", + }); +</script> diff --git a/tests/wpt/web-platform-tests/FileAPI/support/send-file-form-helper.js b/tests/wpt/web-platform-tests/FileAPI/support/send-file-form-helper.js index a7522c7b08e..d6adf21ec33 100644 --- a/tests/wpt/web-platform-tests/FileAPI/support/send-file-form-helper.js +++ b/tests/wpt/web-platform-tests/FileAPI/support/send-file-form-helper.js @@ -1,5 +1,17 @@ 'use strict'; +// See /FileAPI/file/resources/echo-content-escaped.py +function escapeString(string) { + return string.replace(/\\/g, "\\\\").replace( + /[^\x20-\x7E]/g, + (x) => { + let hex = x.charCodeAt(0).toString(16); + if (hex.length < 2) hex = "0" + hex; + return `\\x${hex}`; + }, + ).replace(/\\x0d\\x0a/g, "\r\n"); +} + // Rationale for this particular test character sequence, which is // used in filenames and also in file contents: // @@ -72,36 +84,46 @@ // are also allowed in Windows Unicode filenames. const kTestChars = 'ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ'; -// NOTE: The expected interpretation of ISO-2022-JP according to -// https://encoding.spec.whatwg.org/#iso-2022-jp-encoder unifies -// single-byte and double-byte katakana. -const kTestFallbackIso2022jp = - ('ABC~\x1B(J~\\≈¤\x1B$B!&!&\x1B(B•∙·☼\x1B$B!z@1\x1B(B🌟' + - '\x1B$B@1!z\x1B(B☼·∙•\x1B$B!&!&\x1B(B¤≈\x1B(J\\~\x1B(B~XYZ').replace( - /[^\0-\x7F]/gu, - x => `&#${x.codePointAt(0)};`); - -// NOTE: \uFFFD is used here to replace Windows-1252 bytes to match -// how we will see them in the reflected POST bytes in a frame using -// UTF-8 byte interpretation. The bytes will actually be intact, but -// this code cannot tell and does not really care. -const kTestFallbackWindows1252 = - 'ABC~‾\xA5≈\xA4・・\x95∙\xB7☼★星🌟星★☼\xB7∙\x95・・\xA4≈\xA5‾~XYZ'.replace( - /[^\0-\xFF]/gu, - x => `&#${x.codePointAt(0)};`).replace(/[\x80-\xFF]/g, '\uFFFD'); - -const kTestFallbackXUserDefined = - kTestChars.replace(/[^\0-\x7F]/gu, x => `&#${x.codePointAt(0)};`); +// The kTestFallback* strings represent the expected byte sequence from +// encoding kTestChars with the given encoding with "html" replacement +// mode, isomorphic-decoded. That means, characters that can't be +// encoded in that encoding get HTML-escaped, but no further +// `escapeString`-like escapes are needed. +const kTestFallbackUtf8 = ( + "ABC~\xE2\x80\xBE\xC2\xA5\xE2\x89\x88\xC2\xA4\xEF\xBD\xA5\xE3\x83\xBB\xE2" + + "\x80\xA2\xE2\x88\x99\xC2\xB7\xE2\x98\xBC\xE2\x98\x85\xE6\x98\x9F\xF0\x9F" + + "\x8C\x9F\xE6\x98\x9F\xE2\x98\x85\xE2\x98\xBC\xC2\xB7\xE2\x88\x99\xE2\x80" + + "\xA2\xE3\x83\xBB\xEF\xBD\xA5\xC2\xA4\xE2\x89\x88\xC2\xA5\xE2\x80\xBE~XYZ" +); + +const kTestFallbackIso2022jp = ( + ("ABC~\x1B(J~\\≈¤\x1B$B!&!&\x1B(B•∙·☼\x1B$B!z@1\x1B(B🌟" + + "\x1B$B@1!z\x1B(B☼·∙•\x1B$B!&!&\x1B(B¤≈\x1B(J\\~\x1B(B~XYZ") + .replace(/[^\0-\x7F]/gu, (x) => `&#${x.codePointAt(0)};`) +); + +const kTestFallbackWindows1252 = ( + "ABC~‾\xA5≈\xA4・・\x95∙\xB7☼★星🌟星★☼\xB7∙\x95・・\xA4≈\xA5‾~XYZ".replace( + /[^\0-\xFF]/gu, + (x) => `&#${x.codePointAt(0)};`, + ) +); + +const kTestFallbackXUserDefined = kTestChars.replace( + /[^\0-\x7F]/gu, + (x) => `&#${x.codePointAt(0)};`, +); // formPostFileUploadTest - verifies multipart upload structure and // numeric character reference replacement for filenames, field names, -// and field values. +// and field values using form submission. // -// Uses /fetch/api/resources/echo-content.py to echo the upload -// POST with UTF-8 byte interpretation, leading to the "UTF-8 goggles" -// behavior documented below for expectedEncodedBaseName when non- -// UTF-8-compatible byte sequences appear in the formEncoding-encoded -// uploaded data. +// Uses /FileAPI/file/resources/echo-content-escaped.py to echo the +// upload POST with controls and non-ASCII bytes escaped. This is done +// because navigations whose response body contains [\0\b\v] may get +// treated as a download, which is not what we want. Use the +// `escapeString` function to replicate that kind of escape (note that +// it takes an isomorphic-decoded string, not a byte sequence). // // Fields in the parameter object: // @@ -114,10 +136,9 @@ const kTestFallbackXUserDefined = // - formEncoding: the acceptCharset of the form used to submit the // test file. Used in the test name. // - expectedEncodedBaseName: the expected formEncoding-encoded -// version of fileBaseName with unencodable characters replaced by -// numeric character references and non-7-bit-ASCII bytes seen -// through UTF-8 goggles; subsequences not interpretable as UTF-8 -// have each byte represented here by \uFFFD REPLACEMENT CHARACTER. +// version of fileBaseName, isomorphic-decoded. That means, characters +// that can't be encoded in that encoding get HTML-escaped, but no +// further `escapeString`-like escapes are needed. const formPostFileUploadTest = ({ fileNameSource, fileBaseName, @@ -140,7 +161,7 @@ const formPostFileUploadTest = ({ const form = Object.assign(document.createElement('form'), { acceptCharset: formEncoding, - action: '/fetch/api/resources/echo-content.py', + action: '/FileAPI/file/resources/echo-content-escaped.py', method: 'POST', enctype: 'multipart/form-data', target: formTargetFrame.name, @@ -194,7 +215,7 @@ const formPostFileUploadTest = ({ // exposed through the newer .files[0].name API. This check // verifies that assumption. assert_equals( - fileInput.files[0].name, + baseNameOfFilePath(fileInput.files[0].name), baseNameOfFilePath(fileInput.value), `The basename of the field's value should match its files[0].name`); form.submit(); @@ -219,6 +240,15 @@ const formPostFileUploadTest = ({ `${fileBaseName}: multipart form data must end with ${boundary}--: ${ JSON.stringify(formDataText) }`); + + const asValue = expectedEncodedBaseName.replace(/\r\n?|\n/g, "\r\n"); + const asName = asValue.replace(/[\r\n"]/g, encodeURIComponent); + const asFilename = expectedEncodedBaseName.replace(/[\r\n"]/g, encodeURIComponent); + + // The response body from echo-content-escaped.py has controls and non-ASCII + // bytes escaped, so any caller-provided field that might contain such bytes + // must be passed to `escapeString`, after any other expected + // transformations. const expectedText = [ boundary, 'Content-Disposition: form-data; name="_charset_"', @@ -227,19 +257,22 @@ const formPostFileUploadTest = ({ boundary, 'Content-Disposition: form-data; name="filename"', '', - expectedEncodedBaseName, + // Unlike for names and filenames, multipart/form-data values don't escape + // \r\n linebreaks, and when they're read from an iframe they become \n. + escapeString(asValue).replace(/\r\n/g, "\n"), boundary, - `Content-Disposition: form-data; name="${expectedEncodedBaseName}"`, + `Content-Disposition: form-data; name="${escapeString(asName)}"`, '', 'filename', boundary, `Content-Disposition: form-data; name="file"; ` + - `filename="${expectedEncodedBaseName}"`, + `filename="${escapeString(asFilename)}"`, 'Content-Type: text/plain', '', - kTestChars, + escapeString(kTestFallbackUtf8), boundary + '--', ].join('\n'); + assert_true( formDataText.startsWith(expectedText), `Unexpected multipart-shaped form data received:\n${ diff --git a/tests/wpt/web-platform-tests/FileAPI/support/send-file-formdata-helper.js b/tests/wpt/web-platform-tests/FileAPI/support/send-file-formdata-helper.js new file mode 100644 index 00000000000..53572ef36c8 --- /dev/null +++ b/tests/wpt/web-platform-tests/FileAPI/support/send-file-formdata-helper.js @@ -0,0 +1,97 @@ +"use strict"; + +const kTestChars = "ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ"; + +// formDataPostFileUploadTest - verifies multipart upload structure and +// numeric character reference replacement for filenames, field names, +// and field values using FormData and fetch(). +// +// Uses /fetch/api/resources/echo-content.py to echo the upload +// POST (unlike in send-file-form-helper.js, here we expect all +// multipart/form-data request bodies to be UTF-8, so we don't need to +// escape controls and non-ASCII bytes). +// +// Fields in the parameter object: +// +// - fileNameSource: purely explanatory and gives a clue about which +// character encoding is the source for the non-7-bit-ASCII parts of +// the fileBaseName, or Unicode if no smaller-than-Unicode source +// contains all the characters. Used in the test name. +// - fileBaseName: the not-necessarily-just-7-bit-ASCII file basename +// used for the constructed test file. Used in the test name. +const formDataPostFileUploadTest = ({ + fileNameSource, + fileBaseName, +}) => { + promise_test(async (testCase) => { + const formData = new FormData(); + let file = new Blob([kTestChars], { type: "text/plain" }); + try { + // Switch to File in browsers that allow this + file = new File([file], fileBaseName, { type: file.type }); + } catch (ignoredException) { + } + + // Used to verify that the browser agrees with the test about + // field value replacement and encoding independently of file system + // idiosyncracies. + formData.append("filename", fileBaseName); + + // Same, but with name and value reversed to ensure field names + // get the same treatment. + formData.append(fileBaseName, "filename"); + + formData.append("file", file, fileBaseName); + + const formDataText = await (await fetch( + `/fetch/api/resources/echo-content.py`, + { + method: "POST", + body: formData, + }, + )).text(); + const formDataLines = formDataText.split("\r\n"); + if (formDataLines.length && !formDataLines[formDataLines.length - 1]) { + --formDataLines.length; + } + assert_greater_than( + formDataLines.length, + 2, + `${fileBaseName}: multipart form data must have at least 3 lines: ${ + JSON.stringify(formDataText) + }`, + ); + const boundary = formDataLines[0]; + assert_equals( + formDataLines[formDataLines.length - 1], + boundary + "--", + `${fileBaseName}: multipart form data must end with ${boundary}--: ${ + JSON.stringify(formDataText) + }`, + ); + + const asName = fileBaseName.replace(/[\r\n"]/g, encodeURIComponent); + const expectedText = [ + boundary, + 'Content-Disposition: form-data; name="filename"', + "", + fileBaseName, + boundary, + `Content-Disposition: form-data; name="${asName}"`, + "", + "filename", + boundary, + `Content-Disposition: form-data; name="file"; ` + + `filename="${asName}"`, + "Content-Type: text/plain", + "", + kTestChars, + boundary + "--", + ].join("\r\n"); + + assert_true( + formDataText.startsWith(expectedText), + `Unexpected multipart-shaped form data received:\n${formDataText}\nExpected:\n${expectedText}`, + ); + }, `Upload ${fileBaseName} (${fileNameSource}) in fetch with FormData`); +}; diff --git a/tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-star-allow.html b/tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-star-allow.html index c523b9ef10a..3658fb65023 100644 --- a/tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-star-allow.html +++ b/tests/wpt/web-platform-tests/content-security-policy/frame-ancestors/frame-ancestors-nested-cross-in-same-star-allow.html @@ -1,6 +1,7 @@ <!DOCTYPE html> <html> <head> + <meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="support/frame-ancestors-test.sub.js"></script> diff --git a/tests/wpt/web-platform-tests/cookies/path/match.html b/tests/wpt/web-platform-tests/cookies/path/match.html index 14921d1d62c..e42ee24f3d0 100644 --- a/tests/wpt/web-platform-tests/cookies/path/match.html +++ b/tests/wpt/web-platform-tests/cookies/path/match.html @@ -3,6 +3,7 @@ <head> <meta charset=utf-8> <title>tests for matching cookie paths</title> + <meta name="timeout" content="long"> <meta name=help href="http://tools.ietf.org/html/rfc6265#section-5.1.4"> <script src="/resources/testharness.js"></script> diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-006.html b/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-006.html index be082b6799a..81e4c9ea3ec 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-006.html +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-006.html @@ -4,8 +4,8 @@ <meta charset="utf-8"> <title>CSS Backgrounds and Borders Test: background-size - one <length> value</title> <link rel="author" title="Intel" href="http://www.intel.com"> - <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!-- 2012-11-09 --> - <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-size" title="3.9. Sizing Images: the 'background-size' property"> + <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!-- 2012-11-09 and 2020-11-18 --> + <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-size" title="3.9 Sizing Images: the 'background-size' property"> <link rel="match" href="reference/background-size-006-ref.html"> <meta name="flags" content="image"> <meta name="assert" content="Check if 'background-size' has only one length value, then such value is the width of the corresponding image and the second value (corresponding to the height of the background image) is assumed to be 'auto'. An 'auto' value for one dimension is resolved by using the image's intrinsic ratio (in this test, the image's intrinsic ratio is 1:1) and (multiplied by) the size of the other dimension. Therefore the used height of the background-size in this test should be 45px."> @@ -16,7 +16,7 @@ width: 45px; } #test-overlapping-green { - background-image: url(support/60x60-green.png); + background-image: url(support/1x1-green.png); background-repeat: no-repeat; background-size: 45px; bottom: 45px; diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-009.html b/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-009.html index 7e187b8e77b..9d76478ffad 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-009.html +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-009.html @@ -4,8 +4,8 @@ <meta charset="utf-8"> <title>CSS Backgrounds and Borders Test: background-size - one <percentage> value</title> <link rel="author" title="Intel" href="http://www.intel.com"> - <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!-- 2012-11-09 --> - <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-size" title="3.9. Sizing Images: the 'background-size' property"> + <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!-- 2012-11-09 and 2020-11-18 --> + <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-size" title="3.9 Sizing Images: the 'background-size' property"> <link rel="match" href="reference/background-size-006-ref.html"> <meta name="flags" content="image"> <meta name="assert" content="Check if 'background-size' has only one percentage value, then such value is the width of the corresponding image and the second value (corresponding to the height of the background image) is assumed to be 'auto'. A percentage is relative to the dimensions of the background positioning area. An 'auto' value for one dimension is resolved by using the image's intrinsic ratio (in this test, the image's intrinsic ratio is 1:1) and (multiplied by) the size of the other dimension. Therefore the used height of the background-size in this test should be 45px."> @@ -16,7 +16,7 @@ width: 45px; } #test-overlapping-green { - background-image: url(support/60x60-green.png); + background-image: url(support/1x1-green.png); background-repeat: no-repeat; background-size: 45%; bottom: 45px; diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-014.html b/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-014.html index bbb246f6d56..0f602c64641 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-014.html +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-014.html @@ -4,8 +4,8 @@ <meta charset="utf-8"> <title>CSS Backgrounds and Borders Test: background-size - one auto keyword and one <percentage> values</title> <link rel="author" title="Intel" href="http://www.intel.com"> - <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!-- 2012-11-09 --> - <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-size" title="3.9. Sizing Images: the 'background-size' property"> + <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!-- 2012-11-09 and 2020-11-18 --> + <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-size" title="3.9 Sizing Images: the 'background-size' property"> <link rel="match" href="reference/background-size-006-ref.html"> <meta name="flags" content="image"> <meta name="assert" content="Check if 'background-size' has one 'auto' and one percentage values, then the second value is the height of the corresponding background image and the first value (corresponding to the width of the background image) is resolved by using the image's intrinsic ratio (in this test, the image's intrinsic ratio is 1:1) and (multiplied by) the size of the other dimension. A percentage is relative to the dimensions of the background positioning area. Therefore the used width of the background-size in this test should be 45px."> @@ -16,7 +16,7 @@ width: 45px; } #test-overlapping-green { - background-image: url(support/60x60-green.png); + background-image: url(support/1x1-green.png); background-repeat: no-repeat; background-size: auto 45%; bottom: 45px; diff --git a/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-017.html b/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-017.html index d52f62ee0f5..71f216ffbba 100644 --- a/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-017.html +++ b/tests/wpt/web-platform-tests/css/css-backgrounds/background-size-017.html @@ -4,8 +4,8 @@ <meta charset="utf-8"> <title>CSS Backgrounds and Borders Test: background-size - one <length> and one <percentage> values</title> <link rel="author" title="Intel" href="http://www.intel.com"> - <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!-- 2012-11-09 --> - <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-size" title="3.9. Sizing Images: the 'background-size' property"> + <link rel="reviewer" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/"> <!-- 2012-11-09 and 2020-11-18 --> + <link rel="help" href="http://www.w3.org/TR/css3-background/#the-background-size" title="3.9 Sizing Images: the 'background-size' property"> <link rel="match" href="reference/background-size-006-ref.html"> <meta name="flags" content="image"> <meta name="assert" content="Check if 'background-size' has one length and one percentage values, then such values are the width and height of the corresponding background image. Therefore the used width and height of the background-size in this test should be 45px and 45px."> @@ -16,7 +16,7 @@ width: 45px; } #test-overlapping-green { - background-image: url(support/60x60-green.png); + background-image: url(support/1x1-green.png); background-repeat: no-repeat; background-size: 45px 45%; bottom: 45px; diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-078-ref.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-078-ref.html new file mode 100644 index 00000000000..64629ca1197 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-078-ref.html @@ -0,0 +1,19 @@ +<!doctype HTML> +<html> +<meta charset="utf8"> +<title>CSS Content Visibility: positioned movement update moves hidden container (reference)</title> +<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-contain/#content-visibility"> + +<style> +#target { + top: 0; + left: 100px; + position: absolute; + width: 100px; + height: 100px; + background: blue; +} +</style> + +<div id=target></div> diff --git a/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-078.html b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-078.html new file mode 100644 index 00000000000..51382bccf04 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-contain/content-visibility/content-visibility-078.html @@ -0,0 +1,33 @@ +<!doctype HTML> +<html class="reftest-wait"> +<meta charset="utf8"> +<title>CSS Content Visibility: positioned movement update moves hidden container</title> +<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org"> +<link rel="help" href="https://drafts.csswg.org/css-contain/#content-visibility"> +<link rel="match" href="content-visibility-078-ref.html"> +<meta name="assert" content="when locked, position updates still apply"> + +<script src="/common/reftest-wait.js"></script> + +<style> +.hidden { content-visibility: hidden; } +#target { + top: 0; + left: 0; + position: absolute; + width: 100px; + height: 100px; + background: blue; +} +</style> + +<div id=target class=hidden>Content</div> + +<script> +function runTest() { + target.style = "left: 100px;"; + takeScreenshot(); +} + +window.onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest)); +</script> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-inline-block-before-ref.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-inline-block-before-ref.html new file mode 100644 index 00000000000..8cfe779766b --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-inline-block-before-ref.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<div> + <span style="color: green">green</span><span style="color: red">red</span> +</div> diff --git a/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-inline-block-before.html b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-inline-block-before.html new file mode 100644 index 00000000000..8b454faeda3 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-pseudo/first-line-with-inline-block-before.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<title>inline block ::before styles should apply inside ::first-line</title> +<link rel="help" href="https://drafts.csswg.org/css-pseudo-4/#generated-content"> +<link rel="match" href="first-line-with-inline-block-before-ref.html"> +<style> + #target::first-line { + color: red; + } + #target::before { + content: "green"; + color: green; + display: inline-block; + } +</style> +<div id="target">red</div> diff --git a/tests/wpt/web-platform-tests/css/css-tables/tentative/position-sticky-container.html b/tests/wpt/web-platform-tests/css/css-tables/tentative/position-sticky-container.html new file mode 100644 index 00000000000..604b536df17 --- /dev/null +++ b/tests/wpt/web-platform-tests/css/css-tables/tentative/position-sticky-container.html @@ -0,0 +1,170 @@ +<!doctype html> +<title>Table parts sticky containers</title> +<script src='/resources/testharness.js'></script> +<script src='/resources/testharnessreport.js'></script> +<link rel="author" title="Aleks Totic" href="mailto:atotic@chromium.org" /> +<link rel="help" href="https://www.w3.org/TR/css-tables-3/" /> +<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/5020"/> +<style> + body { + margin: 0; + } + main * { + box-sizing: border-box; + } + + main .scroller { + width: 350px; + height: 302px; + overflow-y: scroll; + outline-offset: -1px; + outline: gray solid 1px; + } + main .padblock { + width: 300px; + height: 400px; + outline-offset: -2px; + outline: black dotted 2px; + } + main table { + border-spacing: 0; + } + + main td { + width: 100px; + height: 25px; + } + .sticky { + position:sticky; + top: 0; + background: rgba(0,255,0, 0.3); + } + +</style> +<main> + <div class="scroller"> + <div class="padblock">top</div> + <table> + <thead> + <tr> + <td>h:0,0</td> + <td>h:0,1</td> + <td>h:0,2</td> + </tr> + <tr > + <td>h:1,0</td> + <td >h:1,1</td> + <td>h:1,2</td> + </tr> + <tr> + <td>h:2,0</td> + <td>h:2,1</td> + <td>h:2,2</td> + </tr> + </thead> + <tbody> + <tr> + <td>b:0,0</td> + <td>b:0,1</td> + <td>b:0,2</td> + </tr> + <tr> + <td>b:1,0</td> + <td>b:1,1</td> + <td>b:1,2</td> + </tr> + <tr> + <td>b:2,0</td> + <td>b:2,1</td> + <td>b:2,2</td> + </tr> + </tbody> + <tfoot> + <tr> + <td>f:0,0</td> + <td>f:0,1</td> + <td>f:0,2</td> + </tr> + <tr> + <td>f:1,0</td> + <td>f:1,1</td> + <td>f:1,2</td> + </tr> + <tr> + <td>f:2,0</td> + <td>f:2,1</td> + <td>f:2,2</td> + </tr> + </tfoot> + </table> + <div class="padblock">bottom</div> + </div> +</main> +<script> + + function scrollTo(y) { + let scroller = document.querySelector("main .scroller"); + scroller.scrollTop = y; + } + + test( () => { + // Setup + let target = document.querySelector("main tbody tr:nth-child(2) td:nth-child(2)"); + let scroller = document.querySelector("main .scroller"); + target.classList.toggle("sticky"); + + // Tests + scrollTo(0); + assert_equals(target.getBoundingClientRect().top, 500, "intrinsic position"); + + scrollTo(600); + assert_equals(target.getBoundingClientRect().top, 0, "sticking to the table"); + + scrollTo(640); + assert_equals(target.getBoundingClientRect().top, -40, "sticking to the table bottom"); + + // Teardown + target.classList.toggle("sticky"); + }, "TD sticky container is table"); + + test( () => { + // Setup + let target = document.querySelector("main tbody tr:nth-child(2)"); + let scroller = document.querySelector("main .scroller"); + target.classList.toggle("sticky"); + + // Tests + scrollTo(0); + assert_equals(target.getBoundingClientRect().top, 500, "intrinsic position"); + + scrollTo(600); + assert_equals(target.getBoundingClientRect().top, 0, "sticking to the table"); + + scrollTo(640); + assert_equals(target.getBoundingClientRect().top, -40, "sticking to the table bottom"); + // Teardown + target.classList.toggle("sticky"); + }, "TR sticky container is table"); + + + test( () => { + // Setup + let target = document.querySelector("main tbody"); + let scroller = document.querySelector("main .scroller"); + target.classList.toggle("sticky"); + + // Tests + scrollTo(0); + assert_equals(target.getBoundingClientRect().top, 475, "intrinsic position"); + + scrollTo(550); + assert_equals(target.getBoundingClientRect().top, 0, "sticking to the table"); + + scrollTo(600); + assert_equals(target.getBoundingClientRect().top, -50, "sticking to the table bottom"); + + // Teardown + target.classList.toggle("sticky"); + }, "TBODY sticky container is table"); + +</script> diff --git a/tests/wpt/web-platform-tests/domxpath/xml_xpath_runner.html b/tests/wpt/web-platform-tests/domxpath/xml_xpath_runner.html index 42404562a3c..03edf50515c 100644 --- a/tests/wpt/web-platform-tests/domxpath/xml_xpath_runner.html +++ b/tests/wpt/web-platform-tests/domxpath/xml_xpath_runner.html @@ -1,5 +1,6 @@ <!doctype html> <title>XPath tests</title> +<meta name="timeout" content="long"> <script src='/resources/testharness.js'></script> <script src='/resources/testharnessreport.js'></script> <script> diff --git a/tests/wpt/web-platform-tests/editing/other/white-spaces-after-execCommand-delete.tentative.html b/tests/wpt/web-platform-tests/editing/other/white-spaces-after-execCommand-delete.tentative.html index 6aafdddcef0..1490bf06f55 100644 --- a/tests/wpt/web-platform-tests/editing/other/white-spaces-after-execCommand-delete.tentative.html +++ b/tests/wpt/web-platform-tests/editing/other/white-spaces-after-execCommand-delete.tentative.html @@ -2,6 +2,7 @@ <html> <head> <meta charset=utf-8> +<meta name="timeout" content="long"> <title>Testing normalizing white-space sequence after execCommand("delete", false, "")</title> <script src=../include/implementation.js></script> <script>var testsJsLibraryOnly = true</script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw-from-coop.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw-from-coop.https.html index fc38ea1c66b..0b7d6d91001 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw-from-coop.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw-from-coop.https.html @@ -4,6 +4,7 @@ <title> Check ServiceWorkers can set COOP/COEP headers for documents's responses </title> + <meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/utils.js"></script> diff --git a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw.https.html b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw.https.html index 13d9e79ca77..830318c208f 100644 --- a/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw.https.html +++ b/tests/wpt/web-platform-tests/html/cross-origin-opener-policy/popup-coop-by-sw.https.html @@ -4,6 +4,7 @@ <title> Check ServiceWorkers can set COOP/COEP headers for documents's responses </title> + <meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/common/utils.js"></script> diff --git a/tests/wpt/web-platform-tests/html/links/icon/no-error-event.sub.html b/tests/wpt/web-platform-tests/html/links/icon/no-error-event.sub.html new file mode 100644 index 00000000000..128b5d2d3c6 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/links/icon/no-error-event.sub.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title><link rel="icon"> doesn't fire an error event</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + async_test((t) => { + const link = document.createElement("link"); + link.rel = "icon"; + link.href = "http://{{hosts[][nonexistent]}}"; + + link.addEventListener("error", t.unreached_func()); + document.head.append(link); + t.step_timeout(() => t.done(), 2000); + }, document.title); +</script> diff --git a/tests/wpt/web-platform-tests/html/links/icon/no-load-event.html b/tests/wpt/web-platform-tests/html/links/icon/no-load-event.html new file mode 100644 index 00000000000..f81399a2309 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/links/icon/no-load-event.html @@ -0,0 +1,16 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title><link rel="icon"> doesn't fire a load event</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script> + async_test((t) => { + const link = document.createElement("link"); + link.rel = "icon"; + link.href = "/images/wpt-logo/wpt-logo-darkblue-bg.svg"; + + link.addEventListener("load", t.unreached_func()); + document.head.append(link); + t.step_timeout(() => t.done(), 2000); + }, document.title); +</script> diff --git a/tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html b/tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html index 2c544aac31e..00a5ff9a967 100644 --- a/tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html +++ b/tests/wpt/web-platform-tests/html/rendering/dimension-attributes.html @@ -1,6 +1,7 @@ <!doctype html> <meta charset=utf-8> <title>Test handling of attributes that map to dimension properties</title> +<meta name="timeout" content="long"> <link rel="help" href="https://html.spec.whatwg.org/multipage/rendering.html#maps-to-the-dimension-property"> <link rel="help" diff --git a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-mode.html b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-mode.html index 2474a11fb1a..206ac9968f8 100644 --- a/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-mode.html +++ b/tests/wpt/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-mode.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>TextTrack mode attribute</title> +<meta name="timeout" content="long"> <script src="/common/media.js"></script> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/newline-normalization.html b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/newline-normalization.html new file mode 100644 index 00000000000..d3de7699662 --- /dev/null +++ b/tests/wpt/web-platform-tests/html/semantics/forms/form-submission-0/newline-normalization.html @@ -0,0 +1,66 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8" /> + <title>Form newline normalization</title> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + </head> + <body> + <script> + function createForm(testCase, name, value) { + const form = document.createElement("form"); + const input = document.createElement("input"); + input.type = "hidden"; + input.name = name; + input.value = value; + form.appendChild(input); + document.body.appendChild(form); + testCase.add_cleanup(() => { + document.body.removeChild(form); + }); + return form; + } + + test((testCase) => { + const formData = new FormData(createForm(testCase, "a", "b\nc")); + assert_equals(formData.get("a"), "b\r\nc"); + }, document.title + ": \\n in the value becomes \\r\\n"); + + test((testCase) => { + const formData = new FormData(createForm(testCase, "a", "b\rc")); + assert_equals(formData.get("a"), "b\r\nc"); + }, document.title + ": \\r in the value becomes \\r\\n"); + + test((testCase) => { + const formData = new FormData(createForm(testCase, "a", "b\r\nc")); + assert_equals(formData.get("a"), "b\r\nc"); + }, document.title + ": \\r\\n in the value stays unchanged"); + + test((testCase) => { + const formData = new FormData(createForm(testCase, "a", "b\n\rc")); + assert_equals(formData.get("a"), "b\r\n\r\nc"); + }, document.title + ": \\n\\r in the value becomes \\r\\n\\r\\n"); + + test((testCase) => { + const formData = new FormData(createForm(testCase, "a\nb", "c")); + assert_equals([...formData][0][0], "a\r\nb"); + }, document.title + ": \\n in the name becomes \\r\\n"); + + test((testCase) => { + const formData = new FormData(createForm(testCase, "a\rb", "c")); + assert_equals([...formData][0][0], "a\r\nb"); + }, document.title + ": \\r in the name becomes \\r\\n"); + + test((testCase) => { + const formData = new FormData(createForm(testCase, "a\r\nb", "c")); + assert_equals([...formData][0][0], "a\r\nb"); + }, document.title + ": \\r\\n in the name stays unchanged"); + + test((testCase) => { + const formData = new FormData(createForm(testCase, "a\n\rb", "c")); + assert_equals([...formData][0][0], "a\r\n\r\nb"); + }, document.title + ": \\n\\r in the name becomes \\r\\n\\r\\n"); + </script> + </body> +</html> diff --git a/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.tentative.html index cc21418e47d..ebeeb935c06 100644 --- a/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.tentative.html +++ b/tests/wpt/web-platform-tests/html/user-activation/consumption-crossorigin.sub.tentative.html @@ -5,6 +5,7 @@ --> <html> <head> + <meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> diff --git a/tests/wpt/web-platform-tests/html/user-activation/propagation-crossorigin.sub.tentative.html b/tests/wpt/web-platform-tests/html/user-activation/propagation-crossorigin.sub.tentative.html index c29c9d8440d..467dfb81b75 100644 --- a/tests/wpt/web-platform-tests/html/user-activation/propagation-crossorigin.sub.tentative.html +++ b/tests/wpt/web-platform-tests/html/user-activation/propagation-crossorigin.sub.tentative.html @@ -5,6 +5,7 @@ --> <html> <head> + <meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/resources/testdriver.js"></script> diff --git a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/pause.html b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/pause.html index 72f34c1bde8..ec33c511029 100644 --- a/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/pause.html +++ b/tests/wpt/web-platform-tests/infrastructure/testdriver/actions/pause.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <meta charset="utf-8"> +<meta name="timeout" content="long"> <title>TestDriver actions: pause</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch.html index 257043f2249..53eafbb2f2a 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_child-auto-child-none_touch.html @@ -4,6 +4,7 @@ <title>touch-action: parent > child: auto > child: none</title> <meta name="assert" content="TA15.5 - when a user touches an element, the effect of that touch is determined by the value of the touch-action property and the default touch behaviors on the element and its ancestors. Scrollable-Parent, Child: `auto`, Grand-Child: `none`"> <meta name="viewport" content="width=device-width"> + <meta name="timeout" content="long"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html index c2f4bd35aeb..a820b4f3cf4 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html @@ -2,6 +2,7 @@ <html> <head> <title>touch-action: parent > child: pan-x > child: pan-x</title> + <meta name="timeout" content="long"> <meta name="assert" content="TA15.6 - when a user touches an element, the effect of that touch is determined by the value of the touch-action property and the default touch behaviors on the element and its ancestors. Scrollable-Parent, Child: `pan-x`, Grand-Child: `pan-x`"> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html index 04db243676f..e8c205a042f 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-inherit_parent-none_touch.html @@ -2,6 +2,7 @@ <html> <head> <title>touch-action: inherit from parent: none</title> + <meta name="timeout" content="long"> <meta name="assert" content="TA15.8 - when a user touches an element, the effect of that touch is determined by the value of the touch-action property and the default touch behaviors on the element and its ancestors. Scrollable-Parent: `none` Child: `auto`"> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> diff --git a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-right-css_touch.html b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-right-css_touch.html index c211e17b17c..99882a079c9 100644 --- a/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-right-css_touch.html +++ b/tests/wpt/web-platform-tests/pointerevents/pointerevent_touch-action-pan-right-css_touch.html @@ -4,6 +4,7 @@ <title>touch-action: pan-right</title> <meta name="assert" content="TA15.3 - With `touch-action: pan-right` on a swiped or click/dragged element, only panning on the x-axis right direction should be possible."> <meta name="viewport" content="width=device-width"> + <meta name="timeout" content="long"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/web-platform-tests/preload/preload-with-type.html b/tests/wpt/web-platform-tests/preload/preload-with-type.html index eb5675f993b..7f92606cb79 100644 --- a/tests/wpt/web-platform-tests/preload/preload-with-type.html +++ b/tests/wpt/web-platform-tests/preload/preload-with-type.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>Makes sure that preloaded resources with a type attribute trigger the onload event</title> +<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="/preload/resources/preload_helper.js"></script> diff --git a/tests/wpt/web-platform-tests/requestidlecallback/callback-idle-periods.html b/tests/wpt/web-platform-tests/requestidlecallback/callback-idle-periods.html index c066c6055d8..3c2de61bfea 100644 --- a/tests/wpt/web-platform-tests/requestidlecallback/callback-idle-periods.html +++ b/tests/wpt/web-platform-tests/requestidlecallback/callback-idle-periods.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <title>window.requestIdleCallback callback behavior during idle periods.</title> +<meta name="timeout" content="long"> <link rel="author" title="Ross McIlroy" href="mailto:rmcilroy@chromium.org" /> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> diff --git a/tests/wpt/web-platform-tests/requestidlecallback/callback-invoked.html b/tests/wpt/web-platform-tests/requestidlecallback/callback-invoked.html index 5e799cf39f9..dc52f1422b0 100644 --- a/tests/wpt/web-platform-tests/requestidlecallback/callback-invoked.html +++ b/tests/wpt/web-platform-tests/requestidlecallback/callback-invoked.html @@ -1,5 +1,6 @@ <!doctype html> <meta charset=utf-8> +<meta name="timeout" content="long"> <title>requestIdleCallback callback must be called eventually</title> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> diff --git a/tests/wpt/web-platform-tests/resource-timing/__init__.py b/tests/wpt/web-platform-tests/resource-timing/__init__.py new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/tests/wpt/web-platform-tests/resource-timing/__init__.py diff --git a/tests/wpt/web-platform-tests/secure-payment-confirmation/secure-payment-confirmation.tenative.https.html b/tests/wpt/web-platform-tests/secure-payment-confirmation/secure-payment-confirmation.tenative.https.html index 1cc12d49eba..1eabdd41145 100644 --- a/tests/wpt/web-platform-tests/secure-payment-confirmation/secure-payment-confirmation.tenative.https.html +++ b/tests/wpt/web-platform-tests/secure-payment-confirmation/secure-payment-confirmation.tenative.https.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <meta charset="utf-8"> +<meta name="timeout" content="long"> <title>Test for 'secure-payment-confirmation' payment method</title> <link rel="help" href="https://github.com/rsolomakhin/secure-payment-confirmation"> <script src="/resources/testharness.js"></script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html index 4b49a8152a4..c55b965be6e 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/claim-worker-fetch.https.html @@ -15,6 +15,10 @@ promise_test(function(t) { return runTest(t, 'resources/claim-nested-worker-fetch-iframe.html'); }, 'fetch() in nested Worker should be intercepted after the client is claimed.'); +promise_test(function(t) { + return runTest(t, 'resources/claim-blob-url-worker-fetch-iframe.html'); +}, 'fetch() in blob URL Worker should be intercepted after the client is claimed.'); + function runTest(t, iframe_url) { var resource = 'simple.txt'; diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/resources/claim-blob-url-worker-fetch-iframe.html b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/claim-blob-url-worker-fetch-iframe.html new file mode 100644 index 00000000000..12ae1a87258 --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/resources/claim-blob-url-worker-fetch-iframe.html @@ -0,0 +1,21 @@ +<!doctype html> +<script> +const baseLocation = window.location; +const workerScript = + `self.onmessage = async (e) => { + const url = new URL(e.data, '${baseLocation}').href; + const response = await fetch(url); + const text = await response.text(); + self.postMessage(text); + };`; +const blob = new Blob([workerScript], { type: 'text/javascript' }); +const blobUrl = URL.createObjectURL(blob); +const worker = new Worker(blobUrl); + +function fetch_in_worker(url) { + return new Promise((resolve) => { + worker.onmessage = (e) => resolve(e.data); + worker.postMessage(url); + }); +} +</script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/update-bytecheck-cors-import.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/update-bytecheck-cors-import.https.html new file mode 100644 index 00000000000..de7023c86ca --- /dev/null +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/update-bytecheck-cors-import.https.html @@ -0,0 +1,59 @@ +<!doctype html> +<meta charset=utf-8> +<title></title> +<meta name="timeout" content="long"> +<script src="/resources/testharness.js"></script> +<script src="resources/testharness-helpers.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/test-helpers.sub.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script> +// Tests of updating a service worker. This file contains cors cases only. +// The cases of cors: false are in update-bytecheck.https.html. + +/* + * @param string main + * Decide the content of the main script, where 'default' is for constant + * content while 'time' is for time-variant content. + * @param string imported + * Decide the content of the imported script, where 'default' is for constant + * content while 'time' is for time-variant content. + */ +const settings = [{main: 'default', imported: 'default'}, + {main: 'default', imported: 'time' }, + {main: 'time', imported: 'default'}, + {main: 'time', imported: 'time' }]; + +const host_info = get_host_info(); +settings.forEach(({cors, main, imported}) => { + promise_test(async (t) => { + // Specify a cross origin path to load imported scripts from a cross origin. + const path = host_info.HTTPS_REMOTE_ORIGIN + + '/service-workers/service-worker/resources/'; + const script = 'resources/bytecheck-worker.py' + + '?main=' + main + + '&imported=' + imported + + '&path=' + path; + const scope = 'resources/blank.html'; + + // Register a service worker. + const swr = await service_worker_unregister_and_register(t, script, scope); + t.add_cleanup(() => swr.unregister()); + const sw = await wait_for_update(t, swr); + await wait_for_state(t, sw, 'activated'); + assert_array_equals([swr.active, swr.waiting, swr.installing], + [sw, null, null]); + + // Update the service worker registration. + await swr.update(); + + // If there should be a new service worker. + if (main === 'time' || imported === 'time') { + return wait_for_update(t, swr); + } + // Otherwise, make sure there is no newly created service worker. + assert_array_equals([swr.active, swr.waiting, swr.installing], + [sw, null, null]); + }, `Test(main: ${main}, imported: ${imported})`); +}); +</script> diff --git a/tests/wpt/web-platform-tests/service-workers/service-worker/update-bytecheck.https.html b/tests/wpt/web-platform-tests/service-workers/service-worker/update-bytecheck.https.html index 6628dba6ee7..3329938bcaf 100644 --- a/tests/wpt/web-platform-tests/service-workers/service-worker/update-bytecheck.https.html +++ b/tests/wpt/web-platform-tests/service-workers/service-worker/update-bytecheck.https.html @@ -8,10 +8,10 @@ <script src="resources/test-helpers.sub.js"></script> <script src="/common/get-host-info.sub.js"></script> <script> +// Tests of updating a service worker. This file contains non-cors cases only. +// The cases of cors: true are in update-bytecheck-cors-import.https.html. /* - * @param bolean cors - * Determine wether the imported script should be a cross origin script. * @param string main * Decide the content of the main script, where 'default' is for constant * content while 'time' is for time-variant content. @@ -19,57 +19,40 @@ * Decide the content of the imported script, where 'default' is for constant * content while 'time' is for time-variant content. */ -const settings = [{cors: false, main: 'default', imported: 'default'}, - {cors: false, main: 'default', imported: 'time' }, - {cors: false, main: 'time', imported: 'default'}, - {cors: false, main: 'time', imported: 'time' }, - {cors: true, main: 'default', imported: 'default'}, - {cors: true, main: 'default', imported: 'time' }, - {cors: true, main: 'time', imported: 'default'}, - {cors: true, main: 'time', imported: 'time' }]; +const settings = [{main: 'default', imported: 'default'}, + {main: 'default', imported: 'time' }, + {main: 'time', imported: 'default'}, + {main: 'time', imported: 'time' }]; const host_info = get_host_info(); -settings.reduce((p, s) => { - return p.then(promise_test(function(t) { - var path = !s.cors ? '' - : host_info.HTTPS_REMOTE_ORIGIN + - '/service-workers/service-worker/resources/'; - var script = 'resources/bytecheck-worker.py' + - '?main=' + s.main + - '&imported=' + s.imported + - '&path=' + path; - var scope = 'resources/blank.html'; +settings.forEach(({main, imported}) => { + promise_test(async (t) => { + // Empty path results in the same origin imported scripts. + const path = ''; + const script = 'resources/bytecheck-worker.py' + + '?main=' + main + + '&imported=' + imported + + '&path=' + path; + const scope = 'resources/blank.html'; - var swr, sw; - return Promise.resolve() - // Register a service worker. - .then(_ => service_worker_unregister_and_register(t, script, scope)) - .then(r => { - t.add_cleanup(() => service_worker_unregister(t, scope)); - swr = r; - return wait_for_update(t, swr); - }) - .then(w => sw = w) - .then(_ => wait_for_state(t, sw, 'activated')) - .then(_ => assert_array_equals([swr.active, - swr.waiting, - swr.installing], - [sw, null, null])) + // Register a service worker. + const swr = await service_worker_unregister_and_register(t, script, scope); + t.add_cleanup(() => swr.unregister()); + const sw = await wait_for_update(t, swr); + await wait_for_state(t, sw, 'activated'); + assert_array_equals([swr.active, swr.waiting, swr.installing], + [sw, null, null]); - // Update the service worker registration. - .then(_ => swr.update()) - .then(_ => { - // If there should be a new service worker. - if (s.main === 'time' || s.imported === 'time') { - return wait_for_update(t, swr); - } - // Otherwise, make sure there is no newly created service worker. - assert_array_equals([swr.active, - swr.waiting, - swr.installing], - [sw, null, null]); - }); - }, `Test(cors: ${s.cors}, main: ${s.main}, imported: ${s.imported})`)); -}, Promise.resolve()); + // Update the service worker registration. + await swr.update(); + // If there should be a new service worker. + if (main === 'time' || imported === 'time') { + return wait_for_update(t, swr); + } + // Otherwise, make sure there is no newly created service worker. + assert_array_equals([swr.active, swr.waiting, swr.installing], + [sw, null, null]); + }, `Test(main: ${main}, imported: ${imported})`); +}); </script> diff --git a/tests/wpt/web-platform-tests/tools/wpt/testfiles.py b/tests/wpt/web-platform-tests/tools/wpt/testfiles.py index 4d10878d9d5..fee19cd1c49 100644 --- a/tests/wpt/web-platform-tests/tools/wpt/testfiles.py +++ b/tests/wpt/web-platform-tests/tools/wpt/testfiles.py @@ -2,6 +2,7 @@ import argparse import logging import os import re +import subprocess import sys from collections import OrderedDict @@ -76,8 +77,19 @@ def branch_point(): if item and item != "^%s" % head] # get all commits on HEAD but not reachable from anything in not_heads - commits = git("rev-list", "--topo-order", "--parents", "HEAD", *not_heads) + cmd = ["git", "rev-list", "--topo-order", "--parents", "--stdin", "HEAD"] + proc = subprocess.Popen(cmd, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + cwd=wpt_root) + commits_bytes, _ = proc.communicate(b"\n".join(item.encode("ascii") for item in not_heads)) + if proc.returncode != 0: + raise subprocess.CalledProcessError(proc.returncode, + cmd, + commits_bytes) + commit_parents = OrderedDict() # type: Dict[Text, List[Text]] + commits = commits_bytes.decode("ascii") if commits: for line in commits.split("\n"): line_commits = line.split(" ") diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py index 129457b3fd1..c74632b0486 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/manifestupdate.py @@ -718,15 +718,18 @@ class ExpectedUpdate(PropertyUpdate): # add them in to expected. if count > 0 or not self.remove_intermittent: expected.append(status) + + # If the new intermittent is a subset of the existing one, just use the existing one + # This prevents frequent flip-flopping of results between e.g. [OK, TIMEOUT] and + # [TIMEOUT, OK] + if current and set(expected).issubset(set(current)): + return current + if self.update_intermittent: if len(expected) == 1: return expected[0] return expected - # If nothing has changed and not self.update_intermittent, preserve existing - # intermittent. - if set(expected).issubset(set(current)): - return current # If we are not updating intermittents, return the status with the highest occurence. return expected[0] diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_update.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_update.py index a1ba8de2878..77043839821 100644 --- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_update.py +++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/tests/test_update.py @@ -442,7 +442,7 @@ def test_update_reorder_expected(): assert not new_manifest.is_empty assert new_manifest.get_test(test_id).children[0].get( - "expected", default_run_info) == ["FAIL", "PASS"] + "expected", default_run_info) == ["PASS", "FAIL"] def test_update_and_preserve_unchanged_expected_intermittent(): diff --git a/tests/wpt/web-platform-tests/webdriver/tests/close_window/close.py b/tests/wpt/web-platform-tests/webdriver/tests/close_window/close.py index 53af5730f83..2d665d5a883 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/close_window/close.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/close_window/close.py @@ -81,3 +81,23 @@ def test_close_last_browsing_context(session): # With no more open top-level browsing contexts, the session is closed. session.session_id = None + + +def test_element_usage_after_closing_browsing_context(session): + session.url = inline("<p id='a'>foo") + a = session.find.css("p", all=False) + first = session.window_handle + + second = session.new_window(type_hint="tab") + session.window_handle = second + + session.url = inline("<p id='b'>other") + b = session.find.css("p", all=False) + + session.window_handle = first + response = close(session) + assert_success(response) + assert len(session.handles) == 1 + + session.window_handle = second + assert b.attribute("id") == "b" diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py b/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py index 0189c38c277..8b7bb501043 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_clear/clear.py @@ -48,10 +48,17 @@ def test_null_response_value(session): def test_no_top_browsing_context(session, closed_window): element = Element("foo", session) + response = element_clear(session, element) + assert_error(response, "no such window") + original_handle, element = closed_window response = element_clear(session, element) assert_error(response, "no such window") + session.window_handle = original_handle + response = element_clear(session, element) + assert_error(response, "no such element") + def test_no_browsing_context(session, closed_frame): element = Element("foo", session) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py b/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py index 3a5d737216d..50982fe4bdd 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_click/click.py @@ -22,10 +22,17 @@ def test_null_response_value(session): def test_no_top_browsing_context(session, closed_window): element = Element("foo", session) + response = element_click(session, element) + assert_error(response, "no such window") + original_handle, element = closed_window response = element_click(session, element) assert_error(response, "no such window") + session.window_handle = original_handle + response = element_click(session, element) + assert_error(response, "no such element") + def test_no_browsing_context(session, closed_frame): element = Element("foo", session) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py index edf91e77614..acdc1164a40 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/element_send_keys/send_keys.py @@ -36,10 +36,17 @@ def test_null_response_value(session): def test_no_top_browsing_context(session, closed_window): element = Element("foo", session) + response = element_send_keys(session, element, "foo") + assert_error(response, "no such window") + original_handle, element = closed_window response = element_send_keys(session, element, "foo") assert_error(response, "no such window") + session.window_handle = original_handle + response = element_send_keys(session, element, "foo") + assert_error(response, "no such element") + def test_no_browsing_context(session, closed_frame): element = Element("foo", session) diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py index b18d9ca8b22..f67a6c3d7c0 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_attribute/get.py @@ -13,8 +13,14 @@ def get_element_attribute(session, element, attr): def test_no_top_browsing_context(session, closed_window): + original_handle, element = closed_window + response = get_element_attribute(session, element.id, "id") + assert_error(response, "no such window") response = get_element_attribute(session, "foo", "id") assert_error(response, "no such window") + session.window_handle = original_handle + response = get_element_attribute(session, element.id, "id") + assert_error(response, "no such element") def test_no_browsing_context(session, closed_frame): diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py index 4e8704d50af..25fae26a69c 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_css_value/get.py @@ -14,9 +14,15 @@ def get_element_css_value(session, element_id, prop): def test_no_top_browsing_context(session, closed_window): + original_handle, element = closed_window + response = get_element_css_value(session, element.id, "display") + assert_error(response, "no such window") response = get_element_css_value(session, "foo", "bar") assert_error(response, "no such window") + session.window_handle = original_handle + response = get_element_css_value(session, element.id, "display") + assert_error(response, "no such element") def test_no_browsing_context(session, closed_frame): response = get_element_css_value(session, "foo", "bar") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py index 5c0247edb70..27b4bea5f17 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_property/get.py @@ -13,9 +13,16 @@ def get_element_property(session, element_id, prop): def test_no_top_browsing_context(session, closed_window): + original_handle, element = closed_window + response = get_element_property(session, element.id, "value") + assert_error(response, "no such window") response = get_element_property(session, "foo", "id") assert_error(response, "no such window") + session.window_handle = original_handle + response = get_element_property(session, element.id, "value") + assert_error(response, "no such element") + def test_no_browsing_context(session, closed_frame): response = get_element_property(session, "foo", "id") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py index 494c45f8e45..d461c01c312 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_rect/get.py @@ -14,9 +14,16 @@ def get_element_rect(session, element_id): def test_no_top_browsing_context(session, closed_window): + original_handle, element = closed_window + response = get_element_rect(session, element.id) + assert_error(response, "no such window") response = get_element_rect(session, "foo") assert_error(response, "no such window") + session.window_handle = original_handle + response = get_element_rect(session, element.id) + assert_error(response, "no such element") + def test_no_browsing_context(session, closed_frame): response = get_element_rect(session, "foo") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py index ffe6dd641e8..4ca818f76a5 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_tag_name/get.py @@ -10,9 +10,16 @@ def get_element_tag_name(session, element_id): def test_no_top_browsing_context(session, closed_window): + original_handle, element = closed_window + response = get_element_tag_name(session, element.id) + assert_error(response, "no such window") response = get_element_tag_name(session, "foo") assert_error(response, "no such window") + session.window_handle = original_handle + response = get_element_tag_name(session, element.id) + assert_error(response, "no such element") + def test_no_browsing_context(session, closed_frame): response = get_element_tag_name(session, "foo") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py b/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py index 5f169a3a233..642bc1d2c62 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/get_element_text/get.py @@ -10,9 +10,16 @@ def get_element_text(session, element_id): def test_no_top_browsing_context(session, closed_window): + original_handle, element = closed_window + response = get_element_text(session, element.id) + assert_error(response, "no such window") response = get_element_text(session, "foo") assert_error(response, "no such window") + session.window_handle = original_handle + response = get_element_text(session, element.id) + assert_error(response, "no such element") + def test_no_browsing_context(session, closed_frame): response = get_element_text(session, "foo") @@ -27,12 +34,8 @@ def test_getting_text_of_a_non_existant_element_is_an_error(session): def test_read_element_text(session): - session.url = inline(""" - <body> - Noise before <span id='id'>This has an ID</span>. Noise after - </body>""") - + session.url = inline("Before f<span id='id'>oo</span> after") element = session.find.css("#id", all=False) result = get_element_text(session, element.id) - assert_success(result, "This has an ID") + assert_success(result, "oo") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py b/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py index 88b1534ded1..64058ebd577 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/is_element_enabled/enabled.py @@ -15,9 +15,16 @@ def is_element_enabled(session, element_id): def test_no_top_browsing_context(session, closed_window): + original_handle, element = closed_window + response = is_element_enabled(session, element.id) + assert_error(response, "no such window") response = is_element_enabled(session, "foo") assert_error(response, "no such window") + session.window_handle = original_handle + response = is_element_enabled(session, element.id) + assert_error(response, "no such element") + def test_no_browsing_context(session, closed_frame): response = is_element_enabled(session, "foo") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py b/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py index 79a1615dd9f..b09927c7a12 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/is_element_selected/selected.py @@ -22,9 +22,17 @@ def is_element_selected(session, element_id): def test_no_top_browsing_context(session, closed_window): + original_handle, element = closed_window + + response = is_element_selected(session, element.id) + assert_error(response, "no such window") response = is_element_selected(session, "foo") assert_error(response, "no such window") + session.window_handle = original_handle + response = is_element_selected(session, element.id) + assert_error(response, "no such element") + def test_no_browsing_context(session, closed_frame): response = is_element_selected(session, "foo") diff --git a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py index 957c4d05868..3eb5ffd26fa 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/support/fixtures.py @@ -11,6 +11,7 @@ from six.moves.urllib.parse import urlunsplit from tests.support import defaults from tests.support.helpers import cleanup_session +from tests.support.inline import inline from tests.support.http_request import HTTPRequest from tests.support.sync import Poll @@ -243,10 +244,12 @@ def closed_window(session): new_handle = session.new_window() session.window_handle = new_handle + session.url = inline("<input id='a' value='b'>") + element = session.find.css("input", all=False) session.window.close() assert new_handle not in session.handles, "Unable to close window {}".format(new_handle) - yield new_handle + yield (original_handle, element) session.window_handle = original_handle diff --git a/tests/wpt/web-platform-tests/webdriver/tests/switch_to_window/switch.py b/tests/wpt/web-platform-tests/webdriver/tests/switch_to_window/switch.py index 9e5315588e3..88a1a244b2d 100644 --- a/tests/wpt/web-platform-tests/webdriver/tests/switch_to_window/switch.py +++ b/tests/wpt/web-platform-tests/webdriver/tests/switch_to_window/switch.py @@ -1,3 +1,6 @@ +import pytest + +from webdriver.error import NoSuchElementException from webdriver.transport import Response from tests.support.asserts import assert_error, assert_success @@ -65,3 +68,12 @@ def test_switch_to_window_sets_top_level_context(session): assert_success(response) session.find.css("iframe", all=False) + +def test_element_not_found_after_tab_switch(session): + session.url = inline("<p id='a'>foo") + paragraph = session.find.css("p", all=False) + + session.window_handle = session.new_window(type_hint="tab") + + with pytest.raises(NoSuchElementException): + paragraph.attribute("id") diff --git a/tests/wpt/web-platform-tests/workers/Worker_terminate_event_queue.htm b/tests/wpt/web-platform-tests/workers/Worker_terminate_event_queue.htm index 5d9472a1c46..e4f106ad3a8 100644 --- a/tests/wpt/web-platform-tests/workers/Worker_terminate_event_queue.htm +++ b/tests/wpt/web-platform-tests/workers/Worker_terminate_event_queue.htm @@ -1,5 +1,6 @@ <!DOCTYPE html> <title> AbstractWorker terminate(): clear event queue </title> +<meta name="timeout" content="long"> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <div id=log></div> |