summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/forms/form-submission-0/form-data-set-usv.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/semantics/forms/form-submission-0/form-data-set-usv.html')
-rw-r--r--testing/web-platform/tests/html/semantics/forms/form-submission-0/form-data-set-usv.html52
1 files changed, 52 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/forms/form-submission-0/form-data-set-usv.html b/testing/web-platform/tests/html/semantics/forms/form-submission-0/form-data-set-usv.html
new file mode 100644
index 0000000000..4ac26092ee
--- /dev/null
+++ b/testing/web-platform/tests/html/semantics/forms/form-submission-0/form-data-set-usv.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Submitting a form data set that contains unpaired surrogates must convert to Unicode scalar values</title>
+<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">
+<link rel="help" href="https://html.spec.whatwg.org/multipage/forms.html#constructing-form-data-set">
+<link rel="help" href="https://github.com/whatwg/html/issues/1490">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<iframe id="testframe" src="form-data-set-usv-form.html"></iframe>
+<iframe id="testframe2" src="form-data-set-usv-form.html"></iframe>
+
+<script>
+"use strict";
+
+async_test(t => {
+ window.addEventListener("load", t.step_func(() => {
+ const iframe = document.querySelector("#testframe");
+ const form = iframe.contentWindow.document.querySelector("form");
+
+ iframe.onload = t.step_func_done(() => {
+ const result = iframe.contentWindow.document.body.textContent;
+
+ assert_equals(result,
+ "69 6e 70 75 74 31 ef bf bd 3d 69 6e 70 75 74 31 ef bf bd " + // input1\uFFFD=input1\uFFFD
+ "0d 0a " + // \r\n
+ "69 6e 70 75 74 32 ef bf bd 3d 69 6e 70 75 74 32 ef bf bd " + // input2\uFFFD=input2\uFFFD
+ "0d 0a " + // \r\n
+ "69 6e 70 75 74 33 ef bf bd 3d 69 6e 70 75 74 33 ef bf bd " + // input3\uFFFD=input3\uFFFD
+ "0d 0a " + // \r\n
+ "69 6e 70 75 74 34 ef bf bd 3d 69 6e 70 75 74 34 ef bf bd " + // input4\uFFFD=input4\uFFFD
+ "0d 0a" // \r\n
+ );
+
+ // ef bf bd is the UTF-8 encoding of U+FFFD
+ });
+
+ form.submit();
+ }));
+}, 'Strings from form controls should be converted to Unicode scalar values in form submission');
+
+async_test(t => {
+ window.addEventListener("load", t.step_func_done(() => {
+ const iframe = document.querySelector("#testframe2");
+ const formData = new FormData(iframe.contentWindow.document.querySelector("form"));
+ assert_equals(formData.get("input1\uFFFD"), "input1\uFFFD");
+ assert_equals(formData.get("input2\uFFFD"), "input2\uFFFD");
+ assert_equals(formData.get("input3\uFFFD"), "input3\uFFFD");
+ assert_equals(formData.get("input4\uFFFD"), "input4\uFFFD");
+ }));
+}, 'Strings from form controls should be converted to Unicode scalar values in FormData');
+</script>