Chromium Code Reviews| Index: chrome/browser/ui/webui/plugins_ui.cc |
| diff --git a/chrome/browser/ui/webui/plugins_ui.cc b/chrome/browser/ui/webui/plugins_ui.cc |
| index a2f46aa21330441ec76716477278fd4fa5af70b3..2f255b739d4035b4a1f584e47f8b3d7c32cd494d 100644 |
| --- a/chrome/browser/ui/webui/plugins_ui.cc |
| +++ b/chrome/browser/ui/webui/plugins_ui.cc |
| @@ -17,6 +17,8 @@ |
| #include "base/utf_string_conversions.h" |
| #include "base/values.h" |
| #include "chrome/browser/content_settings/host_content_settings_map.h" |
| +#include "chrome/browser/plugin_finder.h" |
| +#include "chrome/browser/plugin_installer.h" |
| #include "chrome/browser/plugin_prefs.h" |
| #include "chrome/browser/prefs/scoped_user_pref_update.h" |
| #include "chrome/browser/prefs/pref_member.h" |
| @@ -149,10 +151,14 @@ class PluginsDOMHandler : public WebUIMessageHandler, |
| private: |
| // Call this to start getting the plugins on the UI thread. |
| - void LoadPlugins(); |
| + void GetPluginFinder(); |
| + |
| + // XXX |
|
jam
2012/03/09 19:10:08
?
Bernhard Bauer
2012/03/09 20:28:12
Forgot a comment :)
|
| + void LoadPlugins(PluginFinder* plugin_finder); |
| // Called on the UI thread when the plugin information is ready. |
| - void PluginsLoaded(const std::vector<PluginGroup>& groups); |
| + void PluginsLoaded(PluginFinder* plugin_finder, |
| + const std::vector<PluginGroup>& groups); |
| content::NotificationRegistrar registrar_; |
| @@ -197,7 +203,7 @@ void PluginsDOMHandler::RegisterMessages() { |
| } |
| void PluginsDOMHandler::HandleRequestPluginsData(const ListValue* args) { |
| - LoadPlugins(); |
| + GetPluginFinder(); |
| } |
| void PluginsDOMHandler::HandleEnablePluginMessage(const ListValue* args) { |
| @@ -295,19 +301,25 @@ void PluginsDOMHandler::Observe(int type, |
| const content::NotificationSource& source, |
| const content::NotificationDetails& details) { |
| DCHECK_EQ(chrome::NOTIFICATION_PLUGIN_ENABLE_STATUS_CHANGED, type); |
| - LoadPlugins(); |
| + GetPluginFinder(); |
| +} |
| + |
| +void PluginsDOMHandler::GetPluginFinder() { |
| + PluginFinder::Get(base::Bind(&PluginsDOMHandler::LoadPlugins, |
| + weak_ptr_factory_.GetWeakPtr())); |
| } |
| -void PluginsDOMHandler::LoadPlugins() { |
| +void PluginsDOMHandler::LoadPlugins(PluginFinder* plugin_finder) { |
| if (weak_ptr_factory_.HasWeakPtrs()) |
| return; |
| PluginService::GetInstance()->GetPluginGroups( |
| base::Bind(&PluginsDOMHandler::PluginsLoaded, |
| - weak_ptr_factory_.GetWeakPtr())); |
| + weak_ptr_factory_.GetWeakPtr(), plugin_finder)); |
| } |
| -void PluginsDOMHandler::PluginsLoaded(const std::vector<PluginGroup>& groups) { |
| +void PluginsDOMHandler::PluginsLoaded(PluginFinder* plugin_finder, |
| + const std::vector<PluginGroup>& groups) { |
| Profile* profile = Profile::FromWebUI(web_ui()); |
| PluginPrefs* plugin_prefs = |
| PluginPrefs::GetForProfile(profile); |
| @@ -396,7 +408,13 @@ void PluginsDOMHandler::PluginsLoaded(const std::vector<PluginGroup>& groups) { |
| group_data->SetString("description", active_plugin->desc); |
| group_data->SetString("version", active_plugin->version); |
| group_data->SetBoolean("critical", group.IsVulnerable(*active_plugin)); |
| - group_data->SetString("update_url", group.GetUpdateURL()); |
| + |
| + std::string update_url; |
| + PluginInstaller* installer = |
| + plugin_finder->FindPluginWithIdentifier(group.identifier()); |
| + if (installer) |
| + update_url = installer->plugin_url().spec(); |
| + group_data->SetString("update_url", update_url); |
| std::string enabled_mode; |
| if (all_plugins_enabled_by_policy) { |
| @@ -410,7 +428,7 @@ void PluginsDOMHandler::PluginsLoaded(const std::vector<PluginGroup>& groups) { |
| } |
| group_data->SetString("enabledMode", enabled_mode); |
| - // TODO(bauerb): We should have a method on HostContentSettinsMap for this. |
| + // TODO(bauerb): We should have a method on HostContentSettingsMap for this. |
| bool always_allowed = false; |
| ContentSettingsForOneType settings; |
| map->GetSettingsForOneType(CONTENT_SETTINGS_TYPE_PLUGINS, |