FileReader-multiple-reads.any.js (3229B)
1 // META: title=FileReader: starting new reads while one is in progress 2 3 test(function() { 4 var blob_1 = new Blob(['TEST000000001']) 5 var blob_2 = new Blob(['TEST000000002']) 6 var reader = new FileReader(); 7 reader.readAsText(blob_1) 8 assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING") 9 assert_throws_dom("InvalidStateError", function () { 10 reader.readAsText(blob_2) 11 }) 12 }, 'test FileReader InvalidStateError exception for readAsText'); 13 14 test(function() { 15 var blob_1 = new Blob(['TEST000000001']) 16 var blob_2 = new Blob(['TEST000000002']) 17 var reader = new FileReader(); 18 reader.readAsDataURL(blob_1) 19 assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING") 20 assert_throws_dom("InvalidStateError", function () { 21 reader.readAsDataURL(blob_2) 22 }) 23 }, 'test FileReader InvalidStateError exception for readAsDataURL'); 24 25 test(function() { 26 var blob_1 = new Blob(['TEST000000001']) 27 var blob_2 = new Blob(['TEST000000002']) 28 var reader = new FileReader(); 29 reader.readAsArrayBuffer(blob_1) 30 assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING") 31 assert_throws_dom("InvalidStateError", function () { 32 reader.readAsArrayBuffer(blob_2) 33 }) 34 }, 'test FileReader InvalidStateError exception for readAsArrayBuffer'); 35 36 async_test(function() { 37 var blob_1 = new Blob(['TEST000000001']) 38 var blob_2 = new Blob(['TEST000000002']) 39 var reader = new FileReader(); 40 var triggered = false; 41 reader.onloadstart = this.step_func_done(function() { 42 assert_false(triggered, "Only one loadstart event should be dispatched"); 43 triggered = true; 44 assert_equals(reader.readyState, FileReader.LOADING, 45 "readyState must be LOADING") 46 assert_throws_dom("InvalidStateError", function () { 47 reader.readAsArrayBuffer(blob_2) 48 }) 49 }); 50 reader.readAsArrayBuffer(blob_1) 51 assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING") 52 }, 'test FileReader InvalidStateError exception in onloadstart event for readAsArrayBuffer'); 53 54 async_test(function() { 55 var blob_1 = new Blob(['TEST000000001']) 56 var blob_2 = new Blob(['TEST000000002']) 57 var reader = new FileReader(); 58 reader.onloadend = this.step_func_done(function() { 59 assert_equals(reader.readyState, FileReader.DONE, 60 "readyState must be DONE") 61 reader.readAsArrayBuffer(blob_2) 62 assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING") 63 }); 64 reader.readAsArrayBuffer(blob_1) 65 assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING") 66 }, 'test FileReader no InvalidStateError exception in loadend event handler for readAsArrayBuffer'); 67 68 async_test(function() { 69 var blob_1 = new Blob([new Uint8Array(0x414141)]); 70 var blob_2 = new Blob(['TEST000000002']); 71 var reader = new FileReader(); 72 reader.onloadstart = this.step_func(function() { 73 reader.abort(); 74 reader.onloadstart = null; 75 reader.onloadend = this.step_func_done(function() { 76 assert_equals('TEST000000002', reader.result); 77 }); 78 reader.readAsText(blob_2); 79 }); 80 reader.readAsText(blob_1); 81 }, 'test abort and restart in onloadstart event for readAsText');