Adding instrumentation to locate the source of jankiness
[chromium-blink-merge.git] / chrome / browser / resources / user_manager / user_manager.js
blob3cca699c7bcb1cf046204c405b3f9306a0604ef9
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;
18 /**
19 * Constructs an Out of box controller. It manages initialization of screens,
20 * transitions, error messages display.
21 * @extends {DisplayManager}
22 * @constructor
24 function Oobe() {
27 cr.addSingletonGetter(Oobe);
29 Oobe.prototype = {
30 __proto__: DisplayManager.prototype,
33 /**
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();
59 /**
60 * Open a new browser for the given profile.
61 * @param {string} email The user's email, if signed in.
62 * @param {string} displayName The user's display name.
64 Oobe.launchUser = function(email, displayName) {
65 chrome.send('launchUser', [email, displayName]);
68 /**
69 * Disables signin UI.
71 Oobe.disableSigninUI = function() {
72 DisplayManager.disableSigninUI();
75 /**
76 * Shows signin UI.
77 * @param {string} opt_email An optional email for signin UI.
79 Oobe.showSigninUI = function(opt_email) {
80 DisplayManager.showSigninUI(opt_email);
83 /**
84 * Shows sign-in error bubble.
85 * @param {number} loginAttempts Number of login attemps tried.
86 * @param {string} message Error message to show.
87 * @param {string} link Text to use for help link.
88 * @param {number} helpId Help topic Id associated with help link.
90 Oobe.showSignInError = function(loginAttempts, message, link, helpId) {
91 DisplayManager.showSignInError(loginAttempts, message, link, helpId);
94 /**
95 * Clears error bubble as well as optional menus that could be open.
97 Oobe.clearErrors = function() {
98 DisplayManager.clearErrors();
102 * Clears password field in user-pod.
104 Oobe.clearUserPodPassword = function() {
105 DisplayManager.clearUserPodPassword();
109 * Restores input focus to currently selected pod.
111 Oobe.refocusCurrentPod = function() {
112 DisplayManager.refocusCurrentPod();
116 * Show the user manager tutorial
117 * @param {string} email The user's email, if signed in.
118 * @param {string} displayName The user's display name.
120 Oobe.showUserManagerTutorial = function() {
121 UserManagerTutorial.startTutorial();
124 // Export
125 return {
126 Oobe: Oobe
130 cr.define('UserManager', function() {
131 'use strict';
133 function initialize() {
134 cr.ui.login.DisplayManager.initialize();
135 cr.ui.login.UserManagerTutorial.initialize();
136 login.AccountPickerScreen.register();
137 cr.ui.Bubble.decorate($('bubble'));
138 login.HeaderBar.decorate($('login-header-bar'));
140 // Hide the header bar until the showUserManagerMethod can apply function
141 // parameters that affect widget visiblity.
142 $('login-header-bar').hidden = true;
144 chrome.send('userManagerInitialize', [window.location.hash]);
147 // Return an object with all of the exports.
148 return {
149 initialize: initialize
153 var Oobe = cr.ui.Oobe;
155 // Allow selection events on components with editable text (password field)
156 // bug (http://code.google.com/p/chromium/issues/detail?id=125863)
157 disableTextSelectAndDrag(function(e) {
158 var src = e.target;
159 return src instanceof HTMLTextAreaElement ||
160 src instanceof HTMLInputElement &&
161 /text|password|search/.test(src.type);
164 document.addEventListener('DOMContentLoaded', UserManager.initialize);