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

Unified Diff: chrome/test/data/extensions/api_test/file_manager_browsertest/keyboard_operations.js

Issue 230073002: Files.app: Reland r261616: Add a test to rename a file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/extensions/api_test/file_manager_browsertest/keyboard_operations.js
diff --git a/chrome/test/data/extensions/api_test/file_manager_browsertest/keyboard_operations.js b/chrome/test/data/extensions/api_test/file_manager_browsertest/keyboard_operations.js
index 8709bec3bdfd3ea46442db673fa89ecbb2ff0de6..2dc192c0398b6c28bf9095ed2530539c08c5679b 100644
--- a/chrome/test/data/extensions/api_test/file_manager_browsertest/keyboard_operations.js
+++ b/chrome/test/data/extensions/api_test/file_manager_browsertest/keyboard_operations.js
@@ -135,7 +135,6 @@ function testPromise(promise) {
promise.then(function() {
return new Promise(checkIfNoErrorsOccured);
}).then(chrome.test.callbackPass(function() {
mtomasz 2014/04/09 03:38:54 Why this change?
hirono 2014/04/09 20:01:13 Because chrome.test.succeed generates a log. We al
mtomasz 2014/04/09 21:15:19 Please add a comment exactly saying that. Also, pl
hirono 2014/04/09 21:37:06 Done.
- chrome.test.succeed();
}), function(error) {
chrome.test.fail(error.stack || error);
});
@@ -183,6 +182,77 @@ function createNewFolder(path, initialEntrySet) {
});
};
+/**
+ * Renames a file.
+ * @param {string} windowId ID of window.
mtomasz 2014/04/09 03:38:54 nit: window -> the window
hirono 2014/04/09 20:01:13 Done.
+ * @param {string} oldName Old name of a file.
+ * @param {string} newName New name of a file.
+ * @return {Promise} Promise to be fulfilled on success.
+ */
+function renameFile(windowId, oldName, newName) {
+ return callRemoteTestUtil('selectFile', windowId, [oldName]).then(function() {
+ // Push Ctrl+Enter.
+ return fakeKeyDown(windowId, '#detail-table', 'Enter', true);
+ }).then(function() {
+ // Wait for rename text field.
+ return waitForElement(windowId, 'input.rename');
+ }).then(function() {
+ // Type new file name.
+ return callRemoteTestUtil(
+ 'inputText', windowId, ['input.rename', newName]);
+ }).then(function() {
+ // Push Enter.
+ return fakeKeyDown(windowId, 'input.rename', 'Enter', false);
+ }).then(function() {
+ // Wait until rename completes.
mtomasz 2014/04/09 03:38:54 I think this is racy. The class 'provisional' may
mtomasz 2014/04/09 03:42:15 To fix this race, we could eg. wait for the newNam
hirono 2014/04/09 20:01:13 This is race. But we cannot fix it by waiting newN
mtomasz 2014/04/09 21:15:19 Yes, that would cause a test timeout, so the test
+ return waitForElementLost(windowId, '#detail-table .provisional');
+ });
+}
+
+/**
+ * Test for renaming a file.
+ * @param {string} path Initial path.
+ * @param {Array.<TestEntryInfo>} initialEntrySet Initial set of entries.
+ * @return {Promise} Promise to be fulfilled on success.
+ */
+function testRenameFile(path, initialEntrySet) {
+ var windowId;
+
+ // Make expected rows.
+ var initialExpectedEntryRows = TestEntryInfo.getExpectedRows(initialEntrySet);
+ var expectedEntryRows = TestEntryInfo.getExpectedRows(initialEntrySet);
+ for (var i = 0; i < expectedEntryRows.length; i++) {
+ if (expectedEntryRows[i][0] === 'hello.txt')
+ break;
+ }
+ expectedEntryRows[i][0] = 'New File Name.txt';
mtomasz 2014/04/09 03:38:54 This works, but it is not readable. Can we move it
hirono 2014/04/09 20:01:13 Done.
+
+ // Open window.
mtomasz 2014/04/09 03:38:54 nit: window -> a window
hirono 2014/04/09 20:01:13 Done.
+ return new Promise(function(callback) {
+ setupAndWaitUntilReady(null, path, callback);
+ }).then(function(inWindowId) {
+ windowId = inWindowId;
+ return waitForFiles(windowId, initialExpectedEntryRows);
+ }).then(function(){
+ return renameFile(windowId, 'hello.txt', 'New File Name.txt');
+ }).then(function() {
+ // Wait for the new file name.
+ return waitForFiles(windowId,
+ expectedEntryRows,
+ {ignoreLastModifiedTime: true});
+ }).then(function() {
+ return renameFile(windowId, 'New File Name.txt', '.hidden file');
+ }).then(function() {
+ // The error dialog is shown.
+ return waitAndAcceptDialog(windowId);
+ }).then(function() {
+ // The name does not changed.
mtomasz 2014/04/09 03:38:54 does not changed -> did not change OR has not chan
hirono 2014/04/09 20:01:13 Done.
+ return waitForFiles(windowId,
+ expectedEntryRows,
+ {ignoreLastModifiedTime: true});
+ });
+};
+
testcase.keyboardCopyDownloads = function() {
keyboardCopy(RootPath.DOWNLOADS);
};
@@ -206,3 +276,11 @@ testcase.createNewFolderDownloads = function() {
testcase.createNewFolderDrive = function() {
testPromise(createNewFolder(RootPath.DRIVE, BASIC_DRIVE_ENTRY_SET));
};
+
+testcase.renameFileDownloads = function() {
+ testPromise(testRenameFile(RootPath.DOWNLOADS, BASIC_LOCAL_ENTRY_SET));
+};
+
+testcase.renameFileDrive = function() {
+ testPromise(testRenameFile(RootPath.DRIVE, BASIC_DRIVE_ENTRY_SET));
+};

Powered by Google App Engine
This is Rietveld 408576698