Index: chrome/browser/host_content_settings_map.cc |
diff --git a/chrome/browser/host_content_settings_map.cc b/chrome/browser/host_content_settings_map.cc |
index a7dda7e68810ccbfcb0da4c38b1f4310214a2220..2f90bfdca22a5b664e79933bf7efff1e9450bb22 100644 |
--- a/chrome/browser/host_content_settings_map.cc |
+++ b/chrome/browser/host_content_settings_map.cc |
@@ -100,6 +100,20 @@ static bool ShouldAllowAllContent(const GURL& url) { |
url.SchemeIs(chrome::kGearsScheme) || |
url.SchemeIs(chrome::kUserScriptScheme); |
} |
+ |
+// Map ASK for the plugins content type to BLOCK if click-to-play is |
+// not enabled. |
+ContentSetting ClickToPlayFixup(ContentSettingsType content_type, |
+ ContentSetting setting) { |
+ if (setting == CONTENT_SETTING_ASK && |
+ content_type == CONTENT_SETTINGS_TYPE_PLUGINS && |
+ !CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableClickToPlay)) { |
+ return CONTENT_SETTING_BLOCK; |
+ } |
+ return setting; |
+} |
+ |
} // namespace |
@@ -432,6 +446,10 @@ void HostContentSettingsMap::SetDefaultContentSetting( |
ContentSetting setting) { |
DCHECK(kTypeNames[content_type] != NULL); // Don't call this for Geolocation. |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ DCHECK(content_type != CONTENT_SETTINGS_TYPE_PLUGINS || |
+ setting != CONTENT_SETTING_ASK || |
+ CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableClickToPlay)); |
PrefService* prefs = profile_->GetPrefs(); |
// The default settings may not be directly modified for OTR sessions. |
@@ -474,6 +492,10 @@ void HostContentSettingsMap::SetContentSetting( |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
DCHECK_NE(RequiresResourceIdentifier(content_type), |
resource_identifier.empty()); |
+ DCHECK(content_type != CONTENT_SETTINGS_TYPE_PLUGINS || |
+ setting != CONTENT_SETTING_ASK || |
+ CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnableClickToPlay)); |
const Pattern pattern(original_pattern.CanonicalizePattern()); |
@@ -796,6 +818,10 @@ void HostContentSettingsMap::GetSettingsFromDictionary( |
if (settings->settings[CONTENT_SETTINGS_TYPE_COOKIES] == |
CONTENT_SETTING_ASK) |
settings->settings[CONTENT_SETTINGS_TYPE_COOKIES] = CONTENT_SETTING_BLOCK; |
+ |
+ settings->settings[CONTENT_SETTINGS_TYPE_PLUGINS] = |
+ ClickToPlayFixup(CONTENT_SETTINGS_TYPE_PLUGINS, |
+ settings->settings[CONTENT_SETTINGS_TYPE_PLUGINS]); |
} |
void HostContentSettingsMap::GetResourceSettingsFromDictionary( |
@@ -820,7 +846,8 @@ void HostContentSettingsMap::GetResourceSettingsFromDictionary( |
DCHECK(found); |
(*settings)[ContentSettingsTypeResourceIdentifierPair( |
ContentSettingsType(type), resource_identifier)] = |
- ContentSetting(setting); |
+ ClickToPlayFixup(ContentSettingsType(type), |
+ ContentSetting(setting)); |
} |
break; |