<!DOCTYPE html>
<title>drag &amp; drop - simple file drop with dropzone attribute</title>
<style>
  body > div {
    height: 200px;
    width: 200px;
    background-color: orange;
  }
</style>

<script>
var filename = 'fail.png', filesize = '759', filetype = 'image/png';
var fails = [], finished = false;
window.onload = function() {
  var orange = document.getElementsByTagName('div')[0];
    orange.ondragenter = function(e) {
    e.dataTransfer.dropEffect = 'copy';
  };
/*  orange.ondragover = function(e) {
   	e.preventDefault();
  };
*/
	orange.ondrop = function(e) {
   	e.preventDefault();
		if( !e.dataTransfer.files ) {
			fails[fails.length] = 'No dataTransfer.files for '+e.type;
		}
		if( !window.FileList ) {
			fails[fails.length] = 'No FileList interface object';
			finish();
			return;
		}
		if( !( e.dataTransfer.files instanceof FileList ) ) {
			fails[fails.length] = 'dataTransfer.files is not a FileList';
		}
		if( e.dataTransfer.files.length != 1 ) {
			fails[fails.length] = 'dataTransfer.files.length is '+e.dataTransfer.files.length+' instead of 1 for '+e.type;
		}
		if( !e.dataTransfer.files[0] ) {
			fails[fails.length] = 'no dataTransfer.files[0] for drop';
			finish();
			return;
		}
		if( e.dataTransfer.files[0].size != filesize ) {
			fails[fails.length] = 'dataTransfer.files[0].size '+e.dataTransfer.files[0].size+' instead of '+filesize;
		}
		/*
		if( !e.dataTransfer.files[0].lastModifiedDate ) {
			fails[fails.length] = 'no dataTransfer.files[0].lastModifiedDate';
		}
		*/
		if( e.dataTransfer.files[0].name != filename ) {
			fails[fails.length] = 'dataTransfer.files[0].name '+e.dataTransfer.files[0].name+' instead of '+filename;
		}
		if( e.dataTransfer.files[0].type != filetype ) {
			fails[fails.length] = 'dataTransfer.files[0].type '+e.dataTransfer.files[0].type+' instead of '+filetype;
		}
		if( !window.FileReader ) {
			fails[fails.length] = 'No FileReader constructor';
			finish();
			return;
		}
		var reader = new FileReader();
		reader.onload = function () {
			if( !reader.result ) {
				fails[fails.length] = 'No file data after load';
			}
			if( reader.result.length != filesize ) {
				fails[fails.length] = 'File data length '+reader.result.length+' instead of '+filesize;
			}
			finish();
		};
		reader.readAsBinaryString(e.dataTransfer.files[0]);
		setTimeout(function () {
			if( !reader.result ) {
				fails[fails.length] = 'No file data after timeout';
			}
			finish();
		},1000);
  };

};
function finish() {
	if( finished ) { return; }
	finished = true;
	document.getElementsByTagName('p')[0].innerHTML = fails.length ? ( 'FAIL: ' + fails.join('<br>') ) : 'PASS';
}
</script>

<div dropzone="copy file:image/png"></div>

<p>Save <a href="../resources/fail.png">this image</a> to your desktop. Use your pointing device to drag the saved file from your desktop onto the orange box, and release it. If a confirmation dialog appears, accept it. Fail if nothing happens, or if the browser simply displays the image.</p>
<noscript><p>Enable JavaScript and reload</p></noscript>
