Commit 744a17d5 authored by tommycli's avatar tommycli Committed by Commit bot

[HBD] Update MD Site Settings Plugins section to show 3rd mode checkbox.

Also updates a bunch of strings.

BUG=622922
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:closure_compilation

Review-Url: https://codereview.chromium.org/2280233002
Cr-Commit-Position: refs/heads/master@{#415394}
parent c0d55aff
...@@ -1257,14 +1257,23 @@ ...@@ -1257,14 +1257,23 @@
<message name="IDS_SETTINGS_SITE_SETTINGS_COOKIES_ALLOW_SITES_RECOMMENDED" desc="The 'allow cookies' label in site settings -- the recommended setting for when sites want to read/write cookie information."> <message name="IDS_SETTINGS_SITE_SETTINGS_COOKIES_ALLOW_SITES_RECOMMENDED" desc="The 'allow cookies' label in site settings -- the recommended setting for when sites want to read/write cookie information.">
Allow sites to save and read cookie data (recommended) Allow sites to save and read cookie data (recommended)
</message> </message>
<message name="IDS_SETTINGS_SITE_SETTINGS_PLUGINS_DETECT_IMPORTANT" desc="The 'detect and run important content' label in site settings."> <message name="IDS_SETTINGS_SITE_SETTINGS_FLASH_ALLOW" desc="The 'allow' label for Flash in site settings.">
Detect and run important plugin content Allow sites to run Flash
</message> </message>
<message name="IDS_SETTINGS_SITE_SETTINGS_PLUGINS_DETECT_IMPORTANT_RECOMMENDED" desc="The 'detect and run important content' label in site settings -- the recommended setting for when sites want to run plugins."> <message name="IDS_SETTINGS_SITE_SETTINGS_FLASH_BLOCK" desc="The 'block' label for Flash in site settings.">
Detect and run important plugin content (recommended) Block sites from running Flash
</message> </message>
<message name="IDS_SETTINGS_SITE_SETTINGS_PLUGINS_CHOOSE" desc="The 'let me choose' label in site settings."> <message name="IDS_SETTINGS_SITE_SETTINGS_FLASH_DETECT_IMPORTANT" desc="The 'detect and run important content' label in site settings.">
Let me choose when to run plugin content Run only important content
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_FLASH_DETECT_IMPORTANT_SUBTITLE" desc="The 'detect and run important content' subtitle label in site settings.">
Detect and run only important Flash content (recommended)
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_FLASH_ASK_BEFORE_RUNNING" desc="The 'ask before running' label for Flash in site settings.">
Ask first
</message>
<message name="IDS_SETTINGS_SITE_SETTINGS_FLASH_ASK_BEFORE_RUNNING_SUBTITLE" desc="The 'ask before running' subtitle label for Flash in site settings.">
Ask before allowing sites to run Flash (recommended)
</message> </message>
<message name="IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_ALLOW_RECENTLY_CLOSED_SITES" desc="The allow label for background sync in site settings."> <message name="IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_ALLOW_RECENTLY_CLOSED_SITES" desc="The allow label for background sync in site settings.">
Allow recently closed sites to finish sending and receiving data Allow recently closed sites to finish sending and receiving data
......
...@@ -78,8 +78,10 @@ Polymer({ ...@@ -78,8 +78,10 @@ Polymer({
* @private * @private
*/ */
computeHandlersDescription_: function(categoryEnabled) { computeHandlersDescription_: function(categoryEnabled) {
var setting = categoryEnabled ?
settings.PermissionValues.ALLOW : settings.PermissionValues.BLOCK;
return this.computeCategoryDesc( return this.computeCategoryDesc(
settings.ContentSettingsTypes.PROTOCOL_HANDLERS, categoryEnabled, true); settings.ContentSettingsTypes.PROTOCOL_HANDLERS, setting, true);
}, },
/** /**
......
...@@ -248,13 +248,14 @@ var SiteSettingsBehaviorImpl = { ...@@ -248,13 +248,14 @@ var SiteSettingsBehaviorImpl = {
/** /**
* A utility function to compute the description for the category. * A utility function to compute the description for the category.
* @param {string} 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 {string} setting The string value of the setting.
* @param {boolean} showRecommendation Whether to show the '(recommended)' * @param {boolean} showRecommendation Whether to show the '(recommended)'
* label prefix. * label prefix.
* @return {string} The category description. * @return {string} The category description.
* @protected * @protected
*/ */
computeCategoryDesc: function(category, categoryEnabled, showRecommendation) { computeCategoryDesc: function(category, setting, showRecommendation) {
var categoryEnabled = this.computeIsSettingEnabled(category, setting);
switch (category) { switch (category) {
case settings.ContentSettingsTypes.JAVASCRIPT: case settings.ContentSettingsTypes.JAVASCRIPT:
// "Allowed (recommended)" vs "Blocked". // "Allowed (recommended)" vs "Blocked".
...@@ -315,14 +316,11 @@ var SiteSettingsBehaviorImpl = { ...@@ -315,14 +316,11 @@ var SiteSettingsBehaviorImpl = {
loadTimeData.getString('siteSettingsShowAllRecommended') : loadTimeData.getString('siteSettingsShowAllRecommended') :
loadTimeData.getString('siteSettingsShowAll'); loadTimeData.getString('siteSettingsShowAll');
case settings.ContentSettingsTypes.PLUGINS: case settings.ContentSettingsTypes.PLUGINS:
// "Detect and run important content (recommended)" vs "Let me choose". if (setting == settings.PermissionValues.ALLOW)
if (!categoryEnabled) { return loadTimeData.getString('siteSettingsFlashAllow');
return loadTimeData.getString('siteSettingsLetMeChoose'); if (setting == settings.PermissionValues.BLOCK)
} return loadTimeData.getString('siteSettingsFlashBlock');
return showRecommendation ? return loadTimeData.getString('siteSettingsFlashAskBefore');
loadTimeData.getString(
'siteSettingsDetectAndRunImportantRecommended') :
loadTimeData.getString('siteSettingsDetectAndRunImportant');
case settings.ContentSettingsTypes.BACKGROUND_SYNC: case settings.ContentSettingsTypes.BACKGROUND_SYNC:
// "Allow sites to finish sending and receiving data" vs "Do not allow". // "Allow sites to finish sending and receiving data" vs "Do not allow".
if (!categoryEnabled) { if (!categoryEnabled) {
......
<link rel="import" href="chrome://resources/html/polymer.html"> <link rel="import" href="chrome://resources/html/polymer.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-checkbox/paper-checkbox.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-item/paper-icon-item.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-item/paper-icon-item.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-item/paper-item-body.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-item/paper-item-body.html">
<link rel="import" href="chrome://resources/polymer/v1_0/paper-toggle-button/paper-toggle-button.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-toggle-button/paper-toggle-button.html">
...@@ -40,15 +41,24 @@ ...@@ -40,15 +41,24 @@
<content select=".media-picker"></content> <content select=".media-picker"></content>
<div class="settings-box first two-line"> <div class="settings-box first two-line">
<div class="start secondary"> <div class="start secondary">[[sliderDescription_]]</div>
[[computeCategoryDesc(category, categoryEnabled, showRecommendation)]]
</div>
<paper-toggle-button id="toggle" checked="{{categoryEnabled}}" <paper-toggle-button id="toggle" checked="{{categoryEnabled}}"
on-change="onToggleChange_"></paper-toggle-button> on-change="onChangePermissionControl_"></paper-toggle-button>
</div> </div>
<content select=".cookie-controls"></content> <content select=".cookie-controls"></content>
<template is="dom-if" if="[[isFlashCategory_(category)]]">
<div class="settings-box two-line">
<paper-checkbox id="flashAskCheckbox" checked="{{flashAskFirst_}}"
on-change="onChangePermissionControl_"
disabled="[[!categoryEnabled]]">
<div>$i18n{siteSettingsFlashAskBefore}</div>
<div class="secondary">$i18n{siteSettingsFlashAskBeforeSubtitle}</div>
</paper-checkbox>
</div>
</template>
<div class="settings-box layout horizontal"> <div class="settings-box layout horizontal">
<if expr="chromeos"> <if expr="chromeos">
<div class="flex" hidden$="[[!isPluginCategory_(category)]]"> <div class="flex" hidden$="[[!isPluginCategory_(category)]]">
......
...@@ -30,12 +30,19 @@ Polymer({ ...@@ -30,12 +30,19 @@ Polymer({
}, },
/** /**
* Whether to show the '(recommended)' label prefix for permissions. * The description to be shown next to the slider.
*/ */
showRecommendation: { sliderDescription_: String,
/**
* Used only for the Flash to persist the Ask First checkbox state.
* Defaults to true, as the checkbox should be checked unless the user
* has explicitly unchecked it or has the ALLOW setting on Flash.
*/
flashAskFirst_: {
type: Boolean, type: Boolean,
value: true, value: true,
}, }
}, },
observers: [ observers: [
...@@ -58,10 +65,10 @@ Polymer({ ...@@ -58,10 +65,10 @@ Polymer({
}, },
/** /**
* A handler for flipping the toggle value. * A handler for changing the default permission value for a content type.
* @private * @private
*/ */
onToggleChange_: function(event) { onChangePermissionControl_: function(event) {
switch (this.category) { switch (this.category) {
case settings.ContentSettingsTypes.BACKGROUND_SYNC: case settings.ContentSettingsTypes.BACKGROUND_SYNC:
case settings.ContentSettingsTypes.COOKIES: case settings.ContentSettingsTypes.COOKIES:
...@@ -91,12 +98,14 @@ Polymer({ ...@@ -91,12 +98,14 @@ Polymer({
settings.PermissionValues.BLOCK); settings.PermissionValues.BLOCK);
break; break;
case settings.ContentSettingsTypes.PLUGINS: case settings.ContentSettingsTypes.PLUGINS:
// "Detect important" vs "Let me choose". // This category is tri-state: "Allow", "Block", "Ask before running".
this.browserProxy.setDefaultValueForContentType( var value = settings.PermissionValues.BLOCK;
this.category, if (this.categoryEnabled) {
this.categoryEnabled ? value = this.flashAskFirst_ ?
settings.PermissionValues.IMPORTANT_CONTENT : settings.PermissionValues.IMPORTANT_CONTENT :
settings.PermissionValues.BLOCK); settings.PermissionValues.ALLOW;
}
this.browserProxy.setDefaultValueForContentType(this.category, value);
break; break;
default: default:
assertNotReached('Invalid category: ' + this.category); assertNotReached('Invalid category: ' + this.category);
...@@ -113,9 +122,30 @@ Polymer({ ...@@ -113,9 +122,30 @@ Polymer({
this.category).then(function(setting) { this.category).then(function(setting) {
this.categoryEnabled = this.categoryEnabled =
this.computeIsSettingEnabled(this.category, setting); this.computeIsSettingEnabled(this.category, setting);
// Flash only shows ALLOW or BLOCK descriptions on the slider.
var sliderSetting = setting;
if (this.category == settings.ContentSettingsTypes.PLUGINS &&
setting == settings.PermissionValues.IMPORTANT_CONTENT) {
sliderSetting = settings.PermissionValues.ALLOW;
}
this.sliderDescription_ =
this.computeCategoryDesc(this.category, sliderSetting, true);
// The checkbox should only be cleared when the Flash setting
// is explicitly set to ALLOW.
if (this.category == settings.ContentSettingsTypes.PLUGINS &&
setting == settings.PermissionValues.ALLOW) {
this.flashAskFirst_ = false;
}
}.bind(this)); }.bind(this));
}, },
/** @private */
isFlashCategory_: function(category) {
return category == settings.ContentSettingsTypes.PLUGINS;
},
/** /**
* Returns whether this is the Plugins category. * Returns whether this is the Plugins category.
* @param {string} category The current category. * @param {string} category The current category.
......
...@@ -53,8 +53,7 @@ Polymer({ ...@@ -53,8 +53,7 @@ Polymer({
setDefaultValue_: function(category, id) { setDefaultValue_: function(category, id) {
this.browserProxy.getDefaultValueForContentType( this.browserProxy.getDefaultValueForContentType(
category).then(function(setting) { category).then(function(setting) {
var enabled = this.computeIsSettingEnabled(category, setting); var description = this.computeCategoryDesc(category, setting, false);
var description = this.computeCategoryDesc(category, enabled, false);
this.$$(id).innerText = description; this.$$(id).innerText = description;
}.bind(this)); }.bind(this));
}, },
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/webui/policy_indicator_localized_strings_provider.h" #include "chrome/browser/ui/webui/policy_indicator_localized_strings_provider.h"
#include "chrome/common/chrome_features.h"
#include "chrome/common/url_constants.h" #include "chrome/common/url_constants.h"
#include "chrome/grit/chromium_strings.h" #include "chrome/grit/chromium_strings.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
...@@ -1123,13 +1124,11 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source) { ...@@ -1123,13 +1124,11 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source) {
{"cookieServiceWorker", IDS_COOKIES_SERVICE_WORKER}, {"cookieServiceWorker", IDS_COOKIES_SERVICE_WORKER},
{"cookieSingular", IDS_COOKIES_SINGLE_COOKIE}, {"cookieSingular", IDS_COOKIES_SINGLE_COOKIE},
{"embeddedOnHost", IDS_EXCEPTIONS_GEOLOCATION_EMBEDDED_ON_HOST}, {"embeddedOnHost", IDS_EXCEPTIONS_GEOLOCATION_EMBEDDED_ON_HOST},
{"appCacheManifest", {"appCacheManifest", IDS_COOKIES_APPLICATION_CACHE_MANIFEST_LABEL},
IDS_COOKIES_APPLICATION_CACHE_MANIFEST_LABEL},
{"cacheStorageLastModified", {"cacheStorageLastModified",
IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL}, IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL},
{"cacheStorageOrigin", IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL}, {"cacheStorageOrigin", IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL},
{"cacheStorageSize", {"cacheStorageSize", IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL},
IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL},
{"channelIdServerId", IDS_COOKIES_CHANNEL_ID_ORIGIN_LABEL}, {"channelIdServerId", IDS_COOKIES_CHANNEL_ID_ORIGIN_LABEL},
{"channelIdType", IDS_COOKIES_CHANNEL_ID_TYPE_LABEL}, {"channelIdType", IDS_COOKIES_CHANNEL_ID_TYPE_LABEL},
{"channelIdCreated", IDS_COOKIES_CHANNEL_ID_CREATED_LABEL}, {"channelIdCreated", IDS_COOKIES_CHANNEL_ID_CREATED_LABEL},
...@@ -1150,18 +1149,15 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source) { ...@@ -1150,18 +1149,15 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source) {
{"fileSystemTemporaryUsage", {"fileSystemTemporaryUsage",
IDS_COOKIES_FILE_SYSTEM_TEMPORARY_USAGE_LABEL}, IDS_COOKIES_FILE_SYSTEM_TEMPORARY_USAGE_LABEL},
{"indexedDbSize", IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL}, {"indexedDbSize", IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL},
{"indexedDbLastModified", {"indexedDbLastModified", IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL},
IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL},
{"indexedDbOrigin", IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL}, {"indexedDbOrigin", IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL},
{"localStorageLastModified", {"localStorageLastModified",
IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL}, IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL},
{"localStorageOrigin", IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL}, {"localStorageOrigin", IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL},
{"localStorageSize", {"localStorageSize", IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL},
IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL},
{"serviceWorkerOrigin", IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL}, {"serviceWorkerOrigin", IDS_COOKIES_LOCAL_STORAGE_ORIGIN_LABEL},
{"serviceWorkerScopes", IDS_COOKIES_SERVICE_WORKER_SCOPES_LABEL}, {"serviceWorkerScopes", IDS_COOKIES_SERVICE_WORKER_SCOPES_LABEL},
{"serviceWorkerSize", {"serviceWorkerSize", IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL},
IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL},
{"webdbDesc", IDS_COOKIES_WEB_DATABASE_DESCRIPTION_LABEL}, {"webdbDesc", IDS_COOKIES_WEB_DATABASE_DESCRIPTION_LABEL},
{"siteSettingsCategoryPageTitle", IDS_SETTINGS_SITE_SETTINGS_CATEGORY}, {"siteSettingsCategoryPageTitle", IDS_SETTINGS_SITE_SETTINGS_CATEGORY},
{"siteSettingsCategoryAllSites", IDS_SETTINGS_SITE_SETTINGS_ALL_SITES}, {"siteSettingsCategoryAllSites", IDS_SETTINGS_SITE_SETTINGS_ALL_SITES},
...@@ -1193,8 +1189,7 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source) { ...@@ -1193,8 +1189,7 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source) {
{"siteSettingsPopups", IDS_SETTINGS_SITE_SETTINGS_POPUPS}, {"siteSettingsPopups", IDS_SETTINGS_SITE_SETTINGS_POPUPS},
{"siteSettingsUnsandboxedPlugins", {"siteSettingsUnsandboxedPlugins",
IDS_SETTINGS_SITE_SETTINGS_UNSANDBOXED_PLUGINS}, IDS_SETTINGS_SITE_SETTINGS_UNSANDBOXED_PLUGINS},
{"siteSettingsUsbDevices", {"siteSettingsUsbDevices", IDS_SETTINGS_SITE_SETTINGS_USB_DEVICES},
IDS_SETTINGS_SITE_SETTINGS_USB_DEVICES},
{"siteSettingsFullscreen", IDS_SETTINGS_SITE_SETTINGS_FULLSCREEN}, {"siteSettingsFullscreen", IDS_SETTINGS_SITE_SETTINGS_FULLSCREEN},
{"siteSettingsMaySaveCookies", {"siteSettingsMaySaveCookies",
IDS_SETTINGS_SITE_SETTINGS_MAY_SAVE_COOKIES}, IDS_SETTINGS_SITE_SETTINGS_MAY_SAVE_COOKIES},
...@@ -1209,28 +1204,21 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source) { ...@@ -1209,28 +1204,21 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source) {
IDS_SETTINGS_SITE_SETTINGS_ASK_BEFORE_SENDING}, IDS_SETTINGS_SITE_SETTINGS_ASK_BEFORE_SENDING},
{"siteSettingsAskBeforeSendingRecommended", {"siteSettingsAskBeforeSendingRecommended",
IDS_SETTINGS_SITE_SETTINGS_ASK_BEFORE_SENDING_RECOMMENDED}, IDS_SETTINGS_SITE_SETTINGS_ASK_BEFORE_SENDING_RECOMMENDED},
{"siteSettingsDetectAndRunImportant", {"siteSettingsFlashAllow", IDS_SETTINGS_SITE_SETTINGS_FLASH_ALLOW},
IDS_SETTINGS_SITE_SETTINGS_PLUGINS_DETECT_IMPORTANT}, {"siteSettingsFlashBlock", IDS_SETTINGS_SITE_SETTINGS_FLASH_BLOCK},
{"siteSettingsDetectAndRunImportantRecommended",
IDS_SETTINGS_SITE_SETTINGS_PLUGINS_DETECT_IMPORTANT_RECOMMENDED},
{"siteSettingsLetMeChoose",
IDS_SETTINGS_SITE_SETTINGS_PLUGINS_CHOOSE},
{"siteSettingsAllowRecentlyClosedSites", {"siteSettingsAllowRecentlyClosedSites",
IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_ALLOW_RECENTLY_CLOSED_SITES}, IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_ALLOW_RECENTLY_CLOSED_SITES},
{"siteSettingsAllowRecentlyClosedSitesRecommended", {"siteSettingsAllowRecentlyClosedSitesRecommended",
IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_ALLOW_RECENTLY_CLOSED_SITES_RECOMMENDED}, IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_ALLOW_RECENTLY_CLOSED_SITES_RECOMMENDED},
{"siteSettingsBackgroundSyncBlocked", {"siteSettingsBackgroundSyncBlocked",
IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_BLOCKED}, IDS_SETTINGS_SITE_SETTINGS_BACKGROUND_SYNC_BLOCKED},
{"siteSettingsHandlersAsk", {"siteSettingsHandlersAsk", IDS_SETTINGS_SITE_SETTINGS_HANDLERS_ASK},
IDS_SETTINGS_SITE_SETTINGS_HANDLERS_ASK},
{"siteSettingsHandlersAskRecommended", {"siteSettingsHandlersAskRecommended",
IDS_SETTINGS_SITE_SETTINGS_HANDLERS_ASK_RECOMMENDED}, IDS_SETTINGS_SITE_SETTINGS_HANDLERS_ASK_RECOMMENDED},
{"siteSettingsHandlersBlocked", {"siteSettingsHandlersBlocked",
IDS_SETTINGS_SITE_SETTINGS_HANDLERS_BLOCKED}, IDS_SETTINGS_SITE_SETTINGS_HANDLERS_BLOCKED},
{"siteSettingsKeygenAllow", {"siteSettingsKeygenAllow", IDS_SETTINGS_SITE_SETTINGS_KEYGEN_ALLOW},
IDS_SETTINGS_SITE_SETTINGS_KEYGEN_ALLOW}, {"siteSettingsKeygenBlock", IDS_SETTINGS_SITE_SETTINGS_KEYGEN_BLOCK},
{"siteSettingsKeygenBlock",
IDS_SETTINGS_SITE_SETTINGS_KEYGEN_BLOCK},
{"siteSettingsKeygenBlockRecommended", {"siteSettingsKeygenBlockRecommended",
IDS_SETTINGS_SITE_SETTINGS_KEYGEN_BLOCK_RECOMMENDED}, IDS_SETTINGS_SITE_SETTINGS_KEYGEN_BLOCK_RECOMMENDED},
{"siteSettingsAutoDownloadAsk", {"siteSettingsAutoDownloadAsk",
...@@ -1291,6 +1279,26 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source) { ...@@ -1291,6 +1279,26 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source) {
}; };
AddLocalizedStringsBulk(html_source, localized_strings, AddLocalizedStringsBulk(html_source, localized_strings,
arraysize(localized_strings)); arraysize(localized_strings));
if (base::FeatureList::IsEnabled(features::kPreferHtmlOverPlugins)) {
LocalizedString flash_strings[] = {
{"siteSettingsFlashAskBefore",
IDS_SETTINGS_SITE_SETTINGS_FLASH_ASK_BEFORE_RUNNING},
{"siteSettingsFlashAskBeforeSubtitle",
IDS_SETTINGS_SITE_SETTINGS_FLASH_ASK_BEFORE_RUNNING_SUBTITLE},
};
AddLocalizedStringsBulk(html_source, flash_strings,
arraysize(flash_strings));
} else {
LocalizedString flash_strings[] = {
{"siteSettingsFlashAskBefore",
IDS_SETTINGS_SITE_SETTINGS_FLASH_DETECT_IMPORTANT},
{"siteSettingsFlashAskBeforeSubtitle",
IDS_SETTINGS_SITE_SETTINGS_FLASH_DETECT_IMPORTANT_SUBTITLE},
};
AddLocalizedStringsBulk(html_source, flash_strings,
arraysize(flash_strings));
}
} }
void AddUsersStrings(content::WebUIDataSource* html_source) { void AddUsersStrings(content::WebUIDataSource* html_source) {
......
...@@ -44,6 +44,18 @@ cr.define('site_settings_category', function() { ...@@ -44,6 +44,18 @@ cr.define('site_settings_category', function() {
}, },
}; };
/**
* An example pref where the Flash category is set on detect mode.
*/
var prefsFlashDetect = {
defaults: {
plugins: 'detect_important_content',
},
exceptions: {
plugins: [],
},
};
// Import necessary html before running suite. // Import necessary html before running suite.
suiteSetup(function() { suiteSetup(function() {
return PolymerTest.importHtml( return PolymerTest.importHtml(
...@@ -122,14 +134,23 @@ cr.define('site_settings_category', function() { ...@@ -122,14 +134,23 @@ cr.define('site_settings_category', function() {
category != settings.ContentSettingsTypes.USB_DEVICES) { category != settings.ContentSettingsTypes.USB_DEVICES) {
assertNotEquals('', testElement.computeCategoryTextId(category)); assertNotEquals('', testElement.computeCategoryTextId(category));
assertNotEquals( assertNotEquals('', testElement.computeCategoryDesc(
'', testElement.computeCategoryDesc(category, true, true)); category, settings.PermissionValues.ALLOW, true));
assertNotEquals( assertNotEquals('', testElement.computeCategoryDesc(
'', testElement.computeCategoryDesc(category, true, false)); category, settings.PermissionValues.ALLOW, false));
assertNotEquals( assertNotEquals('', testElement.computeCategoryDesc(
'', testElement.computeCategoryDesc(category, false, true)); category, settings.PermissionValues.BLOCK, true));
assertNotEquals( assertNotEquals('', testElement.computeCategoryDesc(
'', testElement.computeCategoryDesc(category, false, false)); category, settings.PermissionValues.BLOCK, false));
// Test additional tri-state values:
if (category == settings.ContentSettingsTypes.PLUGINS) {
assertNotEquals('', testElement.computeCategoryDesc(
category, settings.PermissionValues.IMPORTANT_CONTENT, true));
assertNotEquals('', testElement.computeCategoryDesc(
category, settings.PermissionValues.IMPORTANT_CONTENT,
false));
}
} }
// All categories have an icon and a title. // All categories have an icon and a title.
...@@ -139,6 +160,113 @@ cr.define('site_settings_category', function() { ...@@ -139,6 +160,113 @@ cr.define('site_settings_category', function() {
'', testElement.computeTitleForContentCategory(category)); '', testElement.computeTitleForContentCategory(category));
} }
}); });
test('test special tri-state Flash category', function() {
browserProxy.setPrefs(prefsFlashDetect);
testElement.category = settings.ContentSettingsTypes.PLUGINS;
var askCheckbox = null;
return browserProxy.whenCalled('getDefaultValueForContentType').then(
function(contentType) {
Polymer.dom.flush();
askCheckbox = testElement.$$('#flashAskCheckbox');
assertTrue(!!askCheckbox);
assertEquals(
settings.ContentSettingsTypes.PLUGINS, contentType);
assertTrue(testElement.categoryEnabled);
assertFalse(askCheckbox.disabled);
assertTrue(askCheckbox.checked);
MockInteractions.tap(testElement.$.toggle);
return browserProxy.whenCalled('setDefaultValueForContentType');
}).then(function(arguments) {
// Check DETECT => BLOCK transition succeeded.
Polymer.dom.flush();
assertEquals(
settings.ContentSettingsTypes.PLUGINS, arguments[0]);
assertEquals(settings.PermissionValues.BLOCK, arguments[1]);
assertFalse(testElement.categoryEnabled);
assertTrue(askCheckbox.disabled);
assertTrue(askCheckbox.checked);
browserProxy.resetResolver('setDefaultValueForContentType');
MockInteractions.tap(testElement.$.toggle);
return browserProxy.whenCalled('setDefaultValueForContentType');
}).then(function(arguments) {
// Check BLOCK => DETECT transition succeeded.
Polymer.dom.flush();
assertEquals(
settings.ContentSettingsTypes.PLUGINS, arguments[0]);
assertEquals(
settings.PermissionValues.IMPORTANT_CONTENT, arguments[1]);
assertTrue(testElement.categoryEnabled);
assertFalse(askCheckbox.disabled);
assertTrue(askCheckbox.checked);
browserProxy.resetResolver('setDefaultValueForContentType');
MockInteractions.tap(askCheckbox);
return browserProxy.whenCalled('setDefaultValueForContentType');
}).then(function(arguments) {
// Check DETECT => ALLOW transition succeeded.
Polymer.dom.flush();
assertEquals(
settings.ContentSettingsTypes.PLUGINS, arguments[0]);
assertEquals(
settings.PermissionValues.ALLOW, arguments[1]);
assertTrue(testElement.categoryEnabled);
assertFalse(askCheckbox.disabled);
assertFalse(askCheckbox.checked);
browserProxy.resetResolver('setDefaultValueForContentType');
MockInteractions.tap(testElement.$.toggle);
return browserProxy.whenCalled('setDefaultValueForContentType');
}).then(function(arguments) {
// Check ALLOW => BLOCK transition succeeded.
Polymer.dom.flush();
assertEquals(
settings.ContentSettingsTypes.PLUGINS, arguments[0]);
assertEquals(settings.PermissionValues.BLOCK, arguments[1]);
assertFalse(testElement.categoryEnabled);
assertTrue(askCheckbox.disabled);
assertFalse(askCheckbox.checked);
browserProxy.resetResolver('setDefaultValueForContentType');
MockInteractions.tap(testElement.$.toggle);
return browserProxy.whenCalled('setDefaultValueForContentType');
}).then(function(arguments) {
// Check BLOCK => ALLOW transition succeeded.
Polymer.dom.flush();
assertEquals(
settings.ContentSettingsTypes.PLUGINS, arguments[0]);
assertEquals(settings.PermissionValues.ALLOW, arguments[1]);
assertTrue(testElement.categoryEnabled);
assertFalse(askCheckbox.disabled);
assertFalse(askCheckbox.checked);
browserProxy.resetResolver('setDefaultValueForContentType');
MockInteractions.tap(askCheckbox);
return browserProxy.whenCalled('setDefaultValueForContentType');
}).then(function(arguments) {
// Check ALLOW => DETECT transition succeeded.
Polymer.dom.flush();
assertEquals(
settings.ContentSettingsTypes.PLUGINS, arguments[0]);
assertEquals(
settings.PermissionValues.IMPORTANT_CONTENT, arguments[1]);
assertTrue(testElement.categoryEnabled);
assertFalse(askCheckbox.disabled);
assertTrue(askCheckbox.checked);
});;
});
}); });
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment