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

Unified Diff: chrome/browser/resources/sync_setup_overlay.js

Issue 494973003: Disable checkboxes in the advanced sync settings overlay whose type is force-enabled. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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/sync_setup_overlay.js
diff --git a/chrome/browser/resources/sync_setup_overlay.js b/chrome/browser/resources/sync_setup_overlay.js
index 2e0d5d91f5226ebf6f85b6626efe289da0346b43..bb2f316437fa8ec2adb0ab8dad33baceaceaa893 100644
--- a/chrome/browser/resources/sync_setup_overlay.js
+++ b/chrome/browser/resources/sync_setup_overlay.js
@@ -25,7 +25,13 @@ cr.define('options', function() {
// the "Sync everything" menu-item is selected, and unchecked and disabled
// when "Sync nothing" is selected. When "Choose what to sync" is selected,
// the boxes are restored to their most recent checked state from this cache.
- var dataTypeBoxes_ = {};
+ var dataTypeBoxesChecked_ = {};
+
+ // A dictionary that maps the sync data type checkbox names to their disabled
+ // state (when a data type is enabled programmatically without user choice).
+ // Initialized when the advanced settings dialog is first brought up, and
+ // reset when the dialog is closed.
+ var dataTypeBoxesDisabled_ = {};
// Used to determine whether to bring the OK button / passphrase field into
// focus.
@@ -95,7 +101,8 @@ cr.define('options', function() {
closeOverlay_: function() {
this.syncConfigureArgs_ = null;
- this.dataTypeBoxes_ = {};
+ this.dataTypeBoxesChecked_ = {};
+ this.dataTypeBoxesDisabled_ = {};
var overlay = $('sync-setup-overlay');
if (!overlay.hidden)
@@ -147,8 +154,8 @@ cr.define('options', function() {
* @private
*/
restoreDataTypeCheckboxes_: function() {
- for (dataType in dataTypeBoxes_) {
- $(dataType).checked = dataTypeBoxes_[dataType];
+ for (dataType in dataTypeBoxesChecked_) {
+ $(dataType).checked = dataTypeBoxesChecked_[dataType];
}
},
@@ -159,9 +166,8 @@ cr.define('options', function() {
* @private
*/
setDataTypeCheckboxesEnabled_: function(enabled) {
- var checkboxes = $('choose-data-types-body').querySelectorAll('input');
- for (var i = 0; i < checkboxes.length; i++) {
- checkboxes[i].disabled = !enabled;
+ for (dataType in dataTypeBoxesDisabled_) {
+ $(dataType).disabled = !enabled || dataTypeBoxesDisabled_[dataType];
}
},
@@ -300,8 +306,9 @@ cr.define('options', function() {
/**
* Shows or hides the sync data type checkboxes in the advanced sync
- * settings dialog. Also initializes |dataTypeBoxes_| with their values, and
- * makes their onclick handlers update |dataTypeBoxes_|.
+ * settings dialog. Also initializes |dataTypeBoxesChecked_| and
+ * |dataTypeBoxedDisabled_| with their values, and makes their onclick
+ * handlers update |dataTypeBoxesChecked_|.
* @param {Object} args The configuration data used to show/hide UI.
* @private
*/
@@ -312,20 +319,24 @@ cr.define('options', function() {
DataTypeSelection.CHOOSE_WHAT_TO_SYNC;
$('bookmarks-checkbox').checked = args.bookmarksSynced;
- dataTypeBoxes_['bookmarks-checkbox'] = args.bookmarksSynced;
+ dataTypeBoxesChecked_['bookmarks-checkbox'] = args.bookmarksSynced;
+ dataTypeBoxesDisabled_['bookmarks-checkbox'] = args.bookmarksEnforced;
$('bookmarks-checkbox').onclick = this.handleDataTypeClick_;
$('preferences-checkbox').checked = args.preferencesSynced;
- dataTypeBoxes_['preferences-checkbox'] = args.preferencesSynced;
+ dataTypeBoxesChecked_['preferences-checkbox'] = args.preferencesSynced;
+ dataTypeBoxesDisabled_['preferences-checkbox'] = args.preferencesEnforced;
$('preferences-checkbox').onclick = this.handleDataTypeClick_;
$('themes-checkbox').checked = args.themesSynced;
- dataTypeBoxes_['themes-checkbox'] = args.themesSynced;
+ dataTypeBoxesChecked_['themes-checkbox'] = args.themesSynced;
+ dataTypeBoxesDisabled_['themes-checkbox'] = args.themesEnforced;
$('themes-checkbox').onclick = this.handleDataTypeClick_;
if (args.passwordsRegistered) {
$('passwords-checkbox').checked = args.passwordsSynced;
- dataTypeBoxes_['passwords-checkbox'] = args.passwordsSynced;
+ dataTypeBoxesChecked_['passwords-checkbox'] = args.passwordsSynced;
+ dataTypeBoxesDisabled_['passwords-checkbox'] = args.passwordsEnforced;
$('passwords-checkbox').onclick = this.handleDataTypeClick_;
$('passwords-item').hidden = false;
} else {
@@ -333,7 +344,8 @@ cr.define('options', function() {
}
if (args.autofillRegistered) {
$('autofill-checkbox').checked = args.autofillSynced;
- dataTypeBoxes_['autofill-checkbox'] = args.autofillSynced;
+ dataTypeBoxesChecked_['autofill-checkbox'] = args.autofillSynced;
+ dataTypeBoxesDisabled_['autofill-checkbox'] = args.autofillEnforced;
$('autofill-checkbox').onclick = this.handleDataTypeClick_;
$('autofill-item').hidden = false;
} else {
@@ -341,7 +353,8 @@ cr.define('options', function() {
}
if (args.extensionsRegistered) {
$('extensions-checkbox').checked = args.extensionsSynced;
- dataTypeBoxes_['extensions-checkbox'] = args.extensionsSynced;
+ dataTypeBoxesChecked_['extensions-checkbox'] = args.extensionsSynced;
+ dataTypeBoxesDisabled_['extensions-checkbox'] = args.extensionsEnforced;
$('extensions-checkbox').onclick = this.handleDataTypeClick_;
$('extensions-item').hidden = false;
} else {
@@ -349,7 +362,8 @@ cr.define('options', function() {
}
if (args.typedUrlsRegistered) {
$('typed-urls-checkbox').checked = args.typedUrlsSynced;
- dataTypeBoxes_['typed-urls-checkbox'] = args.typedUrlsSynced;
+ dataTypeBoxesChecked_['typed-urls-checkbox'] = args.typedUrlsSynced;
+ dataTypeBoxesDisabled_['typed-urls-checkbox'] = args.typedUrlsEnforced;
$('typed-urls-checkbox').onclick = this.handleDataTypeClick_;
$('omnibox-item').hidden = false;
} else {
@@ -357,7 +371,8 @@ cr.define('options', function() {
}
if (args.appsRegistered) {
$('apps-checkbox').checked = args.appsSynced;
- dataTypeBoxes_['apps-checkbox'] = args.appsSynced;
+ dataTypeBoxesChecked_['apps-checkbox'] = args.appsSynced;
+ dataTypeBoxesDisabled_['apps-checkbox'] = args.appsEnforced;
$('apps-checkbox').onclick = this.handleDataTypeClick_;
$('apps-item').hidden = false;
} else {
@@ -365,7 +380,8 @@ cr.define('options', function() {
}
if (args.tabsRegistered) {
$('tabs-checkbox').checked = args.tabsSynced;
- dataTypeBoxes_['tabs-checkbox'] = args.tabsSynced;
+ dataTypeBoxesChecked_['tabs-checkbox'] = args.tabsSynced;
+ dataTypeBoxesDisabled_['tabs-checkbox'] = args.tabsEnforced;
$('tabs-checkbox').onclick = this.handleDataTypeClick_;
$('tabs-item').hidden = false;
} else {
@@ -377,11 +393,12 @@ cr.define('options', function() {
/**
* Updates the cached values of the sync data type checkboxes stored in
- * |dataTypeBoxes_|. Used as an onclick handler for each data type checkbox.
+ * |dataTypeBoxesChecked_|. Used as an onclick handler for each data type
+ * checkbox.
* @private
*/
handleDataTypeClick_: function() {
- dataTypeBoxes_[this.id] = this.checked;
+ dataTypeBoxesChecked_[this.id] = this.checked;
chrome.send('coreOptionsUserMetricsAction',
['Options_SyncToggleDataType']);
},
« no previous file with comments | « no previous file | chrome/browser/sync/profile_sync_service.h » ('j') | chrome/browser/sync/profile_sync_service.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698