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

Unified Diff: chrome/browser/resources/settings/site_settings/site_settings_behavior.js

Issue 2021343003: MD Site Settings: Add five new top level categories (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Unit test fix Created 4 years, 7 months 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/settings/site_settings/site_settings_behavior.js
diff --git a/chrome/browser/resources/settings/site_settings/site_settings_behavior.js b/chrome/browser/resources/settings/site_settings/site_settings_behavior.js
index c541b8db9f1ff136caaf0b309b88974d66b5dbb9..6d21fed4a9fc4d8aa19f84c6d5124f46a028d3b8 100644
--- a/chrome/browser/resources/settings/site_settings/site_settings_behavior.js
+++ b/chrome/browser/resources/settings/site_settings/site_settings_behavior.js
@@ -10,10 +10,10 @@
var SiteSettingsBehaviorImpl = {
properties: {
/**
- * The ID of the category this element is displaying data for.
+ * The string ID of the category this element is displaying data for.
* See site_settings/constants.js for possible values.
*/
- category: Number,
+ category: String,
/**
* The browser proxy used to retrieve and change information about site
@@ -34,7 +34,7 @@ var SiteSettingsBehaviorImpl = {
* for.
* @param {string} secondaryPattern The secondary pattern to reset the
* permission for.
- * @param {number} category The category permission to change.
+ * @param {string} category The category permission to change.
* @protected
*/
resetCategoryPermissionForOrigin: function(
@@ -49,7 +49,7 @@ var SiteSettingsBehaviorImpl = {
* for.
* @param {string} secondaryPattern The secondary pattern to change the
* permission for.
- * @param {number} category The category permission to change.
+ * @param {string} category The category permission to change.
* @param {string} value What value to set the permission to.
* @protected
*/
@@ -61,12 +61,16 @@ var SiteSettingsBehaviorImpl = {
/**
* A utility function to lookup a category name from its enum.
- * @param {number} category The category ID to look up.
+ * @param {string} category The category ID to look up.
* @return {string} The category found or blank string if not found.
* @protected
*/
computeCategoryTextId: function(category) {
michaelpg 2016/06/02 12:58:30 Can you adjust the IDs to match so you don't need
Finnur 2016/06/02 17:31:36 This was my thinking at first too, but the problem
michaelpg 2016/06/03 13:37:14 Cool, makes sense then.
switch (category) {
+ case settings.ContentSettingsTypes.AUTOMATIC_DOWNLOADS:
+ return 'automatic-downloads';
+ case settings.ContentSettingsTypes.BACKGROUND_SYNC:
+ return 'background-sync';
case settings.ContentSettingsTypes.CAMERA:
return 'camera';
case settings.ContentSettingsTypes.COOKIES:
@@ -77,12 +81,18 @@ var SiteSettingsBehaviorImpl = {
return 'images';
case settings.ContentSettingsTypes.JAVASCRIPT:
return 'javascript';
+ case settings.ContentSettingsTypes.KEYGEN:
+ return 'keygen';
case settings.ContentSettingsTypes.MIC:
return 'microphone';
case settings.ContentSettingsTypes.NOTIFICATIONS:
return 'notifications';
+ case settings.ContentSettingsTypes.PLUGINS:
+ return 'plugins';
case settings.ContentSettingsTypes.POPUPS:
return 'popups';
+ case settings.ContentSettingsTypes.UNSANDBOXED_PLUGINS:
+ return 'unsandboxed-plugins';
default:
return '';
}
@@ -92,12 +102,17 @@ var SiteSettingsBehaviorImpl = {
* A utility function to compute the icon to use for the category, both for
* the overall category as well as the individual permission in the details
* for a site.
- * @param {number} category The category to show the icon for.
+ * @param {string} category The category to show the icon for.
* @return {string} The id of the icon for the given category.
* @protected
*/
computeIconForContentCategory: function(category) {
+ // TODO(finnur): Get missing image assets from designer.
switch (category) {
+ case settings.ContentSettingsTypes.AUTOMATIC_DOWNLOADS:
+ return '';
+ case settings.ContentSettingsTypes.BACKGROUND_SYNC:
+ return '';
case settings.ContentSettingsTypes.CAMERA:
return 'settings:videocam';
case settings.ContentSettingsTypes.COOKIES:
@@ -110,12 +125,18 @@ var SiteSettingsBehaviorImpl = {
return 'settings:photo';
case settings.ContentSettingsTypes.JAVASCRIPT:
return 'settings:input';
+ case settings.ContentSettingsTypes.KEYGEN:
+ return '';
case settings.ContentSettingsTypes.MIC:
return 'settings:mic';
case settings.ContentSettingsTypes.NOTIFICATIONS:
return 'settings:notifications';
+ case settings.ContentSettingsTypes.PLUGINS:
+ return '';
case settings.ContentSettingsTypes.POPUPS:
return 'settings:open-in-new';
+ case settings.ContentSettingsTypes.UNSANDBOXED_PLUGINS:
+ return '';
default:
assertNotReached('Invalid category: ' + category);
return '';
@@ -126,12 +147,16 @@ var SiteSettingsBehaviorImpl = {
* A utility function to compute the title of the category, both for
* the overall category as well as the individual permission in the details
* for a site.
- * @param {number} category The category to show the title for.
+ * @param {string} category The category to show the title for.
* @return {string} The title for the given category.
* @protected
*/
computeTitleForContentCategory: function(category) {
switch (category) {
+ case settings.ContentSettingsTypes.AUTOMATIC_DOWNLOADS:
+ return loadTimeData.getString('siteSettingsAutomaticDownloads');
+ case settings.ContentSettingsTypes.BACKGROUND_SYNC:
+ return loadTimeData.getString('siteSettingsBackgroundSync');
case settings.ContentSettingsTypes.CAMERA:
return loadTimeData.getString('siteSettingsCamera');
case settings.ContentSettingsTypes.COOKIES:
@@ -144,12 +169,18 @@ var SiteSettingsBehaviorImpl = {
return loadTimeData.getString('siteSettingsImages');
case settings.ContentSettingsTypes.JAVASCRIPT:
return loadTimeData.getString('siteSettingsJavascript');
+ case settings.ContentSettingsTypes.KEYGEN:
+ return loadTimeData.getString('siteSettingsKeygen');
case settings.ContentSettingsTypes.MIC:
return loadTimeData.getString('siteSettingsMic');
case settings.ContentSettingsTypes.NOTIFICATIONS:
return loadTimeData.getString('siteSettingsNotifications');
+ case settings.ContentSettingsTypes.PLUGINS:
+ return loadTimeData.getString('siteSettingsPlugins');
case settings.ContentSettingsTypes.POPUPS:
return loadTimeData.getString('siteSettingsPopups');
+ case settings.ContentSettingsTypes.UNSANDBOXED_PLUGINS:
+ return loadTimeData.getString('siteSettingsUnsandboxedPlugins');
default:
assertNotReached('Invalid category: ' + category);
return '';
@@ -158,7 +189,7 @@ var SiteSettingsBehaviorImpl = {
/**
* A utility function to compute the description for the category.
- * @param {number} category The category to show the description for.
+ * @param {string} category The category to show the description for.
* @param {boolean} categoryEnabled The state of the global toggle.
* @param {boolean} showRecommendation Whether to show the '(recommended)'
* label prefix.
@@ -191,8 +222,8 @@ var SiteSettingsBehaviorImpl = {
return showRecommendation ?
loadTimeData.getString('siteSettingsAskBeforeSendingRecommended') :
loadTimeData.getString('siteSettingsAskBeforeSending');
- case settings.ContentSettingsTypes.GEOLOCATION:
case settings.ContentSettingsTypes.CAMERA:
+ case settings.ContentSettingsTypes.GEOLOCATION:
case settings.ContentSettingsTypes.MIC:
// "Ask before accessing (recommended)" vs "Blocked".
if (!categoryEnabled) {
@@ -217,6 +248,49 @@ var SiteSettingsBehaviorImpl = {
return showRecommendation ?
loadTimeData.getString('siteSettingsShowAllRecommended') :
loadTimeData.getString('siteSettingsShowAll');
+ case settings.ContentSettingsTypes.PLUGINS:
+ // "Detect and run important content (recommended)" vs "Let me choose".
+ if (!categoryEnabled) {
+ return loadTimeData.getString('siteSettingsLetMeChoose');
+ }
+ return showRecommendation ?
+ loadTimeData.getString(
+ 'siteSettingsDetectAndRunImportantRecommended') :
+ loadTimeData.getString('siteSettingsDetectAndRunImportant');
+ case settings.ContentSettingsTypes.BACKGROUND_SYNC:
+ // "Allow sites to finish sending and receiving data" vs "Do not allow".
+ if (!categoryEnabled) {
+ return loadTimeData.getString('siteSettingsBackgroundSyncBlocked');
+ }
+ return showRecommendation ?
+ loadTimeData.getString(
+ 'siteSettingsAllowRecentlyClosedSitesRecommended') :
+ loadTimeData.getString('siteSettingsAllowRecentlyClosedSites');
+ case settings.ContentSettingsTypes.KEYGEN:
+ // "Allow sites to use keygen" vs "Do not allow".
+ if (categoryEnabled) {
+ return loadTimeData.getString('siteSettingsKeygenAllow');
+ }
+ return showRecommendation ?
+ loadTimeData.getString('siteSettingsKeygenBlockRecommended') :
+ loadTimeData.getString('siteSettingsKeygenBlock');
+ case settings.ContentSettingsTypes.AUTOMATIC_DOWNLOADS:
+ // "Ask when a site wants to auto-download multiple" vs "Do not allow".
+ if (!categoryEnabled) {
+ return loadTimeData.getString('siteSettingsAutoDownloadBlock');
+ }
+ return showRecommendation ?
+ loadTimeData.getString('siteSettingsAutoDownloadAskRecommended') :
+ loadTimeData.getString('siteSettingsAutoDownloadAsk');
+ case settings.ContentSettingsTypes.UNSANDBOXED_PLUGINS:
+ // "Ask when a plugin accesses your computer" vs "Do not allow".
+ if (!categoryEnabled) {
+ return loadTimeData.getString('siteSettingsUnsandboxedPluginsBlock');
+ }
+ return showRecommendation ?
+ loadTimeData.getString(
+ 'siteSettingsUnsandboxedPluginsAskRecommended') :
+ loadTimeData.getString('siteSettingsUnsandboxedPluginsAsk');
default:
assertNotReached();
return '';
@@ -252,6 +326,37 @@ var SiteSettingsBehaviorImpl = {
},
/**
+ * Adds the wildcard prefix to a pattern string.
+ * @param {string} pattern The pattern to add the wildcard to.
+ * @return {string} The resulting pattern.
+ * @private
+ */
+ addPatternWildcard_: function(pattern) {
+ if (pattern.startsWith('http://'))
+ return pattern.replace('http://', 'http://[*.]');
+ else if (pattern.startsWith('https://'))
+ return pattern.replace('https://', 'https://[*.]');
+ else
+ return '[*.]' + pattern;
+ },
+
+ /**
+ * Removes the wildcard prefix from a pattern string.
+ * @param {string} pattern The pattern to remove the wildcard from.
+ * @return {string} The resulting pattern.
+ * @private
+ */
+ removePatternWildcard_: function(pattern) {
+ if (pattern.startsWith('http://[*.]'))
+ return pattern.replace('http://[*.]', 'http://');
+ else if (pattern.startsWith('https://[*.]'))
+ return pattern.replace('https://[*.]', 'https://');
+ else if (pattern.startsWith('[*.]'))
+ return pattern.substring(4, pattern.length);
+ return pattern;
+ },
+
+ /**
* Returns the icon to use for a given site.
* @param {SiteException} site The url of the site to fetch the icon for.
* @return {string} The background-image style with the favicon.

Powered by Google App Engine
This is Rietveld 408576698