1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 <include src
="../../../../ui/login/screen.js">
5 <include src
="../../../../ui/login/bubble.js">
6 <include src
="../../../../ui/login/login_ui_tools.js">
7 <include src
="../../../../ui/login/display_manager.js">
8 <include src
="control_bar.js">
9 <include src
="../../../../ui/login/account_picker/screen_account_picker.js">
10 <include src
="../../../../ui/login/account_picker/user_pod_row.js">
11 <include src
="../../../../ui/login/resource_loader.js">
12 <include src
="user_manager_tutorial.js">
14 cr
.define('cr.ui', function() {
15 var DisplayManager
= cr
.ui
.login
.DisplayManager
;
16 var UserManagerTutorial
= cr
.ui
.login
.UserManagerTutorial
;
19 * Constructs an Out of box controller. It manages initialization of screens,
20 * transitions, error messages display.
21 * @extends {DisplayManager}
27 cr
.addSingletonGetter(Oobe
);
30 __proto__
: DisplayManager
.prototype,
34 * Shows the given screen.
35 * @param {bool} showGuest Whether the 'Browse as Guest' button is displayed.
36 * @param {bool} showAddPerson Whether the 'Add Person' button is displayed.
38 Oobe
.showUserManagerScreen = function(showGuest
, showAddPerson
) {
39 Oobe
.getInstance().showScreen({id
: 'account-picker',
40 data
: {disableAddUser
: false}});
41 // The ChromeOS account-picker will hide the AddUser button if a user is
42 // logged in and the screen is "locked", so we must re-enabled it
43 $('add-user-header-bar-item').hidden
= false;
45 // Hide control options if the user does not have the right permissions.
46 $('guest-user-button').hidden
= !showGuest
;
47 $('add-user-button').hidden
= !showAddPerson
;
48 $('login-header-bar').hidden
= false;
50 // Disable the context menu, as the Print/Inspect element items don't
51 // make sense when displayed as a widget.
52 document
.addEventListener('contextmenu', function(e
) {e
.preventDefault();});
54 var hash
= window
.location
.hash
;
55 if (hash
&& hash
== '#tutorial')
56 UserManagerTutorial
.startTutorial();
60 * Open a new browser for the given profile.
61 * @param {string} profilePath The profile's path.
63 Oobe
.launchUser = function(profilePath
) {
64 chrome
.send('launchUser', [profilePath
]);
70 Oobe
.disableSigninUI = function() {
71 DisplayManager
.disableSigninUI();
76 * @param {string} opt_email An optional email for signin UI.
78 Oobe
.showSigninUI = function(opt_email
) {
79 DisplayManager
.showSigninUI(opt_email
);
83 * Shows sign-in error bubble.
84 * @param {number} loginAttempts Number of login attemps tried.
85 * @param {string} message Error message to show.
86 * @param {string} link Text to use for help link.
87 * @param {number} helpId Help topic Id associated with help link.
89 Oobe
.showSignInError = function(loginAttempts
, message
, link
, helpId
) {
90 DisplayManager
.showSignInError(loginAttempts
, message
, link
, helpId
);
94 * Clears error bubble as well as optional menus that could be open.
96 Oobe
.clearErrors = function() {
97 DisplayManager
.clearErrors();
101 * Clears password field in user-pod.
103 Oobe
.clearUserPodPassword = function() {
104 DisplayManager
.clearUserPodPassword();
108 * Restores input focus to currently selected pod.
110 Oobe
.refocusCurrentPod = function() {
111 DisplayManager
.refocusCurrentPod();
115 * Show the user manager tutorial
116 * @param {string} email The user's email, if signed in.
117 * @param {string} displayName The user's display name.
119 Oobe
.showUserManagerTutorial = function() {
120 UserManagerTutorial
.startTutorial();
129 cr
.define('UserManager', function() {
132 function initialize() {
133 cr
.ui
.login
.DisplayManager
.initialize();
134 cr
.ui
.login
.UserManagerTutorial
.initialize();
135 login
.AccountPickerScreen
.register();
136 cr
.ui
.Bubble
.decorate($('bubble'));
137 login
.HeaderBar
.decorate($('login-header-bar'));
139 // Hide the header bar until the showUserManagerMethod can apply function
140 // parameters that affect widget visiblity.
141 $('login-header-bar').hidden
= true;
143 chrome
.send('userManagerInitialize', [window
.location
.hash
]);
146 // Return an object with all of the exports.
148 initialize
: initialize
152 var Oobe
= cr
.ui
.Oobe
;
154 // Allow selection events on components with editable text (password field)
155 // bug (http://code.google.com/p/chromium/issues/detail?id=125863)
156 disableTextSelectAndDrag(function(e
) {
158 return src
instanceof HTMLTextAreaElement
||
159 src
instanceof HTMLInputElement
&&
160 /text|password|search/.test(src
.type
);
163 document
.addEventListener('DOMContentLoaded', UserManager
.initialize
);