| Index: chrome/browser/plugin_finder.cc
|
| diff --git a/chrome/browser/plugin_finder.cc b/chrome/browser/plugin_finder.cc
|
| index eee77570c6632e47bd2d0cc4ba36ca53616dcff5..59777deb0efde201c31581e317cdc3ee30f80571 100644
|
| --- a/chrome/browser/plugin_finder.cc
|
| +++ b/chrome/browser/plugin_finder.cc
|
| @@ -7,8 +7,10 @@
|
| #include "base/bind.h"
|
| #include "base/json/json_reader.h"
|
| #include "base/message_loop.h"
|
| +#include "base/stl_util.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/browser_process.h"
|
| +#include "chrome/browser/plugin_installer.h"
|
| #include "chrome/browser/prefs/pref_service.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "content/public/browser/browser_thread.h"
|
| @@ -47,6 +49,7 @@ PluginFinder::PluginFinder() {
|
| }
|
|
|
| PluginFinder::~PluginFinder() {
|
| + STLDeleteValues(&installers_);
|
| }
|
|
|
| void PluginFinder::FindPlugin(
|
| @@ -81,17 +84,29 @@ void PluginFinder::FindPlugin(
|
| success = (*mime_type_it)->GetAsString(&mime_type_str);
|
| DCHECK(success);
|
| if (mime_type_str == mime_type) {
|
| - std::string url;
|
| - success = plugin->GetString("url", &url);
|
| + std::string identifier;
|
| + success = plugin->GetString("identifier", &identifier);
|
| DCHECK(success);
|
| - string16 name;
|
| - success = plugin->GetString("name", &name);
|
| - DCHECK(success);
|
| - bool display_url = false;
|
| - plugin->GetBoolean("displayurl", &display_url);
|
| + PluginInstaller* installer = installers_[identifier];
|
| + if (!installer) {
|
| + std::string url;
|
| + success = plugin->GetString("url", &url);
|
| + DCHECK(success);
|
| + std::string help_url;
|
| + plugin->GetString("help_url", &help_url);
|
| + string16 name;
|
| + success = plugin->GetString("name", &name);
|
| + DCHECK(success);
|
| + bool display_url = false;
|
| + plugin->GetBoolean("displayurl", &display_url);
|
| + installer = new PluginInstaller(identifier,
|
| + GURL(url), GURL(help_url), name,
|
| + display_url);
|
| + installers_[identifier] = installer;
|
| + }
|
| MessageLoop::current()->PostTask(
|
| FROM_HERE,
|
| - base::Bind(found_callback, GURL(url), name, display_url));
|
| + base::Bind(found_callback, installer));
|
| return;
|
| }
|
| }
|
|
|