11cb0ef41Sopenharmony_ci<!DOCTYPE html> 21cb0ef41Sopenharmony_ci<title>FileReader: starting new reads while one is in progress</title> 31cb0ef41Sopenharmony_ci<link rel="author" title="Yinkan Li" href="mailto:liyinkan.biz@gmail.com"> 41cb0ef41Sopenharmony_ci<link rel="help" href="http://dev.w3.org/2006/webapi/FileAPI/#MultipleReads"> 51cb0ef41Sopenharmony_ci<script src="/resources/testharness.js"></script> 61cb0ef41Sopenharmony_ci<script src="/resources/testharnessreport.js"></script> 71cb0ef41Sopenharmony_ci<div id="log"></div> 81cb0ef41Sopenharmony_ci<script> 91cb0ef41Sopenharmony_citest(function() { 101cb0ef41Sopenharmony_ci var blob_1 = new Blob(['TEST000000001']) 111cb0ef41Sopenharmony_ci var blob_2 = new Blob(['TEST000000002']) 121cb0ef41Sopenharmony_ci var reader = new FileReader(); 131cb0ef41Sopenharmony_ci reader.readAsText(blob_1) 141cb0ef41Sopenharmony_ci assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING") 151cb0ef41Sopenharmony_ci assert_throws_dom("InvalidStateError", function () { 161cb0ef41Sopenharmony_ci reader.readAsText(blob_2) 171cb0ef41Sopenharmony_ci }) 181cb0ef41Sopenharmony_ci}, 'test FileReader InvalidStateError exception for readAsText'); 191cb0ef41Sopenharmony_ci 201cb0ef41Sopenharmony_citest(function() { 211cb0ef41Sopenharmony_ci var blob_1 = new Blob(['TEST000000001']) 221cb0ef41Sopenharmony_ci var blob_2 = new Blob(['TEST000000002']) 231cb0ef41Sopenharmony_ci var reader = new FileReader(); 241cb0ef41Sopenharmony_ci reader.readAsDataURL(blob_1) 251cb0ef41Sopenharmony_ci assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING") 261cb0ef41Sopenharmony_ci assert_throws_dom("InvalidStateError", function () { 271cb0ef41Sopenharmony_ci reader.readAsDataURL(blob_2) 281cb0ef41Sopenharmony_ci }) 291cb0ef41Sopenharmony_ci}, 'test FileReader InvalidStateError exception for readAsDataURL'); 301cb0ef41Sopenharmony_ci 311cb0ef41Sopenharmony_citest(function() { 321cb0ef41Sopenharmony_ci var blob_1 = new Blob(['TEST000000001']) 331cb0ef41Sopenharmony_ci var blob_2 = new Blob(['TEST000000002']) 341cb0ef41Sopenharmony_ci var reader = new FileReader(); 351cb0ef41Sopenharmony_ci reader.readAsArrayBuffer(blob_1) 361cb0ef41Sopenharmony_ci assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING") 371cb0ef41Sopenharmony_ci assert_throws_dom("InvalidStateError", function () { 381cb0ef41Sopenharmony_ci reader.readAsArrayBuffer(blob_2) 391cb0ef41Sopenharmony_ci }) 401cb0ef41Sopenharmony_ci}, 'test FileReader InvalidStateError exception for readAsArrayBuffer'); 411cb0ef41Sopenharmony_ci 421cb0ef41Sopenharmony_ciasync_test(function() { 431cb0ef41Sopenharmony_ci var blob_1 = new Blob(['TEST000000001']) 441cb0ef41Sopenharmony_ci var blob_2 = new Blob(['TEST000000002']) 451cb0ef41Sopenharmony_ci var reader = new FileReader(); 461cb0ef41Sopenharmony_ci var triggered = false; 471cb0ef41Sopenharmony_ci reader.onloadstart = this.step_func_done(function() { 481cb0ef41Sopenharmony_ci assert_false(triggered, "Only one loadstart event should be dispatched"); 491cb0ef41Sopenharmony_ci triggered = true; 501cb0ef41Sopenharmony_ci assert_equals(reader.readyState, FileReader.LOADING, 511cb0ef41Sopenharmony_ci "readyState must be LOADING") 521cb0ef41Sopenharmony_ci assert_throws_dom("InvalidStateError", function () { 531cb0ef41Sopenharmony_ci reader.readAsArrayBuffer(blob_2) 541cb0ef41Sopenharmony_ci }) 551cb0ef41Sopenharmony_ci }); 561cb0ef41Sopenharmony_ci reader.readAsArrayBuffer(blob_1) 571cb0ef41Sopenharmony_ci assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING") 581cb0ef41Sopenharmony_ci}, 'test FileReader InvalidStateError exception in onloadstart event for readAsArrayBuffer'); 591cb0ef41Sopenharmony_ci 601cb0ef41Sopenharmony_ciasync_test(function() { 611cb0ef41Sopenharmony_ci var blob_1 = new Blob(['TEST000000001']) 621cb0ef41Sopenharmony_ci var blob_2 = new Blob(['TEST000000002']) 631cb0ef41Sopenharmony_ci var reader = new FileReader(); 641cb0ef41Sopenharmony_ci reader.onloadend = this.step_func_done(function() { 651cb0ef41Sopenharmony_ci assert_equals(reader.readyState, FileReader.DONE, 661cb0ef41Sopenharmony_ci "readyState must be DONE") 671cb0ef41Sopenharmony_ci reader.readAsArrayBuffer(blob_2) 681cb0ef41Sopenharmony_ci assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING") 691cb0ef41Sopenharmony_ci }); 701cb0ef41Sopenharmony_ci reader.readAsArrayBuffer(blob_1) 711cb0ef41Sopenharmony_ci assert_equals(reader.readyState, FileReader.LOADING, "readyState Must be LOADING") 721cb0ef41Sopenharmony_ci}, 'test FileReader no InvalidStateError exception in loadend event handler for readAsArrayBuffer'); 731cb0ef41Sopenharmony_ci 741cb0ef41Sopenharmony_ciasync_test(function() { 751cb0ef41Sopenharmony_ci var blob_1 = new Blob([new Uint8Array(0x414141)]); 761cb0ef41Sopenharmony_ci var blob_2 = new Blob(['TEST000000002']); 771cb0ef41Sopenharmony_ci var reader = new FileReader(); 781cb0ef41Sopenharmony_ci reader.onloadstart = this.step_func(function() { 791cb0ef41Sopenharmony_ci reader.abort(); 801cb0ef41Sopenharmony_ci reader.onloadstart = null; 811cb0ef41Sopenharmony_ci reader.onloadend = this.step_func_done(function() { 821cb0ef41Sopenharmony_ci assert_equals('TEST000000002', reader.result); 831cb0ef41Sopenharmony_ci }); 841cb0ef41Sopenharmony_ci reader.readAsText(blob_2); 851cb0ef41Sopenharmony_ci }); 861cb0ef41Sopenharmony_ci reader.readAsText(blob_1); 871cb0ef41Sopenharmony_ci}, 'test abort and restart in onloadstart event for readAsText'); 881cb0ef41Sopenharmony_ci 891cb0ef41Sopenharmony_ci</script> 90