| Index: chrome/browser/plugins/plugin_prefs.cc
|
| diff --git a/chrome/browser/plugins/plugin_prefs.cc b/chrome/browser/plugins/plugin_prefs.cc
|
| index 596aeb06d93c84a35999cdf436f4a570c779fbe0..4ce35ecf6948ad78b925c914e354b64ab5d7ed3c 100644
|
| --- a/chrome/browser/plugins/plugin_prefs.cc
|
| +++ b/chrome/browser/plugins/plugin_prefs.cc
|
| @@ -9,13 +9,16 @@
|
| #include "base/bind.h"
|
| #include "base/command_line.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "base/message_loop.h"
|
| #include "base/path_service.h"
|
| #include "base/string_util.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "base/values.h"
|
| #include "build/build_config.h"
|
| #include "chrome/browser/plugins/plugin_installer.h"
|
| +#include "chrome/browser/plugins/plugin_metadata.h"
|
| #include "chrome/browser/plugins/plugin_prefs_factory.h"
|
| +#include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/prefs/scoped_user_pref_update.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/profiles/profile_keyed_service.h"
|
| @@ -108,54 +111,45 @@ void PluginPrefs::SetPluginListForTesting(
|
| }
|
|
|
| void PluginPrefs::EnablePluginGroup(bool enabled, const string16& group_name) {
|
| - PluginFinder::Get(
|
| - base::Bind(&PluginPrefs::GetPluginFinderForEnablePluginGroup,
|
| - this, enabled, group_name));
|
| -}
|
| -
|
| -void PluginPrefs::GetPluginFinderForEnablePluginGroup(
|
| - bool enabled,
|
| - const string16& group_name,
|
| - PluginFinder* finder) {
|
| PluginService::GetInstance()->GetPlugins(
|
| base::Bind(&PluginPrefs::EnablePluginGroupInternal,
|
| - this, enabled, group_name, finder));
|
| + this, enabled, group_name));
|
| }
|
|
|
| void PluginPrefs::EnablePluginGroupInternal(
|
| bool enabled,
|
| const string16& group_name,
|
| - PluginFinder* finder,
|
| const std::vector<webkit::WebPluginInfo>& plugins) {
|
| base::AutoLock auto_lock(lock_);
|
| + PluginFinder* finder = PluginFinder::GetInstance();
|
|
|
| // Set the desired state for the group.
|
| plugin_group_state_[group_name] = enabled;
|
|
|
| // Update the state for all plug-ins in the group.
|
| for (size_t i = 0; i < plugins.size(); ++i) {
|
| - PluginInstaller* installer = finder->GetPluginInstaller(plugins[i]);
|
| - if (group_name != installer->name())
|
| + PluginMetadata* plugin = finder->GetPluginMetadata(plugins[i]);
|
| + if (group_name != plugin->name())
|
| continue;
|
| plugin_state_.Set(plugins[i].path, enabled);
|
| }
|
|
|
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&PluginPrefs::OnUpdatePreferences, this, plugins, finder));
|
| + base::Bind(&PluginPrefs::OnUpdatePreferences, this, plugins));
|
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| base::Bind(&PluginPrefs::NotifyPluginStatusChanged, this));
|
| }
|
|
|
| -void PluginPrefs::EnablePluginIfPossibleCallback(
|
| +void PluginPrefs::EnablePlugin(
|
| bool enabled, const FilePath& path,
|
| - const base::Callback<void(bool)>& callback,
|
| - PluginFinder* finder) {
|
| + const base::Callback<void(bool)>& callback) {
|
| + PluginFinder* finder = PluginFinder::GetInstance();
|
| webkit::WebPluginInfo plugin;
|
| bool can_enable = true;
|
| if (PluginService::GetInstance()->GetPluginInfoByPath(path, &plugin)) {
|
| - PluginInstaller* installer = finder->GetPluginInstaller(plugin);
|
| + PluginMetadata* plugin_metadata = finder->GetPluginMetadata(plugin);
|
| PolicyStatus plugin_status = PolicyStatusForPlugin(plugin.name);
|
| - PolicyStatus group_status = PolicyStatusForPlugin(installer->name());
|
| + PolicyStatus group_status = PolicyStatusForPlugin(plugin_metadata->name());
|
| if (enabled) {
|
| if (plugin_status == POLICY_DISABLED || group_status == POLICY_DISABLED)
|
| can_enable = false;
|
| @@ -168,7 +162,8 @@ void PluginPrefs::EnablePluginIfPossibleCallback(
|
| }
|
|
|
| if (!can_enable) {
|
| - callback.Run(false);
|
| + MessageLoop::current()->PostTask(FROM_HERE,
|
| + base::Bind(callback, false));
|
| return;
|
| }
|
|
|
| @@ -177,13 +172,6 @@ void PluginPrefs::EnablePluginIfPossibleCallback(
|
| enabled, path, finder, callback));
|
| }
|
|
|
| -void PluginPrefs::EnablePlugin(
|
| - bool enabled, const FilePath& path,
|
| - const base::Callback<void(bool)>& callback) {
|
| - PluginFinder::Get(base::Bind(&PluginPrefs::EnablePluginIfPossibleCallback,
|
| - this, enabled, path, callback));
|
| -}
|
| -
|
| void PluginPrefs::EnablePluginInternal(
|
| bool enabled,
|
| const FilePath& path,
|
| @@ -199,10 +187,10 @@ void PluginPrefs::EnablePluginInternal(
|
| string16 group_name;
|
| for (size_t i = 0; i < plugins.size(); ++i) {
|
| if (plugins[i].path == path) {
|
| - PluginInstaller* installer =
|
| - plugin_finder->GetPluginInstaller(plugins[i]);
|
| + PluginMetadata* plugin_metadata =
|
| + plugin_finder->GetPluginMetadata(plugins[i]);
|
| // set the group name for this plug-in.
|
| - group_name = installer->name();
|
| + group_name = plugin_metadata->name();
|
| DCHECK_EQ(enabled, IsPluginEnabled(plugins[i]));
|
| break;
|
| }
|
| @@ -210,9 +198,10 @@ void PluginPrefs::EnablePluginInternal(
|
|
|
| bool all_disabled = true;
|
| for (size_t i = 0; i < plugins.size(); ++i) {
|
| - PluginInstaller* installer = plugin_finder->GetPluginInstaller(plugins[i]);
|
| - DCHECK(!installer->name().empty());
|
| - if (group_name == installer->name()) {
|
| + PluginMetadata* plugin_metadata =
|
| + plugin_finder->GetPluginMetadata(plugins[i]);
|
| + DCHECK(!plugin_metadata->name().empty());
|
| + if (group_name == plugin_metadata->name()) {
|
| all_disabled = all_disabled && !IsPluginEnabled(plugins[i]);
|
| }
|
| }
|
| @@ -224,8 +213,7 @@ void PluginPrefs::EnablePluginInternal(
|
| }
|
|
|
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&PluginPrefs::OnUpdatePreferences, this,
|
| - plugins, plugin_finder));
|
| + base::Bind(&PluginPrefs::OnUpdatePreferences, this, plugins));
|
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| base::Bind(&PluginPrefs::NotifyPluginStatusChanged, this));
|
| callback.Run(true);
|
| @@ -246,9 +234,8 @@ PluginPrefs::PolicyStatus PluginPrefs::PolicyStatusForPlugin(
|
| }
|
|
|
| bool PluginPrefs::IsPluginEnabled(const webkit::WebPluginInfo& plugin) const {
|
| - scoped_ptr<webkit::npapi::PluginGroup> group(
|
| - GetPluginList()->GetPluginGroup(plugin));
|
| - string16 group_name = group->GetGroupName();
|
| + PluginFinder* finder = PluginFinder::GetInstance();
|
| + string16 group_name = finder->GetPluginMetadata(plugin)->name();
|
|
|
| // Check if the plug-in or its group is enabled by policy.
|
| PolicyStatus plugin_status = PolicyStatusForPlugin(plugin.name);
|
| @@ -591,27 +578,20 @@ webkit::npapi::PluginList* PluginPrefs::GetPluginList() const {
|
| }
|
|
|
| void PluginPrefs::GetPreferencesDataOnFileThread() {
|
| - PluginFinder::Get(
|
| - base::Bind(&PluginPrefs::GetPluginFinderForGetPreferencesDataOnFileThread,
|
| - this));
|
| -}
|
| -
|
| -void PluginPrefs::GetPluginFinderForGetPreferencesDataOnFileThread(
|
| - PluginFinder* finder) {
|
| std::vector<webkit::WebPluginInfo> plugins;
|
| webkit::npapi::PluginList* plugin_list = GetPluginList();
|
| plugin_list->GetPluginsNoRefresh(&plugins);
|
|
|
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&PluginPrefs::OnUpdatePreferences, this, plugins, finder));
|
| + base::Bind(&PluginPrefs::OnUpdatePreferences, this, plugins));
|
| }
|
|
|
| void PluginPrefs::OnUpdatePreferences(
|
| - const std::vector<webkit::WebPluginInfo>& plugins,
|
| - PluginFinder* finder) {
|
| + const std::vector<webkit::WebPluginInfo>& plugins) {
|
| if (!prefs_)
|
| return;
|
|
|
| + PluginFinder* finder = PluginFinder::GetInstance();
|
| ListPrefUpdate update(prefs_, prefs::kPluginsPluginsList);
|
| ListValue* plugins_list = update.Get();
|
| plugins_list->Clear();
|
| @@ -634,9 +614,9 @@ void PluginPrefs::OnUpdatePreferences(
|
| summary->SetBoolean("enabled", enabled);
|
| plugins_list->Append(summary);
|
|
|
| - PluginInstaller* installer = finder->GetPluginInstaller(plugins[i]);
|
| + PluginMetadata* plugin_metadata = finder->GetPluginMetadata(plugins[i]);
|
| // Insert into a set of all group names.
|
| - group_names.insert(installer->name());
|
| + group_names.insert(plugin_metadata->name());
|
| }
|
|
|
| // Add the plug-in groups.
|
|
|