summaryrefslogtreecommitdiffstats
path: root/webkit/plugins/npapi/plugin_list.cc
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-07 12:01:33 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-07 12:01:33 +0000
commitbcd8d711b6c159925e14fb55fadb3d14bfdb37fb (patch)
treef05ef336e6d73e85c030e98f0cd4d42b7a7c8f51 /webkit/plugins/npapi/plugin_list.cc
parentd7cfd26afd16360eee7062b51cbfd662c0658961 (diff)
downloadchromium_src-bcd8d711b6c159925e14fb55fadb3d14bfdb37fb.zip
chromium_src-bcd8d711b6c159925e14fb55fadb3d14bfdb37fb.tar.gz
chromium_src-bcd8d711b6c159925e14fb55fadb3d14bfdb37fb.tar.bz2
Correctly match plugins to their definitions.
BUG=71781 TEST=PluginListTest.HardcodedGroups Review URL: http://codereview.chromium.org/6286081 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@73984 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/plugins/npapi/plugin_list.cc')
-rw-r--r--webkit/plugins/npapi/plugin_list.cc21
1 files changed, 8 insertions, 13 deletions
diff --git a/webkit/plugins/npapi/plugin_list.cc b/webkit/plugins/npapi/plugin_list.cc
index 102289d..31172e4 100644
--- a/webkit/plugins/npapi/plugin_list.cc
+++ b/webkit/plugins/npapi/plugin_list.cc
@@ -327,7 +327,7 @@ PluginList::PluginList()
plugins_need_refresh_(false),
disable_outdated_plugins_(false) {
PlatformInit();
- AddHardcodedPluginGroups();
+ AddHardcodedPluginGroups(&plugin_groups_);
}
void PluginList::LoadPluginsInternal(ScopedVector<PluginGroup>* plugin_groups) {
@@ -395,6 +395,7 @@ void PluginList::LoadPlugins(bool refresh) {
}
ScopedVector<PluginGroup> new_plugin_groups;
+ AddHardcodedPluginGroups(&new_plugin_groups);
// Do the actual loading of the plugins.
LoadPluginsInternal(&new_plugin_groups);
@@ -691,14 +692,12 @@ std::string PluginList::GetPluginGroupIdentifier(
return group->identifier();
}
-void PluginList::AddHardcodedPluginGroups() {
+void PluginList::AddHardcodedPluginGroups(ScopedVector<PluginGroup>* groups) {
base::AutoLock lock(lock_);
const PluginGroupDefinition* definitions = GetPluginGroupDefinitions();
- for (size_t i = 0; i < GetPluginGroupDefinitionsSize(); ++i) {
- PluginGroup* definition_group = PluginGroup::FromPluginGroupDefinition(
- definitions[i]);
- plugin_groups_.push_back(definition_group);
- }
+ size_t num_definitions = GetPluginGroupDefinitionsSize();
+ for (size_t i = 0; i < num_definitions; ++i)
+ groups->push_back(PluginGroup::FromPluginGroupDefinition(definitions[i]));
}
PluginGroup* PluginList::AddToPluginGroups(
@@ -731,11 +730,8 @@ PluginGroup* PluginList::AddToPluginGroups(
group->AddPlugin(web_plugin_info);
// If group is scheduled for disabling do that now and remove it from the
// list.
- if (groups_to_disable_.find(group->GetGroupName()) !=
- groups_to_disable_.end()) {
- group->EnableGroup(false);
- groups_to_disable_.erase(group->GetGroupName());
- }
+ if (groups_to_disable_.erase(group->GetGroupName()))
+ group->EnableGroup(false);
return group;
}
@@ -758,7 +754,6 @@ bool PluginList::DisablePlugin(const FilePath& filename) {
}
// Non existing plugin is being disabled. Queue the plugin so that on the next
// load plugins call they will be disabled.
- // Check if we already have this one to avoid double inclusion.
plugins_to_disable_.insert(filename);
return true;
}