summaryrefslogtreecommitdiffstats
path: root/chrome/browser/plugins
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-13 19:39:41 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-13 19:39:41 +0000
commit6a9d1deb219eabec65602ef35a3199ed82aacf52 (patch)
tree90cd8edb6d6515888c3ff46df3d4449ed411627f /chrome/browser/plugins
parent99fb79ea66f4d43e7595a9bb5375271a5a30d7a7 (diff)
downloadchromium_src-6a9d1deb219eabec65602ef35a3199ed82aacf52.zip
chromium_src-6a9d1deb219eabec65602ef35a3199ed82aacf52.tar.gz
chromium_src-6a9d1deb219eabec65602ef35a3199ed82aacf52.tar.bz2
Disable the Run option in the context menu for blocked plugins if they were blocked by policy.
BUG=321772 Review URL: https://codereview.chromium.org/134233002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@244555 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/plugins')
-rw-r--r--chrome/browser/plugins/plugin_info_message_filter.cc18
-rw-r--r--chrome/browser/plugins/plugin_info_message_filter.h3
2 files changed, 14 insertions, 7 deletions
diff --git a/chrome/browser/plugins/plugin_info_message_filter.cc b/chrome/browser/plugins/plugin_info_message_filter.cc
index 71870a4..2995751 100644
--- a/chrome/browser/plugins/plugin_info_message_filter.cc
+++ b/chrome/browser/plugins/plugin_info_message_filter.cc
@@ -219,11 +219,12 @@ void PluginInfoMessageFilter::Context::DecidePluginStatus(
ContentSetting plugin_setting = CONTENT_SETTING_DEFAULT;
bool uses_default_content_setting = true;
+ bool is_managed = false;
// Check plug-in content settings. The primary URL is the top origin URL and
// the secondary URL is the plug-in URL.
GetPluginContentSetting(plugin, params.top_origin_url, params.url,
plugin_metadata->identifier(), &plugin_setting,
- &uses_default_content_setting);
+ &uses_default_content_setting, &is_managed);
DCHECK(plugin_setting != CONTENT_SETTING_DEFAULT);
PluginMetadata::SecurityStatus plugin_status =
@@ -272,10 +273,13 @@ void PluginInfoMessageFilter::Context::DecidePluginStatus(
return;
}
- if (plugin_setting == CONTENT_SETTING_ASK)
- status->value = ChromeViewHostMsg_GetPluginInfo_Status::kClickToPlay;
- else if (plugin_setting == CONTENT_SETTING_BLOCK)
- status->value = ChromeViewHostMsg_GetPluginInfo_Status::kBlocked;
+ if (plugin_setting == CONTENT_SETTING_ASK) {
+ status->value = ChromeViewHostMsg_GetPluginInfo_Status::kClickToPlay;
+ } else if (plugin_setting == CONTENT_SETTING_BLOCK) {
+ status->value =
+ is_managed ? ChromeViewHostMsg_GetPluginInfo_Status::kBlockedByPolicy
+ : ChromeViewHostMsg_GetPluginInfo_Status::kBlocked;
+ }
if (status->value == ChromeViewHostMsg_GetPluginInfo_Status::kAllowed) {
// Allow an embedder of <webview> to block a plugin from being loaded inside
@@ -344,7 +348,8 @@ void PluginInfoMessageFilter::Context::GetPluginContentSetting(
const GURL& plugin_url,
const std::string& resource,
ContentSetting* setting,
- bool* uses_default_content_setting) const {
+ bool* uses_default_content_setting,
+ bool* is_managed) const {
scoped_ptr<base::Value> value;
content_settings::SettingInfo info;
bool uses_plugin_specific_setting = false;
@@ -371,6 +376,7 @@ void PluginInfoMessageFilter::Context::GetPluginContentSetting(
!uses_plugin_specific_setting &&
info.primary_pattern == ContentSettingsPattern::Wildcard() &&
info.secondary_pattern == ContentSettingsPattern::Wildcard();
+ *is_managed = info.source == content_settings::SETTING_SOURCE_POLICY;
}
void PluginInfoMessageFilter::Context::MaybeGrantAccess(
diff --git a/chrome/browser/plugins/plugin_info_message_filter.h b/chrome/browser/plugins/plugin_info_message_filter.h
index b881093..fb1744d 100644
--- a/chrome/browser/plugins/plugin_info_message_filter.h
+++ b/chrome/browser/plugins/plugin_info_message_filter.h
@@ -60,7 +60,8 @@ class PluginInfoMessageFilter : public content::BrowserMessageFilter {
const GURL& plugin_url,
const std::string& resource,
ContentSetting* setting,
- bool* is_default) const;
+ bool* is_default,
+ bool* is_managed) const;
void MaybeGrantAccess(const ChromeViewHostMsg_GetPluginInfo_Status& status,
const base::FilePath& path) const;