Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / ui / file_manager / integration_tests / gallery / slide_mode.js
blob006d30e3d691ea8568d85ae70abbd3e70a13bad3
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
3 // found in the LICENSE file.
5 'use strict';
7 /**
8  * Runs a test to traverse images in the slide mode.
9  *
10  * @param {string} testVolumeName Test volume name passed to the addEntries
11  *     function. Either 'drive' or 'local'.
12  * @param {VolumeManagerCommon.VolumeType} volumeType Volume type.
13  * @return {Promise} Promise to be fulfilled with on success.
14  */
15 function traverseSlideImages(testVolumeName, volumeType) {
16   var testEntries = [ENTRIES.desktop, ENTRIES.image3];
17   var launchedPromise = launch(
18       testVolumeName, volumeType, testEntries, testEntries.slice(0, 1));
19   var appId;
20   return launchedPromise.then(function(args) {
21     appId = args.appId;
22     return gallery.waitForElement(appId, '.gallery[mode="slide"]');
23   }).then(function() {
24     return gallery.waitForSlideImage(appId, 800, 600, 'My Desktop Background');
25   }).then(function() {
26     return gallery.waitAndClickElement(appId, '.arrow.right');
27   }).then(function() {
28     return gallery.waitForSlideImage(appId, 640, 480, 'image3');
29   }).then(function() {
30     return gallery.waitAndClickElement(appId, '.arrow.right');
31   }).then(function() {
32     return gallery.waitForSlideImage(appId, 800, 600, 'My Desktop Background');
33   });
36 /**
37  * Runs a test to rename an image.
38  *
39  * @param {string} testVolumeName Test volume name passed to the addEntries
40  *     function. Either 'drive' or 'local'.
41  * @param {VolumeManagerCommon.VolumeType} volumeType Volume type.
42  * @return {Promise} Promise to be fulfilled with on success.
43  */
44 function renameImage(testVolumeName, volumeType) {
45   var launchedPromise = launch(
46       testVolumeName, volumeType, [ENTRIES.desktop]);
47   var appId;
48   return launchedPromise.then(function(args) {
49     appId = args.appId;
50     return gallery.waitForSlideImage(appId, 800, 600, 'My Desktop Background');
51   }).then(function() {
52     return gallery.changeNameAndWait(appId, 'New Image Name');
53   }).then(function() {
54     return gallery.waitForAFile(volumeType, 'New Image Name.png');
55   });
58 /**
59  * Runs a test to delete an image.
60  *
61  * @param {string} testVolumeName Test volume name passed to the addEntries
62  *     function. Either 'drive' or 'local'.
63  * @param {VolumeManagerCommon.VolumeType} volumeType Volume type.
64  * @return {Promise} Promise to be fulfilled with on success.
65  */
66 function deleteImage(testVolumeName, volumeType) {
67   var launchedPromise = launch(
68       testVolumeName, volumeType, [ENTRIES.desktop]);
69   var appId;
70   return launchedPromise.then(function(args) {
71     appId = args.appId;
72     return gallery.waitForSlideImage(appId, 800, 600, 'My Desktop Background');
73   }).then(function() {
74     return gallery.waitAndClickElement(appId, 'paper-button.delete');
75   }).then(function() {
76     return gallery.waitAndClickElement(appId, '.cr-dialog-ok');
77   }).then(function() {
78     return repeatUntil(function() {
79       return gallery.getFilesUnderVolume(volumeType, ['New Image Name.png'])
80       .then(function(urls) {
81         if (urls.length == 0)
82           return true;
83         return pending('"New Image Name.png" is still there.');
84       });
85     });
86   });
89 /**
90  * Runs test to check availability of share button.
91  *
92  * @param {string} testVolumeName Test volume name passed to the addEntries
93  *     function. Either 'drive' or 'local'.
94  * @param {VolumeManagerCommon.VolumeType} volumeType Volume type.
95  * @param {boolean} available True if share button should be available in test.
96  * @return {Promise} Promise to be fulfilled with on success.
97  */
98 function checkAvailabilityOfShareButton(testVolumeName, volumeType, available) {
99   var appId;
100   return launch(
101       testVolumeName, volumeType, [ENTRIES.desktop]).then(function(args) {
102     appId = args.appId;
103     // Wait until UI has been initialized.
104     return gallery.waitForSlideImage(appId, 800, 600, 'My Desktop Background');
105   }).then(function() {
106     return gallery.waitForElement(appId,
107         'paper-button.share' + (available ? ':not([disabled])' : '[disabled]'));
108   });
112  * The traverseSlideImages test for Downloads.
113  * @return {Promise} Promise to be fulfilled with on success.
114  */
115 testcase.traverseSlideImagesOnDownloads = function() {
116   return traverseSlideImages('local', 'downloads');
120  * The traverseSlideImages test for Google Drive.
121  * @return {Promise} Promise to be fulfilled with on success.
122  */
123 testcase.traverseSlideImagesOnDrive = function() {
124   return traverseSlideImages('drive', 'drive');
128  * The renameImage test for Downloads.
129  * @return {Promise} Promise to be fulfilled with on success.
130  */
131 testcase.renameImageOnDownloads = function() {
132   return renameImage('local', 'downloads');
136  * The renameImage test for Google Drive.
137  * @return {Promise} Promise to be fulfilled with on success.
138  */
139 testcase.renameImageOnDrive = function() {
140   return renameImage('drive', 'drive');
144  * The deleteImage test for Downloads.
145  * @return {Promise} Promise to be fulfilled with on success.
146  */
147 testcase.deleteImageOnDownloads = function() {
148   return deleteImage('local', 'downloads');
152  * The deleteImage test for Google Drive.
153  * @return {Promise} Promise to be fulfilled with on success.
154  */
155 testcase.deleteImageOnDrive = function() {
156   return deleteImage('drive', 'drive');
160  * The checkAvailabilityOfShareButton test for Downloads.
161  * @return {Promise} Promise to be fulfilled with on success.
162  */
163 testcase.checkAvailabilityOfShareButtonOnDownloads = function() {
164   return checkAvailabilityOfShareButton(
165       'local', 'downloads', false /* not available */);
169  * The checkAvailabilityOfShareButton test for Google Drive.
170  * @return {Promise} Promise to be fulfilled with on success.
171  */
172 testcase.checkAvailabilityOfShareButtonOnDrive = function() {
173   return checkAvailabilityOfShareButton('drive', 'drive', true /* available */);