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

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

Issue 5964003: Content settings lists moved to sub-sub pages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix syntax Created 10 years 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 ac207058b1c5cb5d4bb8d81481f2ea7629f1f408..ddc85a00ac1f79e4f830d37863029ef71883a9f7 100644
--- a/chrome/browser/resources/options/content_settings_exceptions_area.js
+++ b/chrome/browser/resources/options/content_settings_exceptions_area.js
@@ -308,8 +308,10 @@ cr.define('options.contentSettings', function() {
this.pattern = newPattern;
this.setting = newSetting;
+ // TODO(estade): this will need to be updated if geolocation/notifications
+ // become editable.
if (oldPattern != newPattern) {
- chrome.send('removeExceptions',
+ chrome.send('removeException',
[this.contentType, this.mode, oldPattern]);
}
@@ -400,7 +402,16 @@ cr.define('options.contentSettings', function() {
decorate: function() {
DeletableItemList.prototype.decorate.call(this);
- this.contentType = this.parentNode.getAttribute('contentType');
+ this.classList.add('settings-list');
+
+ for (var parentNode = this.parentNode; parentNode;
+ parentNode = parentNode.parentNode) {
+ if (parentNode.hasAttribute('contentType')) {
+ this.contentType = parentNode.getAttribute('contentType');
+ break;
+ }
+ }
+
this.mode = this.getAttribute('mode');
var exceptionList = this;
@@ -505,33 +516,17 @@ cr.define('options.contentSettings', function() {
console.log('Tried to delete an undeletable row.');
return;
}
- chrome.send(
- 'removeExceptions',
- [listItem.contentType, listItem.mode, listItem.pattern]);
- },
- /**
- * Removes all selected rows from browser's model.
- */
- removeSelectedRows: function() {
- // The first member is the content type; the rest of the values describe
- // the patterns we are removing.
- var args = [this.contentType];
- var selectedItems = this.selectedItems;
- for (var i = 0; i < selectedItems.length; i++) {
- if (this.contentType == 'location') {
- args.push(selectedItems[i]['origin']);
- args.push(selectedItems[i]['embeddingOrigin']);
- } else if (this.contentType == 'notifications') {
- args.push(selectedItems[i]['origin']);
- args.push(selectedItems[i]['setting']);
- } else {
- args.push(this.mode);
- args.push(selectedItems[i]['displayPattern']);
- }
- }
+ var dataItem = listItem.dataItem;
+ var args = [listItem.contentType];
+ if (listItem.contentType == 'location')
+ args.push(dataItem['origin'], dataItem['embeddingOrigin']);
+ else if (listItem.contentType == 'notifications')
+ args.push(dataItem['origin'], dataItem['setting']);
+ else
+ args.push(listItem.mode, listItem.pattern);
- chrome.send('removeExceptions', args);
+ chrome.send('removeException', args);
},
/**
@@ -544,9 +539,74 @@ cr.define('options.contentSettings', function() {
}
};
+ var OptionsPage = options.OptionsPage;
+
+ /**
+ * Encapsulated handling of content settings list subpage.
+ * @constructor
+ */
+ function ContentSettingsExceptionsArea() {
+ OptionsPage.call(this, 'contentExceptions',
+ '', 'contentSettingsExceptionsArea');
+ }
+
+ cr.addSingletonGetter(ContentSettingsExceptionsArea);
+
+ ContentSettingsExceptionsArea.prototype = {
+ __proto__: OptionsPage.prototype,
+
+ initializePage: function() {
+ OptionsPage.prototype.initializePage.call(this);
+
+ var exceptionsLists = this.pageDiv.querySelectorAll('list');
+ for (var i = 0; i < exceptionsLists.length; i++) {
+ options.contentSettings.ExceptionsList.decorate(exceptionsLists[i]);
+ }
+
+ ContentSettingsExceptionsArea.hideOTRLists();
+ },
+
+ /**
+ * Shows one list and hides all others.
+ * @param {string} type The content type.
+ */
+ showList: function(type) {
+ var header = this.pageDiv.querySelector('h1');
+ header.textContent = templateData[type + '_header'];
+
+ var divs = this.pageDiv.querySelectorAll('div[contentType]');
+ for (var i = 0; i < divs.length; i++) {
+ if (divs[i].getAttribute('contentType') == type)
+ divs[i].classList.remove('hidden');
+ else
+ divs[i].classList.add('hidden');
+ }
+ },
+ };
+
+ /**
+ * Called when the last incognito window is closed.
+ */
+ ContentSettingsExceptionsArea.OTRProfileDestroyed = function() {
+ this.hideOTRLists();
+ };
+
+ /**
+ * Clears and hides the incognito exceptions lists.
+ */
+ ContentSettingsExceptionsArea.hideOTRLists = function() {
+ var otrLists = document.querySelectorAll('list[mode=otr]');
+
+ for (var i = 0; i < otrLists.length; i++) {
+ otrLists[i].reset();
+ otrLists[i].parentNode.classList.add('hidden');
+ }
+ };
+
return {
ExceptionsListItem: ExceptionsListItem,
ExceptionsAddRowListItem: ExceptionsAddRowListItem,
ExceptionsList: ExceptionsList,
+ ContentSettingsExceptionsArea: ContentSettingsExceptionsArea,
};
});
« no previous file with comments | « chrome/browser/resources/options/content_settings_exceptions_area.html ('k') | chrome/browser/resources/options/options.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698