<html>
<body>
<script>

function runTest() {
    if (!window.testRunner)
        return;

    window.testRunner.dumpAsText();

    eventSender.beginDragWithFiles(['resources/file-for-drop-with-file-paths.html']);
    eventSender.mouseMoveTo(10, 10);
    eventSender.mouseUp();
}

document.body.addEventListener('dragenter',
    function (e) {
      e.preventDefault();
    });
document.body.addEventListener('dragover',
    function (e) {
      e.preventDefault();
    });
document.body.addEventListener('drop',
    function (e) {
      data = e.dataTransfer.getData('text/uri-list');
      if (data) {
        document.body.innerHTML += '<p>Dropped file: ' + data + '</p>';
        document.body.innerHTML += 'Dropped types: ' + e.dataTransfer.types;
      } else
        document.body.innerHTML = 'PASS';
      e.preventDefault();
    });

window.onload = runTest;
</script>
<p>Drop files anywhere on this page. The page will try to intercept the drop--it should succeed but not be able to use dataTransfer.getData</p>
</body>
</html>
