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

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

Issue 1855393006: [Chrome Settings UI] If User Exceptions are not allowed, prevent editing / viewing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix JS styles. Created 4 years, 8 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/content_settings_exceptions_area.js
diff --git a/chrome/browser/resources/options/content_settings_exceptions_area.js b/chrome/browser/resources/options/content_settings_exceptions_area.js
index 3ad7ac62a552f0e1079168e4d2c97cf12e4e61c1..5cc09f4540e6d17643020e4128fb84e2c2fdaa1e 100644
--- a/chrome/browser/resources/options/content_settings_exceptions_area.js
+++ b/chrome/browser/resources/options/content_settings_exceptions_area.js
@@ -520,6 +520,41 @@ cr.define('options.contentSettings', function() {
},
/**
+ * Updates visibility of each row, depending on content.
+ */
+ updateRowVisibility: function() {
+ // Rows with user exceptions are visible iff this.isEditable().
+ // All other rows are visible.
+ var isEditable = this.isEditable();
+ for (var index = 0; index < this.dataModel.length; ++index) {
+ var item = this.getListItemByIndex(index);
+ if (item.dataItem.source == 'preference')
+ item.hidden = !isEditable;
+ }
+ },
+
+ /**
+ * Sets whether user is allowed to set preference exceptions. Updates UI.
+ *
+ * @param {string} allowEdit Whether or not user may set preference
Dan Beam 2016/05/03 04:20:26 should this be a boolean?
huangs 2016/05/03 18:34:19 Done.
+ * exceptions.
+ */
+ setAllowEdit: function(allowEdit) {
+ var oldIsEditable = this.isEditable();
+ this.allowEdit = allowEdit;
Dan Beam 2016/05/03 04:20:26 can this be private?
huangs 2016/05/03 18:34:19 Done.
+ var newIsEditable = this.isEditable();
+
+ // If visibility changed, add or remove the Add New Exception row.
+ if (oldIsEditable != newIsEditable) {
+ if (newIsEditable)
+ this.dataModel.push(null);
+ else
+ this.dataModel.pop();
+ this.updateRowVisibility();
+ }
+ },
+
+ /**
* Sets the exceptions in the js model.
*
* @param {Array<options.Exception>} entries A list of dictionaries of
@@ -536,6 +571,7 @@ cr.define('options.contentSettings', function() {
var args = [0, deleteCount];
args.push.apply(args, entries);
this.dataModel.splice.apply(this.dataModel, args);
+ this.updateRowVisibility();
},
/**
@@ -562,14 +598,14 @@ cr.define('options.contentSettings', function() {
* Returns whether the rows are editable in this list.
*/
isEditable: function() {
- // Exceptions of the following lists are not editable for now.
- return isEditableType(this.contentType);
+ return this.allowEdit && isEditableType(this.contentType);
},
/**
* Removes all exceptions from the js model.
*/
reset: function() {
+ this.allowEdit = true;
if (this.isEditable()) {
// The null creates the Add New Exception row.
this.dataModel = new ArrayDataModel([null]);

Powered by Google App Engine
This is Rietveld 408576698