| Index: chrome/browser/resources/options2/cookies_list.js
|
| diff --git a/chrome/browser/resources/options2/cookies_list.js b/chrome/browser/resources/options2/cookies_list.js
|
| index f7b6b97ee9bf7652fa3056ff739608a5439246b8..6ba971d8da869b96e2a1b326cae3e526ef0a68da 100644
|
| --- a/chrome/browser/resources/options2/cookies_list.js
|
| +++ b/chrome/browser/resources/options2/cookies_list.js
|
| @@ -77,6 +77,22 @@ cr.define('options', function() {
|
| return nodes;
|
| }
|
|
|
| + /**
|
| + * Adds information about an app that protects this data item to the
|
| + * @{code element}.
|
| + * @param {Element} element The DOM element the information should be
|
| + appended to.
|
| + * @param {{id: string, name: string}} appInfo Information about an app.
|
| + */
|
| + function addAppInfo(element, appInfo) {
|
| + var img = element.ownerDocument.createElement('img');
|
| + img.src = 'chrome://extension-icon/' + appInfo.id + '/16/1';
|
| + img.title = loadTimeData.getString('label_protected_by_apps') +
|
| + ' ' + appInfo.name;
|
| + img.className = 'protecting-app';
|
| + element.appendChild(img);
|
| + }
|
| +
|
| var parentLookup = {};
|
| var lookupRequests = {};
|
|
|
| @@ -239,6 +255,7 @@ cr.define('options', function() {
|
| };
|
| if (this.origin)
|
| this.origin.collectSummaryInfo(info);
|
| +
|
| var list = [];
|
| if (info.cookies > 1)
|
| list.push(loadTimeData.getStringF('cookie_plural', info.cookies));
|
| @@ -254,17 +271,23 @@ cr.define('options', function() {
|
| list.push(loadTimeData.getString('cookie_file_system'));
|
| if (info.serverBoundCerts)
|
| list.push(loadTimeData.getString('cookie_server_bound_cert'));
|
| +
|
| var text = '';
|
| - for (var i = 0; i < list.length; ++i)
|
| + for (var i = 0; i < list.length; ++i) {
|
| if (text.length > 0)
|
| text += ', ' + list[i];
|
| else
|
| text = list[i];
|
| + }
|
| this.dataChild.textContent = text;
|
| - if (info.quota && info.quota.totalUsage) {
|
| - this.sizeChild.textContent = info.quota.totalUsage;
|
| +
|
| + for (var key in info.appsProtectingThis) {
|
| + addAppInfo(this.dataChild, apps[key]);
|
| }
|
|
|
| + if (info.quota && info.quota.totalUsage)
|
| + this.sizeChild.textContent = info.quota.totalUsage;
|
| +
|
| if (this.expanded)
|
| this.updateItems_();
|
| },
|
| @@ -462,6 +485,15 @@ cr.define('options', function() {
|
| } else if (this.data.type == 'server_bound_cert') {
|
| info.serverBoundCerts++;
|
| }
|
| +
|
| + var apps = this.data.appsProtectingThis;
|
| + if (apps) {
|
| + if (!info.appsProtectingThis)
|
| + info.appsProtectingThis = {};
|
| + apps.forEach(function(appInfo) {
|
| + info.appsProtectingThis[appInfo.id] = appInfo;
|
| + });
|
| + }
|
| }
|
| },
|
|
|
| @@ -474,44 +506,38 @@ cr.define('options', function() {
|
| if (this.children.length > 0) {
|
| for (var i = 0; i < this.children.length; ++i)
|
| this.children[i].createItems(item);
|
| - } else if (this.data && !this.data.hasChildren) {
|
| - var text = '';
|
| - switch (this.data.type) {
|
| - case 'cookie':
|
| - case 'database':
|
| - text = this.data.name;
|
| - break;
|
| - case 'local_storage':
|
| - text = loadTimeData.getString('cookie_local_storage');
|
| - break;
|
| - case 'app_cache':
|
| - text = loadTimeData.getString('cookie_app_cache');
|
| - break;
|
| - case 'indexed_db':
|
| - text = loadTimeData.getString('cookie_indexed_db');
|
| - break;
|
| - case 'file_system':
|
| - text = loadTimeData.getString('cookie_file_system');
|
| - break;
|
| - case 'server_bound_cert':
|
| - text = loadTimeData.getString('cookie_server_bound_cert');
|
| - break;
|
| - }
|
| - if (!text)
|
| - return;
|
| - var div = item.ownerDocument.createElement('div');
|
| - div.className = 'cookie-item';
|
| - // Help out screen readers and such: this is a clickable thing.
|
| - div.setAttribute('role', 'button');
|
| - div.textContent = text;
|
| - var index = item.appendItem(this, div);
|
| - div.onclick = function() {
|
| - if (item.selectedIndex == index)
|
| - item.selectedIndex = -1;
|
| - else
|
| - item.selectedIndex = index;
|
| - };
|
| + return;
|
| + }
|
| +
|
| + if (!this.data || this.data.hasChildren)
|
| + return;
|
| +
|
| + var text = '';
|
| + switch (this.data.type) {
|
| + case 'cookie':
|
| + case 'database':
|
| + text = this.data.name;
|
| + break;
|
| + default:
|
| + text = loadTimeData.getString('cookie_' + this.data.type);
|
| }
|
| + if (!text)
|
| + return;
|
| +
|
| + var div = item.ownerDocument.createElement('div');
|
| + div.className = 'cookie-item';
|
| + // Help out screen readers and such: this is a clickable thing.
|
| + div.setAttribute('role', 'button');
|
| + div.tabIndex = 0;
|
| + div.textContent = text;
|
| + var apps = this.data.appsProtectingThis;
|
| + if (apps)
|
| + apps.forEach(addAppInfo.bind(null, div));
|
| +
|
| + var index = item.appendItem(this, div);
|
| + div.onclick = function() {
|
| + item.selectedIndex = (item.selectedIndex == index) ? -1 : index;
|
| + };
|
| },
|
|
|
| /**
|
| @@ -526,22 +552,22 @@ cr.define('options', function() {
|
| */
|
| setDetailText: function(element, infoNodes) {
|
| var table;
|
| - if (this.data && !this.data.hasChildren) {
|
| - if (cookieInfo[this.data.type]) {
|
| - var info = cookieInfo[this.data.type];
|
| - var nodes = infoNodes[this.data.type].info;
|
| - for (var i = 0; i < info.length; ++i) {
|
| - var name = info[i][0];
|
| - if (name != 'id' && this.data[name])
|
| - nodes[name].textContent = this.data[name];
|
| - else
|
| - nodes[name].textContent = '';
|
| - }
|
| - table = infoNodes[this.data.type].table;
|
| + if (this.data && !this.data.hasChildren && cookieInfo[this.data.type]) {
|
| + var info = cookieInfo[this.data.type];
|
| + var nodes = infoNodes[this.data.type].info;
|
| + for (var i = 0; i < info.length; ++i) {
|
| + var name = info[i][0];
|
| + if (name != 'id' && this.data[name])
|
| + nodes[name].textContent = this.data[name];
|
| + else
|
| + nodes[name].textContent = '';
|
| }
|
| + table = infoNodes[this.data.type].table;
|
| }
|
| +
|
| while (element.childNodes.length > 1)
|
| element.removeChild(element.firstChild);
|
| +
|
| if (table)
|
| element.insertBefore(table, element.firstChild);
|
| },
|
| @@ -559,6 +585,7 @@ cr.define('options', function() {
|
| set parent(parent) {
|
| if (parent == this.parent)
|
| return;
|
| +
|
| if (parent instanceof CookieListItem) {
|
| // If the parent is to be a CookieListItem, then we keep the reference
|
| // to it by its containing list and list index, rather than directly.
|
| @@ -572,12 +599,14 @@ cr.define('options', function() {
|
| } else {
|
| this.parent_ = parent;
|
| }
|
| +
|
| if (this.data && this.data.id) {
|
| if (parent)
|
| parentLookup[this.data.id] = this;
|
| else
|
| delete parentLookup[this.data.id];
|
| }
|
| +
|
| if (this.data && this.data.hasChildren &&
|
| !this.children.length && !lookupRequests[this.data.id]) {
|
| lookupRequests[this.data.id] = true;
|
|
|