blob: 0d5e54cc9e0547016da677f2602335898f33e6b4 [file]
<!DOCTYPE html>
<html>
<body>
<div id="droptarget">Test drops files here</div>
<form>
<input type="file" name="files" id="files">
</form>
<pre id='output'></pre>
<script>
function log(message)
{
document.getElementById('output').appendChild(document.createTextNode(message + "\n"));
}
function onInputFileChange()
{
var files = document.getElementById("files").files;
if (files.length != 1)
log("FAIL: Expected 1 file after drag.")
else
log("PASS: 1 file after drag");
doStringTest();
if (window.testRunner)
testRunner.notifyDone();
}
function handleDragOver(e) {
e.stopPropagation();
e.preventDefault();
}
function handleDrop(e) {
e.stopPropagation();
e.preventDefault();
document.getElementById("files").files = e.dataTransfer.files;
}
var droptarget = document.getElementById('droptarget');
droptarget.addEventListener('dragover', handleDragOver, false);
droptarget.addEventListener('drop', handleDrop, false);
function doTest(fileList)
{
// This drops files on a div, which copies them to the input element, whose
// callback calls notifyDone().
document.getElementById("files").onchange = onInputFileChange;
var fi = document.getElementById("files");
eventSender.beginDragWithFiles(['../resources/test.txt']);
eventSender.mouseMoveTo(droptarget.offsetLeft + 10, droptarget.offsetTop + droptarget.offsetHeight / 2);
eventSender.mouseUp();
}
function doStringTest()
{
var files = document.getElementById("files");
files.files = "foo"; // Shouldn't crash.
files.value = "foo"; // Should do nothing.
if (files.files.length > 0)
log("PASS: writing nonempty string to value had no effect");
else
log("FAIL: writing nonempty string to value cleared elements");
files.value = "";
if (files.files.length === 0)
log("PASS: writing empty string to value cleared files");
else
log("FAIL: writing empty string to value did not clear files");
}
if (window.testRunner) {
testRunner.dumpAsText();
testRunner.waitUntilDone();
}
if (window.eventSender) {
doTest();
}
</script>
</body>
</html>