| Index: chrome/test/data/extensions/api_test/file_system_provider/unmount/test.js
|
| diff --git a/chrome/test/data/extensions/api_test/file_system_provider/unmount/test.js b/chrome/test/data/extensions/api_test/file_system_provider/unmount/test.js
|
| index e70717889f6ad9b1bc0fe8ad01468c2419e78a07..54f63290e06d32f0fd8e9deb9f649907cd56e002 100644
|
| --- a/chrome/test/data/extensions/api_test/file_system_provider/unmount/test.js
|
| +++ b/chrome/test/data/extensions/api_test/file_system_provider/unmount/test.js
|
| @@ -4,8 +4,37 @@
|
|
|
| 'use strict';
|
|
|
| -var firstFileSystemId;
|
| -var secondFileSystemId;
|
| +/**
|
| + * @type {string}
|
| + * @const
|
| + */
|
| +var FIRST_FILE_SYSTEM_ID = 'vanilla';
|
| +
|
| +/**
|
| + * @type {string}
|
| + * @const
|
| + */
|
| +var SECOND_FILE_SYSTEM_ID = 'ice-cream';
|
| +
|
| +/**
|
| + * Gets volume information for the provided file system.
|
| + *
|
| + * @param {string} fileSystemId Id of the provided file system.
|
| + * @param {function(Object)} callback Callback to be called on result, with the
|
| + * volume information object in case of success, or null if not found.
|
| + */
|
| +function getVolumeInfo(fileSystemId, callback) {
|
| + chrome.fileBrowserPrivate.getVolumeMetadataList(function(volumeList) {
|
| + for (var i = 0; i < volumeList.length; i++) {
|
| + if (volumeList[i].extensionId == chrome.runtime.id &&
|
| + volumeList[i].fileSystemId == fileSystemId) {
|
| + callback(volumeList[i]);
|
| + return;
|
| + }
|
| + }
|
| + callback(null);
|
| + });
|
| +}
|
|
|
| /**
|
| * Sets up the tests. Called once per all test cases. In case of a failure,
|
| @@ -14,20 +43,23 @@ var secondFileSystemId;
|
| * @param {function()} callback Success callback.
|
| */
|
| function setUp(callback) {
|
| - chrome.fileSystemProvider.mount('chocolate.zip', function(id) {
|
| - firstFileSystemId = id;
|
| - if (firstFileSystemId && secondFileSystemId)
|
| - callback();
|
| - }, function() {
|
| - chrome.test.fail();
|
| - });
|
| -
|
| - chrome.fileSystemProvider.mount('banana.zip', function(id) {
|
| - secondFileSystemId = id;
|
| - if (firstFileSystemId && secondFileSystemId)
|
| - callback();
|
| - }, function() {
|
| - chrome.test.fail();
|
| + Promise.race([
|
| + new Promise(function(fulfill, reject) {
|
| + chrome.fileSystemProvider.mount(
|
| + FIRST_FILE_SYSTEM_ID,
|
| + 'vanilla.zip',
|
| + function() { fulfill(); },
|
| + function(error) { reject(error); });
|
| + }),
|
| + new Promise(function(fulfill, reject) {
|
| + chrome.fileSystemProvider.mount(
|
| + SECOND_FILE_SYSTEM_ID,
|
| + 'ice-cream.zip',
|
| + function() { fulfill(); },
|
| + function(error) { reject(error); });
|
| + })
|
| + ]).then(callback).catch(function(error) {
|
| + chrome.test.fail(error.name);
|
| });
|
| }
|
|
|
| @@ -39,14 +71,15 @@ function runTests() {
|
| // Tests the fileSystemProvider.unmount(). Verifies if the unmount event
|
| // is emitted by VolumeManager.
|
| function unmount() {
|
| - var onTestSuccess = chrome.test.callbackPass(function() {});
|
| - var firstVolumeId =
|
| - 'provided:' + chrome.runtime.id + '-' + firstFileSystemId + '-user';
|
| + var onTestSuccess = chrome.test.callbackPass();
|
|
|
| var onMountCompleted = function(event) {
|
| chrome.test.assertEq('unmount', event.eventType);
|
| chrome.test.assertEq('success', event.status);
|
| - chrome.test.assertEq(firstVolumeId, event.volumeMetadata.volumeId);
|
| + chrome.test.assertEq(
|
| + chrome.runtime.id, event.volumeMetadata.extensionId);
|
| + chrome.test.assertEq(
|
| + FIRST_FILE_SYSTEM_ID, event.volumeMetadata.fileSystemId);
|
| chrome.fileBrowserPrivate.onMountCompleted.removeListener(
|
| onMountCompleted);
|
| onTestSuccess();
|
| @@ -54,18 +87,18 @@ function runTests() {
|
|
|
| chrome.fileBrowserPrivate.onMountCompleted.addListener(
|
| onMountCompleted);
|
| - chrome.fileSystemProvider.unmount(firstFileSystemId, function() {
|
| + chrome.fileSystemProvider.unmount(FIRST_FILE_SYSTEM_ID, function() {
|
| // Wait for the unmount event.
|
| }, function(error) {
|
| - chrome.test.fail();
|
| + chrome.test.fail(error.name);
|
| });
|
| },
|
|
|
| // Tests the fileSystemProvider.unmount() with a wrong id. Verifies that
|
| // it fails with a correct error code.
|
| function unmountWrongId() {
|
| - var onTestSuccess = chrome.test.callbackPass(function() {});
|
| - chrome.fileSystemProvider.unmount(1337, function(fileSystemId) {
|
| + var onTestSuccess = chrome.test.callbackPass();
|
| + chrome.fileSystemProvider.unmount('wrong-fs-id', function() {
|
| chrome.test.fail();
|
| }, function(error) {
|
| chrome.test.assertEq('SecurityError', error.name);
|
| @@ -76,12 +109,10 @@ function runTests() {
|
| // Tests if fileBrowserPrivate.removeMount() for provided file systems emits
|
| // the onMountRequested() event with correct arguments.
|
| function requestUnmountSuccess() {
|
| - var onTestSuccess = chrome.test.callbackPass(function() {});
|
| - var secondVolumeId =
|
| - 'provided:' + chrome.runtime.id + '-' + secondFileSystemId + '-user';
|
| + var onTestSuccess = chrome.test.callbackPass();
|
|
|
| var onUnmountRequested = function(fileSystemId, onSuccess, onError) {
|
| - chrome.test.assertEq(secondFileSystemId, fileSystemId);
|
| + chrome.test.assertEq(SECOND_FILE_SYSTEM_ID, fileSystemId);
|
| onSuccess();
|
| // Not calling fileSystemProvider.unmount(), so the onMountCompleted
|
| // event will not be raised.
|
| @@ -92,7 +123,11 @@ function runTests() {
|
|
|
| chrome.fileSystemProvider.onUnmountRequested.addListener(
|
| onUnmountRequested);
|
| - chrome.fileBrowserPrivate.removeMount(secondVolumeId);
|
| +
|
| + getVolumeInfo(SECOND_FILE_SYSTEM_ID, function(volumeInfo) {
|
| + chrome.test.assertTrue(!!volumeInfo);
|
| + chrome.fileBrowserPrivate.removeMount(volumeInfo.volumeId);
|
| + });
|
| },
|
|
|
| // End to end test with a failure. Invokes fileSystemProvider.removeMount()
|
| @@ -100,14 +135,12 @@ function runTests() {
|
| // event is called with correct aguments, and (2) if calling onError(),
|
| // results in an unmount event fired from the VolumeManager instance.
|
| function requestUnmountError() {
|
| - var onTestSuccess = chrome.test.callbackPass(function() {});
|
| - var secondVolumeId =
|
| - 'provided:' + chrome.runtime.id + '-' + secondFileSystemId + '-user';
|
| + var onTestSuccess = chrome.test.callbackPass();
|
| var unmountRequested = false;
|
|
|
| var onUnmountRequested = function(fileSystemId, onSuccess, onError) {
|
| chrome.test.assertEq(false, unmountRequested);
|
| - chrome.test.assertEq(secondFileSystemId, fileSystemId);
|
| + chrome.test.assertEq(SECOND_FILE_SYSTEM_ID, fileSystemId);
|
| onError('IN_USE'); // enum ProviderError.
|
| unmountRequested = true;
|
| chrome.fileSystemProvider.onUnmountRequested.removeListener(
|
| @@ -117,11 +150,14 @@ function runTests() {
|
| var onMountCompleted = function(event) {
|
| chrome.test.assertEq('unmount', event.eventType);
|
| chrome.test.assertEq('error_unknown', event.status);
|
| - chrome.test.assertEq(secondVolumeId, event.volumeMetadata.volumeId);
|
| + chrome.test.assertEq(
|
| + chrome.runtime.id, event.volumeMetadata.extensionId);
|
| + chrome.test.assertEq(
|
| + SECOND_FILE_SYSTEM_ID, event.volumeMetadata.fileSystemId);
|
| chrome.test.assertTrue(unmountRequested);
|
|
|
| // Remove the handlers and mark the test as succeeded.
|
| - chrome.fileBrowserPrivate.removeMount(secondVolumeId);
|
| + chrome.fileBrowserPrivate.removeMount(SECOND_FILE_SYSTEM_ID);
|
| chrome.fileBrowserPrivate.onMountCompleted.removeListener(
|
| onMountCompleted);
|
| onTestSuccess();
|
| @@ -130,7 +166,11 @@ function runTests() {
|
| chrome.fileSystemProvider.onUnmountRequested.addListener(
|
| onUnmountRequested);
|
| chrome.fileBrowserPrivate.onMountCompleted.addListener(onMountCompleted);
|
| - chrome.fileBrowserPrivate.removeMount(secondVolumeId);
|
| +
|
| + getVolumeInfo(SECOND_FILE_SYSTEM_ID, function(volumeInfo) {
|
| + chrome.test.assertTrue(!!volumeInfo);
|
| + chrome.fileBrowserPrivate.removeMount(volumeInfo.volumeId);
|
| + });
|
| }
|
| ]);
|
| }
|
|
|