Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Unified Diff: chrome/browser/resources/options/managed_user_settings.js

Issue 11783008: Add a lock to the managed user settings page and require authentication for unlocking. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase to ToT, add test for ManagedUserSettings page. Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/options/managed_user_settings.js
diff --git a/chrome/browser/resources/options/managed_user_settings.js b/chrome/browser/resources/options/managed_user_settings.js
index 3300cdb0c3fe3993464176a08e38b32cec7ba940..292c9f8782431e7a293b15fc87b2605552860f29 100644
--- a/chrome/browser/resources/options/managed_user_settings.js
+++ b/chrome/browser/resources/options/managed_user_settings.js
@@ -31,6 +31,8 @@ cr.define('options', function() {
ManagedUserSettings.prototype = {
// Inherit from SettingsDialog.
__proto__: SettingsDialog.prototype,
+ authenticationChecked: false,
Bernhard Bauer 2013/02/15 10:05:20 I think a better name for this would be "isAuthent
Adrian Kuegel 2013/02/20 12:42:13 Yes, good idea. I changed it like that.
+ authenticationChecking: false,
/**
* Initialize the page.
@@ -48,21 +50,90 @@ cr.define('options', function() {
OptionsPage.navigateToPage('setPassphrase');
};
+ $('use-passphrase-checkbox').onclick = function() {
+ $('set-passphrase').disabled = !$('use-passphrase-checkbox').checked;
+ };
+
+ $('unlock-settings').onclick = function() {
+ if (!this.isAuthenticationChecking) {
Bernhard Bauer 2013/02/15 10:05:20 You could invert the condition and early-return.
Adrian Kuegel 2013/02/20 12:42:13 Done.
+ chrome.send('displayPassphraseDialog',
+ ['ManagedUserSettings.isAuthenticated']);
+ this.authenticationChecking = true;
+ }
+ };
},
/** @override */
handleConfirm: function() {
- chrome.send('confirmManagedUserSettings');
- SettingsDialog.prototype.handleConfirm.call(this);
+ if ($('use-passphrase-checkbox').checked) {
+ chrome.send('isPassphraseSet', ['ManagedUserSettings.isPassphraseSet']);
+ } else {
+ chrome.send('confirmManagedUserSettings');
+ chrome.send('resetPassphrase');
+ SettingsDialog.prototype.handleConfirm.call(this);
+ }
+ },
+ updateControls: function(disable) {
+ $('set-passphrase').disabled = disable;
Bernhard Bauer 2013/02/15 10:05:20 Please don't simply set the disabled attribute. Th
Adrian Kuegel 2013/02/20 12:42:13 If I understand that right, I can only use this on
+ $('get-content-packs-button').disabled = disable;
+ $('contentpacks-allow').disabled = disable;
+ $('contentpacks-warn').disabled = disable;
+ $('contentpacks-block').disabled = disable;
+ $('safe-search-checkbox').disabled = disable;
+ $('disable-signin-checkbox').disabled = disable;
+ $('disable-history-deletion-checkbox').disabled = disable;
+ $('use-passphrase-checkbox').disabled = disable;
+ $('unlock-settings').disabled = !disable;
},
+ didShowPage: function() {
+ chrome.send('isPassphraseSet',
Bernhard Bauer 2013/02/15 10:05:20 Instead of asking the browser asynchronously, coul
Adrian Kuegel 2013/02/20 12:42:13 Done.
+ ['ManagedUserSettings.initializeSetPassphraseButton']);
+ },
+ didClosePage: function() {
+ // Reset the authentication of the custodian.
+ this.authenticationChecked = false;
+ chrome.send('endAuthentication');
+ },
+ };
+
+ ManagedUserSettings.initializeSetPassphraseButton = function(hasPassphrase) {
+ $('set-passphrase').disabled = !hasPassphrase;
+ $('use-passphrase-checkbox').checked = hasPassphrase;
+ if (hasPassphrase) {
+ ManagedUserSettings.getInstance().updateControls(true);
Pam (message me for reviews) 2013/02/15 09:31:18 This would be clearer if the argument were flipped
Adrian Kuegel 2013/02/15 09:56:02 Done. I also renamed the function to enableControl
+ } else {
+ ManagedUserSettings.getInstance().authenticationChecked = true;
+ $('unlock-settings').disabled = true;
+ }
+ };
+
+ ManagedUserSettings.isAuthenticated = function(success) {
Bernhard Bauer 2013/02/15 10:05:20 I think it would be nicer if you delegate to an in
Adrian Kuegel 2013/02/20 12:42:13 Done.
+ var instance = ManagedUserSettings.getInstance();
+ if (success) {
+ instance.authenticationChecked = true;
+ instance.updateControls(false);
+ }
+ instance.authenticationChecking = false;
+ };
+
+ ManagedUserSettings.isPassphraseSet = function(success) {
Bernhard Bauer 2013/02/15 10:05:20 |success| means whether the passphrase is set? Cou
Adrian Kuegel 2013/02/20 12:42:13 Done.
+ if (success) {
+ var instance = ManagedUserSettings.getInstance();
+ SettingsDialog.prototype.handleConfirm.call(instance);
+ } else {
+ OptionsPage.navigateToPage('setPassphrase');
+ }
};
var ManagedUserSettingsForTesting = {
getSetPassphraseButton: function() {
return $('set-passphrase');
+ },
+ getUnlockButton: function() {
+ return $('unlock-settings');
}
};
- // Export
+ // Export
return {
ManagedUserSettings: ManagedUserSettings,
ManagedUserSettingsForTesting: ManagedUserSettingsForTesting

Powered by Google App Engine
This is Rietveld 408576698