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

Unified Diff: chrome/browser/plugins/plugin_info_message_filter.cc

Issue 2208463002: [HBD] Implement site-origin exceptions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@hbd_disableplugincache
Patch Set: Rebase Created 4 years, 4 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/plugins/plugin_info_message_filter.cc
diff --git a/chrome/browser/plugins/plugin_info_message_filter.cc b/chrome/browser/plugins/plugin_info_message_filter.cc
index 06a7755d7e3580dd7ae56b1399c6e2f8a033686e..bee46bea0234e0b155ac69059978fa6e2e2a16af 100644
--- a/chrome/browser/plugins/plugin_info_message_filter.cc
+++ b/chrome/browser/plugins/plugin_info_message_filter.cc
@@ -18,6 +18,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/plugins/chrome_plugin_service_filter.h"
+#include "chrome/browser/plugins/plugin_filter_utils.h"
#include "chrome/browser/plugins/plugin_finder.h"
#include "chrome/browser/plugins/plugin_metadata.h"
#include "chrome/browser/plugins/plugin_prefs.h"
@@ -58,30 +59,6 @@ using content::WebPluginInfo;
namespace {
-// For certain sandboxed Pepper plugins, use the JavaScript Content Settings.
-bool ShouldUseJavaScriptSettingForPlugin(const WebPluginInfo& plugin) {
- if (plugin.type != WebPluginInfo::PLUGIN_TYPE_PEPPER_IN_PROCESS &&
- plugin.type != WebPluginInfo::PLUGIN_TYPE_PEPPER_OUT_OF_PROCESS) {
- return false;
- }
-
-#if !defined(DISABLE_NACL)
- // Treat Native Client invocations like JavaScript.
- if (plugin.name == base::ASCIIToUTF16(nacl::kNaClPluginName))
- return true;
-#endif
-
-#if defined(WIDEVINE_CDM_AVAILABLE) && defined(ENABLE_PEPPER_CDMS)
- // Treat CDM invocations like JavaScript.
- if (plugin.name == base::ASCIIToUTF16(kWidevineCdmDisplayName)) {
- DCHECK(plugin.type == WebPluginInfo::PLUGIN_TYPE_PEPPER_OUT_OF_PROCESS);
- return true;
- }
-#endif // defined(WIDEVINE_CDM_AVAILABLE) && defined(ENABLE_PEPPER_CDMS)
-
- return false;
-}
-
#if defined(ENABLE_PEPPER_CDMS)
enum PluginAvailabilityStatusForUMA {
@@ -338,7 +315,8 @@ void PluginInfoMessageFilter::Context::DecidePluginStatus(
bool is_managed = false;
// Check plugin content settings. The primary URL is the top origin URL and
// the secondary URL is the plugin URL.
- GetPluginContentSetting(plugin, params.top_origin_url, params.url,
+ GetPluginContentSetting(host_content_settings_map_, plugin,
+ params.top_origin_url, params.url,
plugin_metadata->identifier(), &plugin_setting,
&uses_default_content_setting, &is_managed);
@@ -499,56 +477,6 @@ void PluginInfoMessageFilter::GetPluginInfoReply(
}
}
-void PluginInfoMessageFilter::Context::GetPluginContentSetting(
- const WebPluginInfo& plugin,
- const GURL& policy_url,
- const GURL& plugin_url,
- const std::string& resource,
- ContentSetting* setting,
- bool* uses_default_content_setting,
- bool* is_managed) const {
- std::unique_ptr<base::Value> value;
- content_settings::SettingInfo info;
- bool uses_plugin_specific_setting = false;
- if (ShouldUseJavaScriptSettingForPlugin(plugin)) {
- value = host_content_settings_map_->GetWebsiteSetting(
- policy_url,
- policy_url,
- CONTENT_SETTINGS_TYPE_JAVASCRIPT,
- std::string(),
- &info);
- } else {
- content_settings::SettingInfo specific_info;
- std::unique_ptr<base::Value> specific_setting =
- host_content_settings_map_->GetWebsiteSetting(
- policy_url, plugin_url, CONTENT_SETTINGS_TYPE_PLUGINS, resource,
- &specific_info);
- content_settings::SettingInfo general_info;
- std::unique_ptr<base::Value> general_setting =
- host_content_settings_map_->GetWebsiteSetting(
- policy_url, plugin_url, CONTENT_SETTINGS_TYPE_PLUGINS,
- std::string(), &general_info);
- // If there is a plugin-specific setting, we use it, unless the general
- // setting was set by policy, in which case it takes precedence.
- uses_plugin_specific_setting =
- specific_setting &&
- general_info.source != content_settings::SETTING_SOURCE_POLICY;
- if (uses_plugin_specific_setting) {
- value = std::move(specific_setting);
- info = specific_info;
- } else {
- value = std::move(general_setting);
- info = general_info;
- }
- }
- *setting = content_settings::ValueToContentSetting(value.get());
- *uses_default_content_setting =
- !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(
ChromeViewHostMsg_GetPluginInfo_Status status,
const base::FilePath& path) const {
« no previous file with comments | « chrome/browser/plugins/plugin_info_message_filter.h ('k') | chrome/browser/plugins/plugin_info_message_filter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698