Index: chrome/browser/resources/settings/site_settings/site_details.js |
diff --git a/chrome/browser/resources/settings/site_settings/site_details.js b/chrome/browser/resources/settings/site_settings/site_details.js |
index c75cfa7eb5ef01263f393ee2e09d2dd7fda4fc11..4deaf1e6ae40ac92809692de13091f595b24c035 100644 |
--- a/chrome/browser/resources/settings/site_settings/site_details.js |
+++ b/chrome/browser/resources/settings/site_settings/site_details.js |
@@ -14,12 +14,12 @@ Polymer({ |
properties: { |
/** |
- * The site that this widget is showing details for. |
- * @type {SiteException} |
+ * The origin that this widget is showing details for. |
+ * @private |
*/ |
- site: { |
- type: Object, |
- observer: 'onSiteChanged_', |
+ origin: { |
+ type: String, |
+ observer: 'onOriginChanged_', |
}, |
/** |
@@ -59,21 +59,36 @@ Polymer({ |
var site = settings.getQueryParameters().get('site'); |
if (!site) |
return; |
- this.browserProxy.getSiteDetails(site).then(function(siteInfo) { |
- this.site = this.expandSiteException(siteInfo); |
- }.bind(this)); |
+ this.origin = site; |
}, |
/** |
* Handler for when the origin changes. |
* @private |
*/ |
- onSiteChanged_: function() { |
- // origin may be initially undefined if the user follows a direct |
- // link (URL) to this page. |
- var origin = this.site.origin; |
- if (origin !== undefined) |
- this.$.usageApi.fetchUsageTotal(this.toUrl(origin).hostname); |
+ onOriginChanged_: function() { |
+ this.$.usageApi.fetchUsageTotal(this.toUrl(this.origin).hostname); |
+ |
+ var siteDetailsPermissions = |
+ /** @type{!NodeList<!SiteDetailsPermissionElement>} */ |
+ (this.root.querySelectorAll('site-details-permission')); |
+ var categoryList = |
+ /** @type{!Array<!string>} */ ( |
+ Array.prototype.map.call(siteDetailsPermissions, function(element) { |
+ return element.category; |
+ })); |
+ |
+ this.browserProxy.getOriginPermissions(this.origin, categoryList) |
+ .then(function(exceptionList) { |
+ exceptionList.forEach(function(exception, i) { |
+ // |exceptionList| should be in the same order as |categoryList|, |
+ // which is in the same order as |siteDetailsPermissions|. |
+ var element = /** @type{!SiteDetailsPermissionElement} */ ( |
+ siteDetailsPermissions[i]); |
+ element.site = /** @type{!SiteException} */ ( |
+ element.expandSiteException(exception)); |
+ }); |
+ }); |
}, |
/** @private */ |
@@ -89,8 +104,7 @@ Polymer({ |
onConfirmClearStorage_: function(e) { |
e.preventDefault(); |
this.confirmationDeleteMsg_ = loadTimeData.getStringF( |
- 'siteSettingsSiteRemoveConfirmation', |
- this.toUrl(this.site.origin).href); |
+ 'siteSettingsSiteRemoveConfirmation', this.toUrl(this.origin).href); |
this.$.confirmDeleteDialog.showModal(); |
}, |
@@ -99,8 +113,7 @@ Polymer({ |
* @private |
*/ |
onClearStorage_: function() { |
- this.$.usageApi.clearUsage( |
- this.toUrl(this.site.origin).href, this.storageType_); |
+ this.$.usageApi.clearUsage(this.toUrl(this.origin).href, this.storageType_); |
}, |
/** |
@@ -109,7 +122,7 @@ Polymer({ |
* @private |
*/ |
onUsageDeleted_: function(event) { |
- if (event.detail.origin == this.toUrl(this.site.origin).href) { |
+ if (event.detail.origin == this.toUrl(this.origin).href) { |
this.storedData_ = ''; |
this.navigateBackIfNoData_(); |
} |
@@ -120,9 +133,8 @@ Polymer({ |
* @private |
*/ |
onClearAndReset_: function() { |
- Array.prototype.forEach.call( |
- this.root.querySelectorAll('site-details-permission'), |
- function(element) { |
+ this.root.querySelectorAll('site-details-permission') |
+ .forEach(function(element) { |
element.resetPermission(); |
}); |