Commit 6a9d1deb authored by bauerb@chromium.org's avatar bauerb@chromium.org

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
parent 99fb79ea
......@@ -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(
......
......@@ -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;
......
......@@ -64,6 +64,7 @@ struct ChromeViewHostMsg_GetPluginInfo_Status {
enum Value {
kAllowed,
kBlocked,
kBlockedByPolicy,
kClickToPlay,
kDisabled,
kNotFound,
......@@ -120,7 +121,8 @@ struct ParamTraits<ContentSettingsPattern> {
#define IPC_MESSAGE_START ChromeMsgStart
IPC_ENUM_TRAITS(ChromeViewHostMsg_GetPluginInfo_Status::Value)
IPC_ENUM_TRAITS_MAX_VALUE(ChromeViewHostMsg_GetPluginInfo_Status::Value,
ChromeViewHostMsg_GetPluginInfo_Status::kUnauthorized)
IPC_ENUM_TRAITS(OmniboxFocusChangeReason)
IPC_ENUM_TRAITS(OmniboxFocusState)
IPC_ENUM_TRAITS(search_provider::OSDDType)
......
......@@ -795,6 +795,22 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
observer->DidBlockContentType(content_type);
break;
}
case ChromeViewHostMsg_GetPluginInfo_Status::kBlockedByPolicy: {
placeholder = ChromePluginPlaceholder::CreateBlockedPlugin(
render_frame,
frame,
params,
plugin,
identifier,
group_name,
IDR_BLOCKED_PLUGIN_HTML,
l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED, group_name));
placeholder->set_allow_loading(false);
RenderThread::Get()->RecordAction(
UserMetricsAction("Plugin_BlockedByPolicy"));
observer->DidBlockContentType(content_type);
break;
}
}
}
placeholder->SetStatus(status);
......
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