Chromium Code Reviews| Index: chrome/test/data/extensions/api_test/file_system_provider/read_file/test.js |
| diff --git a/chrome/test/data/extensions/api_test/file_system_provider/read_file/test.js b/chrome/test/data/extensions/api_test/file_system_provider/read_file/test.js |
| index 4164b7b76d6451f7af2320f80f5558ea5f1e7571..90b9b482d4aed56cc2965a2040b7f1ad2979afbf 100644 |
| --- a/chrome/test/data/extensions/api_test/file_system_provider/read_file/test.js |
| +++ b/chrome/test/data/extensions/api_test/file_system_provider/read_file/test.js |
| @@ -43,6 +43,19 @@ var TESTING_BROKEN_TIRAMISU_FILE = Object.freeze({ |
| }); |
| /** |
| + * Metadata of a broken file used to read contents from, but it simulates |
| + * a very long read, in order to verify the aborting mechanism. |
| + * @type {Object} |
| + * @const |
| + */ |
| +var TESTING_VANILLA_FOR_ABORT_FILE = Object.freeze({ |
| + isDirectory: false, |
| + name: 'vanilla.txt', |
| + size: TESTING_TEXT.length, |
| + modificationTime: new Date(2014, 1, 25, 7, 36, 12) |
| +}); |
| + |
| +/** |
| * Requests reading contents of a file, previously opened with <code> |
| * openRequestId</code>. |
| * |
| @@ -77,6 +90,11 @@ function onReadFileRequested(options, onSuccess, onError) { |
| return; |
| } |
| + if (filePath == '/' + TESTING_VANILLA_FOR_ABORT_FILE.name) { |
| + // Do nothing. This simulates a very slow read. |
| + return; |
| + } |
| + |
| if (filePath == '/' + TESTING_BROKEN_TIRAMISU_FILE.name) { |
| onError('ACCESS_DENIED'); // enum ProviderError. |
| return; |
| @@ -103,6 +121,8 @@ function setUp(callback) { |
| TESTING_TIRAMISU_FILE; |
| test_util.defaultMetadata['/' + TESTING_BROKEN_TIRAMISU_FILE.name] = |
| TESTING_BROKEN_TIRAMISU_FILE; |
| + test_util.defaultMetadata['/' + TESTING_VANILLA_FOR_ABORT_FILE.name] = |
| + TESTING_VANILLA_FOR_ABORT_FILE; |
| chrome.fileSystemProvider.onReadFileRequested.addListener( |
| onReadFileRequested); |
| @@ -143,7 +163,8 @@ function runTests() { |
| chrome.test.fail(error.name); |
| }); |
| }, |
| - // Read contents of a file file, but with an error on the way. This should |
| + |
| + // Read contents of a file, but with an error on the way. This should |
| // result in an error. |
| function readEntriesError() { |
| var onTestSuccess = chrome.test.callbackPass(); |
| @@ -163,12 +184,61 @@ function runTests() { |
| fileReader.readAsText(file); |
| }, |
| function(error) { |
| - chrome.test.fail(); |
| + chrome.test.fail(error.name); |
| }); |
| }, |
| function(error) { |
| chrome.test.fail(error.name); |
| }); |
| + }, |
| + |
| + // Abort reading a file with a registered abort handler. Should result in a |
| + // gracefully terminated reading operation. |
| + function abortReadingSuccess() { |
| + var onTestSuccess = chrome.test.callbackPass(); |
| + |
| + var onAbortRequested = function(options, onSuccess, onError) { |
| + chrome.fileSystemProvider.onAbortRequested.removeListener( |
| + onAbortRequested); |
| + onSuccess(); |
| + onTestSuccess(); |
| + }; |
| + |
| + chrome.fileSystemProvider.onAbortRequested.addListener( |
| + onAbortRequested); |
| + |
| + test_util.fileSystem.root.getFile( |
| + TESTING_VANILLA_FOR_ABORT_FILE.name, |
| + {create: false, exclusive: false}, |
| + function(fileEntry) { |
| + fileEntry.file(function(file) { |
| + var hadAbort = false; |
| + var fileReader = new FileReader(); |
| + fileReader.onload = function(e) { |
| + if (!hadAbort) { |
| + chrome.test.fail( |
| + 'Unexpectedly finished writing, despite aborting.'); |
| + return; |
| + } |
| + chrome.test.fail(); |
| + }; |
| + fileReader.onerror = function(e) { |
| + chrome.test.assertEq( |
| + 'AbortError', fileReader.error.name); |
| + }; |
| + fileReader.readAsText(file); |
| + setTimeout(function() { |
| + // Abort the operation after it's started. |
| + fileReader.abort(); |
| + }, 0); |
|
hirono
2014/08/25 03:33:15
nit: fix this indent.
mtomasz
2014/08/25 03:58:17
Done.
|
| + }, |
| + function(error) { |
| + chrome.test.fail(error.name); |
| + }); |
| + }, |
| + function(error) { |
| + chrome.test.fail(error.name); |
| + }); |
| } |
| ]); |
| } |