Index: chrome/browser/resources/settings/location_page/location_page.js |
diff --git a/chrome/browser/resources/settings/location_page/location_page.js b/chrome/browser/resources/settings/location_page/location_page.js |
index 1d8201bb641ed66a583086969914c07b7f65bd5d..3456e335765264bacc8cad4109f248a7040fcda7 100644 |
--- a/chrome/browser/resources/settings/location_page/location_page.js |
+++ b/chrome/browser/resources/settings/location_page/location_page.js |
@@ -59,15 +59,6 @@ Polymer({ |
}, |
/** |
- * Name of the 'iron-icon' to show. |
- */ |
- icon: { |
- type: String, |
- value: 'communication:location-on', |
- readOnly: true, |
- }, |
- |
- /** |
* Array of objects with url members. |
*/ |
block: { |
@@ -80,15 +71,170 @@ Polymer({ |
allow: { |
type: Array, |
}, |
+ |
+ /** |
+ * The content_settings_type value for the category we are displaying. |
+ * TODO(finnur): Get this working so that it can be set from outside. |
+ */ |
+ contentSettingsType: { |
+ type: Number, |
+ value: 8, |
+ }, |
+ |
+ /** |
+ * What the main toggle for the category is set to (the global default if |
+ * no other policy is in effect). |
+ */ |
+ globalDefault: { |
+ type: Boolean, |
+ value: false, |
+ }, |
+ |
+ /** |
+ * The site selected by the user in the dropdown list. |
+ */ |
+ siteSelected: { |
+ type: String, |
+ notify: true, |
+ } |
}, |
ready: function() { |
- this.block = []; |
- this.allow = []; |
+ chrome.send('fetchContentSettingsData', [this.contentSettingsType]); |
Dan Beam
2015/09/29 16:38:55
michaelpg@: how do you feel about this?
|
}, |
- getTitleAndCount_: function(title, count) { |
+ receiveData_: function(allowedList, blockedList, defaultValue) { |
+ this.block = blockedList; |
+ this.allow = allowedList; |
+ this.globalDefault = defaultValue; |
+ }, |
+ |
+ handleToggleChange_: function(event) { |
+ chrome.send( |
+ 'toggleChanged', [this.contentSettingsType, this.globalDefault]); |
+ }, |
+ |
+ handleDblClick_: function(event) { |
+ this.siteSelected = event.model.item.url; |
+ }, |
+ |
+ attached: function() { |
+ var self = this; |
+ cr.define('Settings', function() { |
+ return { |
+ receiveData: function() { |
+ return self.receiveData_.apply(self, arguments); |
+ }, |
+ }; |
+ }); |
+ }, |
+ |
+ computeIcon_: function(contentSettingsType) { |
+ // Wonder if any of these enum values are directly accessible from .js? |
+ switch (contentSettingsType) { |
+ case 0: // COOKIES. |
+ return ''; // Haven't found a good cookies icon under iron-icons. |
+ case 2: // JAVASCRIPT. |
+ return 'icons:input'; |
+ case 8: // FULLSCREEN. |
+ return 'icons:fullscreen'; |
+ case 4: // POPUPS. |
+ return 'icons:open-in-new'; |
+ case 5: // LOCATION. |
+ return 'communication:location-on'; |
+ case 6: // NOTIFICATION. |
+ return 'social:notifications'; |
+ case 13: // CAMERA. |
+ return 'av:videocam'; |
+ case 14: // MIC. |
+ return 'av:mic'; |
+ default: |
+ return ''; |
+ } |
+ }, |
+ |
+ computeTitle_: function(contentSettingsType) { |
+ switch (contentSettingsType) { |
+ case 0: |
+ return loadTimeData.getString('siteSettingsCookies'); |
+ case 2: |
+ return loadTimeData.getString('siteSettingsJavascript'); |
+ case 8: |
+ return loadTimeData.getString('siteSettingsFullscreen'); |
+ case 4: |
+ return loadTimeData.getString('siteSettingsPopups'); |
+ case 5: |
+ return loadTimeData.getString('siteSettingsLocation'); |
+ case 6: |
+ return loadTimeData.getString('siteSettingsNotifications'); |
+ case 13: |
+ return loadTimeData.getString('siteSettingsCamera'); |
+ case 14: |
+ return loadTimeData.getString('siteSettingsMic'); |
+ default: |
Dan Beam
2015/09/29 16:38:55
assertNotReached();
|
+ return 'unknown'; |
+ } |
+ }, |
+ |
+ computeDesc_: function(contentSettingsType, globalDefault) { |
+ switch (contentSettingsType) { |
+ case 2: // JAVASCRIPT. |
Dan Beam
2015/09/29 16:38:55
make an enum in the JS
|
+ // "Allowed (recommended)" vs "Blocked". |
+ return globalDefault ? |
+ loadTimeData.getString('siteSettingsAllowedRecommended') : |
+ loadTimeData.getString('siteSettingsBlocked'); |
+ case 4: // POPUPS. |
+ // "Allowed" vs "Blocked (recommended)". |
+ return globalDefault ? |
+ loadTimeData.getString('siteSettingsAllowed') : |
+ loadTimeData.getString('siteSettingsBlockedRecommended'); |
+ case 6: |
+ // "Ask before sending (recommended)" vs "Blocked". |
+ return globalDefault ? |
+ loadTimeData.getString('siteSettingsAskBeforeSending') : |
+ loadTimeData.getString('siteSettingsBlocked'); |
+ case 5: // LOCATION. |
+ case 13: // CAMERA. |
+ case 14: // MIC. |
+ // "Ask before accessing (recommended)" vs "Blocked". |
+ return globalDefault ? |
+ loadTimeData.getString('siteSettingsAskBeforeAccessing') : |
+ loadTimeData.getString('siteSettingsBlocked'); |
+ case 8: // FULLSCREEN. |
+ // "Allowed" vs. "Ask first (recommended)". |
+ return globalDefault ? |
+ loadTimeData.getString('siteSettingsAllowed') : |
+ loadTimeData.getString('siteSettingsAskFirstRecommended'); |
+ case 0: // COOKIES. |
+ // "Allow sites to save and read cookie data" vs "Blocked". |
+ return globalDefault ? |
+ loadTimeData.getString('siteSettingsCookiesAllowed') : |
+ loadTimeData.getString('siteSettingsBlocked'); |
+ default: |
Dan Beam
2015/09/29 16:38:55
assertNotReached();
|
+ return 'unknown'; |
+ } |
+ }, |
+ |
+ computeBlockedListHeader_: function(blockList) { |
+ return loadTimeData.getStringF( |
+ 'titleAndCount', |
+ loadTimeData.getString('siteSettingsBlock'), |
+ blockList.length); |
+ }, |
+ |
+ computeAllowedListHeader_: function(allowedList, globalDefault) { |
return loadTimeData.getStringF( |
- 'titleAndCount', loadTimeData.getString(title), count); |
+ 'titleAndCount', |
+ loadTimeData.getString( |
+ globalDefault ? 'siteSettingsAllow' : 'siteSettingsExceptions'), |
+ allowedList.length); |
+ }, |
+ |
+ showAllowedList_: function(allowedList) { |
+ return allowedList.length > 0; |
+ }, |
+ |
Dan Beam
2015/09/29 16:38:55
all these need /** @private */ and maybe to docume
|
+ showBlockedList_: function(blockedList, defaultValue) { |
+ return blockedList.length > 0 && defaultValue; |
}, |
}); |