| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 'use strict'; | |
| 6 | |
| 7 /** | |
| 8 * Waits until a dialog with an OK button is shown and accepts it. | |
| 9 * | |
| 10 * @param {string} windowId Target window ID. | |
| 11 * @return {Promise} Promise to be fulfilled after clicking the OK button in the | |
| 12 * dialog. | |
| 13 */ | |
| 14 function waitAndAcceptDialog(windowId) { | |
| 15 return waitForElement(windowId, '.cr-dialog-ok'). | |
| 16 then(callRemoteTestUtil.bind(null, | |
| 17 'fakeMouseClick', | |
| 18 windowId, | |
| 19 ['.cr-dialog-ok'], | |
| 20 null)). | |
| 21 then(function(result) { | |
| 22 chrome.test.assertTrue(result); | |
| 23 return waitForElementLost(windowId, '.cr-dialog-container'); | |
| 24 }); | |
| 25 } | |
| 26 | |
| 27 /** | |
| 28 * Tests copying a file to the same directory and waits until the file lists | |
| 29 * changes. | |
| 30 * | |
| 31 * @param {string} path Directory path to be tested. | |
| 32 */ | |
| 33 function keyboardCopy(path, callback) { | |
| 34 var filename = 'world.ogv'; | |
| 35 var expectedFilesBefore = | |
| 36 TestEntryInfo.getExpectedRows(path == RootPath.DRIVE ? | |
| 37 BASIC_DRIVE_ENTRY_SET : BASIC_LOCAL_ENTRY_SET).sort(); | |
| 38 var expectedFilesAfter = | |
| 39 expectedFilesBefore.concat([['world (1).ogv', '59 KB', 'OGG video']]); | |
| 40 | |
| 41 var appId, fileListBefore; | |
| 42 StepsRunner.run([ | |
| 43 // Set up File Manager. | |
| 44 function() { | |
| 45 setupAndWaitUntilReady(null, path, this.next); | |
| 46 }, | |
| 47 // Copy the file. | |
| 48 function(inAppId, inFileListBefore) { | |
| 49 appId = inAppId; | |
| 50 fileListBefore = inFileListBefore; | |
| 51 chrome.test.assertEq(expectedFilesBefore, inFileListBefore); | |
| 52 callRemoteTestUtil('copyFile', appId, [filename], this.next); | |
| 53 }, | |
| 54 // Wait for a file list change. | |
| 55 function(result) { | |
| 56 chrome.test.assertTrue(result); | |
| 57 waitForFiles(appId, expectedFilesAfter, {ignoreLastModifiedTime: true}). | |
| 58 then(this.next); | |
| 59 }, | |
| 60 // Verify the result. | |
| 61 function(fileList) { | |
| 62 checkIfNoErrorsOccured(this.next); | |
| 63 } | |
| 64 ]); | |
| 65 }; | |
| 66 | |
| 67 /** | |
| 68 * Tests deleting a file and and waits until the file lists changes. | |
| 69 * @param {string} path Directory path to be tested. | |
| 70 */ | |
| 71 function keyboardDelete(path) { | |
| 72 // Returns true if |fileList| contains |filename|. | |
| 73 var isFilePresent = function(filename, fileList) { | |
| 74 for (var i = 0; i < fileList.length; i++) { | |
| 75 if (getFileName(fileList[i]) == filename) | |
| 76 return true; | |
| 77 } | |
| 78 return false; | |
| 79 }; | |
| 80 | |
| 81 var filename = 'world.ogv'; | |
| 82 var directoryName = 'photos'; | |
| 83 var appId, fileListBefore; | |
| 84 StepsRunner.run([ | |
| 85 // Set up File Manager. | |
| 86 function() { | |
| 87 setupAndWaitUntilReady(null, path, this.next); | |
| 88 }, | |
| 89 // Delete the file. | |
| 90 function(inAppId, inFileListBefore) { | |
| 91 appId = inAppId; | |
| 92 fileListBefore = inFileListBefore; | |
| 93 chrome.test.assertTrue(isFilePresent(filename, fileListBefore)); | |
| 94 callRemoteTestUtil( | |
| 95 'deleteFile', appId, [filename], this.next); | |
| 96 }, | |
| 97 // Reply to a dialog. | |
| 98 function(result) { | |
| 99 chrome.test.assertTrue(result); | |
| 100 waitAndAcceptDialog(appId).then(this.next); | |
| 101 }, | |
| 102 // Wait for a file list change. | |
| 103 function() { | |
| 104 waitForFileListChange(appId, fileListBefore.length).then(this.next); | |
| 105 }, | |
| 106 // Delete the directory. | |
| 107 function(fileList) { | |
| 108 fileListBefore = fileList; | |
| 109 chrome.test.assertFalse(isFilePresent(filename, fileList)); | |
| 110 chrome.test.assertTrue(isFilePresent(directoryName, fileList)); | |
| 111 callRemoteTestUtil('deleteFile', appId, [directoryName], this.next); | |
| 112 }, | |
| 113 // Reply to a dialog. | |
| 114 function(result) { | |
| 115 chrome.test.assertTrue(result); | |
| 116 waitAndAcceptDialog(appId).then(this.next); | |
| 117 }, | |
| 118 // Wait for a file list change. | |
| 119 function() { | |
| 120 waitForFileListChange(appId, fileListBefore.length).then(this.next); | |
| 121 }, | |
| 122 // Verify the result. | |
| 123 function(fileList) { | |
| 124 chrome.test.assertFalse(isFilePresent(directoryName, fileList)); | |
| 125 checkIfNoErrorsOccured(this.next); | |
| 126 } | |
| 127 ]); | |
| 128 } | |
| 129 | |
| 130 /** | |
| 131 * Renames a file. | |
| 132 * @param {string} windowId ID of the window. | |
| 133 * @param {string} oldName Old name of a file. | |
| 134 * @param {string} newName New name of a file. | |
| 135 * @return {Promise} Promise to be fulfilled on success. | |
| 136 */ | |
| 137 function renameFile(windowId, oldName, newName) { | |
| 138 return callRemoteTestUtil('selectFile', windowId, [oldName]).then(function() { | |
| 139 // Push Ctrl+Enter. | |
| 140 return fakeKeyDown(windowId, '#detail-table', 'Enter', true); | |
| 141 }).then(function() { | |
| 142 // Wait for rename text field. | |
| 143 return waitForElement(windowId, 'input.rename'); | |
| 144 }).then(function() { | |
| 145 // Type new file name. | |
| 146 return callRemoteTestUtil('inputText', windowId, ['input.rename', newName]); | |
| 147 }).then(function() { | |
| 148 // Push Enter. | |
| 149 return fakeKeyDown(windowId, 'input.rename', 'Enter', false); | |
| 150 }); | |
| 151 } | |
| 152 | |
| 153 /** | |
| 154 * Test for renaming a file. | |
| 155 * @param {string} path Initial path. | |
| 156 * @param {Array.<TestEntryInfo>} initialEntrySet Initial set of entries. | |
| 157 * @return {Promise} Promise to be fulfilled on success. | |
| 158 */ | |
| 159 function testRenameFile(path, initialEntrySet) { | |
| 160 var windowId; | |
| 161 | |
| 162 // Make expected rows. | |
| 163 var initialExpectedEntryRows = TestEntryInfo.getExpectedRows(initialEntrySet); | |
| 164 var expectedEntryRows = TestEntryInfo.getExpectedRows(initialEntrySet); | |
| 165 for (var i = 0; i < expectedEntryRows.length; i++) { | |
| 166 if (expectedEntryRows[i][0] === 'hello.txt') { | |
| 167 expectedEntryRows[i][0] = 'New File Name.txt'; | |
| 168 break; | |
| 169 } | |
| 170 } | |
| 171 chrome.test.assertTrue( | |
| 172 i != expectedEntryRows.length, 'hello.txt is not found.'); | |
| 173 | |
| 174 // Open a window. | |
| 175 return new Promise(function(callback) { | |
| 176 setupAndWaitUntilReady(null, path, callback); | |
| 177 }).then(function(inWindowId) { | |
| 178 windowId = inWindowId; | |
| 179 return waitForFiles(windowId, initialExpectedEntryRows); | |
| 180 }).then(function(){ | |
| 181 return renameFile(windowId, 'hello.txt', 'New File Name.txt'); | |
| 182 }).then(function() { | |
| 183 // Wait until rename completes. | |
| 184 return waitForElementLost(windowId, '#detail-table [renaming]'); | |
| 185 }).then(function() { | |
| 186 // Wait for the new file name. | |
| 187 return waitForFiles(windowId, | |
| 188 expectedEntryRows, | |
| 189 {ignoreLastModifiedTime: true}); | |
| 190 }).then(function() { | |
| 191 return renameFile(windowId, 'New File Name.txt', '.hidden file'); | |
| 192 }).then(function() { | |
| 193 // The error dialog is shown. | |
| 194 return waitAndAcceptDialog(windowId); | |
| 195 }).then(function() { | |
| 196 // The name did not change. | |
| 197 return waitForFiles(windowId, | |
| 198 expectedEntryRows, | |
| 199 {ignoreLastModifiedTime: true}); | |
| 200 }); | |
| 201 }; | |
| 202 | |
| 203 testcase.keyboardCopyDownloads = function() { | |
| 204 keyboardCopy(RootPath.DOWNLOADS); | |
| 205 }; | |
| 206 | |
| 207 testcase.keyboardDeleteDownloads = function() { | |
| 208 keyboardDelete(RootPath.DOWNLOADS); | |
| 209 }; | |
| 210 | |
| 211 testcase.keyboardCopyDrive = function() { | |
| 212 keyboardCopy(RootPath.DRIVE); | |
| 213 }; | |
| 214 | |
| 215 testcase.keyboardDeleteDrive = function() { | |
| 216 keyboardDelete(RootPath.DRIVE); | |
| 217 }; | |
| 218 | |
| 219 testcase.createNewFolderAndCheckFocus = function() { | |
| 220 }; | |
| 221 | |
| 222 testcase.renameFileDownloads = function() { | |
| 223 testPromise(testRenameFile(RootPath.DOWNLOADS, BASIC_LOCAL_ENTRY_SET)); | |
| 224 }; | |
| 225 | |
| 226 testcase.renameFileDrive = function() { | |
| 227 testPromise(testRenameFile(RootPath.DRIVE, BASIC_DRIVE_ENTRY_SET)); | |
| 228 }; | |
| OLD | NEW |