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, |