Chromium Code Reviews| Index: chrome/browser/plugins/plugin_prefs.cc |
| diff --git a/chrome/browser/plugins/plugin_prefs.cc b/chrome/browser/plugins/plugin_prefs.cc |
| index 66ae98016bb07de481bbd4f8e6a97dd4195974bb..50332f5eb1d2bed0fb42f5bae292419131be2d04 100644 |
| --- a/chrome/browser/plugins/plugin_prefs.cc |
| +++ b/chrome/browser/plugins/plugin_prefs.cc |
| @@ -28,6 +28,7 @@ |
| #include "chrome/browser/plugins/plugin_prefs_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/common/chrome_constants.h" |
| +#include "chrome/common/chrome_content_client.h" |
| #include "chrome/common/chrome_paths.h" |
| #include "chrome/common/chrome_switches.h" |
| #include "chrome/common/pref_names.h" |
| @@ -60,6 +61,10 @@ bool IsComponentUpdatedPepperFlash(const base::FilePath& plugin) { |
| return false; |
| } |
| +bool IsPDFViewerPlugin(const base::string16& plugin_name) { |
| + return plugin_name == base::ASCIIToUTF16(ChromeContentClient::kPDFPluginName); |
| +} |
| + |
| } // namespace |
| PluginPrefs::PluginState::PluginState() { |
| @@ -225,6 +230,12 @@ void PluginPrefs::EnablePluginInternal( |
| PluginPrefs::PolicyStatus PluginPrefs::PolicyStatusForPlugin( |
| const base::string16& name) const { |
| base::AutoLock auto_lock(lock_); |
| + |
| + // Special handling for PDF based on its specific policy. |
| + if (IsPDFViewerPlugin(name) && always_open_pdf_externally_) { |
| + return POLICY_DISABLED; |
|
Bernhard Bauer
2016/09/29 08:44:35
Nit: I think it's more common to leave out braces
pastarmovj
2016/09/29 12:14:41
Yup. Copy-paste relict.
|
| + } |
| + |
| if (IsStringMatchedInSet(name, policy_enabled_plugin_patterns_)) { |
| return POLICY_ENABLED; |
| } else if (IsStringMatchedInSet(name, policy_disabled_plugin_patterns_) && |
|
Bernhard Bauer
2016/09/29 08:44:35
Remove these else's?
pastarmovj
2016/09/29 12:14:41
Done.
|
| @@ -287,6 +298,14 @@ void PluginPrefs::UpdatePatternsAndNotify(std::set<base::string16>* patterns, |
| NotifyPluginStatusChanged(); |
| } |
| +void PluginPrefs::UpdatePdfPolicy(const std::string& pref_name) { |
| + base::AutoLock auto_lock(lock_); |
| + always_open_pdf_externally_ = |
| + prefs_->GetBoolean(prefs::kAlwaysOpenPdfExternally); |
| + |
| + NotifyPluginStatusChanged(); |
| +} |
| + |
| /*static*/ |
| bool PluginPrefs::IsStringMatchedInSet( |
| const base::string16& name, |
| @@ -419,6 +438,8 @@ void PluginPrefs::SetPrefs(PrefService* prefs) { |
| &policy_disabled_plugin_exception_patterns_); |
| ListValueToStringSet(prefs_->GetList(prefs::kPluginsEnabledPlugins), |
| &policy_enabled_plugin_patterns_); |
| + always_open_pdf_externally_ = |
| + prefs_->GetBoolean(prefs::kAlwaysOpenPdfExternally); |
| registrar_.Init(prefs_); |
| @@ -438,6 +459,9 @@ void PluginPrefs::SetPrefs(PrefService* prefs) { |
| base::Bind(&PluginPrefs::UpdatePatternsAndNotify, |
| base::Unretained(this), |
| &policy_enabled_plugin_patterns_)); |
| + registrar_.Add(prefs::kAlwaysOpenPdfExternally, |
| + base::Bind(&PluginPrefs::UpdatePdfPolicy, |
| + base::Unretained(this))); |
| NotifyPluginStatusChanged(); |
| } |
| @@ -447,7 +471,8 @@ void PluginPrefs::ShutdownOnUIThread() { |
| registrar_.RemoveAll(); |
| } |
| -PluginPrefs::PluginPrefs() : profile_(NULL), |
| +PluginPrefs::PluginPrefs() : always_open_pdf_externally_(false), |
| + profile_(NULL), |
| prefs_(NULL) { |
| } |
| @@ -463,6 +488,11 @@ void PluginPrefs::SetPolicyEnforcedPluginPatterns( |
| policy_enabled_plugin_patterns_ = enabled_patterns; |
| } |
| +void PluginPrefs::SetAlwaysOpenPdfExternally(bool always_open_pdf_externally) { |
| + always_open_pdf_externally_ = always_open_pdf_externally; |
| +} |
| + |
| + |
| void PluginPrefs::OnUpdatePreferences( |
| const std::vector<content::WebPluginInfo>& plugins) { |
| if (!prefs_) |