Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!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">
<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>