From b4324862fca0881aedf9aa692d8ffe13eb45f742 Mon Sep 17 00:00:00 2001 From: Andreu Botella Date: Tue, 15 Dec 2020 18:24:29 +0000 Subject: [PATCH] Bug 1681758 [wpt PR 26838] - Test newline normalization in form-associated custom elements., a=testonly Automatic update from web-platform-tests Test newline normalization in form-associated custom elements. (#26838) -- wpt-commits: 24ecd21dd6e58ae2904d5c4f7aff80439af0626d wpt-pr: 26838 --- .../ElementInternals-setFormValue.html | 171 +++++++++++++++++++++ 1 file changed, 171 insertions(+) diff --git a/testing/web-platform/tests/custom-elements/form-associated/ElementInternals-setFormValue.html b/testing/web-platform/tests/custom-elements/form-associated/ElementInternals-setFormValue.html index 28cf3ec3d0a6..66ff8841a696 100644 --- a/testing/web-platform/tests/custom-elements/form-associated/ElementInternals-setFormValue.html +++ b/testing/web-platform/tests/custom-elements/form-associated/ElementInternals-setFormValue.html @@ -39,6 +39,25 @@ function submitPromise(t) { }); } +function testSerializedEntry({name, expectedName, value, expectedValue, description}) { + promise_test(async t => { + $('#container').innerHTML = '
' + + '' + + '
' + + ''; + if (name !== undefined) { + $('my-control').setAttribute("name", name); + } + if (Array.isArray(value)) { + $('my-control').setValues(value); + } else { + $('my-control').value = value; + } + const query = await submitPromise(t); + assert_equals(query, `?${expectedName}=${expectedValue}`); + }, description); +} + promise_test(t => { $('#container').innerHTML = '
' + '' + @@ -122,4 +141,156 @@ promise_test(t => { assert_equals(query, '?name-pd1=value-pd1'); }); }, 'setFormValue with an empty FormData should submit nothing'); + +testSerializedEntry({ + name: 'a\nb', + value: 'c', + expectedName: 'a%0D%0Ab', + expectedValue: 'c', + description: 'Newline normalization - \\n in name' +}); + +testSerializedEntry({ + name: 'a\rb', + value: 'c', + expectedName: 'a%0D%0Ab', + expectedValue: 'c', + description: 'Newline normalization - \\r in name' +}); + +testSerializedEntry({ + name: 'a\r\nb', + value: 'c', + expectedName: 'a%0D%0Ab', + expectedValue: 'c', + description: 'Newline normalization - \\r\\n in name' +}); + +testSerializedEntry({ + name: 'a\n\rb', + value: 'c', + expectedName: 'a%0D%0A%0D%0Ab', + expectedValue: 'c', + description: 'Newline normalization - \\n\\r in name' +}); + +testSerializedEntry({ + name: 'a', + value: 'b\nc', + expectedName: 'a', + expectedValue: 'b%0D%0Ac', + description: 'Newline normalization - \\n in value' +}); + +testSerializedEntry({ + name: 'a', + value: 'b\rc', + expectedName: 'a', + expectedValue: 'b%0D%0Ac', + description: 'Newline normalization - \\r in value' +}); + +testSerializedEntry({ + name: 'a', + value: 'b\r\nc', + expectedName: 'a', + expectedValue: 'b%0D%0Ac', + description: 'Newline normalization - \\r\\n in value' +}); + +testSerializedEntry({ + name: 'a', + value: 'b\n\rc', + expectedName: 'a', + expectedValue: 'b%0D%0A%0D%0Ac', + description: 'Newline normalization - \\n\\r in value' +}); + +testSerializedEntry({ + name: 'a', + value: new File([], "b\nc"), + expectedName: 'a', + expectedValue: 'b%0D%0Ac', + description: 'Newline normalization - \\n in filename' +}); + +testSerializedEntry({ + name: 'a', + value: new File([], "b\rc"), + expectedName: 'a', + expectedValue: 'b%0D%0Ac', + description: 'Newline normalization - \\r in filename' +}); + +testSerializedEntry({ + name: 'a', + value: new File([], "b\r\nc"), + expectedName: 'a', + expectedValue: 'b%0D%0Ac', + description: 'Newline normalization - \\r\\n in filename' +}); + +testSerializedEntry({ + name: 'a', + value: new File([], "b\n\rc"), + expectedName: 'a', + expectedValue: 'b%0D%0A%0D%0Ac', + description: 'Newline normalization - \\n\\r in filename' +}); + +testSerializedEntry({ + value: [['a\nb', 'c']], + expectedName: 'a%0Ab', + expectedValue: 'c', + description: 'Newline normalization - \\n in FormData name' +}); + +testSerializedEntry({ + value: [['a\rb', 'c']], + expectedName: 'a%0Db', + expectedValue: 'c', + description: 'Newline normalization - \\r in FormData name' +}); + +testSerializedEntry({ + value: [['a\r\nb', 'c']], + expectedName: 'a%0D%0Ab', + expectedValue: 'c', + description: 'Newline normalization - \\r\\n in FormData name' +}); + +testSerializedEntry({ + value: [['a\n\rb', 'c']], + expectedName: 'a%0A%0Db', + expectedValue: 'c', + description: 'Newline normalization - \\n\\r in FormData name' +}); + +testSerializedEntry({ + value: [['a', 'b\nc']], + expectedName: 'a', + expectedValue: 'b%0Ac', + description: 'Newline normalization - \\n in FormData value' +}); + +testSerializedEntry({ + value: [['a', 'b\rc']], + expectedName: 'a', + expectedValue: 'b%0Dc', + description: 'Newline normalization - \\r in FormData value' +}); + +testSerializedEntry({ + value: [['a', 'b\r\nc']], + expectedName: 'a', + expectedValue: 'b%0D%0Ac', + description: 'Newline normalization - \\r\\n in FormData value' +}); + +testSerializedEntry({ + value: [['a', 'b\n\rc']], + expectedName: 'a', + expectedValue: 'b%0A%0Dc', + description: 'Newline normalization - \\n\\r in FormData value' +}); -- 2.11.4.GIT