| 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..27facc42cf725cb83c0148a2e6b5e6ac651e65c6 100644
|
| --- a/chrome/browser/resources/settings/location_page/location_page.js
|
| +++ b/chrome/browser/resources/settings/location_page/location_page.js
|
| @@ -16,6 +16,7 @@
|
| * @element cr-settings-location-page
|
| */
|
| Polymer({
|
| + /* TODO(finnur): Rename this to cr-settings-site-category. */
|
| is: 'cr-settings-location-page',
|
|
|
| properties: {
|
| @@ -59,36 +60,178 @@ Polymer({
|
| },
|
|
|
| /**
|
| - * Name of the 'iron-icon' to show.
|
| + * What the main toggle for the category is set to (the global default when
|
| + * no other policy is in effect).
|
| */
|
| - icon: {
|
| - type: String,
|
| - value: 'communication:location-on',
|
| - readOnly: true,
|
| + toggleState: {
|
| + type: Boolean,
|
| + },
|
| +
|
| + /**
|
| + * The ID of the category this widget is displaying data for.
|
| + * See |categories| for possible values.
|
| + */
|
| + category: {
|
| + type: Number,
|
| },
|
|
|
| /**
|
| - * Array of objects with url members.
|
| + * An enum containing all the possible category numbers. Corresponds to
|
| + * the values found in the ContentSettingsType.
|
| */
|
| - block: {
|
| - type: Array,
|
| + categories: {
|
| + type: Object,
|
| },
|
|
|
| /**
|
| - * Array of objects with url members.
|
| + * An enum containing the two possible values for the site list (allowed
|
| + * list and blocked list).
|
| */
|
| - allow: {
|
| - type: Array,
|
| + allowOrBlock: {
|
| + readOnly: true,
|
| + type: Object,
|
| + value: {
|
| + BLOCK: 0,
|
| + ALLOW: 1,
|
| + },
|
| },
|
| },
|
|
|
| ready: function() {
|
| - this.block = [];
|
| - this.allow = [];
|
| + chrome.send('fetchToggleState', [this.category]);
|
| + },
|
| +
|
| + attached: function() {
|
| + var self = this;
|
| + cr.define('Settings', function() {
|
| + return {
|
| + receiveToggleState: function() {
|
| + return self.receiveToggleState_.apply(self, arguments);
|
| + },
|
| + };
|
| + });
|
| + },
|
| +
|
| + /**
|
| + * Receive the state of the toggle (from the native level).
|
| + * @param {boolean} toggleState The initial value of the toggle.
|
| + * @private
|
| + */
|
| + receiveToggleState_: function(toggleState) {
|
| + this.toggleState = toggleState;
|
| + },
|
| +
|
| + /**
|
| + * A handler for flipping the toggle value.
|
| + * @private
|
| + */
|
| + handleToggleChange_: function(event) {
|
| + chrome.send(
|
| + 'toggleChanged', [this.category, this.toggleState]);
|
| + },
|
| +
|
| + /**
|
| + * A utility function to compute the icon to use for the category.
|
| + * @param {number} category The category to show the icon for.
|
| + * @private
|
| + */
|
| + computeIcon_: function(category) {
|
| + // Wonder if any of these enum values are directly accessible from .js?
|
| + switch (category) {
|
| + case this.categories.COOKIES:
|
| + return ''; // Haven't found a good cookies icon under iron-icons.
|
| + case this.categories.JAVASCRIPT:
|
| + return 'icons:input';
|
| + case this.categories.FULLSCREEN:
|
| + return 'icons:fullscreen';
|
| + case this.categories.POPUPS:
|
| + return 'icons:open-in-new';
|
| + case this.categories.GEOLOCATION:
|
| + return 'communication:location-on';
|
| + case this.categories.NOTIFICATION:
|
| + return 'social:notifications';
|
| + case this.categories.CAMERA:
|
| + return 'av:videocam';
|
| + case this.categories.MIC:
|
| + return 'av:mic';
|
| + default:
|
| + assertNotReached();
|
| + return '';
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * A utility function to compute the title of the category.
|
| + * @param {number} category The category to show the title for.
|
| + * @private
|
| + */
|
| + computeTitle_: function(category) {
|
| + switch (category) {
|
| + case this.categories.COOKIES:
|
| + return loadTimeData.getString('siteSettingsCookies');
|
| + case this.categories.JAVASCRIPT:
|
| + return loadTimeData.getString('siteSettingsJavascript');
|
| + case this.categories.FULLSCREEN:
|
| + return loadTimeData.getString('siteSettingsFullscreen');
|
| + case this.categories.POPUPS:
|
| + return loadTimeData.getString('siteSettingsPopups');
|
| + case this.categories.GEOLOCATION:
|
| + return loadTimeData.getString('siteSettingsLocation');
|
| + case this.categories.NOTIFICATION:
|
| + return loadTimeData.getString('siteSettingsNotifications');
|
| + case this.categories.CAMERA:
|
| + return loadTimeData.getString('siteSettingsCamera');
|
| + case this.categories.MIC:
|
| + return loadTimeData.getString('siteSettingsMic');
|
| + default:
|
| + assertNotReached();
|
| + return '';
|
| + }
|
| },
|
|
|
| - getTitleAndCount_: function(title, count) {
|
| - return loadTimeData.getStringF(
|
| - 'titleAndCount', loadTimeData.getString(title), count);
|
| + /**
|
| + * A utility function to compute the description for the category.
|
| + * @param {number} category The category to show the description for.
|
| + * @param {boolean} toggleState The state of the global toggle.
|
| + * @private
|
| + */
|
| + computeDesc_: function(category, toggleState) {
|
| + switch (category) {
|
| + case this.categories.JAVASCRIPT:
|
| + // "Allowed (recommended)" vs "Blocked".
|
| + return toggleState ?
|
| + loadTimeData.getString('siteSettingsAllowedRecommended') :
|
| + loadTimeData.getString('siteSettingsBlocked');
|
| + case this.categories.POPUPS:
|
| + // "Allowed" vs "Blocked (recommended)".
|
| + return toggleState ?
|
| + loadTimeData.getString('siteSettingsAllowed') :
|
| + loadTimeData.getString('siteSettingsBlockedRecommended');
|
| + case this.categories.NOTIFICATION:
|
| + // "Ask before sending (recommended)" vs "Blocked".
|
| + return toggleState ?
|
| + loadTimeData.getString('siteSettingsAskBeforeSending') :
|
| + loadTimeData.getString('siteSettingsBlocked');
|
| + case this.categories.GEOLOCATION:
|
| + case this.categories.CAMERA:
|
| + case this.categories.MIC:
|
| + // "Ask before accessing (recommended)" vs "Blocked".
|
| + return toggleState ?
|
| + loadTimeData.getString('siteSettingsAskBeforeAccessing') :
|
| + loadTimeData.getString('siteSettingsBlocked');
|
| + case this.categories.FULLSCREEN:
|
| + // "Allowed" vs. "Ask first (recommended)".
|
| + return toggleState ?
|
| + loadTimeData.getString('siteSettingsAllowed') :
|
| + loadTimeData.getString('siteSettingsAskFirstRecommended');
|
| + case this.categories.COOKIES:
|
| + // "Allow sites to save and read cookie data" vs "Blocked".
|
| + return toggleState ?
|
| + loadTimeData.getString('siteSettingsCookiesAllowed') :
|
| + loadTimeData.getString('siteSettingsBlocked');
|
| + default:
|
| + assertNotReached();
|
| + return '';
|
| + }
|
| },
|
| });
|
|
|