Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(615)

Side by Side Diff: chrome/browser/extensions/api/content_settings/content_settings_api.cc

Issue 10910168: Separate plugin_metadata from plugin_installer, thread-safe plugin_finder (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: .. Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/content_settings/content_settings_api.h" 5 #include "chrome/browser/extensions/api/content_settings/content_settings_api.h"
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 bool GetResourceIdentifiersFunction::RunImpl() { 252 bool GetResourceIdentifiersFunction::RunImpl() {
253 ContentSettingsType content_type; 253 ContentSettingsType content_type;
254 EXTENSION_FUNCTION_VALIDATE(RemoveContentType(args_.get(), &content_type)); 254 EXTENSION_FUNCTION_VALIDATE(RemoveContentType(args_.get(), &content_type));
255 255
256 if (content_type != CONTENT_SETTINGS_TYPE_PLUGINS) { 256 if (content_type != CONTENT_SETTINGS_TYPE_PLUGINS) {
257 SendResponse(true); 257 SendResponse(true);
258 return true; 258 return true;
259 } 259 }
260 260
261 if (!g_testing_plugins_) { 261 if (!g_testing_plugins_) {
262 PluginFinder::GetPluginsAndPluginFinder( 262 PluginService::GetInstance()->GetPlugins(
263 base::Bind(&GetResourceIdentifiersFunction::OnGotPlugins, this)); 263 base::Bind(&GetResourceIdentifiersFunction::OnGotPlugins, this));
264 } else { 264 } else {
265 PluginFinder::Get( 265 OnGotPlugins(*g_testing_plugins_);
266 base::Bind(&GetResourceIdentifiersFunction::OnGotPlugins, this,
267 *g_testing_plugins_));
268 } 266 }
269 return true; 267 return true;
270 } 268 }
271 269
272 void GetResourceIdentifiersFunction::OnGotPlugins( 270 void GetResourceIdentifiersFunction::OnGotPlugins(
273 const std::vector<webkit::WebPluginInfo>& plugins, 271 const std::vector<webkit::WebPluginInfo>& plugins) {
274 PluginFinder* finder) { 272 PluginFinder* finder = PluginFinder::GetInstance();
275 std::set<std::string> group_identifiers; 273 std::set<std::string> group_identifiers;
276 ListValue* list = new ListValue(); 274 ListValue* list = new ListValue();
277 for (std::vector<webkit::WebPluginInfo>::const_iterator it = plugins.begin(); 275 for (std::vector<webkit::WebPluginInfo>::const_iterator it = plugins.begin();
278 it != plugins.end(); ++it) { 276 it != plugins.end(); ++it) {
279 PluginInstaller* installer = finder->GetPluginInstaller(*it); 277 PluginMetadata* plugin_metadata = finder->GetPluginMetadata(*it);
280 const std::string& group_identifier = installer->identifier(); 278 const std::string& group_identifier = plugin_metadata->identifier();
281 if (group_identifiers.find(group_identifier) != group_identifiers.end()) 279 if (group_identifiers.find(group_identifier) != group_identifiers.end())
282 continue; 280 continue;
283 281
284 group_identifiers.insert(group_identifier); 282 group_identifiers.insert(group_identifier);
285 DictionaryValue* dict = new DictionaryValue(); 283 DictionaryValue* dict = new DictionaryValue();
286 dict->SetString(keys::kIdKey, group_identifier); 284 dict->SetString(keys::kIdKey, group_identifier);
287 dict->SetString(keys::kDescriptionKey, installer->name()); 285 dict->SetString(keys::kDescriptionKey, plugin_metadata->name());
288 list->Append(dict); 286 list->Append(dict);
289 } 287 }
290 SetResult(list); 288 SetResult(list);
291 BrowserThread::PostTask( 289 BrowserThread::PostTask(
292 BrowserThread::UI, FROM_HERE, base::Bind( 290 BrowserThread::UI, FROM_HERE, base::Bind(
293 &GetResourceIdentifiersFunction::SendResponse, this, true)); 291 &GetResourceIdentifiersFunction::SendResponse, this, true));
294 } 292 }
295 293
296 // static 294 // static
297 void GetResourceIdentifiersFunction::SetPluginsForTesting( 295 void GetResourceIdentifiersFunction::SetPluginsForTesting(
298 const std::vector<webkit::WebPluginInfo>* plugins) { 296 const std::vector<webkit::WebPluginInfo>* plugins) {
299 g_testing_plugins_ = plugins; 297 g_testing_plugins_ = plugins;
300 } 298 }
301 299
302 } // namespace extensions 300 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/content_settings/content_settings_api.h ('k') | chrome/browser/plugins/plugin_finder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698