Index: chrome/test/data/extensions/api_test/file_manager_browsertest/file_manager/grid_view.js |
diff --git a/chrome/test/data/extensions/api_test/file_manager_browsertest/file_manager/grid_view.js b/chrome/test/data/extensions/api_test/file_manager_browsertest/file_manager/grid_view.js |
index 1b60e14118b8fc2ffcb6be7dd34ba3387b06085c..228e64fb0bc9cde18604ccdc09d1c0207fbc8f1f 100644 |
--- a/chrome/test/data/extensions/api_test/file_manager_browsertest/file_manager/grid_view.js |
+++ b/chrome/test/data/extensions/api_test/file_manager_browsertest/file_manager/grid_view.js |
@@ -5,6 +5,52 @@ |
'use strict'; |
/** |
+ * Clicks the toggle-view button. |
+ * @param {string} windowId |
+ * @return {!Promise} |
+ */ |
+function clickToggleViewButton(windowId) { |
+ return remoteCall.waitForElement(windowId, '#view-button').then(function() { |
+ return remoteCall.callRemoteTestUtil( |
+ 'fakeEvent', windowId, ['#view-button', 'click']); |
+ }); |
+} |
+ |
+/** |
+ * Waits until the given entry set is loaded in the current file list. |
+ * @param {string} windowId |
+ * @param {Array.<TestEntryInfo>} expectedSet |
+ * @param {boolean} orderCheck Whether this function waits fils appearing in the |
+ * same order with expectedSet. |
+ */ |
+function waitForGridViewFiles(windowId, expectedSet, orderCheck) { |
+ var expectedLabels = expectedSet.map(function(entryInfo) { |
+ return entryInfo.nameText; |
+ }); |
+ return repeatUntil(function() { |
+ var labelsPromise = remoteCall.callRemoteTestUtil( |
+ 'queryAllElements', |
+ windowId, |
+ ['grid:not([hidden]) .thumbnail-item .entry-name']); |
+ return labelsPromise.then(function(labels) { |
+ var actualLabels = labels.map(function(label) { |
+ return label.text; |
+ }); |
+ if (!orderCheck) { |
+ expectedLabels.sort(); |
+ actualLabels.sort(); |
+ } |
+ if (chrome.test.checkDeepEq(expectedLabels, actualLabels)) |
+ return true; |
+ return pending( |
+ 'Failed to compare the grid lables, expected: %j, actual %j.', |
+ expectedLabels, |
+ actualLabels); |
+ }); |
+ }); |
+} |
+ |
+/** |
* Shows the grid view and checks the label texts of entries. |
* |
* @param {string} rootPath Root path to be used as a default current directory |
@@ -15,39 +61,81 @@ |
* result. |
*/ |
function showGridView(rootPath, expectedSet) { |
- var expectedLabels = expectedSet.map(function(entryInfo) { |
- return entryInfo.nameText; |
- }).sort(); |
+ var windowId; |
var setupPromise = setupAndWaitUntilReady(null, rootPath); |
- return setupPromise.then(function(windowId) { |
- // Click the grid view button. |
- var clickedPromise = remoteCall.waitForElement(windowId, '#view-button'). |
- then(function() { |
- return remoteCall.callRemoteTestUtil( |
- 'fakeEvent', windowId, ['#view-button', 'click']); |
- }); |
- |
+ return setupPromise.then(function(inWindowId) { |
+ windowId = inWindowId; |
+ return clickToggleViewButton(windowId); |
+ }).then(function() { |
// Compare the grid labels of the entries. |
- return clickedPromise.then(function() { |
- return repeatUntil(function() { |
- var labelsPromise = remoteCall.callRemoteTestUtil( |
- 'queryAllElements', |
+ return waitForGridViewFiles(windowId, expectedSet, false); |
+ }); |
+} |
+ |
+/** |
+ * Checks that files are sorted by name alphabetically in grid view, and the |
+ * order in list view is kept on toggling the view. |
+ * |
+ * @return {Promise} Promise to be fulfilled or rejected depending on the test |
+ * result. |
+ */ |
+function checkFilesSortedInGridView() { |
+ // Entries in RootPath.DOWNLOADS, sorted by their names. |
+ var ENTRIES_SORTED_BY_NAME = [ |
+ ENTRIES.photos, // Folder: photos |
+ ENTRIES.beautiful, // File: Beautiful Song.ogg (14 KB) |
+ ENTRIES.hello, // File: hello.txt (51 B) |
+ ENTRIES.desktop, // File: My Desktop Background.png (272 B) |
+ ENTRIES.world // File: world.ogv (59 KB) |
+ ]; |
+ // Entries in RootPath.DOWNLOADS, sorted by their sizes. |
+ var ENTRIES_SORTED_BY_SIZE = [ |
+ ENTRIES.photos, // Folder: photos |
+ ENTRIES.world, // File: world.ogv (59 KB) |
+ ENTRIES.beautiful, // File: Beautiful Song.ogg (14 KB) |
+ ENTRIES.desktop, // File: My Desktop Background.png (272 B) |
+ ENTRIES.hello // File: hello.txt (51 B) |
+ ]; |
+ |
+ var windowId; |
+ return setupAndWaitUntilReady(null, RootPath.DOWNLOADS) |
+ .then(function(inWindowId) { |
+ windowId = inWindowId; |
+ // Sort by size by clicking column header. |
+ return remoteCall.callRemoteTestUtil( |
+ 'fakeMouseClick', windowId, ['.table-header-cell:nth-of-type(2)']); |
+ }) |
+ .then(function() { |
+ // Wait until the descending icon appears. |
+ return remoteCall.waitForElement(windowId, |
+ '.table-header-sort-image-desc'); |
+ }) |
+ .then(function() { |
+ // Check if the files are sorted by size. |
+ return remoteCall.waitForFiles( |
+ windowId, |
+ TestEntryInfo.getExpectedRows(ENTRIES_SORTED_BY_SIZE), |
+ {orderCheck: true}); |
+ }) |
+ .then(function() { |
+ // Change the view to the grid view |
+ return clickToggleViewButton(windowId); |
+ }) |
+ .then(function() { |
+ // Check if the files are sorted by name in grid view. |
+ return waitForGridViewFiles(windowId, ENTRIES_SORTED_BY_NAME, true); |
+ }) |
+ .then(function() { |
+ // Change the view to the list view. |
+ return clickToggleViewButton(windowId); |
+ }) |
+ .then(function() { |
+ // Check if the sort order is restored to 'by size' in list view. |
+ return remoteCall.waitForFiles( |
windowId, |
- ['grid:not([hidden]) .thumbnail-item .entry-name']); |
- return labelsPromise.then(function(labels) { |
- var actualLabels = labels.map(function(label) { |
- return label.text; |
- }).sort(); |
- if (chrome.test.checkDeepEq(expectedLabels, actualLabels)) |
- return true; |
- return pending( |
- 'Failed to compare the grid lables, expected: %j, actual %j.', |
- expectedLabels, |
- actualLabels); |
- }); |
+ TestEntryInfo.getExpectedRows(ENTRIES_SORTED_BY_SIZE), |
+ {orderCheck: true}); |
}); |
- }); |
- }); |
} |
/** |
@@ -65,3 +153,10 @@ testcase.showGridViewDrive = function() { |
testPromise(showGridView( |
RootPath.DRIVE, BASIC_DRIVE_ENTRY_SET)); |
}; |
+ |
+/** |
+ * Tests that files are always sorted by name alphabetically in grid view. |
+ */ |
+testcase.checkFilesSorted = function() { |
+ testPromise(checkFilesSortedInGridView()); |
+}; |