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

Side by Side Diff: chrome/test/data/extensions/api_test/file_manager_browsertest/multi_profile.js

Issue 304683002: Add the browser test for the new gallery. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed. Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
(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 * @type {string}
9 * @const
10 */
11 var UNTIL_ADDED = 'untilAdded';
12
13 /**
14 * @type {string}
15 * @const
16 */
17 var UNTIL_REMOVED = 'untilRemoved';
18
19 /**
20 * Waits for the 'move to profileId' menu to appear or to disappear.
21 * @param {string} windowId Window ID.
22 * @param {string} profileId Profile ID.
23 * @param {string} waitMode UNTIL_ADDED or UNTIL_REMOVED.
24 * @return {Promise} Promise to be fulfilled when the menu appears or
25 * disappears.
26 */
27 function waitForVisitDesktopMenu(windowId, profileId, waitMode) {
28 if (waitMode !== UNTIL_ADDED && waitMode !== UNTIL_REMOVED)
29 throw new Error('Wait mode is invalid: ' + waitMode);
30 return repeatUntil(function() {
31 return callRemoteTestUtil('queryAllElements', windowId, ['.visit-desktop']).
32 then(function(elements) {
33 var found = false;
34 for (var i = 0; i < elements.length; i++) {
35 if (elements[i].text.indexOf(profileId) !== -1) {
36 found = true;
37 break;
38 }
39 }
40 if ((waitMode === UNTIL_ADDED && !found) ||
41 (waitMode === UNTIL_REMOVED && found))
42 return pending(
43 'Waiting for the visit desktop menu to %s: ' +
44 '%s, but currently it is %j.',
45 waitMode === UNTIL_ADDED ? 'contain' : 'exclude',
46 profileId,
47 elements);
48 });
49 });
50 }
51
52 testcase.multiProfileBadge = function() {
53 var appId;
54 StepsRunner.run([
55 function() {
56 setupAndWaitUntilReady(null, RootPath.DOWNLOADS, this.next);
57 },
58 // Add all users.
59 function(inAppId) {
60 appId = inAppId;
61 chrome.test.sendMessage(JSON.stringify({name: 'addAllUsers'}),
62 this.next);
63 },
64 // Get the badge element.
65 function(json) {
66 chrome.test.assertTrue(JSON.parse(json));
67 waitForElement(appId, '#profile-badge').then(this.next);
68 },
69 // Verify no badge image is shown yet. Move to other deskop.
70 function(element) {
71 chrome.test.assertTrue(element.hidden, 'Badge hidden initially');
72 callRemoteTestUtil('visitDesktop',
73 appId,
74 ['bob@invalid.domain'],
75 this.next);
76 },
77 // Get the badge element again.
78 function(result) {
79 chrome.test.assertTrue(result);
80 waitForElement(appId, '#profile-badge:not([hidden])').then(this.next);
81 },
82 // Verify an image source is filled. Go back to the original desktop
83 function(element) {
84 callRemoteTestUtil('queryAllElements',
85 appId,
86 ['#profile-badge',
87 null,
88 ['background']]).then(this.next);
89 },
90 function(elements) {
91 chrome.test.assertTrue(
92 elements[0].styles.background.indexOf('data:image') !== -1,
93 'Badge shown after moving desktop');
94 callRemoteTestUtil('visitDesktop',
95 appId,
96 ['alice@invalid.domain'],
97 this.next);
98 },
99 // Wait for #profile-badge element to disappear.
100 function(result) {
101 chrome.test.assertTrue(result);
102 waitForElementLost(appId, '#profile-badge:not([hidden])').then(this.next);
103 },
104 // The image is gone.
105 function(result) {
106 checkIfNoErrorsOccured(this.next);
107 }
108 ]);
109 };
110
111 testcase.multiProfileVisitDesktopMenu = function() {
112 var appId;
113 StepsRunner.run([
114 function() {
115 setupAndWaitUntilReady(null, RootPath.DOWNLOADS, this.next);
116 },
117 // Add all users.
118 function(inAppId) {
119 appId = inAppId;
120 chrome.test.sendMessage(JSON.stringify({name: 'addAllUsers'}),
121 this.next);
122 },
123 // Wait for menu items. Profiles for non-current desktop should appear and
124 // the profile for the current desktop (alice) should be hidden.
125 function(json) {
126 chrome.test.assertTrue(JSON.parse(json));
127 Promise.all([
128 waitForVisitDesktopMenu(appId, 'bob@invalid.domain', UNTIL_ADDED),
129 waitForVisitDesktopMenu(appId, 'charlie@invalid.domain', UNTIL_ADDED),
130 waitForVisitDesktopMenu(appId, 'alice@invalid.domain', UNTIL_REMOVED)
131 ]).
132 then(this.next, function(error) {
133 chrome.test.fail(error.stack || error);
134 });
135 },
136 // Activate the visit desktop menu.
137 function() {
138 callRemoteTestUtil('runVisitDesktopMenu',
139 appId,
140 ['bob@invalid.domain'],
141 this.next);
142 },
143 // Wait for the new menu state. Now 'alice' is shown and 'bob' is hidden.
144 function(result) {
145 chrome.test.assertTrue(result);
146 Promise.all([
147 waitForVisitDesktopMenu(appId, 'bob@invalid.domain', UNTIL_REMOVED),
148 waitForVisitDesktopMenu(appId, 'charlie@invalid.domain', UNTIL_ADDED),
149 waitForVisitDesktopMenu(appId, 'alice@invalid.domain', UNTIL_ADDED)
150 ]).
151 then(this.next, function(error) {
152 chrome.test.fail(error.stack || error);
153 });
154 },
155 // Check that the window owner has indeed been changed.
156 function() {
157 chrome.test.sendMessage(JSON.stringify({name: 'getWindowOwnerId'}),
158 this.next);
159 },
160 function(result) {
161 chrome.test.assertEq('bob@invalid.domain', result);
162 checkIfNoErrorsOccured(this.next);
163 }
164 ]);
165 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698