| Index: chrome/test/data/extensions/api_test/file_system_provider/write_file/test.js
|
| diff --git a/chrome/test/data/extensions/api_test/file_system_provider/write_file/test.js b/chrome/test/data/extensions/api_test/file_system_provider/write_file/test.js
|
| index b57b292fa9da3bf410c137a55b8d4afa43eaa084..07540019198747912422e64286a6dd193dbe5c82 100644
|
| --- a/chrome/test/data/extensions/api_test/file_system_provider/write_file/test.js
|
| +++ b/chrome/test/data/extensions/api_test/file_system_provider/write_file/test.js
|
| @@ -15,20 +15,20 @@ var fileContents = {};
|
| * @type {string}
|
| * @const
|
| */
|
| -var TESTING_INITIAL_TEXT = "Hello world. How are you today?";
|
| +var TESTING_INITIAL_TEXT = 'Hello world. How are you today?';
|
|
|
| /**
|
| * Initial contents of testing files.
|
| * @type {string}
|
| - ";
|
| + * @const
|
| */
|
| -var TESTING_TEXT_TO_WRITE = "Vanilla ice creams are the best.";
|
| +var TESTING_TEXT_TO_WRITE = 'Vanilla ice creams are the best.';
|
|
|
| /**
|
| * @type {string}
|
| * @const
|
| */
|
| -var TESTING_NEW_FILE_NAME = "perfume.txt"
|
| +var TESTING_NEW_FILE_NAME = 'perfume.txt';
|
|
|
| /**
|
| * @type {string}
|
| @@ -43,6 +43,12 @@ var TESTING_TIRAMISU_FILE_NAME = 'tiramisu.txt';
|
| var TESTING_BROKEN_TIRAMISU_FILE_NAME = 'broken-tiramisu.txt';
|
|
|
| /**
|
| + * @type {string}
|
| + * @const
|
| + */
|
| +var TESTING_CHOCOLATE_FILE_NAME = 'chocolate.txt';
|
| +
|
| +/**
|
| * Requests writing contents to a file, previously opened with <code>
|
| * openRequestId</code>.
|
| *
|
| @@ -69,6 +75,11 @@ function onWriteFileRequested(options, onSuccess, onError) {
|
| return;
|
| }
|
|
|
| + if (filePath == '/' + TESTING_CHOCOLATE_FILE_NAME) {
|
| + // Do not call any callback to simulate a very slow network connection.
|
| + return;
|
| + }
|
| +
|
| // Writing beyond the end of the file.
|
| if (options.offset > metadata.size) {
|
| onError('INVALID_OPERATION');
|
| @@ -84,7 +95,7 @@ function onWriteFileRequested(options, onSuccess, onError) {
|
| metadata.size = newContents.length;
|
| fileContents[filePath] = newContents;
|
| onSuccess();
|
| - }
|
| + };
|
|
|
| reader.readAsText(new Blob([options.data]));
|
| }
|
| @@ -119,8 +130,16 @@ function setUp(callback) {
|
| modificationTime: new Date(2014, 1, 25, 7, 36, 12)
|
| };
|
|
|
| + test_util.defaultMetadata['/' + TESTING_CHOCOLATE_FILE_NAME] = {
|
| + isDirectory: false,
|
| + name: TESTING_CHOCOLATE_FILE_NAME,
|
| + size: TESTING_INITIAL_TEXT.length,
|
| + modificationTime: new Date(2014, 1, 26, 8, 37, 13)
|
| + };
|
| +
|
| fileContents['/' + TESTING_TIRAMISU_FILE_NAME] = TESTING_INITIAL_TEXT;
|
| fileContents['/' + TESTING_BROKEN_TIRAMISU_FILE_NAME] = TESTING_INITIAL_TEXT;
|
| + fileContents['/' + TESTING_CHOCOLATE_FILE_NAME] = TESTING_INITIAL_TEXT;
|
|
|
| chrome.fileSystemProvider.onWriteFileRequested.addListener(
|
| onWriteFileRequested);
|
| @@ -294,6 +313,57 @@ function runTests() {
|
| function(error) {
|
| chrome.test.fail(error.name);
|
| });
|
| + },
|
| +
|
| + // Abort writing to a valid file with a registered abort handler. Should
|
| + // resurt in a gracefully terminated writing operation.
|
| + function abortWritingSuccess() {
|
| + 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_CHOCOLATE_FILE_NAME,
|
| + {create: false, exclusive: false},
|
| + function(fileEntry) {
|
| + var hadAbort = false;
|
| + fileEntry.createWriter(function(fileWriter) {
|
| + fileWriter.onwriteend = function(e) {
|
| + if (!hadAbort) {
|
| + chrome.test.fail(
|
| + 'Unexpectedly finished writing, despite aborting.');
|
| + return;
|
| + }
|
| + };
|
| + fileWriter.onerror = function(e) {
|
| + chrome.test.assertEq(
|
| + 'AbortError', fileWriter.error.name);
|
| + };
|
| + fileWriter.onabort = function(e) {
|
| + hadAbort = true;
|
| + };
|
| + var blob = new Blob(['A lot of cherries.'], {type: 'text/plain'});
|
| + fileWriter.write(blob);
|
| + setTimeout(function() {
|
| + // Abort the operation after it's started.
|
| + fileWriter.abort();
|
| + }, 0);
|
| + },
|
| + function(error) {
|
| + chrome.test.fail();
|
| + });
|
| + },
|
| + function(error) {
|
| + chrome.test.fail(error.name);
|
| + });
|
| }
|
| ]);
|
| }
|
|
|