| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 // None of these tests is relevant for Chrome OS. | 5 // None of these tests is relevant for Chrome OS. |
| 6 GEN('#if !defined(OS_CHROMEOS)'); | 6 GEN('#if !defined(OS_CHROMEOS)'); |
| 7 | 7 |
| 8 /** | 8 /** |
| 9 * TestFixture for ManageProfileOverlay and CreateProfileOverlay WebUI testing. | 9 * TestFixture for ManageProfileOverlay and CreateProfileOverlay WebUI testing. |
| 10 * @extends {testing.Test} | 10 * @extends {testing.Test} |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 // Set the profile info in the overlay. | 61 // Set the profile info in the overlay. |
| 62 ManageProfileOverlay.setProfileInfo(this.testProfileInfo_(managed), mode); | 62 ManageProfileOverlay.setProfileInfo(this.testProfileInfo_(managed), mode); |
| 63 }, | 63 }, |
| 64 | 64 |
| 65 /** | 65 /** |
| 66 * Set some default profile infos (icon URLs and names). | 66 * Set some default profile infos (icon URLs and names). |
| 67 * @param {boolean} managed Whether the test profile should be marked managed. | 67 * @param {boolean} managed Whether the test profile should be marked managed. |
| 68 * @param {string} mode The mode of the overlay (either 'manage' or 'create'). | 68 * @param {string} mode The mode of the overlay (either 'manage' or 'create'). |
| 69 */ | 69 */ |
| 70 initDefaultProfiles_: function(mode) { | 70 initDefaultProfiles_: function(mode) { |
| 71 OptionsPage.showPageByName(mode + 'Profile'); | 71 PageManager.showPageByName(mode + 'Profile'); |
| 72 | 72 |
| 73 var defaultProfile = { | 73 var defaultProfile = { |
| 74 name: 'Default Name', | 74 name: 'Default Name', |
| 75 iconURL: '/default/path', | 75 iconURL: '/default/path', |
| 76 }; | 76 }; |
| 77 this.defaultIconURLs = ['/some/path', | 77 this.defaultIconURLs = ['/some/path', |
| 78 defaultProfile.iconURL, | 78 defaultProfile.iconURL, |
| 79 '/another/path', | 79 '/another/path', |
| 80 '/one/more/path']; | 80 '/one/more/path']; |
| 81 this.defaultNames = ['Some Name', defaultProfile.name, '', 'Another Name']; | 81 this.defaultNames = ['Some Name', defaultProfile.name, '', 'Another Name']; |
| 82 ManageProfileOverlay.receiveDefaultProfileIconsAndNames( | 82 ManageProfileOverlay.receiveDefaultProfileIconsAndNames( |
| 83 mode, this.defaultIconURLs, this.defaultNames); | 83 mode, this.defaultIconURLs, this.defaultNames); |
| 84 ManageProfileOverlay.receiveNewProfileDefaults(defaultProfile); | 84 ManageProfileOverlay.receiveNewProfileDefaults(defaultProfile); |
| 85 | 85 |
| 86 // Make sure the correct item in the icon grid was selected. | 86 // Make sure the correct item in the icon grid was selected. |
| 87 var gridEl = $(mode + '-profile-icon-grid'); | 87 var gridEl = $(mode + '-profile-icon-grid'); |
| 88 expectEquals(defaultProfile.iconURL, gridEl.selectedItem); | 88 expectEquals(defaultProfile.iconURL, gridEl.selectedItem); |
| 89 }, | 89 }, |
| 90 }; | 90 }; |
| 91 | 91 |
| 92 // Receiving the new profile defaults in the manage-user overlay shouldn't mess | 92 // Receiving the new profile defaults in the manage-user overlay shouldn't mess |
| 93 // up the focus in a visible higher-level overlay. | 93 // up the focus in a visible higher-level overlay. |
| 94 TEST_F('ManageProfileUITest', 'NewProfileDefaultsFocus', function() { | 94 TEST_F('ManageProfileUITest', 'NewProfileDefaultsFocus', function() { |
| 95 var self = this; | 95 var self = this; |
| 96 | 96 |
| 97 function checkFocus(pageName, expectedFocus, initialFocus) { | 97 function checkFocus(pageName, expectedFocus, initialFocus) { |
| 98 OptionsPage.showPageByName(pageName); | 98 PageManager.showPageByName(pageName); |
| 99 initialFocus.focus(); | 99 initialFocus.focus(); |
| 100 expectEquals(initialFocus, document.activeElement, pageName); | 100 expectEquals(initialFocus, document.activeElement, pageName); |
| 101 | 101 |
| 102 ManageProfileOverlay.receiveNewProfileDefaults( | 102 ManageProfileOverlay.receiveNewProfileDefaults( |
| 103 self.testProfileInfo_(false)); | 103 self.testProfileInfo_(false)); |
| 104 expectEquals(expectedFocus, document.activeElement, pageName); | 104 expectEquals(expectedFocus, document.activeElement, pageName); |
| 105 OptionsPage.closeOverlay(); | 105 PageManager.closeOverlay(); |
| 106 } | 106 } |
| 107 | 107 |
| 108 // Receiving new profile defaults sets focus to the name field if the create | 108 // Receiving new profile defaults sets focus to the name field if the create |
| 109 // overlay is open, and should not change focus at all otherwise. | 109 // overlay is open, and should not change focus at all otherwise. |
| 110 checkFocus('manageProfile', | 110 checkFocus('manageProfile', |
| 111 $('manage-profile-cancel'), | 111 $('manage-profile-cancel'), |
| 112 $('manage-profile-cancel')); | 112 $('manage-profile-cancel')); |
| 113 checkFocus('createProfile', | 113 checkFocus('createProfile', |
| 114 $('create-profile-name'), | 114 $('create-profile-name'), |
| 115 $('create-profile-cancel')); | 115 $('create-profile-cancel')); |
| 116 checkFocus('managedUserLearnMore', | 116 checkFocus('managedUserLearnMore', |
| 117 $('managed-user-learn-more-done'), | 117 $('managed-user-learn-more-done'), |
| 118 $('managed-user-learn-more-done')); | 118 $('managed-user-learn-more-done')); |
| 119 checkFocus('managedUserLearnMore', | 119 checkFocus('managedUserLearnMore', |
| 120 document.querySelector('#managed-user-learn-more-text a'), | 120 document.querySelector('#managed-user-learn-more-text a'), |
| 121 document.querySelector('#managed-user-learn-more-text a')); | 121 document.querySelector('#managed-user-learn-more-text a')); |
| 122 }); | 122 }); |
| 123 | 123 |
| 124 // The default options should be reset each time the creation overlay is shown. | 124 // The default options should be reset each time the creation overlay is shown. |
| 125 TEST_F('ManageProfileUITest', 'DefaultCreateOptions', function() { | 125 TEST_F('ManageProfileUITest', 'DefaultCreateOptions', function() { |
| 126 OptionsPage.showPageByName('createProfile'); | 126 PageManager.showPageByName('createProfile'); |
| 127 var shortcutsAllowed = loadTimeData.getBoolean('profileShortcutsEnabled'); | 127 var shortcutsAllowed = loadTimeData.getBoolean('profileShortcutsEnabled'); |
| 128 var createShortcut = $('create-shortcut'); | 128 var createShortcut = $('create-shortcut'); |
| 129 var createManaged = $('create-profile-managed'); | 129 var createManaged = $('create-profile-managed'); |
| 130 assertEquals(shortcutsAllowed, createShortcut.checked); | 130 assertEquals(shortcutsAllowed, createShortcut.checked); |
| 131 assertFalse(createManaged.checked); | 131 assertFalse(createManaged.checked); |
| 132 | 132 |
| 133 createShortcut.checked = !shortcutsAllowed; | 133 createShortcut.checked = !shortcutsAllowed; |
| 134 createManaged.checked = true; | 134 createManaged.checked = true; |
| 135 OptionsPage.closeOverlay(); | 135 PageManager.closeOverlay(); |
| 136 OptionsPage.showPageByName('createProfile'); | 136 PageManager.showPageByName('createProfile'); |
| 137 assertEquals(shortcutsAllowed, createShortcut.checked); | 137 assertEquals(shortcutsAllowed, createShortcut.checked); |
| 138 assertFalse(createManaged.checked); | 138 assertFalse(createManaged.checked); |
| 139 }); | 139 }); |
| 140 | 140 |
| 141 // The checkbox label should change depending on whether the user is signed in. | 141 // The checkbox label should change depending on whether the user is signed in. |
| 142 TEST_F('ManageProfileUITest', 'CreateManagedUserText', function() { | 142 TEST_F('ManageProfileUITest', 'CreateManagedUserText', function() { |
| 143 var signedInText = $('create-profile-managed-signed-in'); | 143 var signedInText = $('create-profile-managed-signed-in'); |
| 144 var notSignedInText = $('create-profile-managed-not-signed-in'); | 144 var notSignedInText = $('create-profile-managed-not-signed-in'); |
| 145 | 145 |
| 146 ManageProfileOverlay.getInstance().initializePage(); | 146 ManageProfileOverlay.getInstance().initializePage(); |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 // Managed users should not be able to edit their profile names, and the initial | 275 // Managed users should not be able to edit their profile names, and the initial |
| 276 // focus should be adjusted accordingly. | 276 // focus should be adjusted accordingly. |
| 277 TEST_F('ManageProfileUITest', 'EditManagedUserNameAllowed', function() { | 277 TEST_F('ManageProfileUITest', 'EditManagedUserNameAllowed', function() { |
| 278 var nameField = $('manage-profile-name'); | 278 var nameField = $('manage-profile-name'); |
| 279 | 279 |
| 280 this.setProfileManaged_(false, 'manage'); | 280 this.setProfileManaged_(false, 'manage'); |
| 281 ManageProfileOverlay.showManageDialog(); | 281 ManageProfileOverlay.showManageDialog(); |
| 282 expectFalse(nameField.disabled); | 282 expectFalse(nameField.disabled); |
| 283 expectEquals(nameField, document.activeElement); | 283 expectEquals(nameField, document.activeElement); |
| 284 | 284 |
| 285 OptionsPage.closeOverlay(); | 285 PageManager.closeOverlay(); |
| 286 | 286 |
| 287 this.setProfileManaged_(true, 'manage'); | 287 this.setProfileManaged_(true, 'manage'); |
| 288 ManageProfileOverlay.showManageDialog(); | 288 ManageProfileOverlay.showManageDialog(); |
| 289 expectTrue(nameField.disabled); | 289 expectTrue(nameField.disabled); |
| 290 expectEquals($('manage-profile-ok'), document.activeElement); | 290 expectEquals($('manage-profile-ok'), document.activeElement); |
| 291 }); | 291 }); |
| 292 | 292 |
| 293 // Setting profile information should allow the confirmation to be shown. | 293 // Setting profile information should allow the confirmation to be shown. |
| 294 TEST_F('ManageProfileUITest', 'ShowCreateConfirmation', function() { | 294 TEST_F('ManageProfileUITest', 'ShowCreateConfirmation', function() { |
| 295 var testProfile = this.testProfileInfo_(true); | 295 var testProfile = this.testProfileInfo_(true); |
| 296 testProfile.custodianEmail = 'foo@bar.example.com'; | 296 testProfile.custodianEmail = 'foo@bar.example.com'; |
| 297 ManagedUserCreateConfirmOverlay.setProfileInfo(testProfile); | 297 ManagedUserCreateConfirmOverlay.setProfileInfo(testProfile); |
| 298 assertTrue(ManagedUserCreateConfirmOverlay.getInstance().canShowPage()); | 298 assertTrue(ManagedUserCreateConfirmOverlay.getInstance().canShowPage()); |
| 299 OptionsPage.showPageByName('managedUserCreateConfirm', false); | 299 PageManager.showPageByName('managedUserCreateConfirm', false); |
| 300 assertEquals('managedUserCreateConfirm', | 300 assertEquals('managedUserCreateConfirm', |
| 301 OptionsPage.getTopmostVisiblePage().name); | 301 PageManager.getTopmostVisiblePage().name); |
| 302 }); | 302 }); |
| 303 | 303 |
| 304 // Trying to show a confirmation dialog with no profile information should fall | 304 // Trying to show a confirmation dialog with no profile information should fall |
| 305 // back to the default (main) settings page. | 305 // back to the default (main) settings page. |
| 306 TEST_F('ManageProfileUITest', 'NoEmptyConfirmation', function() { | 306 TEST_F('ManageProfileUITest', 'NoEmptyConfirmation', function() { |
| 307 assertEquals('manageProfile', OptionsPage.getTopmostVisiblePage().name); | 307 assertEquals('manageProfile', PageManager.getTopmostVisiblePage().name); |
| 308 assertFalse(ManagedUserCreateConfirmOverlay.getInstance().canShowPage()); | 308 assertFalse(ManagedUserCreateConfirmOverlay.getInstance().canShowPage()); |
| 309 OptionsPage.showPageByName('managedUserCreateConfirm', true); | 309 PageManager.showPageByName('managedUserCreateConfirm', true); |
| 310 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 310 assertEquals('settings', PageManager.getTopmostVisiblePage().name); |
| 311 }); | 311 }); |
| 312 | 312 |
| 313 // A confirmation dialog should be shown after creating a new managed user. | 313 // A confirmation dialog should be shown after creating a new managed user. |
| 314 TEST_F('ManageProfileUITest', 'ShowCreateConfirmationOnSuccess', function() { | 314 TEST_F('ManageProfileUITest', 'ShowCreateConfirmationOnSuccess', function() { |
| 315 OptionsPage.showPageByName('createProfile'); | 315 PageManager.showPageByName('createProfile'); |
| 316 assertEquals('createProfile', OptionsPage.getTopmostVisiblePage().name); | 316 assertEquals('createProfile', PageManager.getTopmostVisiblePage().name); |
| 317 CreateProfileOverlay.onSuccess(this.testProfileInfo_(false)); | 317 CreateProfileOverlay.onSuccess(this.testProfileInfo_(false)); |
| 318 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 318 assertEquals('settings', PageManager.getTopmostVisiblePage().name); |
| 319 | 319 |
| 320 OptionsPage.showPageByName('createProfile'); | 320 PageManager.showPageByName('createProfile'); |
| 321 assertEquals('createProfile', OptionsPage.getTopmostVisiblePage().name); | 321 assertEquals('createProfile', PageManager.getTopmostVisiblePage().name); |
| 322 CreateProfileOverlay.onSuccess(this.testProfileInfo_(true)); | 322 CreateProfileOverlay.onSuccess(this.testProfileInfo_(true)); |
| 323 assertEquals('managedUserCreateConfirm', | 323 assertEquals('managedUserCreateConfirm', |
| 324 OptionsPage.getTopmostVisiblePage().name); | 324 PageManager.getTopmostVisiblePage().name); |
| 325 expectEquals($('managed-user-created-switch'), document.activeElement); | 325 expectEquals($('managed-user-created-switch'), document.activeElement); |
| 326 }); | 326 }); |
| 327 | 327 |
| 328 // An error should be shown if creating a new managed user fails. | 328 // An error should be shown if creating a new managed user fails. |
| 329 TEST_F('ManageProfileUITest', 'NoCreateConfirmationOnError', function() { | 329 TEST_F('ManageProfileUITest', 'NoCreateConfirmationOnError', function() { |
| 330 OptionsPage.showPageByName('createProfile'); | 330 PageManager.showPageByName('createProfile'); |
| 331 assertEquals('createProfile', OptionsPage.getTopmostVisiblePage().name); | 331 assertEquals('createProfile', PageManager.getTopmostVisiblePage().name); |
| 332 var errorBubble = $('create-profile-error-bubble'); | 332 var errorBubble = $('create-profile-error-bubble'); |
| 333 assertTrue(errorBubble.hidden); | 333 assertTrue(errorBubble.hidden); |
| 334 | 334 |
| 335 CreateProfileOverlay.onError('An Error Message!'); | 335 CreateProfileOverlay.onError('An Error Message!'); |
| 336 assertEquals('createProfile', OptionsPage.getTopmostVisiblePage().name); | 336 assertEquals('createProfile', PageManager.getTopmostVisiblePage().name); |
| 337 assertFalse(errorBubble.hidden); | 337 assertFalse(errorBubble.hidden); |
| 338 }); | 338 }); |
| 339 | 339 |
| 340 // The name and email should be inserted into the confirmation dialog. | 340 // The name and email should be inserted into the confirmation dialog. |
| 341 TEST_F('ManageProfileUITest', 'CreateConfirmationText', function() { | 341 TEST_F('ManageProfileUITest', 'CreateConfirmationText', function() { |
| 342 var self = this; | 342 var self = this; |
| 343 var custodianEmail = 'foo@example.com'; | 343 var custodianEmail = 'foo@example.com'; |
| 344 | 344 |
| 345 // Checks the strings in the confirmation dialog. If |expectedNameText| is | 345 // Checks the strings in the confirmation dialog. If |expectedNameText| is |
| 346 // given, it should be present in the dialog's textContent; otherwise the name | 346 // given, it should be present in the dialog's textContent; otherwise the name |
| 347 // is expected. If |expectedNameHtml| is given, it should be present in the | 347 // is expected. If |expectedNameHtml| is given, it should be present in the |
| 348 // dialog's innerHTML; otherwise the expected text is expected in the HTML | 348 // dialog's innerHTML; otherwise the expected text is expected in the HTML |
| 349 // too. | 349 // too. |
| 350 function checkDialog(name, expectedNameText, expectedNameHtml) { | 350 function checkDialog(name, expectedNameText, expectedNameHtml) { |
| 351 var expectedText = expectedNameText || name; | 351 var expectedText = expectedNameText || name; |
| 352 var expectedHtml = expectedNameHtml || expectedText; | 352 var expectedHtml = expectedNameHtml || expectedText; |
| 353 | 353 |
| 354 // Configure the test profile and show the confirmation dialog. | 354 // Configure the test profile and show the confirmation dialog. |
| 355 var testProfile = self.testProfileInfo_(true); | 355 var testProfile = self.testProfileInfo_(true); |
| 356 testProfile.name = name; | 356 testProfile.name = name; |
| 357 CreateProfileOverlay.onSuccess(testProfile); | 357 CreateProfileOverlay.onSuccess(testProfile); |
| 358 assertEquals('managedUserCreateConfirm', | 358 assertEquals('managedUserCreateConfirm', |
| 359 OptionsPage.getTopmostVisiblePage().name); | 359 PageManager.getTopmostVisiblePage().name); |
| 360 | 360 |
| 361 // Check for the presence of the name and email in the UI, without depending | 361 // Check for the presence of the name and email in the UI, without depending |
| 362 // on the details of the messsages. | 362 // on the details of the messsages. |
| 363 assertNotEquals(-1, | 363 assertNotEquals(-1, |
| 364 $('managed-user-created-title').textContent.indexOf(expectedText)); | 364 $('managed-user-created-title').textContent.indexOf(expectedText)); |
| 365 assertNotEquals(-1, | 365 assertNotEquals(-1, |
| 366 $('managed-user-created-switch').textContent.indexOf(expectedText)); | 366 $('managed-user-created-switch').textContent.indexOf(expectedText)); |
| 367 var message = $('managed-user-created-text'); | 367 var message = $('managed-user-created-text'); |
| 368 assertNotEquals(-1, message.textContent.indexOf(expectedText)); | 368 assertNotEquals(-1, message.textContent.indexOf(expectedText)); |
| 369 assertNotEquals(-1, message.textContent.indexOf(custodianEmail)); | 369 assertNotEquals(-1, message.textContent.indexOf(custodianEmail)); |
| 370 | 370 |
| 371 // The name should be properly HTML-escaped. | 371 // The name should be properly HTML-escaped. |
| 372 assertNotEquals(-1, message.innerHTML.indexOf(expectedHtml)); | 372 assertNotEquals(-1, message.innerHTML.indexOf(expectedHtml)); |
| 373 | 373 |
| 374 OptionsPage.closeOverlay(); | 374 PageManager.closeOverlay(); |
| 375 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name, name); | 375 assertEquals('settings', PageManager.getTopmostVisiblePage().name, name); |
| 376 } | 376 } |
| 377 | 377 |
| 378 // Show and configure the create-profile dialog. | 378 // Show and configure the create-profile dialog. |
| 379 OptionsPage.showPageByName('createProfile'); | 379 PageManager.showPageByName('createProfile'); |
| 380 CreateProfileOverlay.updateSignedInStatus(custodianEmail); | 380 CreateProfileOverlay.updateSignedInStatus(custodianEmail); |
| 381 assertEquals('createProfile', OptionsPage.getTopmostVisiblePage().name); | 381 assertEquals('createProfile', PageManager.getTopmostVisiblePage().name); |
| 382 | 382 |
| 383 checkDialog('OneWord'); | 383 checkDialog('OneWord'); |
| 384 checkDialog('Multiple Words'); | 384 checkDialog('Multiple Words'); |
| 385 checkDialog('It\'s "<HTML> injection" & more!', | 385 checkDialog('It\'s "<HTML> injection" & more!', |
| 386 'It\'s "<HTML> injection" & more!', | 386 'It\'s "<HTML> injection" & more!', |
| 387 // The innerHTML getter doesn't escape quotation marks, | 387 // The innerHTML getter doesn't escape quotation marks, |
| 388 // independent of whether they were escaped in the setter. | 388 // independent of whether they were escaped in the setter. |
| 389 'It\'s "<HTML> injection" & more!'); | 389 'It\'s "<HTML> injection" & more!'); |
| 390 | 390 |
| 391 // Test elision. MAX_LENGTH = 50, minus 1 for the ellipsis. | 391 // Test elision. MAX_LENGTH = 50, minus 1 for the ellipsis. |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 493 | 493 |
| 494 CreateProfileOverlay.updateCreateInProgress(false); | 494 CreateProfileOverlay.updateCreateInProgress(false); |
| 495 assertFalse(checkbox.disabled, 'creation finished'); | 495 assertFalse(checkbox.disabled, 'creation finished'); |
| 496 }); | 496 }); |
| 497 | 497 |
| 498 // Managed users shouldn't be able to open the delete or create dialogs. | 498 // Managed users shouldn't be able to open the delete or create dialogs. |
| 499 TEST_F('ManageProfileUITest', 'ManagedShowDeleteAndCreate', function() { | 499 TEST_F('ManageProfileUITest', 'ManagedShowDeleteAndCreate', function() { |
| 500 this.setProfileManaged_(false, 'create'); | 500 this.setProfileManaged_(false, 'create'); |
| 501 | 501 |
| 502 ManageProfileOverlay.showCreateDialog(); | 502 ManageProfileOverlay.showCreateDialog(); |
| 503 assertEquals('createProfile', OptionsPage.getTopmostVisiblePage().name); | 503 assertEquals('createProfile', PageManager.getTopmostVisiblePage().name); |
| 504 OptionsPage.closeOverlay(); | 504 PageManager.closeOverlay(); |
| 505 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 505 assertEquals('settings', PageManager.getTopmostVisiblePage().name); |
| 506 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); | 506 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); |
| 507 assertEquals('manageProfile', OptionsPage.getTopmostVisiblePage().name); | 507 assertEquals('manageProfile', PageManager.getTopmostVisiblePage().name); |
| 508 assertFalse($('manage-profile-overlay-delete').hidden); | 508 assertFalse($('manage-profile-overlay-delete').hidden); |
| 509 OptionsPage.closeOverlay(); | 509 PageManager.closeOverlay(); |
| 510 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 510 assertEquals('settings', PageManager.getTopmostVisiblePage().name); |
| 511 | 511 |
| 512 this.setProfileManaged_(true, 'create'); | 512 this.setProfileManaged_(true, 'create'); |
| 513 ManageProfileOverlay.showCreateDialog(); | 513 ManageProfileOverlay.showCreateDialog(); |
| 514 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 514 assertEquals('settings', PageManager.getTopmostVisiblePage().name); |
| 515 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); | 515 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); |
| 516 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 516 assertEquals('settings', PageManager.getTopmostVisiblePage().name); |
| 517 }); | 517 }); |
| 518 | 518 |
| 519 // Only non-managed users should be able to delete profiles. | 519 // Only non-managed users should be able to delete profiles. |
| 520 TEST_F('ManageProfileUITest', 'ManagedDelete', function() { | 520 TEST_F('ManageProfileUITest', 'ManagedDelete', function() { |
| 521 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); | 521 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); |
| 522 assertEquals('manageProfile', OptionsPage.getTopmostVisiblePage().name); | 522 assertEquals('manageProfile', PageManager.getTopmostVisiblePage().name); |
| 523 assertFalse($('manage-profile-overlay-delete').hidden); | 523 assertFalse($('manage-profile-overlay-delete').hidden); |
| 524 | 524 |
| 525 // Clicks the "Delete" button, after overriding chrome.send to record what | 525 // Clicks the "Delete" button, after overriding chrome.send to record what |
| 526 // messages were sent. | 526 // messages were sent. |
| 527 function clickAndListen() { | 527 function clickAndListen() { |
| 528 var originalChromeSend = chrome.send; | 528 var originalChromeSend = chrome.send; |
| 529 var chromeSendMessages = []; | 529 var chromeSendMessages = []; |
| 530 chrome.send = function(message) { | 530 chrome.send = function(message) { |
| 531 chromeSendMessages.push(message); | 531 chromeSendMessages.push(message); |
| 532 }; | 532 }; |
| 533 $('delete-profile-ok').onclick(); | 533 $('delete-profile-ok').onclick(); |
| 534 // Restore the original function so the test framework can use it. | 534 // Restore the original function so the test framework can use it. |
| 535 chrome.send = originalChromeSend; | 535 chrome.send = originalChromeSend; |
| 536 return chromeSendMessages; | 536 return chromeSendMessages; |
| 537 } | 537 } |
| 538 | 538 |
| 539 this.setProfileManaged_(false, 'manage'); | 539 this.setProfileManaged_(false, 'manage'); |
| 540 var messages = clickAndListen(); | 540 var messages = clickAndListen(); |
| 541 assertEquals(1, messages.length); | 541 assertEquals(1, messages.length); |
| 542 assertEquals('deleteProfile', messages[0]); | 542 assertEquals('deleteProfile', messages[0]); |
| 543 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 543 assertEquals('settings', PageManager.getTopmostVisiblePage().name); |
| 544 | 544 |
| 545 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); | 545 ManageProfileOverlay.showDeleteDialog(this.testProfileInfo_(false)); |
| 546 this.setProfileManaged_(true, 'manage'); | 546 this.setProfileManaged_(true, 'manage'); |
| 547 messages = clickAndListen(); | 547 messages = clickAndListen(); |
| 548 assertEquals(0, messages.length); | 548 assertEquals(0, messages.length); |
| 549 assertEquals('settings', OptionsPage.getTopmostVisiblePage().name); | 549 assertEquals('settings', PageManager.getTopmostVisiblePage().name); |
| 550 }); | 550 }); |
| 551 | 551 |
| 552 // Selecting a different avatar image should update the suggested profile name. | 552 // Selecting a different avatar image should update the suggested profile name. |
| 553 TEST_F('ManageProfileUITest', 'Create_NameUpdateOnAvatarSelected', function() { | 553 TEST_F('ManageProfileUITest', 'Create_NameUpdateOnAvatarSelected', function() { |
| 554 var mode = 'create'; | 554 var mode = 'create'; |
| 555 this.initDefaultProfiles_(mode); | 555 this.initDefaultProfiles_(mode); |
| 556 | 556 |
| 557 var gridEl = $(mode + '-profile-icon-grid'); | 557 var gridEl = $(mode + '-profile-icon-grid'); |
| 558 var nameEl = $(mode + '-profile-name'); | 558 var nameEl = $(mode + '-profile-name'); |
| 559 | 559 |
| 560 // Select another icon and check that the profile name was updated. | 560 // Select another icon and check that the profile name was updated. |
| 561 assertNotEquals(gridEl.selectedItem, this.defaultIconURLs[0]); | 561 assertNotEquals(gridEl.selectedItem, this.defaultIconURLs[0]); |
| 562 gridEl.selectedItem = this.defaultIconURLs[0]; | 562 gridEl.selectedItem = this.defaultIconURLs[0]; |
| 563 expectEquals(this.defaultNames[0], nameEl.value); | 563 expectEquals(this.defaultNames[0], nameEl.value); |
| 564 | 564 |
| 565 // Select icon without an associated name; the profile name shouldn't change. | 565 // Select icon without an associated name; the profile name shouldn't change. |
| 566 var oldName = nameEl.value; | 566 var oldName = nameEl.value; |
| 567 assertEquals('', this.defaultNames[2]); | 567 assertEquals('', this.defaultNames[2]); |
| 568 gridEl.selectedItem = this.defaultIconURLs[2]; | 568 gridEl.selectedItem = this.defaultIconURLs[2]; |
| 569 expectEquals(oldName, nameEl.value); | 569 expectEquals(oldName, nameEl.value); |
| 570 | 570 |
| 571 // Select another icon with a name and check that the name is updated again. | 571 // Select another icon with a name and check that the name is updated again. |
| 572 assertNotEquals('', this.defaultNames[1]); | 572 assertNotEquals('', this.defaultNames[1]); |
| 573 gridEl.selectedItem = this.defaultIconURLs[1]; | 573 gridEl.selectedItem = this.defaultIconURLs[1]; |
| 574 expectEquals(this.defaultNames[1], nameEl.value); | 574 expectEquals(this.defaultNames[1], nameEl.value); |
| 575 | 575 |
| 576 OptionsPage.closeOverlay(); | 576 PageManager.closeOverlay(); |
| 577 }); | 577 }); |
| 578 | 578 |
| 579 // After the user edited the profile name, selecting a different avatar image | 579 // After the user edited the profile name, selecting a different avatar image |
| 580 // should not update the suggested name anymore. | 580 // should not update the suggested name anymore. |
| 581 TEST_F('ManageProfileUITest', 'Create_NoNameUpdateOnAvatarSelectedAfterEdit', | 581 TEST_F('ManageProfileUITest', 'Create_NoNameUpdateOnAvatarSelectedAfterEdit', |
| 582 function() { | 582 function() { |
| 583 var mode = 'create'; | 583 var mode = 'create'; |
| 584 this.initDefaultProfiles_(mode); | 584 this.initDefaultProfiles_(mode); |
| 585 | 585 |
| 586 var gridEl = $(mode + '-profile-icon-grid'); | 586 var gridEl = $(mode + '-profile-icon-grid'); |
| 587 var nameEl = $(mode + '-profile-name'); | 587 var nameEl = $(mode + '-profile-name'); |
| 588 | 588 |
| 589 // After the user manually entered a name, it should not be changed anymore | 589 // After the user manually entered a name, it should not be changed anymore |
| 590 // (even if the entered name is another default name). | 590 // (even if the entered name is another default name). |
| 591 nameEl.value = this.defaultNames[3]; | 591 nameEl.value = this.defaultNames[3]; |
| 592 nameEl.oninput(); | 592 nameEl.oninput(); |
| 593 gridEl.selectedItem = this.defaultIconURLs[0]; | 593 gridEl.selectedItem = this.defaultIconURLs[0]; |
| 594 expectEquals(this.defaultNames[3], nameEl.value); | 594 expectEquals(this.defaultNames[3], nameEl.value); |
| 595 | 595 |
| 596 OptionsPage.closeOverlay(); | 596 PageManager.closeOverlay(); |
| 597 }); | 597 }); |
| 598 | 598 |
| 599 // After the user edited the profile name, selecting a different avatar image | 599 // After the user edited the profile name, selecting a different avatar image |
| 600 // should not update the suggested name anymore even if the original suggestion | 600 // should not update the suggested name anymore even if the original suggestion |
| 601 // is entered again. | 601 // is entered again. |
| 602 TEST_F('ManageProfileUITest', 'Create_NoNameUpdateOnAvatarSelectedAfterRevert', | 602 TEST_F('ManageProfileUITest', 'Create_NoNameUpdateOnAvatarSelectedAfterRevert', |
| 603 function() { | 603 function() { |
| 604 var mode = 'create'; | 604 var mode = 'create'; |
| 605 this.initDefaultProfiles_(mode); | 605 this.initDefaultProfiles_(mode); |
| 606 | 606 |
| 607 var gridEl = $(mode + '-profile-icon-grid'); | 607 var gridEl = $(mode + '-profile-icon-grid'); |
| 608 var nameEl = $(mode + '-profile-name'); | 608 var nameEl = $(mode + '-profile-name'); |
| 609 | 609 |
| 610 // After the user manually entered a name, it should not be changed anymore, | 610 // After the user manually entered a name, it should not be changed anymore, |
| 611 // even if the user then reverts to the original suggestion. | 611 // even if the user then reverts to the original suggestion. |
| 612 var oldName = nameEl.value; | 612 var oldName = nameEl.value; |
| 613 nameEl.value = 'Custom Name'; | 613 nameEl.value = 'Custom Name'; |
| 614 nameEl.oninput(); | 614 nameEl.oninput(); |
| 615 nameEl.value = oldName; | 615 nameEl.value = oldName; |
| 616 nameEl.oninput(); | 616 nameEl.oninput(); |
| 617 // Now select another avatar and check that the name remained the same. | 617 // Now select another avatar and check that the name remained the same. |
| 618 assertNotEquals(gridEl.selectedItem, this.defaultIconURLs[0]); | 618 assertNotEquals(gridEl.selectedItem, this.defaultIconURLs[0]); |
| 619 gridEl.selectedItem = this.defaultIconURLs[0]; | 619 gridEl.selectedItem = this.defaultIconURLs[0]; |
| 620 expectEquals(oldName, nameEl.value); | 620 expectEquals(oldName, nameEl.value); |
| 621 | 621 |
| 622 OptionsPage.closeOverlay(); | 622 PageManager.closeOverlay(); |
| 623 }); | 623 }); |
| 624 | 624 |
| 625 // In the manage dialog, the name should never be updated on avatar selection. | 625 // In the manage dialog, the name should never be updated on avatar selection. |
| 626 TEST_F('ManageProfileUITest', 'Manage_NoNameUpdateOnAvatarSelected', | 626 TEST_F('ManageProfileUITest', 'Manage_NoNameUpdateOnAvatarSelected', |
| 627 function() { | 627 function() { |
| 628 var mode = 'manage'; | 628 var mode = 'manage'; |
| 629 this.setProfileManaged_(false, mode); | 629 this.setProfileManaged_(false, mode); |
| 630 OptionsPage.showPageByName(mode + 'Profile'); | 630 PageManager.showPageByName(mode + 'Profile'); |
| 631 | 631 |
| 632 var testProfile = this.testProfileInfo_(false); | 632 var testProfile = this.testProfileInfo_(false); |
| 633 var iconURLs = [testProfile.iconURL, '/some/path', '/another/path']; | 633 var iconURLs = [testProfile.iconURL, '/some/path', '/another/path']; |
| 634 var names = [testProfile.name, 'Some Name', '']; | 634 var names = [testProfile.name, 'Some Name', '']; |
| 635 ManageProfileOverlay.receiveDefaultProfileIconsAndNames( | 635 ManageProfileOverlay.receiveDefaultProfileIconsAndNames( |
| 636 mode, iconURLs, names); | 636 mode, iconURLs, names); |
| 637 | 637 |
| 638 var gridEl = $(mode + '-profile-icon-grid'); | 638 var gridEl = $(mode + '-profile-icon-grid'); |
| 639 var nameEl = $(mode + '-profile-name'); | 639 var nameEl = $(mode + '-profile-name'); |
| 640 | 640 |
| 641 // Select another icon and check if the profile name was updated. | 641 // Select another icon and check if the profile name was updated. |
| 642 var oldName = nameEl.value; | 642 var oldName = nameEl.value; |
| 643 gridEl.selectedItem = iconURLs[1]; | 643 gridEl.selectedItem = iconURLs[1]; |
| 644 expectEquals(oldName, nameEl.value); | 644 expectEquals(oldName, nameEl.value); |
| 645 | 645 |
| 646 OptionsPage.closeOverlay(); | 646 PageManager.closeOverlay(); |
| 647 }); | 647 }); |
| 648 | 648 |
| 649 GEN('#endif // OS_CHROMEOS'); | 649 GEN('#endif // OS_CHROMEOS'); |
| OLD | NEW |