| Index: chrome/browser/plugin_service.cc
|
| diff --git a/chrome/browser/plugin_service.cc b/chrome/browser/plugin_service.cc
|
| index a634688114f0be4f435df59facea173832344b34..02133edf6ea716b0976c9c420220b41ac7cd1c09 100644
|
| --- a/chrome/browser/plugin_service.cc
|
| +++ b/chrome/browser/plugin_service.cc
|
| @@ -17,6 +17,7 @@
|
| #include "chrome/browser/chrome_thread.h"
|
| #include "chrome/browser/extensions/extensions_service.h"
|
| #include "chrome/browser/plugin_process_host.h"
|
| +#include "chrome/browser/plugin_updater.h"
|
| #include "chrome/browser/pref_service.h"
|
| #include "chrome/browser/profile.h"
|
| #include "chrome/browser/renderer_host/render_process_host.h"
|
| @@ -53,89 +54,13 @@ static void NotifyPluginsOfActivation() {
|
|
|
| // static
|
| bool PluginService::enable_chrome_plugins_ = true;
|
| -#if defined(OS_CHROMEOS)
|
| -bool PluginService::enable_internal_pdf_ = true;
|
| -#else
|
| -bool PluginService::enable_internal_pdf_ = false;
|
| -#endif
|
|
|
| // static
|
| void PluginService::InitGlobalInstance(Profile* profile) {
|
| DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
|
|
|
| - bool update_internal_dir = false;
|
| - FilePath last_internal_dir =
|
| - profile->GetPrefs()->GetFilePath(prefs::kPluginsLastInternalDirectory);
|
| - FilePath cur_internal_dir;
|
| - if (PathService::Get(chrome::DIR_INTERNAL_PLUGINS, &cur_internal_dir) &&
|
| - cur_internal_dir != last_internal_dir) {
|
| - update_internal_dir = true;
|
| - profile->GetPrefs()->SetFilePath(
|
| - prefs::kPluginsLastInternalDirectory, cur_internal_dir);
|
| - }
|
| -
|
| - bool found_internal_pdf = false;
|
| - bool force_enable_internal_pdf = false;
|
| - FilePath pdf_path;
|
| - PathService::Get(chrome::FILE_PDF_PLUGIN, &pdf_path);
|
| - FilePath::StringType pdf_path_str = pdf_path.value();
|
| - if (enable_internal_pdf_ &&
|
| - !profile->GetPrefs()->GetBoolean(prefs::kPluginsEnabledInternalPDF)) {
|
| - // We switched to the internal pdf plugin being on by default, and so we
|
| - // need to force it to be enabled. We only want to do it this once though,
|
| - // i.e. we don't want to enable it again if the user disables it afterwards.
|
| - profile->GetPrefs()->SetBoolean(prefs::kPluginsEnabledInternalPDF, true);
|
| - force_enable_internal_pdf = true;
|
| - }
|
| -
|
| - // Disable plugins listed as disabled in prefs.
|
| - if (ListValue* saved_plugins_list =
|
| - profile->GetPrefs()->GetMutableList(prefs::kPluginsPluginsList)) {
|
| - for (ListValue::const_iterator it = saved_plugins_list->begin();
|
| - it != saved_plugins_list->end();
|
| - ++it) {
|
| - if (!(*it)->IsType(Value::TYPE_DICTIONARY)) {
|
| - LOG(WARNING) << "Invalid entry in " << prefs::kPluginsPluginsList;
|
| - continue; // Oops, don't know what to do with this item.
|
| - }
|
| -
|
| - DictionaryValue* plugin = static_cast<DictionaryValue*>(*it);
|
| - FilePath::StringType path;
|
| - if (!plugin->GetString(L"path", &path))
|
| - continue;
|
| -
|
| - bool enabled = true;
|
| - plugin->GetBoolean(L"enabled", &enabled);
|
| -
|
| - FilePath plugin_path(path);
|
| - if (update_internal_dir &&
|
| - FilePath::CompareIgnoreCase(plugin_path.DirName().value(),
|
| - last_internal_dir.value()) == 0) {
|
| - // If the internal plugin directory has changed and if the plugin looks
|
| - // internal, update its path in the prefs.
|
| - plugin_path = cur_internal_dir.Append(plugin_path.BaseName());
|
| - path = plugin_path.value();
|
| - plugin->SetString(L"path", path);
|
| - }
|
| -
|
| - if (FilePath::CompareIgnoreCase(path, pdf_path_str) == 0) {
|
| - found_internal_pdf = true;
|
| - if (!enabled && force_enable_internal_pdf) {
|
| - enabled = true;
|
| - plugin->SetBoolean(L"enabled", true);
|
| - }
|
| - }
|
| -
|
| - if (!enabled)
|
| - NPAPI::PluginList::Singleton()->DisablePlugin(plugin_path);
|
| - }
|
| - }
|
| -
|
| - if (!enable_internal_pdf_ && !found_internal_pdf) {
|
| - // The internal PDF plugin is disabled by default, and the user hasn't
|
| - // overridden the default.
|
| - NPAPI::PluginList::Singleton()->DisablePlugin(pdf_path);
|
| - }
|
| + // We first group the plugins and then figure out which groups to disable.
|
| + PluginUpdater::GetInstance()->DisablePluginGroupsFromPrefs(profile);
|
|
|
| // Have Chrome plugins write their data to the profile directory.
|
| GetInstance()->SetChromePluginDataDir(profile->GetPath());
|
|
|