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

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

Issue 10910168: Separate plugin_metadata from plugin_installer, thread-safe plugin_finder (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: .. Created 8 years, 3 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
« no previous file with comments | « chrome/browser/plugins/plugin_prefs.h ('k') | chrome/browser/renderer_host/plugin_info_message_filter.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« no previous file with comments | « chrome/browser/plugins/plugin_prefs.h ('k') | chrome/browser/renderer_host/plugin_info_message_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698