//! unsupported
// Note: uses various files in module/webpage as things to be uploaded.
// Which files they are doesn't matter.
var page;
setup(function () {
page = new WebPage();
page.content =
'\n' +
'\n' +
'' +
'';
page.uploadFile("#file", "file-upload.js");
page.uploadFile("#file2", "file-upload.js");
page.uploadFile("#file3", ["file-upload.js", "object.js"]);
});
function test_one_elt(id, names) {
var files = page.evaluate(function (id) {
var elt = document.getElementById(id);
var rv = [];
for (var i = 0; i < elt.files.length; i++) {
rv.push(elt.files[i].fileName);
}
return rv;
}, id);
assert_deep_equals(files, names);
}
generate_tests(test_one_elt, [
["single upload single file", "file", ["file-upload.js"]],
["multiple upload single file", "file2", ["file-upload.js"]],
["multiple upload multiple file", "file3", ["file-upload.js", "object.js"]],
], { expected_fail: true });
async_test(function () {
page.onFilePicker = this.step_func(function (oldFile) {
assert_equals(oldFile, "");
return "no-plugin.js";
});
test_one_elt("file4", []);
page.evaluate(function () {
var fileUp = document.querySelector("#file4");
var ev = document.createEvent("MouseEvents");
ev.initEvent("click", true, true);
fileUp.dispatchEvent(ev);
});
setTimeout(this.step_func_done(function () {
test_one_elt("file4", ["no-plugin.js"]);
}, 0));
}, "page.onFilePicker", { expected_fail: true });