summaryrefslogtreecommitdiffstats
path: root/chrome/browser/plugin_finder.cc
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-02 02:28:12 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-02 02:28:12 +0000
commitf99c87d5c20b9ece5b77fe0230f9c10bd2f48dcf (patch)
treefe41e293ce8e9c804626637ea4d09506a290d299 /chrome/browser/plugin_finder.cc
parentaa8f1cc58dcac3fe2b5688dabdd45d52c240721a (diff)
downloadchromium_src-f99c87d5c20b9ece5b77fe0230f9c10bd2f48dcf.zip
chromium_src-f99c87d5c20b9ece5b77fe0230f9c10bd2f48dcf.tar.gz
chromium_src-f99c87d5c20b9ece5b77fe0230f9c10bd2f48dcf.tar.bz2
Add PluginInstaller to encapsulate information about a missing plug-in, and add a separate help URL for each plug-in.
TBR=arv@chromium.org BUG=62079,102987 TEST=none Review URL: http://codereview.chromium.org/8664027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112610 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/plugin_finder.cc')
-rw-r--r--chrome/browser/plugin_finder.cc31
1 files changed, 23 insertions, 8 deletions
diff --git a/chrome/browser/plugin_finder.cc b/chrome/browser/plugin_finder.cc
index eee7757..59777de 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;
}
}