1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @fileoverview Display manager for WebUI OOBE and login. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(xiyuan): Find a better to share those constants. 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @const */ var SCREEN_OOBE_NETWORK = 'connect'; 11a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch/** @const */ var SCREEN_OOBE_HID_DETECTION = 'hid-detection'; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @const */ var SCREEN_OOBE_EULA = 'eula'; 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @const */ var SCREEN_OOBE_UPDATE = 'update'; 140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** @const */ var SCREEN_OOBE_RESET = 'reset'; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @const */ var SCREEN_OOBE_ENROLLMENT = 'oauth-enrollment'; 167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)/** @const */ var SCREEN_OOBE_KIOSK_ENABLE = 'kiosk-enable'; 1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)/** @const */ var SCREEN_OOBE_AUTO_ENROLLMENT_CHECK = 'auto-enrollment-check'; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @const */ var SCREEN_GAIA_SIGNIN = 'gaia-signin'; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @const */ var SCREEN_ACCOUNT_PICKER = 'account-picker'; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @const */ var SCREEN_USER_IMAGE_PICKER = 'user-image'; 210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** @const */ var SCREEN_ERROR_MESSAGE = 'error-message'; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** @const */ var SCREEN_TPM_ERROR = 'tpm-error-message'; 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** @const */ var SCREEN_PASSWORD_CHANGED = 'password-changed'; 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/** @const */ var SCREEN_CREATE_SUPERVISED_USER_FLOW = 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 'supervised-user-creation'; 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)/** @const */ var SCREEN_APP_LAUNCH_SPLASH = 'app-launch-splash'; 27d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)/** @const */ var SCREEN_CONFIRM_PASSWORD = 'confirm-password'; 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** @const */ var SCREEN_FATAL_ERROR = 'fatal-error'; 290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** @const */ var SCREEN_KIOSK_ENABLE = 'kiosk-enable'; 300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** @const */ var SCREEN_TERMS_OF_SERVICE = 'terms-of-service'; 310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch/** @const */ var SCREEN_WRONG_HWID = 'wrong-hwid'; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Accelerator identifiers. Must be kept in sync with webui_login_view.cc. */ 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @const */ var ACCELERATOR_CANCEL = 'cancel'; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @const */ var ACCELERATOR_ENROLLMENT = 'enrollment'; 367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)/** @const */ var ACCELERATOR_KIOSK_ENABLE = 'kiosk_enable'; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @const */ var ACCELERATOR_VERSION = 'version'; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** @const */ var ACCELERATOR_RESET = 'reset'; 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** @const */ var ACCELERATOR_FOCUS_PREV = 'focus_prev'; 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** @const */ var ACCELERATOR_FOCUS_NEXT = 'focus_next'; 41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)/** @const */ var ACCELERATOR_DEVICE_REQUISITION = 'device_requisition'; 42868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)/** @const */ var ACCELERATOR_DEVICE_REQUISITION_REMORA = 43868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 'device_requisition_remora'; 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch/** @const */ var ACCELERATOR_DEVICE_REQUISITION_SHARK = 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 'device_requisition_shark'; 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)/** @const */ var ACCELERATOR_APP_LAUNCH_BAILOUT = 'app_launch_bailout'; 47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch/** @const */ var ACCELERATOR_APP_LAUNCH_NETWORK_CONFIG = 48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 'app_launch_network_config'; 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/** @const */ var ACCELERATOR_SHOW_ROLLBACK_ON_RESET = 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'show_rollback_on_reset_screen'; 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/** @const */ var ACCELERATOR_HIDE_ROLLBACK_ON_RESET = 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 'hide_rollback_on_reset_screen'; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* Signin UI state constants. Used to control header bar UI. */ 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** @const */ var SIGNIN_UI_STATE = { 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HIDDEN: 0, 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GAIA_SIGNIN: 1, 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ACCOUNT_PICKER: 2, 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WRONG_HWID_WARNING: 3, 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SUPERVISED_USER_CREATION_FLOW: 4, 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SAML_PASSWORD_CONFIRM: 5, 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CONSUMER_MANAGEMENT_ENROLLMENT: 6, 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}; 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/* Possible UI states of the error screen. */ 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/** @const */ var ERROR_SCREEN_UI_STATE = { 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) UNKNOWN: 'ui-state-unknown', 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) UPDATE: 'ui-state-update', 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) SIGNIN: 'ui-state-signin', 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SUPERVISED_USER_CREATION_FLOW: 'ui-state-supervised', 7158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) KIOSK_MODE: 'ui-state-kiosk-mode', 72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) LOCAL_STATE_ERROR: 'ui-state-local-state-error', 73010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) AUTO_ENROLLMENT_ERROR: 'ui-state-auto-enrollment-error', 74010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) ROLLBACK_ERROR: 'ui-state-rollback-error' 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)/* Possible types of UI. */ 783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)/** @const */ var DISPLAY_TYPE = { 793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) UNKNOWN: 'unknown', 803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) OOBE: 'oobe', 813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) LOGIN: 'login', 823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) LOCK: 'lock', 833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) USER_ADDING: 'user-adding', 84f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) APP_LAUNCH_SPLASH: 'app-launch-splash', 85f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DESKTOP_USER_MANAGER: 'login-add-user' 863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}; 873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)cr.define('cr.ui.login', function() { 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var Bubble = cr.ui.Bubble; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 92ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch * Maximum time in milliseconds to wait for step transition to finish. 93ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch * The value is used as the duration for ensureTransitionEndEvent below. 94ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch * It needs to be inline with the step screen transition duration time 95ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch * defined in css file. The current value in css is 200ms. To avoid emulated 96ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch * webkitTransitionEnd fired before real one, 250ms is used. 97ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch * @const 98ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch */ 99ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch var MAX_SCREEN_TRANSITION_DURATION = 250; 100ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 101ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch /** 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Groups of screens (screen IDs) that should have the same dimensions. 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type Array.<Array.<string>> 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @const 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var SCREEN_GROUPS = [[SCREEN_OOBE_NETWORK, 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SCREEN_OOBE_EULA, 10846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) SCREEN_OOBE_UPDATE, 10946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) SCREEN_OOBE_AUTO_ENROLLMENT_CHECK] 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ]; 1110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch /** 1120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Group of screens (screen IDs) where factory-reset screen invocation is 1130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * available. 1140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @type Array.<string> 1150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @const 1160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 1170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch var RESET_AVAILABLE_SCREEN_GROUP = [ 1180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_OOBE_NETWORK, 1190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_OOBE_EULA, 1200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_OOBE_UPDATE, 1210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_OOBE_ENROLLMENT, 12246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) SCREEN_OOBE_AUTO_ENROLLMENT_CHECK, 1230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_GAIA_SIGNIN, 1240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_ACCOUNT_PICKER, 1250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_KIOSK_ENABLE, 1260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_ERROR_MESSAGE, 1270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_USER_IMAGE_PICKER, 1280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_TPM_ERROR, 1290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_PASSWORD_CHANGED, 1300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_TERMS_OF_SERVICE, 1310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_WRONG_HWID, 1320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_CONFIRM_PASSWORD, 1330529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_FATAL_ERROR 1340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ]; 1350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch /** 1370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * Group of screens (screen IDs) that are not participating in 1380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * left-current-right animation. 1390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @type Array.<string> 1400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch * @const 1410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch */ 1420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch var NOT_ANIMATED_SCREEN_GROUP = [ 1430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch SCREEN_OOBE_RESET 1440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ]; 1450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 148c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch * OOBE screens group index. 149c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch */ 150c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch var SCREEN_GROUP_OOBE = 0; 151c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 152c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch /** 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Constructor a display manager that manages initialization of screens, 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * transitions, error messages display. 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @constructor 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function DisplayManager() { 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayManager.prototype = { 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Registered screens. 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screens_: [], 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Current OOBE step, index in the screens array. 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {number} 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) currentStep_: 0, 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Whether version label can be toggled by ACCELERATOR_VERSION. 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {boolean} 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) allowToggleVersion_: false, 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Whether keyboard navigation flow is enforced. 181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @type {boolean} 182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) forceKeyboardFlow_: false, 184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 186cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Whether virtual keyboard is shown. 187cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @type {boolean} 188cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 189cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtualKeyboardShown_: false, 190cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 191cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) /** 192cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Virtual keyboard width. 193cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @type {number} 194cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 195cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtualKeyboardWidth_: 0, 196cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 197cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) /** 198cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Virtual keyboard height. 199cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @type {number} 200cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 201cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtualKeyboardHeight_: 0, 202cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 203cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) /** 2043551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * Type of UI. 2053551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * @type {string} 2063551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) */ 2073551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) displayType_: DISPLAY_TYPE.UNKNOWN, 2083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 209cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) /** 210cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Error message (bubble) was shown. This is checked in tests. 211cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 212cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) errorMessageWasShownForTesting_: false, 213cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 2143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) get displayType() { 2153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return this.displayType_; 2163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) }, 2173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) set displayType(displayType) { 2193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) this.displayType_ = displayType; 220f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) document.documentElement.setAttribute('screen', displayType); 221f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) }, 222f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 2235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) get newKioskUI() { 2245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return loadTimeData.getString('newKioskUI') == 'on'; 2255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) }, 2265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 227f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) /** 228f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Returns dimensions of screen exluding header bar. 229f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @type {Object} 230f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 231f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) get clientAreaSize() { 232f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) var container = $('outer-container'); 233f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return {width: container.offsetWidth, height: container.offsetHeight}; 2343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) }, 2353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) /** 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Gets current screen element. 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @type {HTMLElement} 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) get currentScreen() { 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return $(this.screens_[this.currentStep_]); 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Hides/shows header (Shutdown/Add User/Cancel buttons). 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {boolean} hidden Whether header is hidden. 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) get headerHidden() { 2495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return $('login-header-bar').hidden; 2505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) }, 2515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set headerHidden(hidden) { 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('login-header-bar').hidden = hidden; 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 257cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Virtual keyboard state (hidden/shown). 258cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @param {boolean} hidden Whether keyboard is shown. 259cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 260cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) get virtualKeyboardShown() { 261cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return this.virtualKeyboardShown_; 262cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) }, 263cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 264cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) set virtualKeyboardShown(shown) { 265cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.virtualKeyboardShown_ = shown; 266cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) }, 267cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 268cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) /** 269cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Sets the current size of the virtual keyboard. 270cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @param {number} width keyboard width 271cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @param {number} height keyboard height 272cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 273cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) setVirtualKeyboardSize: function(width, height) { 274cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.virtualKeyboardWidth_ = width; 275cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.virtualKeyboardHeight_ = height; 276cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) }, 277cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 278cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) /** 279cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Sets the current size of the client area (display size). 280cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @param {number} width client area width 281cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @param {number} height client area height 282cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 283cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) setClientAreaSize: function(width, height) { 284cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) var clientArea = $('outer-container'); 285cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) var bottom = parseInt(window.getComputedStyle(clientArea).bottom); 286cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) clientArea.style.minHeight = cr.ui.toCssPx(height - bottom); 287cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) }, 288cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 289cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) /** 29058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Toggles background of main body between transparency and solid. 29158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * @param {boolean} solid Whether to show a solid background. 29258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) */ 29358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) set solidBackground(solid) { 29458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (solid) 29558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) document.body.classList.add('solid'); 29658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) else 29758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) document.body.classList.remove('solid'); 29858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) }, 29958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 30058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) /** 301c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Forces keyboard based OOBE navigation. 302c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @param {boolean} value True if keyboard navigation flow is forced. 303c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 304c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) set forceKeyboardFlow(value) { 305c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.forceKeyboardFlow_ = value; 3065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (value) { 307c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) keyboard.initializeKeyboardFlow(); 3080529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch cr.ui.DropDown.enableKeyboardFlow(); 309cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) for (var i = 0; i < this.screens_.length; ++i) { 310cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) var screen = $(this.screens_[i]); 311cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (screen.enableKeyboardFlow) 312cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) screen.enableKeyboardFlow(); 313cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 3145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }, 316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) /** 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Shows/hides version labels. 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {boolean} show Whether labels should be visible by default. If 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * false, visibility can be toggled by ACCELERATOR_VERSION. 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) showVersion: function(show) { 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('version-labels').hidden = !show; 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.allowToggleVersion_ = !show; 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Handle accelerators. 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} name Accelerator name. 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) handleAccelerator: function(name) { 332c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch var currentStepId = this.screens_[this.currentStep_]; 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (name == ACCELERATOR_CANCEL) { 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.currentScreen.cancel) { 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.currentScreen.cancel(); 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (name == ACCELERATOR_ENROLLMENT) { 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (currentStepId == SCREEN_GAIA_SIGNIN || 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) currentStepId == SCREEN_ACCOUNT_PICKER) { 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome.send('toggleEnrollmentScreen'); 34146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } else if (currentStepId == SCREEN_OOBE_NETWORK || 34246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) currentStepId == SCREEN_OOBE_EULA) { 34346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // In this case update check will be skipped and OOBE will 34446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // proceed straight to enrollment screen when EULA is accepted. 34546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) chrome.send('skipUpdateEnrollAfterEula'); 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (currentStepId == SCREEN_OOBE_ENROLLMENT) { 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This accelerator is also used to manually cancel auto-enrollment. 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.currentScreen.cancelAutoEnrollment) 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.currentScreen.cancelAutoEnrollment(); 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } else if (name == ACCELERATOR_KIOSK_ENABLE) { 3527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) if (currentStepId == SCREEN_GAIA_SIGNIN || 3537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) currentStepId == SCREEN_ACCOUNT_PICKER) { 3547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) chrome.send('toggleKioskEnableScreen'); 3557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (name == ACCELERATOR_VERSION) { 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.allowToggleVersion_) 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('version-labels').hidden = !$('version-labels').hidden; 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (name == ACCELERATOR_RESET) { 3600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch if (RESET_AVAILABLE_SCREEN_GROUP.indexOf(currentStepId) != -1) 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome.send('toggleResetScreen'); 362868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } else if (name == ACCELERATOR_DEVICE_REQUISITION) { 363868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (this.isOobeUI()) 364868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) this.showDeviceRequisitionPrompt_(); 365868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } else if (name == ACCELERATOR_DEVICE_REQUISITION_REMORA) { 366f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (this.isOobeUI()) 367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch this.showDeviceRequisitionRemoraPrompt_( 368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 'deviceRequisitionRemoraPromptText', 'remora'); 369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } else if (name == ACCELERATOR_DEVICE_REQUISITION_SHARK) { 370116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (this.isOobeUI()) 371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch this.showDeviceRequisitionRemoraPrompt_( 372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 'deviceRequisitionSharkPromptText', 'shark'); 3733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } else if (name == ACCELERATOR_APP_LAUNCH_BAILOUT) { 3743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (currentStepId == SCREEN_APP_LAUNCH_SPLASH) 3753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) chrome.send('cancelAppLaunch'); 376effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } else if (name == ACCELERATOR_APP_LAUNCH_NETWORK_CONFIG) { 377effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (currentStepId == SCREEN_APP_LAUNCH_SPLASH) 378effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch chrome.send('networkConfigRequest'); 3791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else if (name == ACCELERATOR_SHOW_ROLLBACK_ON_RESET) { 3801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (currentStepId == SCREEN_OOBE_RESET) 3811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chrome.send('showRollbackOnResetScreen'); 3821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } else if (name == ACCELERATOR_HIDE_ROLLBACK_ON_RESET) { 3831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (currentStepId == SCREEN_OOBE_RESET) 3841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chrome.send('hideRollbackOnResetScreen'); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 386c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 387c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!this.forceKeyboardFlow_) 388c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return; 389c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 390c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Handle special accelerators for keyboard enhanced navigation flow. 3915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (name == ACCELERATOR_FOCUS_PREV) 392c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) keyboard.raiseKeyFocusPrevious(document.activeElement); 3935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) else if (name == ACCELERATOR_FOCUS_NEXT) 394c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) keyboard.raiseKeyFocusNext(document.activeElement); 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Appends buttons to the button strip. 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Array.<HTMLElement>} buttons Array with the buttons to append. 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} screenId Id of the screen that buttons belong to. 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) appendButtons_: function(buttons, screenId) { 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (buttons) { 4042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var buttonStrip = $(screenId + '-controls'); 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (buttonStrip) { 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < buttons.length; ++i) 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) buttonStrip.appendChild(buttons[i]); 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Disables or enables control buttons on the specified screen. 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {HTMLElement} screen Screen which controls should be affected. 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {boolean} disabled Whether to disable controls. 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disableButtons_: function(screen, disabled) { 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var buttons = document.querySelectorAll( 4192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) '#' + screen.id + '-controls button:not(.preserve-disabled-state)'); 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < buttons.length; ++i) { 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) buttons[i].disabled = disabled; 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch screenIsAnimated_: function(screenId) { 4260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch return NOT_ANIMATED_SCREEN_GROUP.indexOf(screenId) != -1; 4270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch }, 4280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates a step's css classes to reflect left, current, or right position. 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {number} stepIndex step index. 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} state one of 'left', 'current', 'right'. 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) updateStep_: function(stepIndex, state) { 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var stepId = this.screens_[stepIndex]; 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var step = $(stepId); 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var header = $('header-' + stepId); 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var states = ['left', 'right', 'current']; 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < states.length; ++i) { 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (states[i] != state) { 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) step.classList.remove(states[i]); 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) header.classList.remove(states[i]); 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) step.classList.add(state); 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) header.classList.add(state); 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Switches to the next OOBE step. 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {number} nextStepIndex Index of the next step. 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) toggleStep_: function(nextStepIndex, screenData) { 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var currentStepId = this.screens_[this.currentStep_]; 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var nextStepId = this.screens_[nextStepIndex]; 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var oldStep = $(currentStepId); 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var newStep = $(nextStepId); 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var newHeader = $('header-' + nextStepId); 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Disable controls before starting animation. 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.disableButtons_(oldStep, true); 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (oldStep.onBeforeHide) 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldStep.onBeforeHide(); 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 467f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) $('oobe').className = nextStepId; 468f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 469c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Need to do this before calling newStep.onBeforeShow() so that new step 470c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // is back in DOM tree and has correct offsetHeight / offsetWidth. 471c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch newStep.hidden = false; 472c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (newStep.onBeforeShow) 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newStep.onBeforeShow(screenData); 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newStep.classList.remove('hidden'); 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4780529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch if (this.isOobeUI() && 4790529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch this.screenIsAnimated_(nextStepId) && 4800529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch this.screenIsAnimated_(currentStepId)) { 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Start gliding animation for OOBE steps. 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (nextStepIndex > this.currentStep_) { 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = this.currentStep_; i < nextStepIndex; ++i) 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateStep_(i, 'left'); 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateStep_(nextStepIndex, 'current'); 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (nextStepIndex < this.currentStep_) { 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = this.currentStep_; i > nextStepIndex; --i) 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateStep_(i, 'right'); 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateStep_(nextStepIndex, 'current'); 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 4920529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Start fading animation for login display or reset screen. 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldStep.classList.add('faded'); 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) newStep.classList.remove('faded'); 4950529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch if (!this.screenIsAnimated_(nextStepId)) { 4960529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch newStep.classList.remove('left'); 4970529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch newStep.classList.remove('right'); 4980529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch } 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 501f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) this.disableButtons_(newStep, false); 502f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Adjust inner container height based on new step's height. 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateScreenSize(newStep); 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 506f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (newStep.onAfterShow) 507f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) newStep.onAfterShow(screenData); 508f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 509effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Workaround for gaia and network screens. 510effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Due to other origin iframe and long ChromeVox focusing correspondingly 511effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // passive aria-label title is not pronounced. 512effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Gaia hack can be removed on fixed crbug.com/316726. 513effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch if (nextStepId == SCREEN_GAIA_SIGNIN) { 514effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch newStep.setAttribute( 515effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 'aria-label', 516effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch loadTimeData.getString('signinScreenTitle')); 517effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } else if (nextStepId == SCREEN_OOBE_NETWORK) { 518effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch newStep.setAttribute( 519effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 'aria-label', 520effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch loadTimeData.getString('networkScreenAccessibleTitle')); 521effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch } 522effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 523f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Default control to be focused (if specified). 524f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) var defaultControl = newStep.defaultControl; 525f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 526c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch var outerContainer = $('outer-container'); 5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var innerContainer = $('inner-container'); 528c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch var isOOBE = this.isOobeUI(); 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.currentStep_ != nextStepIndex && 5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) !oldStep.classList.contains('hidden')) { 5312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (oldStep.classList.contains('animated')) { 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) innerContainer.classList.add('animation'); 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldStep.addEventListener('webkitTransitionEnd', function f(e) { 5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldStep.removeEventListener('webkitTransitionEnd', f); 5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (oldStep.classList.contains('faded') || 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldStep.classList.contains('left') || 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldStep.classList.contains('right')) { 5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) innerContainer.classList.remove('animation'); 5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldStep.classList.add('hidden'); 540c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (!isOOBE) 541c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch oldStep.hidden = true; 5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 543eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Refresh defaultControl. It could have changed. 544eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch var defaultControl = newStep.defaultControl; 5452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (defaultControl) 5462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) defaultControl.focus(); 5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }); 548ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ensureTransitionEndEvent(oldStep, MAX_SCREEN_TRANSITION_DURATION); 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) oldStep.classList.add('hidden'); 551c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch oldStep.hidden = true; 5522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (defaultControl) 5532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) defaultControl.focus(); 5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // First screen on OOBE launch. 5573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) if (this.isOobeUI() && innerContainer.classList.contains('down')) { 5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) innerContainer.classList.remove('down'); 5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) innerContainer.addEventListener( 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 'webkitTransitionEnd', function f(e) { 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) innerContainer.removeEventListener('webkitTransitionEnd', f); 562c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch outerContainer.classList.remove('down'); 5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('progress-dots').classList.remove('down'); 5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome.send('loginVisible', ['oobe']); 565eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Refresh defaultControl. It could have changed. 566eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch var defaultControl = newStep.defaultControl; 5672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (defaultControl) 5682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) defaultControl.focus(); 5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }); 570ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch ensureTransitionEndEvent(innerContainer, 571ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch MAX_SCREEN_TRANSITION_DURATION); 5722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 5732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (defaultControl) 5742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) defaultControl.focus(); 5753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) chrome.send('loginVisible', ['oobe']); 5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.currentStep_ = nextStepIndex; 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('step-logo').hidden = newStep.classList.contains('no-logo'); 5812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome.send('updateCurrentScreen', [this.currentScreen.id]); 5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Make sure that screen is initialized and decorated. 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Object} screen Screen params dict, e.g. {id: screenId, data: {}}. 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) preloadScreen: function(screen) { 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var screenEl = $(screen.id); 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (screenEl.deferredDecorate !== undefined) { 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screenEl.deferredDecorate(); 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete screenEl.deferredDecorate; 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Show screen of given screen id. 5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Object} screen Screen params dict, e.g. {id: screenId, data: {}}. 6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) showScreen: function(screen) { 6022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var screenId = screen.id; 6032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Make sure the screen is decorated. 6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.preloadScreen(screen); 6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (screen.data !== undefined && screen.data.disableAddUser) 6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayManager.updateAddUserButtonStatus(true); 6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Show sign-in screen instead of account picker if pod row is empty. 6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (screenId == SCREEN_ACCOUNT_PICKER && $('pod-row').pods.length == 0) { 6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Manually hide 'add-user' header bar, because of the case when 6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 'Cancel' button is used on the offline login page. 6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('add-user-header-bar-item').hidden = true; 6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Oobe.showSigninUI(true); 6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var data = screen.data; 6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var index = this.getScreenIndex_(screenId); 6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (index >= 0) 6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.toggleStep_(index, data); 6242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }, 6252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 6262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Gets index of given screen id in screens_. 6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} screenId Id of the screen to look up. 6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @private 6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) getScreenIndex_: function(screenId) { 6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < this.screens_.length; ++i) { 6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this.screens_[i] == screenId) 6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return i; 6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return -1; 6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Register an oobe screen. 6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {Element} el Decorated screen element. 6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registerScreen: function(el) { 6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var screenId = el.id; 6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.screens_.push(screenId); 6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var header = document.createElement('span'); 6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) header.id = 'header-' + screenId; 6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) header.textContent = el.header ? el.header : ''; 6502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) header.className = 'header-section'; 6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('header-sections').appendChild(header); 6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var dot = document.createElement('div'); 6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dot.id = screenId + '-dot'; 6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dot.className = 'progdot'; 656ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch var progressDots = $('progress-dots'); 657ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch if (progressDots) 658ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch progressDots.appendChild(dot); 6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.appendButtons_(el.buttons, screenId); 6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates inner container size based on the size of the current screen and 6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * other screens in the same group. 6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Should be executed on screen change / screen size change. 6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {!HTMLElement} screen Screen that is being shown. 6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) updateScreenSize: function(screen) { 6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Have to reset any previously predefined screen size first 671f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // so that screen contents would define it instead. 6723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) $('inner-container').style.height = ''; 6733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) $('inner-container').style.width = ''; 6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen.style.width = ''; 6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen.style.height = ''; 6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6773551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) $('outer-container').classList.toggle( 6783551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 'fullscreen', screen.classList.contains('fullscreen')); 6793551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 680f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) var width = screen.getPreferredSize().width; 681f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) var height = screen.getPreferredSize().height; 6822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (var i = 0, screenGroup; screenGroup = SCREEN_GROUPS[i]; i++) { 6832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (screenGroup.indexOf(screen.id) != -1) { 6842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Set screen dimensions to maximum dimensions within this group. 6852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (var j = 0, screen2; screen2 = $(screenGroup[j]); j++) { 686f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) width = Math.max(width, screen2.getPreferredSize().width); 687f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) height = Math.max(height, screen2.getPreferredSize().height); 6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) break; 6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('inner-container').style.height = height + 'px'; 6932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) $('inner-container').style.width = width + 'px'; 6942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // This requires |screen| to have 'box-sizing: border-box'. 6952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) screen.style.width = width + 'px'; 6962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) screen.style.height = height + 'px'; 6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Updates localized content of the screens like headers, buttons and links. 7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Should be executed on language change. 7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) updateLocalizedContent_: function() { 7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0, screenId; screenId = this.screens_[i]; ++i) { 7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var screen = $(screenId); 7062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var buttonStrip = $(screenId + '-controls'); 7072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (buttonStrip) 7082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) buttonStrip.innerHTML = ''; 7092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TODO(nkostylev): Update screen headers for new OOBE design. 7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.appendButtons_(screen.buttons, screenId); 7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (screen.updateLocalizedContent) 7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen.updateLocalizedContent(); 7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var currentScreenId = this.screens_[this.currentStep_]; 7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var currentScreen = $(currentScreenId); 7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) this.updateScreenSize(currentScreen); 7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Trigger network drop-down to reload its state 7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // so that strings are reloaded. 7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Will be reloaded if drowdown is actually shown. 7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cr.ui.DropDown.refresh(); 7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 726c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch * Initialized first group of OOBE screens. 727c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch */ 728c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch initializeOOBEScreens: function() { 729c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch if (this.isOobeUI() && $('inner-container').classList.contains('down')) { 730c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch for (var i = 0, screen; 731c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch screen = $(SCREEN_GROUPS[SCREEN_GROUP_OOBE][i]); i++) { 732c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch screen.hidden = false; 733c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch } 734c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch } 735c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch }, 736c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 737c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch /** 7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Prepares screens to use in login display. 7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prepareForLoginDisplay_: function() { 7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0, screenId; screenId = this.screens_[i]; ++i) { 7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var screen = $(screenId); 7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen.classList.add('faded'); 7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen.classList.remove('right'); 7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen.classList.remove('left'); 7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 750868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) * Shows the device requisition prompt. 751868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) */ 752868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) showDeviceRequisitionPrompt_: function() { 753868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!this.deviceRequisitionDialog_) { 754868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) this.deviceRequisitionDialog_ = 755868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) new cr.ui.dialogs.PromptDialog(document.body); 756868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) this.deviceRequisitionDialog_.setOkLabel( 757868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) loadTimeData.getString('deviceRequisitionPromptOk')); 758868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) this.deviceRequisitionDialog_.setCancelLabel( 759868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) loadTimeData.getString('deviceRequisitionPromptCancel')); 760868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 761868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) this.deviceRequisitionDialog_.show( 762868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) loadTimeData.getString('deviceRequisitionPromptText'), 763868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) this.deviceRequisition_, 764868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) this.onConfirmDeviceRequisitionPrompt_.bind(this)); 765868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) }, 766868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 767868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) /** 768868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) * Confirmation handle for the device requisition prompt. 769868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) * @param {string} value The value entered by the user. 770f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @private 771868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) */ 772868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) onConfirmDeviceRequisitionPrompt_: function(value) { 773868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) this.deviceRequisition_ = value; 774a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) chrome.send('setDeviceRequisition', [value == '' ? 'none' : value]); 775868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) }, 776868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 777f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) /** 778f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Called when window size changed. Notifies current screen about change. 779f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @private 780f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 781f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) onWindowResize_: function() { 782f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) var currentScreenId = this.screens_[this.currentStep_]; 783f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) var currentScreen = $(currentScreenId); 784f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (currentScreen) 785f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) currentScreen.onWindowResize(); 786f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) }, 787f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 788868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) /* 789868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) * Updates the device requisition string shown in the requisition prompt. 790868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) * @param {string} requisition The device requisition. 791868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) */ 792868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) updateDeviceRequisition: function(requisition) { 793868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) this.deviceRequisition_ = requisition; 794868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) }, 795868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 796868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) /** 797116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch * Shows the special remora/shark device requisition prompt. 798f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @private 799f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 800116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch showDeviceRequisitionRemoraPrompt_: function(promptText, requisition) { 801f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (!this.deviceRequisitionRemoraDialog_) { 802f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) this.deviceRequisitionRemoraDialog_ = 803f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) new cr.ui.dialogs.ConfirmDialog(document.body); 804f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) this.deviceRequisitionRemoraDialog_.setOkLabel( 805f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) loadTimeData.getString('deviceRequisitionRemoraPromptOk')); 806f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) this.deviceRequisitionRemoraDialog_.setCancelLabel( 807f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) loadTimeData.getString('deviceRequisitionRemoraPromptCancel')); 808f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 8095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.deviceRequisitionRemoraDialog_.show( 810116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch loadTimeData.getString(promptText), 811a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) function() { // onShow 812116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch chrome.send('setDeviceRequisition', [requisition]); 813a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) }, 814a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) function() { // onCancel 815a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) chrome.send('setDeviceRequisition', ['none']); 816f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) }); 817f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) }, 818f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 819f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) /** 8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns true if Oobe UI is shown. 8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) isOobeUI: function() { 8233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return document.body.classList.contains('oobe-display'); 8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }, 8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 827f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * Sets or unsets given |className| for top-level container. Useful for 828f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * customizing #inner-container with CSS rules. All classes set with with 829f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * this method will be removed after screen change. 830f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @param {string} className Class to toggle. 831f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) * @param {boolean} enabled Whether class should be enabled or disabled. 832f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) */ 833f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) toggleClass: function(className, enabled) { 834f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) $('oobe').classList.toggle(className, enabled); 835f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 8392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Initializes display manager. 8402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 8412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DisplayManager.initialize = function() { 842f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) var givenDisplayType = DISPLAY_TYPE.UNKNOWN; 843f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (document.documentElement.hasAttribute('screen')) { 844f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Display type set in HTML property. 845f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) givenDisplayType = document.documentElement.getAttribute('screen'); 846f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } else { 847f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Extracting display type from URL. 848f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) givenDisplayType = window.location.pathname.substr(1); 849f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 850f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) var instance = Oobe.getInstance(); 8513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) Object.getOwnPropertyNames(DISPLAY_TYPE).forEach(function(type) { 852f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (DISPLAY_TYPE[type] == givenDisplayType) { 853f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) instance.displayType = givenDisplayType; 8543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 8553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) }); 856f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (instance.displayType == DISPLAY_TYPE.UNKNOWN) { 857f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) console.error("Unknown display type '" + givenDisplayType + 858f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) "'. Setting default."); 859f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) instance.displayType = DISPLAY_TYPE.LOGIN; 860868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) } 861868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 862c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch instance.initializeOOBEScreens(); 863c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 864f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) window.addEventListener('resize', instance.onWindowResize_.bind(instance)); 865f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) }; 8662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 8672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns offset (top, left) of the element. 8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {!Element} element HTML element. 8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {!Object} The offset (top, left). 8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayManager.getOffset = function(element) { 8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var x = 0; 8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var y = 0; 8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) while (element && !isNaN(element.offsetLeft) && !isNaN(element.offsetTop)) { 8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) x += element.offsetLeft - element.scrollLeft; 8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) y += element.offsetTop - element.scrollTop; 8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) element = element.offsetParent; 8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return { top: y, left: x }; 8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Returns position (top, left, right, bottom) of the element. 8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {!Element} element HTML element. 8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return {!Object} Element position (top, left, right, bottom). 8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayManager.getPosition = function(element) { 8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var offset = DisplayManager.getOffset(element); 8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return { top: offset.top, 8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) right: window.innerWidth - element.offsetWidth - offset.left, 8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bottom: window.innerHeight - element.offsetHeight - offset.top, 8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) left: offset.left }; 8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Disables signin UI. 8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayManager.disableSigninUI = function() { 9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('login-header-bar').disabled = true; 9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('pod-row').disabled = true; 9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Shows signin UI. 9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} opt_email An optional email for signin UI. 9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayManager.showSigninUI = function(opt_email) { 9092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var currentScreenId = Oobe.getInstance().currentScreen.id; 9102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (currentScreenId == SCREEN_GAIA_SIGNIN) 9112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) $('login-header-bar').signinUIState = SIGNIN_UI_STATE.GAIA_SIGNIN; 9122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) else if (currentScreenId == SCREEN_ACCOUNT_PICKER) 9132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) $('login-header-bar').signinUIState = SIGNIN_UI_STATE.ACCOUNT_PICKER; 9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome.send('showAddUser', [opt_email]); 9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Resets sign-in input fields. 9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {boolean} forceOnline Whether online sign-in should be forced. 9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If |forceOnline| is false previously used sign-in type will be used. 9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayManager.resetSigninUI = function(forceOnline) { 9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var currentScreenId = Oobe.getInstance().currentScreen.id; 9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $(SCREEN_GAIA_SIGNIN).reset( 9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) currentScreenId == SCREEN_GAIA_SIGNIN, forceOnline); 9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('login-header-bar').disabled = false; 9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('pod-row').reset(currentScreenId == SCREEN_ACCOUNT_PICKER); 9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Shows sign-in error bubble. 9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {number} loginAttempts Number of login attemps tried. 9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} message Error message to show. 9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} link Text to use for help link. 9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {number} helpId Help topic Id associated with help link. 9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayManager.showSignInError = function(loginAttempts, message, link, 9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helpId) { 9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var error = document.createElement('div'); 9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var messageDiv = document.createElement('div'); 9432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) messageDiv.className = 'error-message-bubble'; 9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) messageDiv.textContent = message; 9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) error.appendChild(messageDiv); 9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (link) { 9482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) messageDiv.classList.add('error-message-bubble-padding'); 9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var helpLink = document.createElement('a'); 9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helpLink.href = '#'; 9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helpLink.textContent = link; 9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helpLink.addEventListener('click', function(e) { 9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome.send('launchHelpApp', [helpId]); 9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) e.preventDefault(); 9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }); 9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) error.appendChild(helpLink); 9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) var currentScreen = Oobe.getInstance().currentScreen; 961cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (currentScreen && typeof currentScreen.showErrorBubble === 'function') { 9624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) currentScreen.showErrorBubble(loginAttempts, error); 963cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.errorMessageWasShownForTesting_ = true; 964cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 9682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Shows password changed screen that offers migration. 9692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * @param {boolean} showError Whether to show the incorrect password error. 9702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 9712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DisplayManager.showPasswordChangedScreen = function(showError) { 9722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) login.PasswordChangedScreen.show(showError); 9732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 9742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 9752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 9765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) * Shows dialog to create a supervised user. 9772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 9785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DisplayManager.showSupervisedUserCreationScreen = function() { 9795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) login.SupervisedUserCreationScreen.show(); 9802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 9812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 9822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 9832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Shows TPM error screen. 9842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 9852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DisplayManager.showTpmError = function() { 9862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) login.TPMErrorMessageScreen.show(); 9872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 9882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 9892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Clears error bubble. 9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayManager.clearErrors = function() { 9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('bubble').hide(); 994cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) this.errorMessageWasShownForTesting_ = false; 9956d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 9966d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) var bubbles = document.querySelectorAll('.bubble-shown'); 9976d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) for (var i = 0; i < bubbles.length; ++i) 9986d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) bubbles[i].classList.remove('bubble-shown'); 9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Sets text content for a div with |labelId|. 10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} labelId Id of the label div. 10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} labelText Text for the label. 10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayManager.setLabelText = function(labelId, labelText) { 10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $(labelId).textContent = labelText; 10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Sets the text content of the enterprise info message. 10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {string} messageText The message text. 10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 10142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DisplayManager.setEnterpriseInfo = function(messageText) { 10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('enterprise-info-message').textContent = messageText; 10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (messageText) { 10172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) $('enterprise-info').hidden = false; 10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Disable Add users button if said. 10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param {boolean} disable true to disable 10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayManager.updateAddUserButtonStatus = function(disable) { 10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('add-user-button').disabled = disable; 10272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) $('add-user-button').classList[ 10282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) disable ? 'add' : 'remove']('button-restricted'); 10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) $('add-user-button').title = disable ? 10302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) loadTimeData.getString('disabledAddUserTooltip') : ''; 10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 10332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) /** 10342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Clears password field in user-pod. 10352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 10362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DisplayManager.clearUserPodPassword = function() { 10372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) $('pod-row').clearFocusedPod(); 10382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 10392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 104090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) /** 104190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * Restores input focus to currently selected pod. 104290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) */ 104390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) DisplayManager.refocusCurrentPod = function() { 104490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) $('pod-row').refocusCurrentPod(); 104590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) }; 104690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Export 10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return { 10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DisplayManager: DisplayManager 10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}); 1052