| Index: chrome/test/data/extensions/api_test/file_manager_browsertest/file_manager/file_dialog.js
|
| diff --git a/chrome/test/data/extensions/api_test/file_manager_browsertest/file_manager/file_dialog.js b/chrome/test/data/extensions/api_test/file_manager_browsertest/file_manager/file_dialog.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..695c3d8931fdbebf5a57a64790c506f5b35307d4
|
| --- /dev/null
|
| +++ b/chrome/test/data/extensions/api_test/file_manager_browsertest/file_manager/file_dialog.js
|
| @@ -0,0 +1,130 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +'use strict';
|
| +
|
| +/**
|
| + * Opens a file dialog and waits for closing it.
|
| + *
|
| + * @param {string} volumeName Volume name passed to the selectVolume remote
|
| + * funciton.
|
| + * @param {Array.<TestEntryInfo>} expectedSet Expected set of the entries.
|
| + * @param {function(windowId:string):Promise} closeDialog Function to close the
|
| + * dialog.
|
| + * @return {Promise} Promise to be fulfilled with the result entry of the
|
| + * dialog.
|
| + */
|
| +function openAndWaitForClosingDialog(volumeName, expectedSet, closeDialog) {
|
| + var resultPromise = new Promise(function(fulfill) {
|
| + chrome.fileSystem.chooseEntry(
|
| + {type: 'openFile'},
|
| + function(entry) { fulfill(entry); });
|
| + });
|
| +
|
| + return waitForWindow('dialog#').then(function(windowId) {
|
| + return waitForElement(windowId, '#file-list').
|
| + then(function() {
|
| + // Wait for initialization of Files.app.
|
| + return waitForFiles(
|
| + windowId, TestEntryInfo.getExpectedRows(BASIC_LOCAL_ENTRY_SET));
|
| + }).
|
| + then(function() {
|
| + return callRemoteTestUtil('selectVolume', windowId, [volumeName]);
|
| + }).
|
| + then(function() {
|
| + var expectedRows = TestEntryInfo.getExpectedRows(expectedSet);
|
| + return waitForFiles(windowId, expectedRows);
|
| + }).
|
| + then(function() {
|
| + return callRemoteTestUtil('selectFile', windowId, ['hello.txt']);
|
| + }).
|
| + then(closeDialog.bind(null, windowId)).
|
| + then(function() {
|
| + return repeatUntil(function() {
|
| + return callRemoteTestUtil('getWindows', null, []).
|
| + then(function(windows) {
|
| + if (windows[windowId])
|
| + return pending('Window %s does not hide.', windowId);
|
| + else
|
| + return resultPromise;
|
| + });
|
| + });
|
| + });
|
| + });
|
| +}
|
| +
|
| +/**
|
| + * Tests to open and cancel the file dialog.
|
| + *
|
| + * @param {string} volumeName Volume name passed to the selectVolume remote
|
| + * funciton.
|
| + * @param {Array.<TestEntryInfo>} expectedSet Expected set of the entries.
|
| + * @return {Promsie} Promise to be fulfilled/rejected depending on the test
|
| + * result.
|
| + */
|
| +function openFileDialog(volumeName, expectedSet) {
|
| + var localEntriesPromise = addEntries(['local'], BASIC_LOCAL_ENTRY_SET);
|
| + var driveEntriesPromise = addEntries(['drive'], BASIC_DRIVE_ENTRY_SET);
|
| + var setupPromise = Promise.all([localEntriesPromise, driveEntriesPromise]);
|
| +
|
| + var closeByCancelButtonPromise = setupPromise.then(function() {
|
| + return openAndWaitForClosingDialog(
|
| + volumeName,
|
| + expectedSet,
|
| + function(windowId) {
|
| + return waitForElement(windowId, '.button-panel button.cancel').then(
|
| + function() {
|
| + return callRemoteTestUtil(
|
| + 'fakeEvent',
|
| + windowId,
|
| + ['.button-panel button.cancel', 'click']);
|
| + });
|
| + });
|
| + }).then(function(result) {
|
| + // Undefined means the dialog is canceled.
|
| + chrome.test.assertEq(undefined, result);
|
| + });
|
| +
|
| + var closeByEscKeyPromise = closeByCancelButtonPromise.then(function() {
|
| + return openAndWaitForClosingDialog(
|
| + volumeName,
|
| + expectedSet,
|
| + function(windowId) {
|
| + return callRemoteTestUtil(
|
| + 'fakeKeyDown',
|
| + windowId,
|
| + ['#file-list', 'U+001B', false]);
|
| + });
|
| + }).then(function(result) {
|
| + // Undefined means the dialog is canceled.
|
| + chrome.test.assertEq(undefined, result);
|
| + });
|
| +
|
| + var closeByOkButtonPromise = closeByEscKeyPromise.then(function() {
|
| + return openAndWaitForClosingDialog(
|
| + volumeName,
|
| + expectedSet,
|
| + function(windowId) {
|
| + return waitForElement(windowId, '.button-panel button.ok').then(
|
| + function() {
|
| + return callRemoteTestUtil(
|
| + 'fakeEvent',
|
| + windowId,
|
| + ['.button-panel button.ok', 'click']);
|
| + });
|
| + });
|
| + }).then(function(result) {
|
| + chrome.test.assertEq('hello.txt', result.name);
|
| + });
|
| +
|
| + return closeByOkButtonPromise;
|
| +}
|
| +
|
| +testcase.openFileDialogOnDownloads = function() {
|
| + testPromise(openFileDialog('downloads', BASIC_LOCAL_ENTRY_SET));
|
| +};
|
| +
|
| +testcase.openFileDialogOnDrive = function() {
|
| + testPromise(openFileDialog('drive', BASIC_DRIVE_ENTRY_SET));
|
| +};
|
|
|