Chromium Code Reviews| Index: chrome/browser/resources/chromeos/login/display_manager.js |
| diff --git a/chrome/browser/resources/chromeos/login/display_manager.js b/chrome/browser/resources/chromeos/login/display_manager.js |
| index c07d93425fa17fd39ce92ed9dbf8c5f7eae73ee8..2e8983cded091b75346deb55d56fd432dd1cc03a 100644 |
| --- a/chrome/browser/resources/chromeos/login/display_manager.js |
| +++ b/chrome/browser/resources/chromeos/login/display_manager.js |
| @@ -9,6 +9,7 @@ |
| // TODO(xiyuan): Find a better to share those constants. |
| /** @const */ var SCREEN_OOBE_NETWORK = 'connect'; |
| /** @const */ var SCREEN_OOBE_EULA = 'eula'; |
| +/** @const */ var SCREEN_OOBE_UPDATE = 'update'; |
| /** @const */ var SCREEN_OOBE_ENROLLMENT = 'oauth-enrollment'; |
| /** @const */ var SCREEN_GAIA_SIGNIN = 'gaia-signin'; |
| /** @const */ var SCREEN_ACCOUNT_PICKER = 'account-picker'; |
| @@ -25,6 +26,16 @@ cr.define('cr.ui.login', function() { |
| var Bubble = cr.ui.Bubble; |
| /** |
| + * Groups of screens (screen IDs) that should have the same dimensions. |
| + * @type Array.<Array.<string>> |
| + * @const |
| + */ |
| + var SCREEN_GROUPS = [[SCREEN_OOBE_NETWORK, |
| + SCREEN_OOBE_EULA, |
| + SCREEN_OOBE_UPDATE] |
| + ]; |
| + |
| + /** |
| * Constructor a display manager that manages initialization of screens, |
| * transitions, error messages display. |
| * |
| @@ -109,7 +120,7 @@ cr.define('cr.ui.login', function() { |
| /** |
| * Appends buttons to the button strip. |
| - * @param {Array} buttons Array with the buttons to append. |
| + * @param {Array.<HTMLElement>} buttons Array with the buttons to append. |
| * @param {string} screenId Id of the screen that buttons belong to. |
| */ |
| appendButtons_: function(buttons, screenId) { |
| @@ -127,6 +138,19 @@ cr.define('cr.ui.login', function() { |
| }, |
| /** |
| + * Disables or enables control buttons on the specified screen. |
| + * @param {HTMLElement} screen Screen which controls should be affected. |
| + * @param {boolean} disabled Whether to disable controls. |
| + */ |
| + disableButtons_: function(screen, disabled) { |
| + var buttons = document.querySelectorAll( |
| + '#' + screen.id + '-controls button'); |
| + for (var i = 0; i < buttons.length; ++i) { |
| + buttons[i].disabled = disabled; |
| + } |
| + }, |
| + |
| + /** |
| * Updates a step's css classes to reflect left, current, or right position. |
| * @param {number} stepIndex step index. |
| * @param {string} state one of 'left', 'current', 'right'. |
| @@ -157,6 +181,9 @@ cr.define('cr.ui.login', function() { |
| var newStep = $(nextStepId); |
| var newHeader = $('header-' + nextStepId); |
| + // Disable controls before starting animation. |
| + this.disableButtons_(oldStep, true); |
| + |
| if (oldStep.onBeforeHide) |
| oldStep.onBeforeHide(); |
| @@ -168,6 +195,8 @@ cr.define('cr.ui.login', function() { |
| if (newStep.onAfterShow) |
| newStep.onAfterShow(screenData); |
| + this.disableButtons_(newStep, false); |
| + |
| if (this.isOobeUI()) { |
| // Start gliding animation for OOBE steps. |
| if (nextStepIndex > this.currentStep_) { |
| @@ -190,14 +219,7 @@ cr.define('cr.ui.login', function() { |
| if (this.currentStep_ != nextStepIndex && |
| !oldStep.classList.contains('hidden')) { |
| - // TODO(nkostylev): Remove when new transitions are added back. |
| - if (this.isNewOobe()) { |
|
Nikita (slow)
2012/08/10 08:43:21
Please leave support for this flag for now.
Ivan Korotkov
2012/08/10 10:12:41
Done.
|
| - if (oldStep.classList.contains('faded') || |
| - oldStep.classList.contains('left') || |
| - oldStep.classList.contains('right')) { |
| - oldStep.classList.add('hidden'); |
| - } |
| - } else { |
| + if (oldStep.classList.contains('animated')) { |
| oldStep.addEventListener('webkitTransitionEnd', function f(e) { |
| oldStep.removeEventListener('webkitTransitionEnd', f); |
| if (oldStep.classList.contains('faded') || |
| @@ -206,8 +228,11 @@ cr.define('cr.ui.login', function() { |
| oldStep.classList.add('hidden'); |
| } |
| }); |
| + } else { |
| + oldStep.classList.add('hidden'); |
| } |
| } else { |
| + // TODO(ivankr): initial animation. |
|
Nikita (slow)
2012/08/10 08:43:21
Could you please add it as a part of this CL if po
Ivan Korotkov
2012/08/10 10:12:41
Done.
|
| // First screen on OOBE launch. |
| newHeader.classList.remove('right'); |
| // Report back first OOBE screen being painted. |
| @@ -217,6 +242,8 @@ cr.define('cr.ui.login', function() { |
| } |
| this.currentStep_ = nextStepIndex; |
| $('oobe').className = nextStepId; |
| + |
| + $('step-logo').hidden = newStep.classList.contains('no-logo'); |
| }, |
| /** |
| @@ -283,14 +310,31 @@ cr.define('cr.ui.login', function() { |
| }, |
| /** |
| - * Updates inner container size based on the size of the current screen. |
| + * Updates inner container size based on the size of the current screen and |
| + * other screens in the same group. |
| * Should be executed on screen change / screen size change. |
| * @param {!HTMLElement} screen Screen that is being shown. |
| */ |
| updateInnerContainerSize_: function(screen) { |
| - $('inner-container').style.height = screen.offsetHeight + 'px'; |
| - if (this.isNewOobe()) |
| - $('inner-container').style.width = screen.offsetWidth + 'px'; |
| + var height = screen.offsetHeight; |
| + var width = screen.offsetWidth; |
| + for (var i = 0, screenGroup; screenGroup = SCREEN_GROUPS[i]; i++) { |
| + if (screenGroup.indexOf(screen.id) != -1) { |
| + // Set screen dimensions to maximum dimensions within this group. |
| + for (var j = 0, screen2; screen2 = $(screenGroup[j]); j++) { |
|
Nikita (slow)
2012/08/10 08:43:21
We might as well cache these max values.
|
| + height = Math.max(height, screen2.offsetHeight); |
| + width = Math.max(width, screen2.offsetWidth); |
| + } |
| + break; |
| + } |
| + } |
| + $('inner-container').style.height = height + 'px'; |
| + if (this.isNewOobe()) { |
| + $('inner-container').style.width = width + 'px'; |
| + // This requires |screen| to have |box-sizing: border-box|. |
| + screen.style.width = width + 'px'; |
| + screen.style.height = height + 'px'; |
| + } |
| }, |
| /** |
| @@ -303,7 +347,7 @@ cr.define('cr.ui.login', function() { |
| for (var i = 0, screenId; screenId = this.screens_[i]; ++i) { |
| var screen = $(screenId); |
| if (this.isNewOobe()) { |
| - buttonStrip = $(screenId + '-controls'); |
| + var buttonStrip = $(screenId + '-controls'); |
| if (buttonStrip) |
| buttonStrip.innerHTML = ''; |
| // TODO(nkostylev): Update screen headers for new OOBE design. |