| OLD | NEW |
| 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 /** | 5 /** |
| 6 * @fileoverview Display manager for WebUI OOBE and login. | 6 * @fileoverview Display manager for WebUI OOBE and login. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 // TODO(xiyuan): Find a better to share those constants. | 9 // TODO(xiyuan): Find a better to share those constants. |
| 10 /** @const */ var SCREEN_OOBE_NETWORK = 'connect'; | 10 /** @const */ var SCREEN_OOBE_NETWORK = 'connect'; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 }; | 46 }; |
| 47 | 47 |
| 48 /* Possible UI states of the error screen. */ | 48 /* Possible UI states of the error screen. */ |
| 49 /** @const */ var ERROR_SCREEN_UI_STATE = { | 49 /** @const */ var ERROR_SCREEN_UI_STATE = { |
| 50 UNKNOWN: 'ui-state-unknown', | 50 UNKNOWN: 'ui-state-unknown', |
| 51 UPDATE: 'ui-state-update', | 51 UPDATE: 'ui-state-update', |
| 52 SIGNIN: 'ui-state-signin', | 52 SIGNIN: 'ui-state-signin', |
| 53 MANAGED_USER_CREATION_FLOW: 'ui-state-locally-managed' | 53 MANAGED_USER_CREATION_FLOW: 'ui-state-locally-managed' |
| 54 }; | 54 }; |
| 55 | 55 |
| 56 /* Possible types of UI. */ |
| 57 /** @const */ var DISPLAY_TYPE = { |
| 58 UNKNOWN: 'unknown', |
| 59 OOBE: 'oobe', |
| 60 LOGIN: 'login', |
| 61 LOCK: 'lock', |
| 62 USER_ADDING: 'user-adding' |
| 63 }; |
| 64 |
| 56 cr.define('cr.ui.login', function() { | 65 cr.define('cr.ui.login', function() { |
| 57 var Bubble = cr.ui.Bubble; | 66 var Bubble = cr.ui.Bubble; |
| 58 | 67 |
| 59 /** | 68 /** |
| 60 * Groups of screens (screen IDs) that should have the same dimensions. | 69 * Groups of screens (screen IDs) that should have the same dimensions. |
| 61 * @type Array.<Array.<string>> | 70 * @type Array.<Array.<string>> |
| 62 * @const | 71 * @const |
| 63 */ | 72 */ |
| 64 var SCREEN_GROUPS = [[SCREEN_OOBE_NETWORK, | 73 var SCREEN_GROUPS = [[SCREEN_OOBE_NETWORK, |
| 65 SCREEN_OOBE_EULA, | 74 SCREEN_OOBE_EULA, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 93 */ | 102 */ |
| 94 allowToggleVersion_: false, | 103 allowToggleVersion_: false, |
| 95 | 104 |
| 96 /** | 105 /** |
| 97 * Whether keyboard navigation flow is enforced. | 106 * Whether keyboard navigation flow is enforced. |
| 98 * @type {boolean} | 107 * @type {boolean} |
| 99 */ | 108 */ |
| 100 forceKeyboardFlow_: false, | 109 forceKeyboardFlow_: false, |
| 101 | 110 |
| 102 /** | 111 /** |
| 112 * Type of UI. |
| 113 * @type {string} |
| 114 */ |
| 115 displayType_: DISPLAY_TYPE.UNKNOWN, |
| 116 |
| 117 get displayType() { |
| 118 return this.displayType_; |
| 119 }, |
| 120 |
| 121 set displayType(displayType) { |
| 122 this.displayType_ = displayType; |
| 123 }, |
| 124 |
| 125 /** |
| 103 * Gets current screen element. | 126 * Gets current screen element. |
| 104 * @type {HTMLElement} | 127 * @type {HTMLElement} |
| 105 */ | 128 */ |
| 106 get currentScreen() { | 129 get currentScreen() { |
| 107 return $(this.screens_[this.currentStep_]); | 130 return $(this.screens_[this.currentStep_]); |
| 108 }, | 131 }, |
| 109 | 132 |
| 110 /** | 133 /** |
| 111 * Hides/shows header (Shutdown/Add User/Cancel buttons). | 134 * Hides/shows header (Shutdown/Add User/Cancel buttons). |
| 112 * @param {boolean} hidden Whether header is hidden. | 135 * @param {boolean} hidden Whether header is hidden. |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 if (defaultControl) | 333 if (defaultControl) |
| 311 defaultControl.focus(); | 334 defaultControl.focus(); |
| 312 }); | 335 }); |
| 313 } else { | 336 } else { |
| 314 oldStep.classList.add('hidden'); | 337 oldStep.classList.add('hidden'); |
| 315 if (defaultControl) | 338 if (defaultControl) |
| 316 defaultControl.focus(); | 339 defaultControl.focus(); |
| 317 } | 340 } |
| 318 } else { | 341 } else { |
| 319 // First screen on OOBE launch. | 342 // First screen on OOBE launch. |
| 320 if (document.body.classList.contains('oobe-display') && | 343 if (this.isOobeUI() && innerContainer.classList.contains('down')) { |
| 321 innerContainer.classList.contains('down')) { | |
| 322 innerContainer.classList.remove('down'); | 344 innerContainer.classList.remove('down'); |
| 323 innerContainer.addEventListener( | 345 innerContainer.addEventListener( |
| 324 'webkitTransitionEnd', function f(e) { | 346 'webkitTransitionEnd', function f(e) { |
| 325 innerContainer.removeEventListener('webkitTransitionEnd', f); | 347 innerContainer.removeEventListener('webkitTransitionEnd', f); |
| 326 $('progress-dots').classList.remove('down'); | 348 $('progress-dots').classList.remove('down'); |
| 327 chrome.send('loginVisible', ['oobe']); | 349 chrome.send('loginVisible', ['oobe']); |
| 328 // Refresh defaultControl. It could have changed. | 350 // Refresh defaultControl. It could have changed. |
| 329 var defaultControl = newStep.defaultControl; | 351 var defaultControl = newStep.defaultControl; |
| 330 if (defaultControl) | 352 if (defaultControl) |
| 331 defaultControl.focus(); | 353 defaultControl.focus(); |
| 332 }); | 354 }); |
| 333 } else { | 355 } else { |
| 334 if (defaultControl) | 356 if (defaultControl) |
| 335 defaultControl.focus(); | 357 defaultControl.focus(); |
| 336 } | 358 } |
| 337 newHeader.classList.remove('right'); // Old OOBE. | |
| 338 } | 359 } |
| 339 this.currentStep_ = nextStepIndex; | 360 this.currentStep_ = nextStepIndex; |
| 340 $('oobe').className = nextStepId; | 361 $('oobe').className = nextStepId; |
| 341 | 362 |
| 342 $('step-logo').hidden = newStep.classList.contains('no-logo'); | 363 $('step-logo').hidden = newStep.classList.contains('no-logo'); |
| 343 | 364 |
| 344 chrome.send('updateCurrentScreen', [this.currentScreen.id]); | 365 chrome.send('updateCurrentScreen', [this.currentScreen.id]); |
| 345 }, | 366 }, |
| 346 | 367 |
| 347 /** | 368 /** |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 524 * @param {string} requisition The device requisition. | 545 * @param {string} requisition The device requisition. |
| 525 */ | 546 */ |
| 526 updateDeviceRequisition: function(requisition) { | 547 updateDeviceRequisition: function(requisition) { |
| 527 this.deviceRequisition_ = requisition; | 548 this.deviceRequisition_ = requisition; |
| 528 }, | 549 }, |
| 529 | 550 |
| 530 /** | 551 /** |
| 531 * Returns true if Oobe UI is shown. | 552 * Returns true if Oobe UI is shown. |
| 532 */ | 553 */ |
| 533 isOobeUI: function() { | 554 isOobeUI: function() { |
| 534 return !document.body.classList.contains('login-display'); | 555 return document.body.classList.contains('oobe-display'); |
| 535 }, | 556 }, |
| 536 | 557 |
| 537 /** | 558 /** |
| 538 * Returns true if the current UI type is the "Sign-in to add user" | |
| 539 * (another user session is already active). | |
| 540 */ | |
| 541 isSignInToAddScreen: function() { | |
| 542 return document.documentElement.getAttribute('screen') == | |
| 543 'user-adding'; | |
| 544 }, | |
| 545 | |
| 546 /** | |
| 547 * Returns true if the current UI type is the lock screen. | |
| 548 */ | |
| 549 isLockScreen: function() { | |
| 550 return document.documentElement.getAttribute('screen') == 'lock'; | |
| 551 }, | |
| 552 | |
| 553 /** | |
| 554 * Returns true if sign in UI should trigger wallpaper load on boot. | 559 * Returns true if sign in UI should trigger wallpaper load on boot. |
| 555 */ | 560 */ |
| 556 shouldLoadWallpaperOnBoot: function() { | 561 shouldLoadWallpaperOnBoot: function() { |
| 557 return loadTimeData.getString('bootIntoWallpaper') == 'on'; | 562 return loadTimeData.getString('bootIntoWallpaper') == 'on'; |
| 558 }, | 563 }, |
| 559 }; | 564 }; |
| 560 | 565 |
| 561 /** | 566 /** |
| 562 * Initializes display manager. | 567 * Initializes display manager. |
| 563 */ | 568 */ |
| 564 DisplayManager.initialize = function() { | 569 DisplayManager.initialize = function() { |
| 565 // Extracting screen type from URL. | 570 // Extracting display type from URL. |
| 566 var hash = window.location.hash; | 571 var path = window.location.pathname.substr(1); |
| 567 var screenType; | 572 var displayType = DISPLAY_TYPE.UNKNOWN; |
| 568 if (!hash) { | 573 Object.getOwnPropertyNames(DISPLAY_TYPE).forEach(function(type) { |
| 569 console.error('Screen type not found. Setting default value "login".'); | 574 if (DISPLAY_TYPE[type] == path) { |
| 570 screenType = 'login'; | 575 displayType = path; |
| 571 } else { | 576 } |
| 572 screenType = hash.substring(1); | 577 }); |
| 578 if (displayType == DISPLAY_TYPE.UNKNOWN) { |
| 579 console.error("Unknown display type '" + path + "'. Setting default."); |
| 580 displayType = DISPLAY_TYPE.LOGIN; |
| 573 } | 581 } |
| 574 document.documentElement.setAttribute('screen', screenType); | 582 Oobe.getInstance().displayType = displayType; |
| 583 document.documentElement.setAttribute('screen', displayType); |
| 575 | 584 |
| 576 var link = $('enterprise-info-hint-link'); | 585 var link = $('enterprise-info-hint-link'); |
| 577 link.addEventListener( | 586 link.addEventListener( |
| 578 'click', DisplayManager.handleEnterpriseHintLinkClick); | 587 'click', DisplayManager.handleEnterpriseHintLinkClick); |
| 579 }, | 588 }, |
| 580 | 589 |
| 581 /** | 590 /** |
| 582 * Returns offset (top, left) of the element. | 591 * Returns offset (top, left) of the element. |
| 583 * @param {!Element} element HTML element. | 592 * @param {!Element} element HTML element. |
| 584 * @return {!Object} The offset (top, left). | 593 * @return {!Object} The offset (top, left). |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 757 */ | 766 */ |
| 758 DisplayManager.refocusCurrentPod = function() { | 767 DisplayManager.refocusCurrentPod = function() { |
| 759 $('pod-row').refocusCurrentPod(); | 768 $('pod-row').refocusCurrentPod(); |
| 760 }; | 769 }; |
| 761 | 770 |
| 762 // Export | 771 // Export |
| 763 return { | 772 return { |
| 764 DisplayManager: DisplayManager | 773 DisplayManager: DisplayManager |
| 765 }; | 774 }; |
| 766 }); | 775 }); |
| OLD | NEW |