chromium/third_party/blink/web_tests/fast/forms/file/selected-files-from-history-state.html

<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
<script>
window.jsTestIsAsync = true;
function onLoad() {
    setTimeout(runTest, 0);
}

function runTest() {
    if (!window.internals) {
        testFailed('This test requires window.internals.');
        return;
    }

    var onChangeFired = 0;
    var input1 = document.getElementById('fileinput1');
    input1.onchange = function() {
        ++onChangeFired;
    };
    var input2 = document.getElementById('fileinput2');
    input2.onchange = function() {
        ++onChangeFired;
    };

    eventSender.beginDragWithFiles(['testpath1/testfile1.txt']);
    var centerX = input1.offsetLeft + input1.offsetWidth / 2;
    var centerY = input1.offsetTop + input1.offsetHeight / 2;
    eventSender.mouseMoveTo(centerX, centerY);
    eventSender.mouseUp();

    eventSender.beginDragWithFiles(['testpath2/testfile2.txt']);
    centerX = input2.offsetLeft + input2.offsetWidth / 2;
    centerY = input2.offsetTop + input2.offsetHeight / 2;
    eventSender.mouseMoveTo(centerX, centerY);
    eventSender.mouseUp();

    if (onChangeFired != 2) {
        testFailed('onchange fired unexpected times: ' + onChangeFired);
    }

    var files = internals.getReferencedFilePaths();
    files.sort();
    if (files.length == 2 &&
        files[0].indexOf('testfile1.txt') != -1 &&
        files[0].indexOf('testpath1') != -1 &&
        files[1].indexOf('testfile2.txt') != -1 &&
        files[1].indexOf('testpath2') != -1) {
        testPassed('');
    } else {
        testFailed('Unexpected files: ' + files);
    }
    finishJSTest();
}
</script>
</head>
<body onload="onLoad();">
<p id="description">Tests that selected files in file input elements are correctly retrieved by FormController::getReferencedFilePaths.</p>
<div id="container">
<form id="form1">
<input id="fileinput1" type="file" />
</form>
<form id="form2">
<input id="fileinput2" type="file" />
</form>
</div>
<div id="console"></div>
</body>
</html>