<!DOCTYPE html>
<html>
<head>
<script>
if (window.testRunner) {
  testRunner.dumpAsText();
  testRunner.setShouldLogDownloadCallbacks(true);
  testRunner.waitUntilDownloadFinished();
}
</script>
</head>
<body>
<p>The suggested filename above should be 'test"abe.png' and the download should succeed.</p>
<a id="blob-url" download='test"abe.png'>File backed blob URL</a>
<script>
function click(elmt)
{
    if (!window.eventSender) {
        alert('Click the link to run the test.');
        return;
    }
    eventSender.mouseMoveTo(elmt.offsetLeft + 5, elmt.offsetTop + 5);
    eventSender.mouseDown();
    eventSender.mouseUp();
}

function runTest()
{
    file = internals.createFile("../resources/abe.png");
    var link = document.getElementById("blob-url");
    link.href = window.URL.createObjectURL(file);
    click(link);
}
runTest();
</script>
</body>
</html>
