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

Side by Side Diff: chrome/browser/resources/options/manage_profile_overlay.js

Issue 125993002: Add error handling for supervised user import flow. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update ManagedDelete test. Created 6 years, 11 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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('options', function() { 5 cr.define('options', function() {
6 var OptionsPage = options.OptionsPage; 6 var OptionsPage = options.OptionsPage;
7 var ArrayDataModel = cr.ui.ArrayDataModel; 7 var ArrayDataModel = cr.ui.ArrayDataModel;
8 8
9 /** 9 /**
10 * ManageProfileOverlay class 10 * ManageProfileOverlay class
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 // Override the create-profile-ok and create-* keydown handlers, to avoid 51 // Override the create-profile-ok and create-* keydown handlers, to avoid
52 // closing the overlay until we finish creating the profile. 52 // closing the overlay until we finish creating the profile.
53 $('create-profile-ok').onclick = function(event) { 53 $('create-profile-ok').onclick = function(event) {
54 self.submitCreateProfile_(); 54 self.submitCreateProfile_();
55 }; 55 };
56 56
57 $('create-profile-cancel').onclick = function(event) { 57 $('create-profile-cancel').onclick = function(event) {
58 CreateProfileOverlay.cancelCreateProfile(); 58 CreateProfileOverlay.cancelCreateProfile();
59 }; 59 };
60 60
61 $('import-existing-managed-user-link').hidden =
62 !loadTimeData.getBoolean('allowCreateExistingManagedUsers');
63
64 $('manage-profile-cancel').onclick = 61 $('manage-profile-cancel').onclick =
65 $('delete-profile-cancel').onclick = function(event) { 62 $('delete-profile-cancel').onclick = function(event) {
66 OptionsPage.closeOverlay(); 63 OptionsPage.closeOverlay();
67 }; 64 };
68 $('delete-profile-ok').onclick = function(event) { 65 $('delete-profile-ok').onclick = function(event) {
69 OptionsPage.closeOverlay(); 66 OptionsPage.closeOverlay();
70 if (BrowserOptions.getCurrentProfile().isManaged) 67 if (BrowserOptions.getCurrentProfile().isManaged)
71 return; 68 return;
72 chrome.send('deleteProfile', [self.profileInfo_.filePath]); 69 chrome.send('deleteProfile', [self.profileInfo_.filePath]);
70 options.ManagedUserListData.reloadExistingManagedUsers();
73 }; 71 };
74 $('add-shortcut-button').onclick = function(event) { 72 $('add-shortcut-button').onclick = function(event) {
75 chrome.send('addProfileShortcut', [self.profileInfo_.filePath]); 73 chrome.send('addProfileShortcut', [self.profileInfo_.filePath]);
76 }; 74 };
77 $('remove-shortcut-button').onclick = function(event) { 75 $('remove-shortcut-button').onclick = function(event) {
78 chrome.send('removeProfileShortcut', [self.profileInfo_.filePath]); 76 chrome.send('removeProfileShortcut', [self.profileInfo_.filePath]);
79 }; 77 };
80 78
81 $('create-profile-managed-signed-in-learn-more-link').onclick = 79 $('create-profile-managed-signed-in-learn-more-link').onclick =
82 function(event) { 80 function(event) {
(...skipping 10 matching lines...) Expand all
93 OptionsPage.closeOverlay(); 91 OptionsPage.closeOverlay();
94 SyncSetupOverlay.startSignIn(); 92 SyncSetupOverlay.startSignIn();
95 }; 93 };
96 94
97 $('create-profile-managed-sign-in-again-link').onclick = function(event) { 95 $('create-profile-managed-sign-in-again-link').onclick = function(event) {
98 OptionsPage.closeOverlay(); 96 OptionsPage.closeOverlay();
99 SyncSetupOverlay.showSetupUI(); 97 SyncSetupOverlay.showSetupUI();
100 }; 98 };
101 99
102 $('import-existing-managed-user-link').onclick = function(event) { 100 $('import-existing-managed-user-link').onclick = function(event) {
103 OptionsPage.closeOverlay();
104 OptionsPage.navigateToPage('managedUserImport'); 101 OptionsPage.navigateToPage('managedUserImport');
105 }; 102 };
106 }, 103 },
107 104
108 /** @override */ 105 /** @override */
109 didShowPage: function() { 106 didShowPage: function() {
110 chrome.send('requestDefaultProfileIcons'); 107 chrome.send('requestDefaultProfileIcons');
111 108
112 // Just ignore the manage profile dialog on Chrome OS, they use /accounts. 109 // Just ignore the manage profile dialog on Chrome OS, they use /accounts.
113 if (!cr.isChromeOS && window.location.pathname == '/manageProfile') 110 if (!cr.isChromeOS && window.location.pathname == '/manageProfile')
(...skipping 13 matching lines...) Expand all
127 var manageNameField = $('manage-profile-name'); 124 var manageNameField = $('manage-profile-name');
128 // Supervised users cannot edit their names. 125 // Supervised users cannot edit their names.
129 if (manageNameField.disabled) 126 if (manageNameField.disabled)
130 $('manage-profile-ok').focus(); 127 $('manage-profile-ok').focus();
131 else 128 else
132 manageNameField.focus(); 129 manageNameField.focus();
133 }, 130 },
134 131
135 /** 132 /**
136 * Registers event handlers that are common between create and manage modes. 133 * Registers event handlers that are common between create and manage modes.
137 * @param {string} mode A label that specifies the type of dialog 134 * @param {string} mode A label that specifies the type of dialog box which
138 * box which is currently being viewed (i.e. 'create' or 135 * is currently being viewed (i.e. 'create' or 'manage').
139 * 'manage').
140 * @param {function()} submitFunction The function that should be called 136 * @param {function()} submitFunction The function that should be called
141 * when the user chooses to submit (e.g. by clicking the OK button). 137 * when the user chooses to submit (e.g. by clicking the OK button).
142 * @private 138 * @private
143 */ 139 */
144 registerCommonEventHandlers_: function(mode, submitFunction) { 140 registerCommonEventHandlers_: function(mode, submitFunction) {
145 var self = this; 141 var self = this;
146 $(mode + '-profile-icon-grid').addEventListener('change', function(e) { 142 $(mode + '-profile-icon-grid').addEventListener('change', function(e) {
147 self.onIconGridSelectionChanged_(mode); 143 self.onIconGridSelectionChanged_(mode);
148 }); 144 });
149 $(mode + '-profile-name').oninput = function(event) { 145 $(mode + '-profile-name').oninput = function(event) {
150 self.onNameChanged_(event, mode); 146 self.onNameChanged_(mode);
151 }; 147 };
152 $(mode + '-profile-ok').onclick = function(event) { 148 $(mode + '-profile-ok').onclick = function(event) {
153 OptionsPage.closeOverlay(); 149 OptionsPage.closeOverlay();
154 submitFunction(); 150 submitFunction();
155 }; 151 };
156 }, 152 },
157 153
158 /** 154 /**
159 * Set the profile info used in the dialog. 155 * Set the profile info used in the dialog.
160 * @param {Object} profileInfo An object of the form: 156 * @param {Object} profileInfo An object of the form:
161 * profileInfo = { 157 * profileInfo = {
162 * name: "Profile Name", 158 * name: "Profile Name",
163 * iconURL: "chrome://path/to/icon/image", 159 * iconURL: "chrome://path/to/icon/image",
164 * filePath: "/path/to/profile/data/on/disk", 160 * filePath: "/path/to/profile/data/on/disk",
165 * isCurrentProfile: false, 161 * isCurrentProfile: false,
166 * isManaged: false 162 * isManaged: false
167 * }; 163 * };
168 * @param {string} mode A label that specifies the type of dialog 164 * @param {string} mode A label that specifies the type of dialog box which
169 * box which is currently being viewed (i.e. 'create' or 165 * is currently being viewed (i.e. 'create' or 'manage').
170 * 'manage').
171 * @private 166 * @private
172 */ 167 */
173 setProfileInfo_: function(profileInfo, mode) { 168 setProfileInfo_: function(profileInfo, mode) {
174 this.iconGridSelectedURL_ = profileInfo.iconURL; 169 this.iconGridSelectedURL_ = profileInfo.iconURL;
175 this.profileInfo_ = profileInfo; 170 this.profileInfo_ = profileInfo;
176 $(mode + '-profile-name').value = profileInfo.name; 171 $(mode + '-profile-name').value = profileInfo.name;
177 $(mode + '-profile-icon-grid').selectedItem = profileInfo.iconURL; 172 $(mode + '-profile-icon-grid').selectedItem = profileInfo.iconURL;
178 }, 173 },
179 174
180 /** 175 /**
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 * message. 244 * message.
250 * @param {boolean} hasShortcuts Whether profile has any existing shortcuts. 245 * @param {boolean} hasShortcuts Whether profile has any existing shortcuts.
251 * @private 246 * @private
252 */ 247 */
253 receiveHasProfileShortcuts_: function(hasShortcuts) { 248 receiveHasProfileShortcuts_: function(hasShortcuts) {
254 $('add-shortcut-button').hidden = hasShortcuts; 249 $('add-shortcut-button').hidden = hasShortcuts;
255 $('remove-shortcut-button').hidden = !hasShortcuts; 250 $('remove-shortcut-button').hidden = !hasShortcuts;
256 }, 251 },
257 252
258 /** 253 /**
259 * Display the error bubble, with |errorText| in the bubble. 254 * Display the error bubble, with |errorHtml| in the bubble.
260 * @param {string} errorText The string to display as an error. 255 * @param {string} errorHtml The html string to display as an error.
261 * @param {string} mode A label that specifies the type of dialog 256 * @param {string} mode A label that specifies the type of dialog box which
262 * box which is currently being viewed (i.e. 'create' or 257 * is currently being viewed (i.e. 'create' or 'manage').
263 * 'manage').
264 * @param {boolean} disableOKButton True if the dialog's OK button should be 258 * @param {boolean} disableOKButton True if the dialog's OK button should be
265 * disabled when the error bubble is shown. It will be (re-)enabled when 259 * disabled when the error bubble is shown. It will be (re-)enabled when
266 * the error bubble is hidden. 260 * the error bubble is hidden.
267 * @private 261 * @private
268 */ 262 */
269 showErrorBubble_: function(errorText, mode, disableOKButton) { 263 showErrorBubble_: function(errorHtml, mode, disableOKButton) {
270 var nameErrorEl = $(mode + '-profile-error-bubble'); 264 var nameErrorEl = $(mode + '-profile-error-bubble');
271 nameErrorEl.hidden = false; 265 nameErrorEl.hidden = false;
272 nameErrorEl.textContent = errorText; 266 nameErrorEl.innerHTML = errorHtml;
273 267
274 if (disableOKButton) 268 if (disableOKButton)
275 $(mode + '-profile-ok').disabled = true; 269 $(mode + '-profile-ok').disabled = true;
276 }, 270 },
277 271
278 /** 272 /**
279 * Hide the error bubble. 273 * Hide the error bubble.
280 * @param {string} mode A label that specifies the type of dialog 274 * @param {string} mode A label that specifies the type of dialog box which
281 * box which is currently being viewed (i.e. 'create' or 275 * is currently being viewed (i.e. 'create' or 'manage').
282 * 'manage').
283 * @private 276 * @private
284 */ 277 */
285 hideErrorBubble_: function(mode) { 278 hideErrorBubble_: function(mode) {
286 $(mode + '-profile-error-bubble').hidden = true; 279 $(mode + '-profile-error-bubble').hidden = true;
287 $(mode + '-profile-ok').disabled = false; 280 $(mode + '-profile-ok').disabled = false;
288 }, 281 },
289 282
290 /** 283 /**
291 * oninput callback for <input> field. 284 * oninput callback for <input> field.
292 * @param {Event} event The event object. 285 * @param {string} mode A label that specifies the type of dialog box which
293 * @param {string} mode A label that specifies the type of dialog 286 * is currently being viewed (i.e. 'create' or 'manage').
294 * box which is currently being viewed (i.e. 'create' or
295 * 'manage').
296 * @private 287 * @private
297 */ 288 */
298 onNameChanged_: function(event, mode) { 289 onNameChanged_: function(mode) {
299 var newName = event.target.value; 290 var newName = $(mode + '-profile-name').value;
300 var oldName = this.profileInfo_.name; 291 var oldName = this.profileInfo_.name;
301 292
302 if (newName == oldName) { 293 // In 'create' mode, the initial name can be the name of an already
294 // existing supervised user.
295 if (newName == oldName && mode == 'manage') {
303 this.hideErrorBubble_(mode); 296 this.hideErrorBubble_(mode);
304 } else if (this.profileNames_[newName] != undefined) { 297 } else if (this.profileNames_[newName] != undefined) {
305 var errorText = 298 var errorHtml =
306 loadTimeData.getString('manageProfilesDuplicateNameError'); 299 loadTimeData.getString('manageProfilesDuplicateNameError');
307 this.showErrorBubble_(errorText, mode, true); 300 this.showErrorBubble_(errorHtml, mode, true);
301 } else if (mode == 'create' &&
302 loadTimeData.getBoolean('allowCreateExistingManagedUsers')) {
303 this.checkIfSupervisedUserExists_();
308 } else { 304 } else {
309 this.hideErrorBubble_(mode); 305 this.updateOkButton_(mode);
310
311 var nameIsValid = $(mode + '-profile-name').validity.valid;
312 $(mode + '-profile-ok').disabled = !nameIsValid;
313 } 306 }
314 }, 307 },
315 308
316 /** 309 /**
310 * Checks if a supervised user with the currently entered name already
311 * exists.
312 * @private
313 */
314 checkIfSupervisedUserExists_: function() {
315 if (!$('create-profile-managed').checked) {
316 this.updateOkButton_('create');
317 return;
318 }
319 options.ManagedUserListData.requestExistingManagedUsers(
320 this.receiveExistingManagedUsers_.bind(this),
321 this.onSigninError_.bind(this));
322 },
323
324 /**
325 * Callback which receives the list of existing managed users. Checks if the
326 * currently entered name is the name of an already existing managed user.
327 * If yes, the user is prompted to import the existing managed user, and the
328 * create button is disabled.
329 * @param {Array.<Object>} The list of existing managed users.
330 * @private
331 */
332 receiveExistingManagedUsers_: function(managedUsers) {
333 var newName = $('create-profile-name').value;
334 var i;
335 for (i = 0; i < managedUsers.length; ++i) {
336 if (managedUsers[i].name == newName &&
337 !managedUsers[i].onCurrentDevice) {
338 var errorHtml = loadTimeData.getStringF(
339 'manageProfilesExistingSupervisedUser',
340 HTMLEscape(elide(newName, /* maxLength */ 50)));
341 this.showErrorBubble_(errorHtml, 'create', true);
342
343 // Check if another supervised user also exists with that name.
344 var nameIsUnique = true;
345 var j;
346 for (j = i + 1; j < managedUsers.length; ++j) {
347 if (managedUsers[j].name == newName) {
348 nameIsUnique = false;
349 break;
350 }
351 }
352 function getImportHandler(managedUser, nameIsUnique) {
353 return function() {
354 if (managedUser.needAvatar || !nameIsUnique) {
355 OptionsPage.navigateToPage('managedUserImport');
356 } else {
357 chrome.send('createProfile',
358 [managedUser.name, managedUser.iconURL, false, true,
359 managedUser.id]);
360 }
361 }
362 };
363 $('supervised-user-import').onclick =
364 getImportHandler(managedUsers[i], nameIsUnique);
365 $('create-profile-ok').disabled = true;
366 return;
367 }
368 }
369 this.updateOkButton_('create');
370 },
371
372 /**
373 * Called in case the request for the list of managed users fails because of
374 * a signin error.
375 * @private
376 */
377 onSigninError_: function() {
378 this.updateImportExistingManagedUserLink_(false);
379 this.updateManagedUsersAllowed_(false);
380 },
381
382 /**
383 * Called if the name seems to be unused so far.
384 * @param {string} mode A label that specifies the type of dialog box which
385 * is currently being viewed (i.e. 'create' or 'manage').
386 * @private
387 */
388 updateOkButton_: function(mode) {
389 this.hideErrorBubble_(mode);
390
391 var nameIsValid = $(mode + '-profile-name').validity.valid;
392 $(mode + '-profile-ok').disabled = !nameIsValid;
393 },
394
395 /**
317 * Called when the user clicks "OK" or hits enter. Saves the newly changed 396 * Called when the user clicks "OK" or hits enter. Saves the newly changed
318 * profile info. 397 * profile info.
319 * @private 398 * @private
320 */ 399 */
321 submitManageChanges_: function() { 400 submitManageChanges_: function() {
322 var name = $('manage-profile-name').value; 401 var name = $('manage-profile-name').value;
323 var iconURL = $('manage-profile-icon-grid').selectedItem; 402 var iconURL = $('manage-profile-icon-grid').selectedItem;
324 403
325 chrome.send('setProfileIconAndName', 404 chrome.send('setProfileIconAndName',
326 [this.profileInfo_.filePath, iconURL, name]); 405 [this.profileInfo_.filePath, iconURL, name]);
(...skipping 22 matching lines...) Expand all
349 var existingManagedUserId = ''; 428 var existingManagedUserId = '';
350 429
351 // 'createProfile' is handled by the CreateProfileHandler. 430 // 'createProfile' is handled by the CreateProfileHandler.
352 chrome.send('createProfile', 431 chrome.send('createProfile',
353 [name, iconUrl, createShortcut, 432 [name, iconUrl, createShortcut,
354 isManaged, existingManagedUserId]); 433 isManaged, existingManagedUserId]);
355 }, 434 },
356 435
357 /** 436 /**
358 * Called when the selected icon in the icon grid changes. 437 * Called when the selected icon in the icon grid changes.
359 * @param {string} mode A label that specifies the type of dialog 438 * @param {string} mode A label that specifies the type of dialog box which
360 * box which is currently being viewed (i.e. 'create' or 439 * is currently being viewed (i.e. 'create' or 'manage').
361 * 'manage').
362 * @private 440 * @private
363 */ 441 */
364 onIconGridSelectionChanged_: function(mode) { 442 onIconGridSelectionChanged_: function(mode) {
365 var iconURL = $(mode + '-profile-icon-grid').selectedItem; 443 var iconURL = $(mode + '-profile-icon-grid').selectedItem;
366 if (!iconURL || iconURL == this.iconGridSelectedURL_) 444 if (!iconURL || iconURL == this.iconGridSelectedURL_)
367 return; 445 return;
368 this.iconGridSelectedURL_ = iconURL; 446 this.iconGridSelectedURL_ = iconURL;
369 if (this.profileInfo_ && this.profileInfo_.filePath) { 447 if (this.profileInfo_ && this.profileInfo_.filePath) {
370 chrome.send('profileIconSelectionChanged', 448 chrome.send('profileIconSelectionChanged',
371 [this.profileInfo_.filePath, iconURL]); 449 [this.profileInfo_.filePath, iconURL]);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 if (BrowserOptions.getCurrentProfile().isManaged) 483 if (BrowserOptions.getCurrentProfile().isManaged)
406 return; 484 return;
407 485
408 ManageProfileOverlay.setProfileInfo(profileInfo, 'manage'); 486 ManageProfileOverlay.setProfileInfo(profileInfo, 'manage');
409 $('manage-profile-overlay-create').hidden = true; 487 $('manage-profile-overlay-create').hidden = true;
410 $('manage-profile-overlay-manage').hidden = true; 488 $('manage-profile-overlay-manage').hidden = true;
411 $('manage-profile-overlay-delete').hidden = false; 489 $('manage-profile-overlay-delete').hidden = false;
412 $('delete-profile-icon').style.content = 490 $('delete-profile-icon').style.content =
413 imageset(profileInfo.iconURL + '@scalefactorx'); 491 imageset(profileInfo.iconURL + '@scalefactorx');
414 $('delete-profile-text').textContent = 492 $('delete-profile-text').textContent =
415 loadTimeData.getStringF('deleteProfileMessage', profileInfo.name); 493 loadTimeData.getStringF('deleteProfileMessage',
494 elide(profileInfo.name, /* maxLength */ 50));
416 $('delete-managed-profile-addendum').hidden = !profileInfo.isManaged; 495 $('delete-managed-profile-addendum').hidden = !profileInfo.isManaged;
417 496
418 // Because this dialog isn't useful when refreshing or as part of the 497 // Because this dialog isn't useful when refreshing or as part of the
419 // history, don't create a history entry for it when showing. 498 // history, don't create a history entry for it when showing.
420 OptionsPage.showPageByName('manageProfile', false); 499 OptionsPage.showPageByName('manageProfile', false);
421 }, 500 },
422 501
423 /** 502 /**
424 * Display the "Create Profile" dialog. 503 * Display the "Create Profile" dialog.
425 * @private 504 * @private
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 566
488 var shortcutsEnabled = loadTimeData.getBoolean('profileShortcutsEnabled'); 567 var shortcutsEnabled = loadTimeData.getBoolean('profileShortcutsEnabled');
489 $('create-shortcut-container').hidden = !shortcutsEnabled; 568 $('create-shortcut-container').hidden = !shortcutsEnabled;
490 $('create-shortcut').checked = shortcutsEnabled; 569 $('create-shortcut').checked = shortcutsEnabled;
491 570
492 $('create-profile-name-label').hidden = true; 571 $('create-profile-name-label').hidden = true;
493 $('create-profile-name').hidden = true; 572 $('create-profile-name').hidden = true;
494 $('create-profile-ok').disabled = true; 573 $('create-profile-ok').disabled = true;
495 574
496 $('create-profile-managed').checked = false; 575 $('create-profile-managed').checked = false;
576 if (loadTimeData.getBoolean('allowCreateExistingManagedUsers')) {
577 $('import-existing-managed-user-link').hidden = false;
578 $('create-profile-managed').onchange = function() {
579 ManageProfileOverlay.getInstance().onNameChanged_('create');
580 };
581 }
497 $('create-profile-managed-signed-in').disabled = true; 582 $('create-profile-managed-signed-in').disabled = true;
498 $('create-profile-managed-signed-in').hidden = true; 583 $('create-profile-managed-signed-in').hidden = true;
499 $('create-profile-managed-not-signed-in').hidden = true; 584 $('create-profile-managed-not-signed-in').hidden = true;
500 }, 585 },
501 586
502 /** @override */ 587 /** @override */
503 handleCancel: function() { 588 handleCancel: function() {
504 this.cancelCreateProfile_(); 589 this.cancelCreateProfile_();
505 }, 590 },
506 591
507 /** @override */ 592 /** @override */
508 showErrorBubble_: function(errorText) { 593 showErrorBubble_: function(errorHtml) {
509 ManageProfileOverlay.getInstance().showErrorBubble_(errorText, 594 ManageProfileOverlay.getInstance().showErrorBubble_(errorHtml,
510 'create', 595 'create',
511 false); 596 false);
512 }, 597 },
513 598
514 /** @override */ 599 /** @override */
515 hideErrorBubble_: function() { 600 hideErrorBubble_: function() {
516 ManageProfileOverlay.getInstance().hideErrorBubble_('create'); 601 ManageProfileOverlay.getInstance().hideErrorBubble_('create');
517 }, 602 },
518 603
519 /** 604 /**
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 * name: "Profile Name", 663 * name: "Profile Name",
579 * filePath: "/path/to/profile/data/on/disk" 664 * filePath: "/path/to/profile/data/on/disk"
580 * isManaged: (true|false), 665 * isManaged: (true|false),
581 * }; 666 * };
582 * @private 667 * @private
583 */ 668 */
584 onSuccess_: function(profileInfo) { 669 onSuccess_: function(profileInfo) {
585 this.updateCreateInProgress_(false); 670 this.updateCreateInProgress_(false);
586 OptionsPage.closeOverlay(); 671 OptionsPage.closeOverlay();
587 if (profileInfo.isManaged) { 672 if (profileInfo.isManaged) {
673 options.ManagedUserListData.reloadExistingManagedUsers();
588 profileInfo.custodianEmail = this.signedInEmail_; 674 profileInfo.custodianEmail = this.signedInEmail_;
589 ManagedUserCreateConfirmOverlay.setProfileInfo(profileInfo); 675 ManagedUserCreateConfirmOverlay.setProfileInfo(profileInfo);
590 OptionsPage.showPageByName('managedUserCreateConfirm', false); 676 OptionsPage.showPageByName('managedUserCreateConfirm', false);
591 BrowserOptions.updateManagesSupervisedUsers(true); 677 BrowserOptions.updateManagesSupervisedUsers(true);
592 } 678 }
593 }, 679 },
594 680
595 /** 681 /**
596 * Updates the signed-in or not-signed-in UI when in create mode. Called by 682 * Updates the signed-in or not-signed-in UI when in create mode. Called by
597 * the handler in response to the 'requestCreateProfileUpdate' message. 683 * the handler in response to the 'requestCreateProfileUpdate' message.
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 return instance[name + '_'].apply(instance, arguments); 781 return instance[name + '_'].apply(instance, arguments);
696 }; 782 };
697 }); 783 });
698 784
699 // Export 785 // Export
700 return { 786 return {
701 ManageProfileOverlay: ManageProfileOverlay, 787 ManageProfileOverlay: ManageProfileOverlay,
702 CreateProfileOverlay: CreateProfileOverlay, 788 CreateProfileOverlay: CreateProfileOverlay,
703 }; 789 };
704 }); 790 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698