Auto merge of #27781 - servo-wpt-sync:wpt_update_19-11-2020, r=servo-wpt-sync

Sync WPT with upstream (19-11-2020)

Automated downstream sync of changes from upstream as of 19-11-2020.
[no-wpt-sync]
r? @servo-wpt-sync
This commit is contained in:
bors-servo 2020-11-19 06:00:11 -05:00 committed by GitHub
commit 064655c9cd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
121 changed files with 2408 additions and 255 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,4 @@
[send-file-formdata.html]
[Upload file-for-upload-in-form.txt (ASCII) in fetch with FormData]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-floats-004.html]
[Miss float below something else]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-anonymous-block.html]
[Hit test beside line of text inside anonymous block]
expected: FAIL

View file

@ -2,6 +2,3 @@
[elementsFromPoint on the root document for points in iframe elements] [elementsFromPoint on the root document for points in iframe elements]
expected: FAIL expected: FAIL
[elementsFromPoint on inner documents]
expected: FAIL

View file

@ -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

View file

@ -99,9 +99,6 @@
[Request: combined response Content-Type: text/plain;charset=gbk text/plain] [Request: combined response Content-Type: text/plain;charset=gbk text/plain]
expected: NOTRUN expected: NOTRUN
[fetch(): separate response Content-Type: text/plain]
expected: FAIL
[fetch(): combined response Content-Type: text/html;" \\" text/plain ";charset=GBK] [fetch(): combined response Content-Type: text/html;" \\" text/plain ";charset=GBK]
expected: NOTRUN expected: NOTRUN
@ -327,6 +324,12 @@
[<iframe>: separate response Content-Type: text/html;" \\" text/plain] [<iframe>: separate response Content-Type: text/html;" \\" text/plain]
expected: FAIL 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 expected: FAIL

View file

@ -53,3 +53,9 @@
[combined text/javascript ] [combined text/javascript ]
expected: FAIL expected: FAIL
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript error]
expected: FAIL

View file

@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] [X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20%22nosniFF%22]
expected: FAIL

View file

@ -1,4 +1,4 @@
[traverse_the_history_3.html] [traverse_the_history_5.html]
[Multiple history traversals, last would be aborted] [Multiple history traversals, last would be aborted]
expected: FAIL expected: FAIL

View file

@ -1,4 +1,5 @@
[creating_browsing_context_test_01.html] [creating_browsing_context_test_01.html]
expected: TIMEOUT
[first argument: absolute url] [first argument: absolute url]
expected: FAIL expected: TIMEOUT

View file

@ -1,4 +1,5 @@
[embedded-opener-remove-frame.html] [embedded-opener-remove-frame.html]
expected: CRASH
[opener of discarded nested browsing context] [opener of discarded nested browsing context]
expected: FAIL expected: FAIL

View file

@ -1,4 +1,8 @@
[skip-document-with-fragment.html] [skip-document-with-fragment.html]
expected: TIMEOUT
[Autofocus elements in iframed documents with URL fragments should be skipped.] [Autofocus elements in iframed documents with URL fragments should be skipped.]
expected: FAIL expected: FAIL
[Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.]
expected: TIMEOUT

View file

@ -1,5 +1,4 @@
[iframe_sandbox_popups_nonescaping-1.html] [iframe_sandbox_popups_nonescaping-1.html]
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox] [Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN expected: FAIL

View file

@ -1,5 +1,4 @@
[iframe_sandbox_popups_nonescaping-3.html] [iframe_sandbox_popups_nonescaping-3.html]
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox] [Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN expected: FAIL

View file

@ -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

View file

@ -0,0 +1,4 @@
[module-delayed.html]
[async document.write in a module]
expected: FAIL

View file

@ -290,3 +290,9 @@
[X SNR (-47.512665238764875 dB) is not greater than or equal to 65.737. Got -47.512665238764875.] [X SNR (-47.512665238764875 dB) is not greater than or equal to 65.737. Got -47.512665238764875.]
expected: FAIL 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

View file

@ -0,0 +1,5 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,4 @@
[send-file-formdata.html]
[Upload file-for-upload-in-form.txt (ASCII) in fetch with FormData]
expected: FAIL

View file

@ -125483,7 +125483,7 @@
] ]
], ],
"background-size-006.html": [ "background-size-006.html": [
"be082b6799a15ff156296fbaaf3c3963d8466bc8", "81e4c9ea3ecbfd3598b35bd35c4a7cf1bbbcd082",
[ [
null, null,
[ [
@ -125522,7 +125522,7 @@
] ]
], ],
"background-size-009.html": [ "background-size-009.html": [
"7e187b8e77ba2af5ed305a76f91b425f09f02251", "9d76478ffade931ef2cd523ae815ddc028cfc8e4",
[ [
null, null,
[ [
@ -125587,7 +125587,7 @@
] ]
], ],
"background-size-014.html": [ "background-size-014.html": [
"bbb246f6d565b2dd89b2c5157fb56926ed3a4249", "0f602c646418eaad6e8549b76e5ad78479876944",
[ [
null, null,
[ [
@ -125626,7 +125626,7 @@
] ]
], ],
"background-size-017.html": [ "background-size-017.html": [
"d52f62ee0f5bc357e1a3cb6cfafb4eec55d36142", "71f216ffbba9cd3deda2ea74e3d9d4a3b5829f94",
[ [
null, 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": [ "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": [ "first-line-with-inline-block.html": [
"12e11a3d2e4344b57c755b8a7e749115b299e549", "12e11a3d2e4344b57c755b8a7e749115b299e549",
[ [
@ -256438,6 +256464,14 @@
"506a59fec1eb33661658850254344e264c323c2e", "506a59fec1eb33661658850254344e264c323c2e",
[] []
], ],
"file": {
"resources": {
"echo-content-escaped.py": [
"bdbbc0f1ea56591a48a8e06e9a39491a8d49aea6",
[]
]
}
},
"filelist-section": { "filelist-section": {
"support": { "support": {
"upload.txt": [ "upload.txt": [
@ -256476,7 +256510,11 @@
[] []
], ],
"send-file-form-helper.js": [ "send-file-form-helper.js": [
"a7522c7b08ebc2451637e91dbd6a07040af4939d", "d6adf21ec337957e22876f601ba05d5711ee3d3b",
[]
],
"send-file-formdata-helper.js": [
"53572ef36c8d1b17037117d988c64e8b4fbc2a73",
[] []
], ],
"upload.txt": [ "upload.txt": [
@ -301972,6 +302010,10 @@
"4b37070bd7e03bfcef0baaf9440d978859d1e780", "4b37070bd7e03bfcef0baaf9440d978859d1e780",
[] []
], ],
"content-visibility-078-ref.html": [
"64629ca11977c77e4b1420881c5bc59a50816323",
[]
],
"inline-container-with-child-ref.html": [ "inline-container-with-child-ref.html": [
"af51cbd5db8f3eff56411345860548e95fe4d354", "af51cbd5db8f3eff56411345860548e95fe4d354",
[] []
@ -315485,6 +315527,10 @@
"fcee7995052717c0509c58a76fa1f420434ceb43", "fcee7995052717c0509c58a76fa1f420434ceb43",
[] []
], ],
"first-line-with-inline-block-before-ref.html": [
"8cfe779766bb9b152f145d657aedc94f6cb42362",
[]
],
"first-line-with-out-of-flow-ref.html": [ "first-line-with-out-of-flow-ref.html": [
"7193bf25eb88c5443457480f7ce27782acd9473a", "7193bf25eb88c5443457480f7ce27782acd9473a",
[] []
@ -355934,6 +355980,10 @@
"944de61c71561d9a96825b9a344bc642a48f262a", "944de61c71561d9a96825b9a344bc642a48f262a",
[] []
], ],
"__init__.py": [
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
[]
],
"resource-timing-level1.js": [ "resource-timing-level1.js": [
"95b5cdfb1ed0ca2bbfd6b692ad565512218dd7a4", "95b5cdfb1ed0ca2bbfd6b692ad565512218dd7a4",
[] []
@ -358182,6 +358232,10 @@
"dfce9e7ed46d8719409f45f33f21888230b1f3b8", "dfce9e7ed46d8719409f45f33f21888230b1f3b8",
[] []
], ],
"claim-blob-url-worker-fetch-iframe.html": [
"12ae1a87258f7235c6165029b48e7b4dc2ff90d2",
[]
],
"claim-nested-worker-fetch-iframe.html": [ "claim-nested-worker-fetch-iframe.html": [
"2fa15db61d9ce6742f077e72b98629f49e0b7380", "2fa15db61d9ce6742f077e72b98629f49e0b7380",
[] []
@ -367658,7 +367712,7 @@
[] []
], ],
"testfiles.py": [ "testfiles.py": [
"4d10878d9d5f57310fe0d7300d312fcae67f193c", "fee19cd1c49769f972e8856a3b29feba7713b0a1",
[] []
], ],
"tests": { "tests": {
@ -368219,7 +368273,7 @@
[] []
], ],
"manifestupdate.py": [ "manifestupdate.py": [
"129457b3fd1270dc66029d3ea873d353714aa607", "c74632b0486ceb891b855c1573e090459d718a6a",
[] []
], ],
"metadata.py": [ "metadata.py": [
@ -368326,7 +368380,7 @@
[] []
], ],
"test_update.py": [ "test_update.py": [
"a1ba8de28780647544b22cb1127568d57d4dcac4", "770438398215556785fa330148df880393626e0e",
[] []
], ],
"test_wpttest.py": [ "test_wpttest.py": [
@ -370843,7 +370897,7 @@
[] []
], ],
"fixtures.py": [ "fixtures.py": [
"957c4d05868b9cb3ba440727de79d3c4b120c5a3", "3eb5ffd26fa5f8e1f909b98214024dffefc704fe",
[] []
], ],
"helpers.py": [ "helpers.py": [
@ -375552,6 +375606,13 @@
{} {}
] ]
], ],
"send-file-form-controls.tentative.html": [
"d11f4a860931b4249f8c15d87143b8904cb61364",
[
null,
{}
]
],
"send-file-form-iso-2022-jp.tentative.html": [ "send-file-form-iso-2022-jp.tentative.html": [
"421de301298ba55a70124290066eaf66e6416394", "421de301298ba55a70124290066eaf66e6416394",
[ [
@ -375559,22 +375620,29 @@
{} {}
] ]
], ],
"send-file-form-punctuation.tentative.html": [
"5c2d6d0bf1fe0196932aa1cbddb3c6669db44698",
[
null,
{}
]
],
"send-file-form-utf-8.html": [ "send-file-form-utf-8.html": [
"03417ba72e4c2cccef3ff17f4e41bba76cc598bb", "1be44f4f4db09efdf155e5fe27bb18cacecf18e9",
[ [
null, null,
{} {}
] ]
], ],
"send-file-form-windows-1252.tentative.html": [ "send-file-form-windows-1252.tentative.html": [
"8e9463f83aecb47ba1da1aa30d1903508e279937", "a2c37186b3e023d19ba3d731cd642f1f3fcdada8",
[ [
null, null,
{} {}
] ]
], ],
"send-file-form-x-user-defined.tentative.html": [ "send-file-form-x-user-defined.tentative.html": [
"072e3bb1e02ea0ccc0e5442c1cae316acb40ce30", "503b08a51706f77eeda7ca066c18200ad6750699",
[ [
null, null,
{} {}
@ -375586,6 +375654,34 @@
null, 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": [ "fileReader.html": [
@ -394351,10 +394447,12 @@
] ]
], ],
"frame-ancestors-nested-cross-in-same-star-allow.html": [ "frame-ancestors-nested-cross-in-same-star-allow.html": [
"c523b9ef10a7832cc21dbe90902dec16431c0651", "3658fb65023b0a70a763b1e4e34c39c6d503eb7d",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
], ],
"frame-ancestors-nested-cross-in-same-url-allow.html": [ "frame-ancestors-nested-cross-in-same-url-allow.html": [
@ -398409,10 +398507,12 @@
] ]
], ],
"match.html": [ "match.html": [
"14921d1d62c0d80349cf1149e55e3af0b51f77d5", "e42ee24f3d0af258ac35534301c1626331ec55ed",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
] ]
}, },
@ -414668,6 +414768,13 @@
null, null,
{} {}
] ]
],
"position-sticky-container.html": [
"604b536df17c13467083fb7626001bf3552b71ca",
[
null,
{}
]
] ]
}, },
"visibility-collapse-col-001.html": [ "visibility-collapse-col-001.html": [
@ -430190,10 +430297,12 @@
] ]
], ],
"xml_xpath_runner.html": [ "xml_xpath_runner.html": [
"42404562a3c95b3004c7b0b7402ea366faeb4d83", "03edf50515c231a9f9fbf0a0587261627b949e19",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
] ]
}, },
@ -430272,10 +430381,12 @@
] ]
], ],
"white-spaces-after-execCommand-delete.tentative.html": [ "white-spaces-after-execCommand-delete.tentative.html": [
"6aafdddcef01b9fb77a3bfd7f9343170a653913b", "1490bf06f55a6c2b1e10afc044b19b108e5dd482",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
], ],
"white-spaces-after-execCommand-forwarddelete.tentative.html": [ "white-spaces-after-execCommand-forwarddelete.tentative.html": [
@ -475333,17 +475444,21 @@
] ]
], ],
"popup-coop-by-sw-from-coop.https.html": [ "popup-coop-by-sw-from-coop.https.html": [
"fc38ea1c66b3ec5ccd8f517a2e76a0c203846c8e", "0b7d6d91001d406b575ce4185f2ae68ef2a909e2",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
], ],
"popup-coop-by-sw.https.html": [ "popup-coop-by-sw.https.html": [
"13d9e79ca77c65e9dbd719e4601f6a8af476ae7f", "830318c208f3ad52585882bd265500f51a4ea95d",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
], ],
"popup-meta-http-equiv.https.html": [ "popup-meta-http-equiv.https.html": [
@ -478261,6 +478376,22 @@
} }
}, },
"links": { "links": {
"icon": {
"no-error-event.sub.html": [
"128b5d2d3c6830b80fe55c6a9663fd85502db548",
[
null,
{}
]
],
"no-load-event.html": [
"f81399a23093f7978d1241c35048395be36081dd",
[
null,
{}
]
]
},
"manifest": { "manifest": {
"link-relationship": { "link-relationship": {
"link-rel-manifest.html": [ "link-rel-manifest.html": [
@ -478367,10 +478498,12 @@
}, },
"rendering": { "rendering": {
"dimension-attributes.html": [ "dimension-attributes.html": [
"2c544aac31ead3b04ca8d3fc8cb490c51a74e8bb", "00a5ff9a9673f1bc5bea22807e2e90a41c3348af",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
], ],
"non-replaced-elements": { "non-replaced-elements": {
@ -481348,10 +481481,12 @@
] ]
], ],
"track-mode.html": [ "track-mode.html": [
"2474a11fb1adb0ccd2a4f7a5b82098fa7ea04e57", "206ac9968f8e4b47b6defa09f669aeaf57fb5593",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
], ],
"track-node-add-remove.html": [ "track-node-add-remove.html": [
@ -484267,6 +484402,13 @@
{} {}
] ]
], ],
"newline-normalization.html": [
"d3de7699662da75fc37fba31cf994f02a13de191",
[
null,
{}
]
],
"reparent-form-during-planned-navigation-task.html": [ "reparent-form-during-planned-navigation-task.html": [
"6b50bf599b888b1c3273a4e311ba6af69d67e86b", "6b50bf599b888b1c3273a4e311ba6af69d67e86b",
[ [
@ -491281,11 +491423,12 @@
] ]
], ],
"consumption-crossorigin.sub.tentative.html": [ "consumption-crossorigin.sub.tentative.html": [
"cc21418e47dbe074b121430f2463aaca76347187", "ebeeb935c062979bd9758bc4cc66d2ed516976ec",
[ [
null, null,
{ {
"testdriver": true "testdriver": true,
"timeout": "long"
} }
] ]
], ],
@ -491343,11 +491486,12 @@
] ]
], ],
"propagation-crossorigin.sub.tentative.html": [ "propagation-crossorigin.sub.tentative.html": [
"c29c9d8440d0ff25fe3ef88ae9b8b3382dfb4bcf", "467dfb81b75c3ace7f2186856f7404995ee7f24c",
[ [
null, null,
{ {
"testdriver": true "testdriver": true,
"timeout": "long"
} }
] ]
], ],
@ -494447,11 +494591,12 @@
] ]
], ],
"pause.html": [ "pause.html": [
"72f34c1bde8cf54814cdf91b3fdeeaff90dd07e3", "ec33c5110292c420009b0ce46461754390975f76",
[ [
null, null,
{ {
"testdriver": true "testdriver": true,
"timeout": "long"
} }
] ]
], ],
@ -508098,11 +508243,12 @@
] ]
], ],
"pointerevent_touch-action-inherit_child-auto-child-none_touch.html": [ "pointerevent_touch-action-inherit_child-auto-child-none_touch.html": [
"257043f2249c63b5ac6e3245d17acb80caa83732", "53eafbb2f2ae2854ffe54c49b66f760b0bc94e10",
[ [
null, null,
{ {
"testdriver": true "testdriver": true,
"timeout": "long"
} }
] ]
], ],
@ -508116,11 +508262,12 @@
] ]
], ],
"pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html": [ "pointerevent_touch-action-inherit_child-pan-x-child-pan-x_touch.html": [
"c2f4bd35aebbb67194f4cc17d3d52709d63f732a", "a820b4f3cf4ca29a6b37286e084a18102cc054af",
[ [
null, null,
{ {
"testdriver": true "testdriver": true,
"timeout": "long"
} }
] ]
], ],
@ -508143,11 +508290,12 @@
] ]
], ],
"pointerevent_touch-action-inherit_parent-none_touch.html": [ "pointerevent_touch-action-inherit_parent-none_touch.html": [
"04db243676fd2f454421d10b6a7e6a1cef4e3e04", "e8c205a042f283296c39d0d249739a2b0d23afe0",
[ [
null, null,
{ {
"testdriver": true "testdriver": true,
"timeout": "long"
} }
] ]
], ],
@ -508198,11 +508346,12 @@
] ]
], ],
"pointerevent_touch-action-pan-right-css_touch.html": [ "pointerevent_touch-action-pan-right-css_touch.html": [
"c211e17b17c8fd5d817dc31de060d26a550d1a74", "99882a079c91c23212c7689d5141fb863815a0b0",
[ [
null, null,
{ {
"testdriver": true "testdriver": true,
"timeout": "long"
} }
] ]
], ],
@ -508901,10 +509050,12 @@
] ]
], ],
"preload-with-type.html": [ "preload-with-type.html": [
"eb5675f993b1e98014fd38d8674858f7c66ed7e6", "7f92606cb7954cab45f28495499fbd84c3446459",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
], ],
"preload-xhr.html": [ "preload-xhr.html": [
@ -519654,10 +519805,12 @@
] ]
], ],
"callback-idle-periods.html": [ "callback-idle-periods.html": [
"c066c6055d86f7814dfed52674da1103bbcb4ffb", "3c2de61bfeadd452ea1a80d30c42a799704ab1b3",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
], ],
"callback-iframe.html": [ "callback-iframe.html": [
@ -519670,10 +519823,12 @@
] ]
], ],
"callback-invoked.html": [ "callback-invoked.html": [
"5e799cf39f985a9bb66b418771ca0fa57ee85ad8", "dc52f1422b08f3e07521fa09995d6da4ce68452b",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
], ],
"callback-multiple-calls.html": [ "callback-multiple-calls.html": [
@ -521397,10 +521552,12 @@
}, },
"secure-payment-confirmation": { "secure-payment-confirmation": {
"secure-payment-confirmation.tenative.https.html": [ "secure-payment-confirmation.tenative.https.html": [
"1cc12d49eba1369d57512a52de30eab4fa477da2", "1eabdd41145b3edae1a5b68c0219fd5e178f7a71",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
] ]
}, },
@ -522590,7 +522747,7 @@
] ]
], ],
"claim-worker-fetch.https.html": [ "claim-worker-fetch.https.html": [
"4b49a8152a42c9e45104139b46b9fa56762de6bb", "c55b965be6e923ae40b4d6db2df745fa772c5bba",
[ [
null, null,
{} {}
@ -523923,8 +524080,17 @@
{} {}
] ]
], ],
"update-bytecheck-cors-import.https.html": [
"de7023c86cade4aff9a3564e5801bd237ccdf6a9",
[
null,
{
"timeout": "long"
}
]
],
"update-bytecheck.https.html": [ "update-bytecheck.https.html": [
"6628dba6ee7d11ae0cd45941c726df017afb9336", "3329938bcaf982718f6a58cd7e54e2a76575a7b5",
[ [
null, null,
{ {
@ -554313,10 +554479,12 @@
] ]
], ],
"Worker_terminate_event_queue.htm": [ "Worker_terminate_event_queue.htm": [
"5d9472a1c46f460e0606e99e3302b3039cd390c9", "e4f106ad3a86b07efb3e4f449c0de904e667f30e",
[ [
null, null,
{} {
"timeout": "long"
}
] ]
], ],
"abrupt-completion.html": [ "abrupt-completion.html": [
@ -581243,7 +581411,7 @@
}, },
"close_window": { "close_window": {
"close.py": [ "close.py": [
"53af5730f83fbd158e8540ac680c44896f5323ba", "2d665d5a8836df3f5bca6928d6fb6fe58d9b87db",
[ [
null, null,
{} {}
@ -581315,7 +581483,7 @@
}, },
"element_clear": { "element_clear": {
"clear.py": [ "clear.py": [
"0189c38c27709aecd6ece4c9ec0cd90f5a0fca5e", "8b7bb501043f79f41611fb9724ab64ba76d53e19",
[ [
null, null,
{ {
@ -581349,7 +581517,7 @@
] ]
], ],
"click.py": [ "click.py": [
"3a5d737216d95de1110f48cc004438b0913d1ca0", "50982fe4bdd8add9e1f10a9df60e1104238c71c9",
[ [
null, null,
{} {}
@ -581458,7 +581626,7 @@
] ]
], ],
"send_keys.py": [ "send_keys.py": [
"edf91e776148562721f89d8f7aef8e8eefbde78a", "acdc1164a406ee6364492c6d12bd70f4fa025db5",
[ [
null, null,
{} {}
@ -581737,7 +581905,7 @@
}, },
"get_element_attribute": { "get_element_attribute": {
"get.py": [ "get.py": [
"b18d9ca8b22a8a576dac66863408337992151a27", "f67a6c3d7c0ac63b8eac1cf800e6ca855a526366",
[ [
null, null,
{} {}
@ -581755,7 +581923,7 @@
}, },
"get_element_css_value": { "get_element_css_value": {
"get.py": [ "get.py": [
"4e8704d50af93cfe94d496302a2d33807a7a3a5a", "25fae26a69c549173f8504ffdc340c6a9f100280",
[ [
null, null,
{} {}
@ -581773,7 +581941,7 @@
}, },
"get_element_property": { "get_element_property": {
"get.py": [ "get.py": [
"5c0247edb7020599306dada98c8e7d35b31b7751", "27b4bea5f173d83f4ef3517acc650ede136cf281",
[ [
null, null,
{} {}
@ -581791,7 +581959,7 @@
}, },
"get_element_rect": { "get_element_rect": {
"get.py": [ "get.py": [
"494c45f8e45b847909d3d602186423bfd9d2e7ad", "d461c01c3120dc5aa95bb893b1f84544a9429bce",
[ [
null, null,
{} {}
@ -581809,7 +581977,7 @@
}, },
"get_element_tag_name": { "get_element_tag_name": {
"get.py": [ "get.py": [
"ffe6dd641e82a3982da89f11f773d019858450ef", "4ca818f76a5704b5875be5e22206840c3a248d4d",
[ [
null, null,
{} {}
@ -581827,7 +581995,7 @@
}, },
"get_element_text": { "get_element_text": {
"get.py": [ "get.py": [
"5f169a3a233b50de73de31f241a3bff4d749d6c2", "642bc1d2c62298a6dc9e9f4d38b2a63345027c6d",
[ [
null, null,
{} {}
@ -581978,7 +582146,7 @@
}, },
"is_element_enabled": { "is_element_enabled": {
"enabled.py": [ "enabled.py": [
"88b1534ded1ae5d7a34a83cd8f763d115b6312a5", "64058ebd577e23c55a81a745fa63a9228f98d28c",
[ [
null, null,
{} {}
@ -581996,7 +582164,7 @@
}, },
"is_element_selected": { "is_element_selected": {
"selected.py": [ "selected.py": [
"79a1615dd9fdfcc7f3fd07f971f0bbec84247bca", "b09927c7a12e0c7cbc235a204bec990f8530ebff",
[ [
null, null,
{} {}
@ -582489,7 +582657,7 @@
] ]
], ],
"switch.py": [ "switch.py": [
"9e5315588e3bbea859a10d2c367d41354c3240ea", "88a1a244b2d27bcf60f1be55752b3633863b4ad6",
[ [
null, null,
{} {}

View file

@ -1,4 +0,0 @@
[hit-test-floats-002.html]
[Hit test float]
expected: FAIL

View file

@ -0,0 +1,4 @@
[hit-test-floats-004.html]
[Miss float below something else]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-floats-005.html]
[Miss clipped float]
expected: FAIL

View file

@ -1,4 +0,0 @@
[hit-test-anonymous-block.html]
[Hit test beside line of text inside anonymous block]
expected: FAIL

View file

@ -2,6 +2,3 @@
[elementsFromPoint on the root document for points in iframe elements] [elementsFromPoint on the root document for points in iframe elements]
expected: FAIL expected: FAIL
[elementsFromPoint on inner documents]
expected: FAIL

View file

@ -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

View file

@ -309,6 +309,27 @@
[fetch(): separate response Content-Type: text/plain ] [fetch(): separate response Content-Type: text/plain ]
expected: NOTRUN 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 expected: FAIL

View file

@ -53,3 +53,9 @@
[combined text/javascript ] [combined text/javascript ]
expected: FAIL expected: FAIL
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript error]
expected: FAIL

View file

@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!] [X-Content-Type-Options%3A%20nosniff%2C%2C%40%23%24%23%25%25%26%5E%26%5E*()()11!]
expected: FAIL expected: FAIL
[X-Content-Type-Options%3A%20%22nosniFF%22]
expected: FAIL

View file

@ -1,4 +1,4 @@
[traverse_the_history_3.html] [traverse_the_history_5.html]
[Multiple history traversals, last would be aborted] [Multiple history traversals, last would be aborted]
expected: FAIL expected: FAIL

View file

@ -1,4 +1,5 @@
[creating_browsing_context_test_01.html] [creating_browsing_context_test_01.html]
expected: TIMEOUT
[first argument: absolute url] [first argument: absolute url]
expected: FAIL expected: TIMEOUT

View file

@ -1,4 +1,5 @@
[embedded-opener-remove-frame.html] [embedded-opener-remove-frame.html]
expected: CRASH
[opener and "removed" embedded documents] [opener and "removed" embedded documents]
expected: FAIL expected: FAIL

View file

@ -1,4 +1,8 @@
[skip-document-with-fragment.html] [skip-document-with-fragment.html]
expected: TIMEOUT
[Autofocus elements in iframed documents with URL fragments should be skipped.] [Autofocus elements in iframed documents with URL fragments should be skipped.]
expected: FAIL expected: FAIL
[Autofocus elements in top-level browsing context's documents with URI fragments should be skipped.]
expected: TIMEOUT

View file

@ -1,6 +1,5 @@
[iframe_sandbox_popups_nonescaping-1.html] [iframe_sandbox_popups_nonescaping-1.html]
type: testharness type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox] [Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN expected: FAIL

View file

@ -1,6 +1,5 @@
[iframe_sandbox_popups_nonescaping-3.html] [iframe_sandbox_popups_nonescaping-3.html]
type: testharness type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox] [Check that popups from a sandboxed iframe do not escape the sandbox]
expected: NOTRUN expected: FAIL

View file

@ -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

View file

@ -0,0 +1,4 @@
[module-delayed.html]
[async document.write in a module]
expected: FAIL

View file

@ -518,3 +518,9 @@
[X SNR (-47.512665238764875 dB) is not greater than or equal to 65.737. Got -47.512665238764875.] [X SNR (-47.512665238764875 dB) is not greater than or equal to 65.737. Got -47.512665238764875.]
expected: FAIL 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

View file

@ -0,0 +1,5 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -1,5 +0,0 @@
[018.html]
expected: TIMEOUT
[origin of the script that invoked the method, javascript:]
expected: TIMEOUT

View file

@ -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

View file

@ -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>

View file

@ -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>

View file

@ -27,35 +27,36 @@ formPostFileUploadTest({
fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt', fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt',
formEncoding: 'UTF-8', formEncoding: 'UTF-8',
expectedEncodedBaseName: ( 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({ formPostFileUploadTest({
fileNameSource: 'windows-1252', fileNameSource: 'windows-1252',
fileBaseName: 'file-for-upload-in-form-☺😂.txt', fileBaseName: 'file-for-upload-in-form-☺😂.txt',
formEncoding: 'UTF-8', 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({ formPostFileUploadTest({
fileNameSource: 'JIS X 0201 and JIS X 0208', fileNameSource: 'JIS X 0201 and JIS X 0208',
fileBaseName: 'file-for-upload-in-form-★星★.txt', fileBaseName: 'file-for-upload-in-form-★星★.txt',
formEncoding: 'UTF-8', 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({ formPostFileUploadTest({
fileNameSource: 'Unicode', fileNameSource: 'Unicode',
fileBaseName: 'file-for-upload-in-form-☺😂.txt', fileBaseName: 'file-for-upload-in-form-☺😂.txt',
formEncoding: 'UTF-8', 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({ formPostFileUploadTest({
fileNameSource: 'Unicode', fileNameSource: 'Unicode',
fileBaseName: `file-for-upload-in-form-${kTestChars}.txt`, fileBaseName: `file-for-upload-in-form-${kTestChars}.txt`,
formEncoding: 'UTF-8', formEncoding: 'UTF-8',
expectedEncodedBaseName: `file-for-upload-in-form-${kTestChars}.txt`, expectedEncodedBaseName: `file-for-upload-in-form-${kTestFallbackUtf8}.txt`,
}); });
</script> </script>

View file

@ -33,15 +33,14 @@ formPostFileUploadTest({
fileNameSource: 'x-user-defined', fileNameSource: 'x-user-defined',
fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt', fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt',
formEncoding: 'windows-1252', formEncoding: 'windows-1252',
expectedEncodedBaseName: ( expectedEncodedBaseName: 'file-for-upload-in-form-&#63472;&#63379;&#63363;&#63392;.txt',
'file-for-upload-in-form-&#63472;&#63379;&#63363;&#63392;.txt'),
}); });
formPostFileUploadTest({ formPostFileUploadTest({
fileNameSource: 'windows-1252', fileNameSource: 'windows-1252',
fileBaseName: 'file-for-upload-in-form-☺😂.txt', fileBaseName: 'file-for-upload-in-form-☺😂.txt',
formEncoding: 'windows-1252', 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({ formPostFileUploadTest({

View file

@ -33,7 +33,7 @@ formPostFileUploadTest({
fileNameSource: 'x-user-defined', fileNameSource: 'x-user-defined',
fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt', fileBaseName: 'file-for-upload-in-form-\uF7F0\uF793\uF783\uF7A0.txt',
formEncoding: 'x-user-defined', formEncoding: 'x-user-defined',
expectedEncodedBaseName: 'file-for-upload-in-form-𓃠.txt', expectedEncodedBaseName: 'file-for-upload-in-form-\xF0\x93\x83\xA0.txt',
}); });
formPostFileUploadTest({ formPostFileUploadTest({

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -1,5 +1,17 @@
'use strict'; '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 // Rationale for this particular test character sequence, which is
// used in filenames and also in file contents: // used in filenames and also in file contents:
// //
@ -72,36 +84,46 @@
// are also allowed in Windows Unicode filenames. // are also allowed in Windows Unicode filenames.
const kTestChars = 'ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ'; const kTestChars = 'ABC~‾¥≈¤・・•∙·☼★星🌟星★☼·∙•・・¤≈¥‾~XYZ';
// NOTE: The expected interpretation of ISO-2022-JP according to // The kTestFallback* strings represent the expected byte sequence from
// https://encoding.spec.whatwg.org/#iso-2022-jp-encoder unifies // encoding kTestChars with the given encoding with "html" replacement
// single-byte and double-byte katakana. // mode, isomorphic-decoded. That means, characters that can't be
const kTestFallbackIso2022jp = // encoded in that encoding get HTML-escaped, but no further
('ABC~\x1B(J~\\≈¤\x1B$B!&!&\x1B(B•∙·☼\x1B$B!z@1\x1B(B🌟' + // `escapeString`-like escapes are needed.
'\x1B$B@1!z\x1B(B☼·∙•\x1B$B!&!&\x1B(B¤≈\x1B(J\\~\x1B(B~XYZ').replace( const kTestFallbackUtf8 = (
/[^\0-\x7F]/gu, "ABC~\xE2\x80\xBE\xC2\xA5\xE2\x89\x88\xC2\xA4\xEF\xBD\xA5\xE3\x83\xBB\xE2" +
x => `&#${x.codePointAt(0)};`); "\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"
);
// NOTE: \uFFFD is used here to replace Windows-1252 bytes to match const kTestFallbackIso2022jp = (
// how we will see them in the reflected POST bytes in a frame using ("ABC~\x1B(J~\\≈¤\x1B$B!&!&\x1B(B•∙·☼\x1B$B!z@1\x1B(B🌟" +
// UTF-8 byte interpretation. The bytes will actually be intact, but "\x1B$B@1!z\x1B(B☼·∙•\x1B$B!&!&\x1B(B¤≈\x1B(J\\~\x1B(B~XYZ")
// this code cannot tell and does not really care. .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)};`).replace(/[\x80-\xFF]/g, '\uFFFD');
const kTestFallbackXUserDefined = const kTestFallbackWindows1252 = (
kTestChars.replace(/[^\0-\x7F]/gu, x => `&#${x.codePointAt(0)};`); "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 // formPostFileUploadTest - verifies multipart upload structure and
// numeric character reference replacement for filenames, field names, // 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 // Uses /FileAPI/file/resources/echo-content-escaped.py to echo the
// POST with UTF-8 byte interpretation, leading to the "UTF-8 goggles" // upload POST with controls and non-ASCII bytes escaped. This is done
// behavior documented below for expectedEncodedBaseName when non- // because navigations whose response body contains [\0\b\v] may get
// UTF-8-compatible byte sequences appear in the formEncoding-encoded // treated as a download, which is not what we want. Use the
// uploaded data. // `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: // Fields in the parameter object:
// //
@ -114,10 +136,9 @@ const kTestFallbackXUserDefined =
// - formEncoding: the acceptCharset of the form used to submit the // - formEncoding: the acceptCharset of the form used to submit the
// test file. Used in the test name. // test file. Used in the test name.
// - expectedEncodedBaseName: the expected formEncoding-encoded // - expectedEncodedBaseName: the expected formEncoding-encoded
// version of fileBaseName with unencodable characters replaced by // version of fileBaseName, isomorphic-decoded. That means, characters
// numeric character references and non-7-bit-ASCII bytes seen // that can't be encoded in that encoding get HTML-escaped, but no
// through UTF-8 goggles; subsequences not interpretable as UTF-8 // further `escapeString`-like escapes are needed.
// have each byte represented here by \uFFFD REPLACEMENT CHARACTER.
const formPostFileUploadTest = ({ const formPostFileUploadTest = ({
fileNameSource, fileNameSource,
fileBaseName, fileBaseName,
@ -140,7 +161,7 @@ const formPostFileUploadTest = ({
const form = Object.assign(document.createElement('form'), { const form = Object.assign(document.createElement('form'), {
acceptCharset: formEncoding, acceptCharset: formEncoding,
action: '/fetch/api/resources/echo-content.py', action: '/FileAPI/file/resources/echo-content-escaped.py',
method: 'POST', method: 'POST',
enctype: 'multipart/form-data', enctype: 'multipart/form-data',
target: formTargetFrame.name, target: formTargetFrame.name,
@ -194,7 +215,7 @@ const formPostFileUploadTest = ({
// exposed through the newer .files[0].name API. This check // exposed through the newer .files[0].name API. This check
// verifies that assumption. // verifies that assumption.
assert_equals( assert_equals(
fileInput.files[0].name, baseNameOfFilePath(fileInput.files[0].name),
baseNameOfFilePath(fileInput.value), baseNameOfFilePath(fileInput.value),
`The basename of the field's value should match its files[0].name`); `The basename of the field's value should match its files[0].name`);
form.submit(); form.submit();
@ -219,6 +240,15 @@ const formPostFileUploadTest = ({
`${fileBaseName}: multipart form data must end with ${boundary}--: ${ `${fileBaseName}: multipart form data must end with ${boundary}--: ${
JSON.stringify(formDataText) 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 = [ const expectedText = [
boundary, boundary,
'Content-Disposition: form-data; name="_charset_"', 'Content-Disposition: form-data; name="_charset_"',
@ -227,19 +257,22 @@ const formPostFileUploadTest = ({
boundary, boundary,
'Content-Disposition: form-data; name="filename"', '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, boundary,
`Content-Disposition: form-data; name="${expectedEncodedBaseName}"`, `Content-Disposition: form-data; name="${escapeString(asName)}"`,
'', '',
'filename', 'filename',
boundary, boundary,
`Content-Disposition: form-data; name="file"; ` + `Content-Disposition: form-data; name="file"; ` +
`filename="${expectedEncodedBaseName}"`, `filename="${escapeString(asFilename)}"`,
'Content-Type: text/plain', 'Content-Type: text/plain',
'', '',
kTestChars, escapeString(kTestFallbackUtf8),
boundary + '--', boundary + '--',
].join('\n'); ].join('\n');
assert_true( assert_true(
formDataText.startsWith(expectedText), formDataText.startsWith(expectedText),
`Unexpected multipart-shaped form data received:\n${ `Unexpected multipart-shaped form data received:\n${

View file

@ -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`);
};

View file

@ -1,6 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="support/frame-ancestors-test.sub.js"></script> <script src="support/frame-ancestors-test.sub.js"></script>

View file

@ -3,6 +3,7 @@
<head> <head>
<meta charset=utf-8> <meta charset=utf-8>
<title>tests for matching cookie paths</title> <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"> <meta name=help href="http://tools.ietf.org/html/rfc6265#section-5.1.4">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>

View file

@ -4,8 +4,8 @@
<meta charset="utf-8"> <meta charset="utf-8">
<title>CSS Backgrounds and Borders Test: background-size - one &lt;length&gt; value</title> <title>CSS Backgrounds and Borders Test: background-size - one &lt;length&gt; value</title>
<link rel="author" title="Intel" href="http://www.intel.com"> <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="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="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"> <link rel="match" href="reference/background-size-006-ref.html">
<meta name="flags" content="image"> <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."> <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; width: 45px;
} }
#test-overlapping-green { #test-overlapping-green {
background-image: url(support/60x60-green.png); background-image: url(support/1x1-green.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 45px; background-size: 45px;
bottom: 45px; bottom: 45px;

View file

@ -4,8 +4,8 @@
<meta charset="utf-8"> <meta charset="utf-8">
<title>CSS Backgrounds and Borders Test: background-size - one &lt;percentage&gt; value</title> <title>CSS Backgrounds and Borders Test: background-size - one &lt;percentage&gt; value</title>
<link rel="author" title="Intel" href="http://www.intel.com"> <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="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="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"> <link rel="match" href="reference/background-size-006-ref.html">
<meta name="flags" content="image"> <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."> <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; width: 45px;
} }
#test-overlapping-green { #test-overlapping-green {
background-image: url(support/60x60-green.png); background-image: url(support/1x1-green.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 45%; background-size: 45%;
bottom: 45px; bottom: 45px;

View file

@ -4,8 +4,8 @@
<meta charset="utf-8"> <meta charset="utf-8">
<title>CSS Backgrounds and Borders Test: background-size - one auto keyword and one &lt;percentage&gt; values</title> <title>CSS Backgrounds and Borders Test: background-size - one auto keyword and one &lt;percentage&gt; values</title>
<link rel="author" title="Intel" href="http://www.intel.com"> <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="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="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"> <link rel="match" href="reference/background-size-006-ref.html">
<meta name="flags" content="image"> <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."> <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; width: 45px;
} }
#test-overlapping-green { #test-overlapping-green {
background-image: url(support/60x60-green.png); background-image: url(support/1x1-green.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: auto 45%; background-size: auto 45%;
bottom: 45px; bottom: 45px;

View file

@ -4,8 +4,8 @@
<meta charset="utf-8"> <meta charset="utf-8">
<title>CSS Backgrounds and Borders Test: background-size - one &lt;length&gt; and one &lt;percentage&gt; values</title> <title>CSS Backgrounds and Borders Test: background-size - one &lt;length&gt; and one &lt;percentage&gt; values</title>
<link rel="author" title="Intel" href="http://www.intel.com"> <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="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="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"> <link rel="match" href="reference/background-size-006-ref.html">
<meta name="flags" content="image"> <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."> <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; width: 45px;
} }
#test-overlapping-green { #test-overlapping-green {
background-image: url(support/60x60-green.png); background-image: url(support/1x1-green.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 45px 45%; background-size: 45px 45%;
bottom: 45px; bottom: 45px;

View file

@ -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>

View file

@ -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>

View file

@ -0,0 +1,4 @@
<!DOCTYPE html>
<div>
<span style="color: green">green</span><span style="color: red">red</span>
</div>

View file

@ -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>

View file

@ -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>

View file

@ -1,5 +1,6 @@
<!doctype html> <!doctype html>
<title>XPath tests</title> <title>XPath tests</title>
<meta name="timeout" content="long">
<script src='/resources/testharness.js'></script> <script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script> <script src='/resources/testharnessreport.js'></script>
<script> <script>

View file

@ -2,6 +2,7 @@
<html> <html>
<head> <head>
<meta charset=utf-8> <meta charset=utf-8>
<meta name="timeout" content="long">
<title>Testing normalizing white-space sequence after execCommand("delete", false, "")</title> <title>Testing normalizing white-space sequence after execCommand("delete", false, "")</title>
<script src=../include/implementation.js></script> <script src=../include/implementation.js></script>
<script>var testsJsLibraryOnly = true</script> <script>var testsJsLibraryOnly = true</script>

View file

@ -4,6 +4,7 @@
<title> <title>
Check ServiceWorkers can set COOP/COEP headers for documents's responses Check ServiceWorkers can set COOP/COEP headers for documents's responses
</title> </title>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script> <script src="/common/utils.js"></script>

View file

@ -4,6 +4,7 @@
<title> <title>
Check ServiceWorkers can set COOP/COEP headers for documents's responses Check ServiceWorkers can set COOP/COEP headers for documents's responses
</title> </title>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script> <script src="/common/utils.js"></script>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<meta charset="utf-8" />
<title>&lt;link rel="icon"&gt; 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>

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<meta charset="utf-8" />
<title>&lt;link rel="icon"&gt; 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>

View file

@ -1,6 +1,7 @@
<!doctype html> <!doctype html>
<meta charset=utf-8> <meta charset=utf-8>
<title>Test handling of attributes that map to dimension properties</title> <title>Test handling of attributes that map to dimension properties</title>
<meta name="timeout" content="long">
<link rel="help" <link rel="help"
href="https://html.spec.whatwg.org/multipage/rendering.html#maps-to-the-dimension-property"> href="https://html.spec.whatwg.org/multipage/rendering.html#maps-to-the-dimension-property">
<link rel="help" <link rel="help"

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<title>TextTrack mode attribute</title> <title>TextTrack mode attribute</title>
<meta name="timeout" content="long">
<script src="/common/media.js"></script> <script src="/common/media.js"></script>
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>

View file

@ -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>

View file

@ -5,6 +5,7 @@
--> -->
<html> <html>
<head> <head>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script> <script src="/resources/testdriver.js"></script>

View file

@ -5,6 +5,7 @@
--> -->
<html> <html>
<head> <head>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/resources/testdriver.js"></script> <script src="/resources/testdriver.js"></script>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="timeout" content="long">
<title>TestDriver actions: pause</title> <title>TestDriver actions: pause</title>
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>

View file

@ -4,6 +4,7 @@
<title>touch-action: parent > child: auto > child: none</title> <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="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="viewport" content="width=device-width">
<meta name="timeout" content="long">
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>

View file

@ -2,6 +2,7 @@
<html> <html>
<head> <head>
<title>touch-action: parent > child: pan-x > child: pan-x</title> <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="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"> <meta name="viewport" content="width=device-width">
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">

View file

@ -2,6 +2,7 @@
<html> <html>
<head> <head>
<title>touch-action: inherit from parent: none</title> <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="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"> <meta name="viewport" content="width=device-width">
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">

View file

@ -4,6 +4,7 @@
<title>touch-action: pan-right</title> <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="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="viewport" content="width=device-width">
<meta name="timeout" content="long">
<link rel="stylesheet" type="text/css" href="pointerevent_styles.css"> <link rel="stylesheet" type="text/css" href="pointerevent_styles.css">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<title>Makes sure that preloaded resources with a type attribute trigger the onload event</title> <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/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>
<script src="/preload/resources/preload_helper.js"></script> <script src="/preload/resources/preload_helper.js"></script>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<title>window.requestIdleCallback callback behavior during idle periods.</title> <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" /> <link rel="author" title="Ross McIlroy" href="mailto:rmcilroy@chromium.org" />
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script> <script src="/resources/testharnessreport.js"></script>

View file

@ -1,5 +1,6 @@
<!doctype html> <!doctype html>
<meta charset=utf-8> <meta charset=utf-8>
<meta name="timeout" content="long">
<title>requestIdleCallback callback must be called eventually</title> <title>requestIdleCallback callback must be called eventually</title>
<script src=/resources/testharness.js></script> <script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script> <script src=/resources/testharnessreport.js></script>

View file

@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="timeout" content="long">
<title>Test for 'secure-payment-confirmation' payment method</title> <title>Test for 'secure-payment-confirmation' payment method</title>
<link rel="help" href="https://github.com/rsolomakhin/secure-payment-confirmation"> <link rel="help" href="https://github.com/rsolomakhin/secure-payment-confirmation">
<script src="/resources/testharness.js"></script> <script src="/resources/testharness.js"></script>

View file

@ -15,6 +15,10 @@ promise_test(function(t) {
return runTest(t, 'resources/claim-nested-worker-fetch-iframe.html'); return runTest(t, 'resources/claim-nested-worker-fetch-iframe.html');
}, 'fetch() in nested Worker should be intercepted after the client is claimed.'); }, '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) { function runTest(t, iframe_url) {
var resource = 'simple.txt'; var resource = 'simple.txt';

Some files were not shown because too many files have changed in this diff Show more