Index: chrome/browser/resources/options2/chromeos/accounts_options.js |
diff --git a/chrome/browser/resources/options2/chromeos/accounts_options.js b/chrome/browser/resources/options2/chromeos/accounts_options.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..af6bf9c949b1725a040560f9719f2678267bf84d |
--- /dev/null |
+++ b/chrome/browser/resources/options2/chromeos/accounts_options.js |
@@ -0,0 +1,165 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+cr.define('options', function() { |
+ var OptionsPage = options.OptionsPage; |
+ |
+ ///////////////////////////////////////////////////////////////////////////// |
+ // AccountsOptions class: |
+ |
+ /** |
+ * Encapsulated handling of ChromeOS accounts options page. |
+ * @constructor |
+ */ |
+ function AccountsOptions(model) { |
+ OptionsPage.call(this, 'accounts', templateData.accountsPageTabTitle, |
+ 'accountsPage'); |
+ // Whether to show the whitelist. |
+ this.showWhitelist_ = false; |
+ } |
+ |
+ cr.addSingletonGetter(AccountsOptions); |
+ |
+ AccountsOptions.prototype = { |
+ // Inherit AccountsOptions from OptionsPage. |
+ __proto__: OptionsPage.prototype, |
+ |
+ /** |
+ * Initializes AccountsOptions page. |
+ */ |
+ initializePage: function() { |
+ // Call base class implementation to starts preference initialization. |
+ OptionsPage.prototype.initializePage.call(this); |
+ |
+ // Set up accounts page. |
+ var userList = $('userList'); |
+ userList.addEventListener('remove', this.handleRemoveUser_); |
+ |
+ var userNameEdit = $('userNameEdit'); |
+ options.accounts.UserNameEdit.decorate(userNameEdit); |
+ userNameEdit.addEventListener('add', this.handleAddUser_); |
+ |
+ // If the current user is not the owner, show some warning, |
+ // and do not show the user list. |
+ this.showWhitelist_ = AccountsOptions.currentUserIsOwner(); |
+ if (this.showWhitelist_) { |
+ options.accounts.UserList.decorate(userList); |
+ } else { |
+ if (!AccountsOptions.whitelistIsManaged()) { |
+ $('ownerOnlyWarning').hidden = false; |
+ } else { |
+ this.managed = true; |
+ } |
+ } |
+ |
+ this.addEventListener('visibleChange', this.handleVisibleChange_); |
+ |
+ $('useWhitelistCheck').addEventListener('change', |
+ this.handleUseWhitelistCheckChange_.bind(this)); |
+ |
+ Preferences.getInstance().addEventListener( |
+ $('useWhitelistCheck').pref, |
+ this.handleUseWhitelistPrefChange_.bind(this)); |
+ }, |
+ |
+ /** |
+ * Update user list control state. |
+ * @private |
+ */ |
+ updateControls_: function() { |
+ $('userList').disabled = |
+ $('userNameEdit').disabled = !this.showWhitelist_ || |
+ AccountsOptions.whitelistIsManaged() || |
+ !$('useWhitelistCheck').checked; |
+ }, |
+ |
+ /** |
+ * Handler for OptionsPage's visible property change event. |
+ * @private |
+ * @param {Event} e Property change event. |
+ */ |
+ handleVisibleChange_: function(e) { |
+ if (this.visible) { |
+ this.updateControls_(); |
+ if (this.showWhitelist_) |
+ $('userList').redraw(); |
+ } |
+ }, |
+ |
+ /** |
+ * Handler for allow guest check change. |
+ * @private |
+ */ |
+ handleUseWhitelistCheckChange_: function(e) { |
+ // Whitelist existing users when guest login is being disabled. |
+ if ($('useWhitelistCheck').checked) { |
+ chrome.send('whitelistExistingUsers', []); |
+ } |
+ |
+ this.updateControls_(); |
+ }, |
+ |
+ /** |
+ * handler for allow guest pref change. |
+ * @private |
+ */ |
+ handleUseWhitelistPrefChange_: function(e) { |
+ this.updateControls_(); |
+ }, |
+ |
+ /** |
+ * Handler for "add" event fired from userNameEdit. |
+ * @private |
+ * @param {Event} e Add event fired from userNameEdit. |
+ */ |
+ handleAddUser_: function(e) { |
+ chrome.send('whitelistUser', [e.user.email, e.user.name]); |
+ }, |
+ |
+ /** |
+ * Handler for "remove" event fired from userList. |
+ * @private |
+ * @param {Event} e Remove event fired from userList. |
+ */ |
+ handleRemoveUser_: function(e) { |
+ chrome.send('unwhitelistUser', [e.user.username]); |
+ } |
+ }; |
+ |
+ /** |
+ * Returns whether the current user is owner or not. |
+ */ |
+ AccountsOptions.currentUserIsOwner = function() { |
+ return localStrings.getString('current_user_is_owner') == 'true'; |
+ }; |
+ |
+ /** |
+ * Returns whether we're currently in guest mode. |
+ */ |
+ AccountsOptions.loggedInAsGuest = function() { |
+ return localStrings.getString('logged_in_as_guest') == 'true'; |
+ }; |
+ |
+ /** |
+ * Returns whether the whitelist is managed by policy or not. |
+ */ |
+ AccountsOptions.whitelistIsManaged = function() { |
+ return localStrings.getString('whitelist_is_managed') == 'true'; |
+ }; |
+ |
+ /** |
+ * Update account picture. |
+ * @param {string} username User for which to update the image. |
+ */ |
+ AccountsOptions.updateAccountPicture = function(username) { |
+ if (this.showWhitelist_) |
+ $('userList').updateAccountPicture(username); |
+ }; |
+ |
+ // Export |
+ return { |
+ AccountsOptions: AccountsOptions |
+ }; |
+ |
+}); |