Allow only one bookmark to be added for multiple fast starring
[chromium-blink-merge.git] / chrome / browser / resources / settings / users_page / users_page.js
blob8129be60a6b66532c6c95152e7198f6f83fac9dd
1 // Copyright 2015 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.
5 /**
6 * @fileoverview
7 * 'cr-settings-users-page' is the settings page for managing user accounts on
8 * the device.
10 * Example:
12 * <neon-animated-pages>
13 * <cr-settings-users-page prefs="{{prefs}}">
14 * </cr-settings-users-page>
15 * ... other pages ...
16 * </neon-animated-pages>
18 * @group Chrome Settings Elements
19 * @element cr-settings-users-page
21 Polymer({
22 is: 'cr-settings-users-page',
24 behaviors: [
25 Polymer.IronA11yKeysBehavior
28 properties: {
29 /**
30 * Preferences state.
32 prefs: {
33 type: Object,
34 notify: true,
37 /**
38 * Route for the page.
40 route: String,
42 /**
43 * Whether the page is a subpage.
45 subpage: {
46 type: Boolean,
47 value: false,
48 readOnly: true,
51 /**
52 * ID of the page.
54 PAGE_ID: {
55 type: String,
56 value: 'users',
57 readOnly: true,
60 /**
61 * Title for the page header and navigation menu.
63 pageTitle: {
64 type: String,
65 value: function() {
66 return loadTimeData.getString('usersPageTitle');
70 /**
71 * Name of the 'iron-icon' to show.
73 icon: {
74 type: String,
75 value: 'person',
76 readOnly: true,
79 /** @override */
80 keyEventTarget: {
81 type: Object,
82 value: function() {
83 return this.$.addUserInput;
87 isOwner: {
88 type: Boolean,
89 value: false
92 isWhitelistManaged: {
93 type: Boolean,
94 value: false
97 editingDisabled: {
98 type: Boolean,
99 computed: 'computeEditingDisabled_(isOwner, isWhitelistManaged)'
102 editingUsersDisabled: {
103 type: Boolean,
104 computed: 'computeEditingUsersDisabled_(isOwner, isWhitelistManaged, ' +
105 'prefs.cros.accounts.allowGuest.value)'
109 keyBindings: {
110 'enter': 'addUser_'
113 /** @override */
114 created: function() {
115 chrome.usersPrivate.isCurrentUserOwner(function(isOwner) {
116 this.isOwner = isOwner;
117 }.bind(this));
119 chrome.usersPrivate.isWhitelistManaged(function(isWhitelistManaged) {
120 this.isWhitelistManaged = isWhitelistManaged;
121 }.bind(this));
125 * Regular expression for adding a user where the string provided is just the
126 * part before the "@".
127 * Email alias only, assuming it's a gmail address.
128 * e.g. 'john'
129 * @const
130 * @private {string}
132 nameOnlyString_: '^\\s*([\\w\\.!#\\$%&\'\\*\\+-\\/=\\?\\^`\\{\\|\\}~]+)\\s*$',
135 * Regular expression for adding a user where the string provided is a full
136 * email address.
137 * e.g. 'john@chromium.org'
138 * @const
139 * @private {string}
141 emailString_:
142 '^\\s*([\\w\\.!#\\$%&\'\\*\\+-\\/=\\?\\^`\\{\\|\\}~]+)@' +
143 '([A-Za-z0-9\-]{2,63}\\..+)\\s*$',
145 /** @private */
146 addUser_: function() {
147 /** @const */ var nameOnlyRegex = new RegExp(this.nameOnlyString_);
148 /** @const */ var emailRegex = new RegExp(this.emailString_);
150 var userStr = this.$.addUserInput.value;
152 var matches = nameOnlyRegex.exec(userStr);
153 var userEmail;
154 if (matches) {
155 userEmail = matches[1] + '@gmail.com';
158 matches = emailRegex.exec(userStr);
159 if (matches) {
160 userEmail = matches[1] + '@' + matches[2];
163 if (userEmail) {
164 chrome.usersPrivate.addWhitelistedUser(
165 userEmail,
166 /* callback */ function(success) {});
167 this.$.addUserInput.value = '';
172 * @param {boolean} isOwner
173 * @param {boolean} isWhitelistManaged
174 * @private
176 computeHideOwnerLabel_: function(isOwner, isWhitelistManaged) {
177 return isOwner || isWhitelistManaged;
181 * @param {boolean} isOwner
182 * @param {boolean} isWhitelistManaged
183 * @private
185 computeHideManagedLabel_: function(isOwner, isWhitelistManaged) {
186 return !isWhitelistManaged;
190 * @param {boolean} isOwner
191 * @param {boolean} isWhitelistManaged
192 * @private
194 computeEditingDisabled_: function(isOwner, isWhitelistManaged) {
195 return !isOwner || isWhitelistManaged;
199 * @param {boolean} isOwner
200 * @param {boolean} isWhitelistManaged
201 * @param {boolean} allowGuest
202 * @private
204 computeEditingUsersDisabled_: function(
205 isOwner, isWhitelistManaged, allowGuest) {
206 return !isOwner || isWhitelistManaged || allowGuest;