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

Side by Side Diff: chrome/test/data/webui/settings/people_page_test.js

Issue 2239973002: MD Settings: Use dom-if for the profile disconnect dialog. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. Created 3 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/resources/settings/people_page/people_page.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 cr.define('settings_people_page', function() { 5 cr.define('settings_people_page', function() {
6 /** 6 /**
7 * @constructor 7 * @constructor
8 * @implements {settings.ProfileInfoBrowserProxy} 8 * @implements {settings.ProfileInfoBrowserProxy}
9 * @extends {settings.TestBrowserProxy} 9 * @extends {settings.TestBrowserProxy}
10 */ 10 */
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 }); 165 });
166 166
167 teardown(function() { peoplePage.remove(); }); 167 teardown(function() { peoplePage.remove(); });
168 168
169 test('GetProfileInfo', function() { 169 test('GetProfileInfo', function() {
170 var disconnectButton = null; 170 var disconnectButton = null;
171 return browserProxy.whenCalled('getSyncStatus').then(function() { 171 return browserProxy.whenCalled('getSyncStatus').then(function() {
172 Polymer.dom.flush(); 172 Polymer.dom.flush();
173 disconnectButton = peoplePage.$$('#disconnectButton'); 173 disconnectButton = peoplePage.$$('#disconnectButton');
174 assertTrue(!!disconnectButton); 174 assertTrue(!!disconnectButton);
175 assertFalse(!!peoplePage.$$('#disconnectDialog'));
175 176
176 MockInteractions.tap(disconnectButton); 177 MockInteractions.tap(disconnectButton);
177 Polymer.dom.flush(); 178 Polymer.dom.flush();
179 }).then(function() {
180 assertTrue(peoplePage.$$('#disconnectDialog').open);
181 assertFalse(peoplePage.$$('#deleteProfile').hidden);
178 182
179 assertTrue(peoplePage.$.disconnectDialog.open);
180 var deleteProfileCheckbox = peoplePage.$$('#deleteProfile'); 183 var deleteProfileCheckbox = peoplePage.$$('#deleteProfile');
181 assertTrue(!!deleteProfileCheckbox); 184 assertTrue(!!deleteProfileCheckbox);
182 assertLT(0, deleteProfileCheckbox.clientHeight); 185 assertLT(0, deleteProfileCheckbox.clientHeight);
183 186
184 var disconnectConfirm = peoplePage.$.disconnectConfirm; 187 var disconnectConfirm = peoplePage.$$('#disconnectConfirm');
185 assertTrue(!!disconnectConfirm); 188 assertTrue(!!disconnectConfirm);
186 assertFalse(disconnectConfirm.hidden); 189 assertFalse(disconnectConfirm.hidden);
187 190
188 var popstatePromise = new Promise(function(resolve) { 191 var popstatePromise = new Promise(function(resolve) {
189 listenOnce(window, 'popstate', resolve); 192 listenOnce(window, 'popstate', resolve);
190 }); 193 });
191 194
192 MockInteractions.tap(disconnectConfirm); 195 MockInteractions.tap(disconnectConfirm);
193 196
194 return popstatePromise; 197 return popstatePromise;
195 }).then(function() { 198 }).then(function() {
196 return browserProxy.whenCalled('signOut'); 199 return browserProxy.whenCalled('signOut');
197 }).then(function(deleteProfile) { 200 }).then(function(deleteProfile) {
198 assertFalse(deleteProfile); 201 assertFalse(deleteProfile);
199 202
200 cr.webUIListenerCallback('sync-status-changed', { 203 cr.webUIListenerCallback('sync-status-changed', {
201 signedIn: true, 204 signedIn: true,
202 domain: 'example.com', 205 domain: 'example.com',
203 }); 206 });
204 Polymer.dom.flush(); 207 Polymer.dom.flush();
205 208
206 assertFalse(peoplePage.$.disconnectDialog.open); 209 assertFalse(!!peoplePage.$$('#disconnectDialog'));
207 MockInteractions.tap(disconnectButton); 210 MockInteractions.tap(disconnectButton);
208 Polymer.dom.flush(); 211 Polymer.dom.flush();
209 212
210 assertTrue(peoplePage.$.disconnectDialog.open); 213 return new Promise(function(resolve) { peoplePage.async(resolve); });
211 var deleteProfileCheckbox = peoplePage.$$('#deleteProfile'); 214 }).then(function() {
212 assertTrue(!!deleteProfileCheckbox); 215 assertTrue(peoplePage.$$('#disconnectDialog').open);
213 assertEquals(0, deleteProfileCheckbox.clientHeight); 216 assertFalse(!!peoplePage.$$('#deleteProfile'));
214 217
215 var disconnectManagedProfileConfirm = 218 var disconnectManagedProfileConfirm =
216 peoplePage.$.disconnectManagedProfileConfirm; 219 peoplePage.$$('#disconnectManagedProfileConfirm');
217 assertTrue(!!disconnectManagedProfileConfirm); 220 assertTrue(!!disconnectManagedProfileConfirm);
218 assertFalse(disconnectManagedProfileConfirm.hidden); 221 assertFalse(disconnectManagedProfileConfirm.hidden);
219 222
220 browserProxy.resetResolver('signOut'); 223 browserProxy.resetResolver('signOut');
221 224
222 var popstatePromise = new Promise(function(resolve) { 225 var popstatePromise = new Promise(function(resolve) {
223 listenOnce(window, 'popstate', resolve); 226 listenOnce(window, 'popstate', resolve);
224 }); 227 });
225 228
226 MockInteractions.tap(disconnectManagedProfileConfirm); 229 MockInteractions.tap(disconnectManagedProfileConfirm);
227 230
228 return popstatePromise; 231 return popstatePromise;
229 }).then(function() { 232 }).then(function() {
230 return browserProxy.whenCalled('signOut'); 233 return browserProxy.whenCalled('signOut');
231 }).then(function(deleteProfile) { 234 }).then(function(deleteProfile) {
232 assertTrue(deleteProfile); 235 assertTrue(deleteProfile);
233 }); 236 });
234 }); 237 });
235 238
236 test('getProfileStatsCount', function() { 239 test('getProfileStatsCount', function() {
237 return profileInfoBrowserProxy.whenCalled('getProfileStatsCount') 240 return profileInfoBrowserProxy.whenCalled('getProfileStatsCount')
238 .then(function() { 241 .then(function() {
239 Polymer.dom.flush(); 242 Polymer.dom.flush();
240 243
241 // Open the disconnect dialog. 244 // Open the disconnect dialog.
242 disconnectButton = peoplePage.$$('#disconnectButton'); 245 disconnectButton = peoplePage.$$('#disconnectButton');
243 assertTrue(!!disconnectButton); 246 assertTrue(!!disconnectButton);
244 MockInteractions.tap(disconnectButton); 247 MockInteractions.tap(disconnectButton);
245 Polymer.dom.flush();
246 248
247 assertTrue(peoplePage.$.disconnectDialog.open); 249 return new Promise(function(resolve) { peoplePage.async(resolve); });
250 }).then(function() {
251 assertTrue(peoplePage.$$('#disconnectDialog').open);
248 252
249 // Assert the warning message is as expected. 253 // Assert the warning message is as expected.
250 var warningMessage = peoplePage.$$('.delete-profile-warning'); 254 var warningMessage = peoplePage.$$('.delete-profile-warning');
251 255
252 cr.webUIListenerCallback('profile-stats-count-ready', 0); 256 cr.webUIListenerCallback('profile-stats-count-ready', 0);
253 assertEquals( 257 assertEquals(
254 loadTimeData.getStringF('deleteProfileWarningWithoutCounts', 258 loadTimeData.getStringF('deleteProfileWarningWithoutCounts',
255 'fakeUsername'), 259 'fakeUsername'),
256 warningMessage.textContent.trim()); 260 warningMessage.textContent.trim());
257 261
258 cr.webUIListenerCallback('profile-stats-count-ready', 1); 262 cr.webUIListenerCallback('profile-stats-count-ready', 1);
259 assertEquals( 263 assertEquals(
260 loadTimeData.getStringF('deleteProfileWarningWithCountsSingular', 264 loadTimeData.getStringF('deleteProfileWarningWithCountsSingular',
261 'fakeUsername'), 265 'fakeUsername'),
262 warningMessage.textContent.trim()); 266 warningMessage.textContent.trim());
263 267
264 cr.webUIListenerCallback('profile-stats-count-ready', 2); 268 cr.webUIListenerCallback('profile-stats-count-ready', 2);
265 assertEquals( 269 assertEquals(
266 loadTimeData.getStringF('deleteProfileWarningWithCountsPlural', 2, 270 loadTimeData.getStringF('deleteProfileWarningWithCountsPlural', 2,
267 'fakeUsername'), 271 'fakeUsername'),
268 warningMessage.textContent.trim()); 272 warningMessage.textContent.trim());
269 273
270 // Close the disconnect dialog. 274 // Close the disconnect dialog.
271 MockInteractions.tap(peoplePage.$.disconnectConfirm); 275 MockInteractions.tap(peoplePage.$$('#disconnectConfirm'));
272 return new Promise(function(resolve) { 276 return new Promise(function(resolve) {
273 listenOnce(window, 'popstate', resolve); 277 listenOnce(window, 'popstate', resolve);
274 }); 278 });
275 }); 279 });
276 }); 280 });
277 281
278 test('NavigateDirectlyToSignOutURL', function() { 282 test('NavigateDirectlyToSignOutURL', function() {
279 // Navigate to chrome://md-settings/signOut 283 // Navigate to chrome://md-settings/signOut
280 settings.navigateTo(settings.Route.SIGN_OUT); 284 settings.navigateTo(settings.Route.SIGN_OUT);
281 Polymer.dom.flush();
282 285
283 assertTrue(peoplePage.$.disconnectDialog.open); 286 return new Promise(
284 287 function(resolve) { peoplePage.async(resolve); }).then(function() {
285 return profileInfoBrowserProxy.whenCalled('getProfileStatsCount') 288 assertTrue(peoplePage.$$('#disconnectDialog').open);
286 .then(function() { 289 return profileInfoBrowserProxy.whenCalled('getProfileStatsCount');
290 }).then(function() {
287 // 'getProfileStatsCount' can be the first message sent to the handler 291 // 'getProfileStatsCount' can be the first message sent to the handler
288 // if the user navigates directly to chrome://md-settings/signOut. if 292 // if the user navigates directly to chrome://md-settings/signOut. if
289 // so, it should not cause a crash. 293 // so, it should not cause a crash.
290 new settings.ProfileInfoBrowserProxyImpl().getProfileStatsCount(); 294 new settings.ProfileInfoBrowserProxyImpl().getProfileStatsCount();
291 295
292 // Close the disconnect dialog. 296 // Close the disconnect dialog.
293 MockInteractions.tap(peoplePage.$.disconnectConfirm); 297 MockInteractions.tap(peoplePage.$$('#disconnectConfirm'));
298 }).then(function() {
294 return new Promise(function(resolve) { 299 return new Promise(function(resolve) {
295 listenOnce(window, 'popstate', resolve); 300 listenOnce(window, 'popstate', resolve);
296 }); 301 });
297 }); 302 });
298 }); 303 });
299 304
300 test('Signout dialog suppressed when not signed in', function() { 305 test('Signout dialog suppressed when not signed in', function() {
301 return browserProxy.whenCalled('getSyncStatus').then(function() { 306 return browserProxy.whenCalled('getSyncStatus').then(function() {
302 Polymer.dom.flush();
303
304 settings.navigateTo(settings.Route.SIGN_OUT); 307 settings.navigateTo(settings.Route.SIGN_OUT);
305 Polymer.dom.flush(); 308 return new Promise(function(resolve) { peoplePage.async(resolve); });
306 309 }).then(function() {
307 assertTrue(peoplePage.$.disconnectDialog.open); 310 assertTrue(peoplePage.$$('#disconnectDialog').open);
308 311
309 var popstatePromise = new Promise(function(resolve) { 312 var popstatePromise = new Promise(function(resolve) {
310 listenOnce(window, 'popstate', resolve); 313 listenOnce(window, 'popstate', resolve);
311 }); 314 });
312 315
313 cr.webUIListenerCallback('sync-status-changed', { 316 cr.webUIListenerCallback('sync-status-changed', {
314 signedIn: false, 317 signedIn: false,
315 }); 318 });
316 319
317 return popstatePromise; 320 return popstatePromise;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 } 405 }
403 406
404 return { 407 return {
405 registerTests: function() { 408 registerTests: function() {
406 registerProfileInfoTests(); 409 registerProfileInfoTests();
407 if (!cr.isChromeOS) 410 if (!cr.isChromeOS)
408 registerSyncStatusTests(); 411 registerSyncStatusTests();
409 }, 412 },
410 }; 413 };
411 }); 414 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/settings/people_page/people_page.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698