diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/forms/the-input-element/files.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/forms/the-input-element/files.html | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/forms/the-input-element/files.html b/testing/web-platform/tests/html/semantics/forms/the-input-element/files.html new file mode 100644 index 0000000000..43ebd71906 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/the-input-element/files.html @@ -0,0 +1,83 @@ +<!doctype html> +<meta charset=utf-8> +<title>HTMLInputElement#files</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id=log></div> +<script> +var types = [ + "hidden", + "text", + "search", + "tel", + "url", + "email", + "password", + "date", + "month", + "week", + "time", + "datetime-local", + "number", + "range", + "color", + "checkbox", + "radio", + "submit", + "image", + "reset", + "button", +]; + +types.forEach(function(type) { + test(function() { + const input = document.createElement("input"), + input2 = document.createElement("input"); + input.type = type; + input2.type = "file"; + assert_equals(input.files, null, "files should be null"); + + input.files = input2.files; + assert_equals(input.files, null, "files should remain null as it cannot be set when it does not apply"); + }, "files for input type=" + type); +}); + +test(function() { + var input = document.createElement("input"); + input.type = "file"; + assert_not_equals(input.files, null); + assert_true(input.files instanceof FileList, "files should be a FileList"); + var files = input.files; + assert_equals(input.files, files, "files should return the same object"); +}, "files for input type=file"); + +test(() => { + const i1 = document.createElement("input"), + i2 = document.createElement("input"); + i1.type = "file"; + i2.type = "file"; + + const files = i2.files; + i1.files = i2.files; + assert_equals(i1.files, files, "FileList should not be copied"); + assert_equals(i2.files, files, "FileList can be shared across input elements"); + + i1.files = null; + assert_equals(i1.files, files, "files cannot be set to null"); + + assert_throws_js(TypeError, () => i1.files = [], "files cannot be set to an array"); + assert_throws_js(TypeError, () => i1.files = [new File([], "x")], "files cannot be set to an array (even when it contains File objects)"); +}, "setting <input type=file>.files"); + +test(() => { + const i = document.createElement("input"); + i.type = "file"; + + let dt = new DataTransfer(); + + const files = dt.files; + i.files = files; + assert_equals(i.files, files, "FileList should not be copied"); + assert_equals(dt.files, files, "FileList can be shared across input / DataTransfer"); +}, "setting <input type=file>.files from DataTransfer"); +</script> |