Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(516)

Side by Side Diff: ui/file_manager/integration_tests/file_manager/file_dialog.js

Issue 1092573002: [Files.app] Added a tabindex test for save file dialog (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase and fix test failure Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 'use strict'; 5 'use strict';
6 6
7 /** 7 /**
8 * Opens a file dialog and waits for closing it.
9 *
10 * @param {string} volumeName Volume name passed to the selectVolume remote
11 * funciton.
12 * @param {Array.<TestEntryInfo>} expectedSet Expected set of the entries.
13 * @param {function(windowId:string):Promise} closeDialog Function to close the
14 * dialog.
15 * @return {Promise} Promise to be fulfilled with the result entry of the
16 * dialog.
17 */
18 function openAndWaitForClosingDialog(volumeName, expectedSet, closeDialog) {
19 var resultPromise = new Promise(function(fulfill) {
20 chrome.fileSystem.chooseEntry(
21 {type: 'openFile'},
22 function(entry) { fulfill(entry); });
23 });
24
25 return remoteCall.waitForWindow('dialog#').then(function(windowId) {
26 return remoteCall.waitForElement(windowId, '#file-list').
27 then(function() {
28 // Wait for initialization of Files.app.
29 return remoteCall.waitForFiles(
30 windowId, TestEntryInfo.getExpectedRows(BASIC_LOCAL_ENTRY_SET));
31 }).
32 then(function() {
33 return remoteCall.callRemoteTestUtil(
34 'selectVolume', windowId, [volumeName]);
35 }).
36 then(function() {
37 var expectedRows = TestEntryInfo.getExpectedRows(expectedSet);
38 return remoteCall.waitForFiles(windowId, expectedRows);
39 }).
40 then(function() {
41 return remoteCall.callRemoteTestUtil(
42 'selectFile', windowId, ['hello.txt']);
43 }).
44 then(closeDialog.bind(null, windowId)).
45 then(function() {
46 return repeatUntil(function() {
47 return remoteCall.callRemoteTestUtil('getWindows', null, []).
48 then(function(windows) {
49 if (windows[windowId])
50 return pending('Window %s does not hide.', windowId);
51 else
52 return resultPromise;
53 });
54 });
55 });
56 });
57 }
58
59 /**
60 * Tests to open and cancel the file dialog. 8 * Tests to open and cancel the file dialog.
61 * 9 *
62 * @param {string} volumeName Volume name passed to the selectVolume remote 10 * @param {string} volumeName Volume name passed to the selectVolume remote
63 * funciton. 11 * funciton.
64 * @param {Array.<TestEntryInfo>} expectedSet Expected set of the entries. 12 * @param {Array.<TestEntryInfo>} expectedSet Expected set of the entries.
65 * @return {Promsie} Promise to be fulfilled/rejected depending on the test 13 * @return {Promsie} Promise to be fulfilled/rejected depending on the test
66 * result. 14 * result.
67 */ 15 */
68 function openFileDialog(volumeName, expectedSet) { 16 function openFileDialog(volumeName, expectedSet) {
69 var localEntriesPromise = addEntries(['local'], BASIC_LOCAL_ENTRY_SET); 17 var localEntriesPromise = addEntries(['local'], BASIC_LOCAL_ENTRY_SET);
70 var driveEntriesPromise = addEntries(['drive'], BASIC_DRIVE_ENTRY_SET); 18 var driveEntriesPromise = addEntries(['drive'], BASIC_DRIVE_ENTRY_SET);
71 var setupPromise = Promise.all([localEntriesPromise, driveEntriesPromise]); 19 var setupPromise = Promise.all([localEntriesPromise, driveEntriesPromise]);
72 20
73 var closeByCancelButtonPromise = setupPromise.then(function() { 21 var closeByCancelButtonPromise = setupPromise.then(function() {
74 return openAndWaitForClosingDialog( 22 return openAndWaitForClosingDialog(
23 {type: 'openFile'},
75 volumeName, 24 volumeName,
76 expectedSet, 25 expectedSet,
77 function(windowId) { 26 function(windowId) {
78 return remoteCall.waitForElement(windowId, 27 return remoteCall.callRemoteTestUtil(
79 '.button-panel button.cancel'). 28 'selectFile', windowId, ['hello.txt']
80 then(function() { 29 ).then(function() {
81 return remoteCall.callRemoteTestUtil( 30 return remoteCall.waitForElement(windowId,
82 'fakeEvent', 31 '.button-panel button.cancel');
83 windowId, 32 }).then(function() {
84 ['.button-panel button.cancel', 'click']); 33 return remoteCall.callRemoteTestUtil(
85 }); 34 'fakeEvent',
35 windowId,
36 ['.button-panel button.cancel', 'click']);
37 });
86 }); 38 });
87 }).then(function(result) { 39 }).then(function(result) {
88 // Undefined means the dialog is canceled. 40 // Undefined means the dialog is canceled.
89 chrome.test.assertEq(undefined, result); 41 chrome.test.assertEq(undefined, result);
90 }); 42 });
91 43
92 var closeByEscKeyPromise = closeByCancelButtonPromise.then(function() { 44 var closeByEscKeyPromise = closeByCancelButtonPromise.then(function() {
93 return openAndWaitForClosingDialog( 45 return openAndWaitForClosingDialog(
46 {type: 'openFile'},
94 volumeName, 47 volumeName,
95 expectedSet, 48 expectedSet,
96 function(windowId) { 49 function(windowId) {
97 return remoteCall.callRemoteTestUtil( 50 return remoteCall.callRemoteTestUtil(
98 'fakeKeyDown', 51 'selectFile', windowId, ['hello.txt']
99 windowId, 52 ).then(function() {
100 ['#file-list', 'U+001B', false]); 53 return remoteCall.callRemoteTestUtil(
54 'fakeKeyDown',
55 windowId,
56 ['#file-list', 'U+001B', false]);
57 });
101 }); 58 });
102 }).then(function(result) { 59 }).then(function(result) {
103 // Undefined means the dialog is canceled. 60 // Undefined means the dialog is canceled.
104 chrome.test.assertEq(undefined, result); 61 chrome.test.assertEq(undefined, result);
105 }); 62 });
106 63
107 var closeByOkButtonPromise = closeByEscKeyPromise.then(function() { 64 var closeByOkButtonPromise = closeByEscKeyPromise.then(function() {
108 return openAndWaitForClosingDialog( 65 return openAndWaitForClosingDialog(
66 {type: 'openFile'},
109 volumeName, 67 volumeName,
110 expectedSet, 68 expectedSet,
111 function(windowId) { 69 function(windowId) {
112 return remoteCall.waitForElement(windowId, 70 return remoteCall.callRemoteTestUtil(
113 '.button-panel button.ok'). 71 'selectFile', windowId, ['hello.txt']
114 then(function() { 72 ).then(function() {
115 return remoteCall.callRemoteTestUtil( 73 return remoteCall.waitForElement(windowId,
116 'fakeEvent', 74 '.button-panel button.ok');
117 windowId, 75 }).then(function() {
118 ['.button-panel button.ok', 'click']); 76 return remoteCall.callRemoteTestUtil(
119 }); 77 'fakeEvent',
78 windowId,
79 ['.button-panel button.ok', 'click']);
80 });
120 }); 81 });
121 }).then(function(result) { 82 }).then(function(result) {
122 chrome.test.assertEq('hello.txt', result.name); 83 chrome.test.assertEq('hello.txt', result.name);
123 }); 84 });
124 85
125 return closeByOkButtonPromise; 86 return closeByOkButtonPromise;
126 } 87 }
127 88
128 testcase.openFileDialogOnDownloads = function() { 89 testcase.openFileDialogOnDownloads = function() {
129 testPromise(openFileDialog('downloads', BASIC_LOCAL_ENTRY_SET)); 90 testPromise(openFileDialog('downloads', BASIC_LOCAL_ENTRY_SET));
130 }; 91 };
131 92
132 testcase.openFileDialogOnDrive = function() { 93 testcase.openFileDialogOnDrive = function() {
133 testPromise(openFileDialog('drive', BASIC_DRIVE_ENTRY_SET)); 94 testPromise(openFileDialog('drive', BASIC_DRIVE_ENTRY_SET));
134 }; 95 };
135 96
136 testcase.unloadFileDialog = function() { 97 testcase.unloadFileDialog = function() {
137 chrome.fileSystem.chooseEntry({type: 'openFile'}, function(entry) {}); 98 chrome.fileSystem.chooseEntry({type: 'openFile'}, function(entry) {});
138 99
139 testPromise(remoteCall.waitForWindow('dialog#').then(function(windowId) { 100 testPromise(remoteCall.waitForWindow('dialog#').then(function(windowId) {
140 return remoteCall.callRemoteTestUtil('unload', windowId, []). 101 return remoteCall.callRemoteTestUtil('unload', windowId, []).
141 then(function() { 102 then(function() {
142 return remoteCall.callRemoteTestUtil('getErrorCount', windowId, []); 103 return remoteCall.callRemoteTestUtil('getErrorCount', windowId, []);
143 }). 104 }).
144 then(function(num) { 105 then(function(num) {
145 chrome.test.assertEq(0, num); 106 chrome.test.assertEq(0, num);
146 }); 107 });
147 })); 108 }));
148 }; 109 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698