diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-02 02:28:12 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-02 02:28:12 +0000 |
commit | f99c87d5c20b9ece5b77fe0230f9c10bd2f48dcf (patch) | |
tree | fe41e293ce8e9c804626637ea4d09506a290d299 /chrome/browser/plugin_finder.cc | |
parent | aa8f1cc58dcac3fe2b5688dabdd45d52c240721a (diff) | |
download | chromium_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.cc | 31 |
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; } } |