Index: webkit/glue/plugins/plugin_list.cc |
diff --git a/webkit/glue/plugins/plugin_list.cc b/webkit/glue/plugins/plugin_list.cc |
index bca7dbb40ffe88d5571a1055fb7a4a5143d510e4..12ae3ed5f02a49bc8d2c13459918f4fc5e5f78b0 100644 |
--- a/webkit/glue/plugins/plugin_list.cc |
+++ b/webkit/glue/plugins/plugin_list.cc |
@@ -473,7 +473,6 @@ void PluginList::GetPlugins(bool refresh, std::vector<WebPluginInfo>* plugins) { |
void PluginList::GetEnabledPlugins(bool refresh, |
std::vector<WebPluginInfo>* plugins) { |
LoadPlugins(refresh); |
- |
plugins->clear(); |
AutoLock lock(lock_); |
for (std::vector<WebPluginInfo*>::const_iterator it = plugins_.begin(); |
@@ -614,14 +613,15 @@ void PluginList::GetPluginGroups( |
plugin_groups->clear(); |
for (PluginGroup::PluginMap::const_iterator it = plugin_groups_.begin(); |
it != plugin_groups_.end(); ++it) { |
- plugin_groups->push_back(*it->second); |
+ if (!it->second->IsEmpty()) |
+ plugin_groups->push_back(*it->second); |
} |
} |
const PluginGroup* PluginList::GetPluginGroup( |
const WebPluginInfo& web_plugin_info) { |
AutoLock lock(lock_); |
- return AddToPluginGroups(web_plugin_info, NULL); |
+ return AddToPluginGroups(web_plugin_info, &plugins_); |
} |
string16 PluginList::GetPluginGroupName(std::string identifier) { |
@@ -635,7 +635,7 @@ string16 PluginList::GetPluginGroupName(std::string identifier) { |
std::string PluginList::GetPluginGroupIdentifier( |
const WebPluginInfo& web_plugin_info) { |
AutoLock lock(lock_); |
- PluginGroup* group = AddToPluginGroups(web_plugin_info, NULL); |
+ PluginGroup* group = AddToPluginGroups(web_plugin_info, &plugins_); |
return group->identifier(); |
} |
@@ -645,6 +645,7 @@ void PluginList::AddHardcodedPluginGroups() { |
for (size_t i = 0; i < GetPluginGroupDefinitionsSize(); ++i) { |
PluginGroup* definition_group = PluginGroup::FromPluginGroupDefinition( |
definitions[i]); |
+ ProcessGroupAfterInitialize(definition_group); |
std::string identifier = definition_group->identifier(); |
DCHECK(plugin_groups_.find(identifier) == plugin_groups_.end()); |
plugin_groups_.insert(std::make_pair(identifier, definition_group)); |
@@ -662,6 +663,7 @@ PluginGroup* PluginList::AddToPluginGroups( |
} |
if (!group) { |
group = PluginGroup::FromWebPluginInfo(web_plugin_info); |
+ ProcessGroupAfterInitialize(group); |
std::string identifier = group->identifier(); |
// If the identifier is not unique, use the full path. This means that we |
// probably won't be able to search for this group by identifier, but at |
@@ -674,21 +676,22 @@ PluginGroup* PluginList::AddToPluginGroups( |
DCHECK(plugin_groups_.find(identifier) == plugin_groups_.end()); |
plugin_groups_.insert(std::make_pair(identifier, group)); |
} |
- WebPluginInfo* group_plugin_copy; |
- bool is_new_addition = group->AddPlugin( |
- web_plugin_info, next_priority_, &group_plugin_copy); |
- if (plugins) |
- plugins->push_back(group_plugin_copy); |
- if (is_new_addition) { |
- next_priority_++; |
- string16 group_name = group->GetGroupName(); |
- if (!group->Enabled() && !disabled_groups_.count(group_name)) { |
- disabled_groups_.insert(DisabledGroupsListElement( |
- group_name, |
- PluginGroup::IsPluginNameDisabledByPolicy(group_name) ? |
- POLICY : USER)); |
- } else if (group->Enabled() && disabled_groups_.count(group_name)) { |
- disabled_groups_.erase(group_name); |
+ if (plugins) { |
+ WebPluginInfo* group_plugin_copy; |
+ bool is_new_addition = group->AddPlugin( |
+ web_plugin_info, next_priority_, &group_plugin_copy); |
+ if (is_new_addition) { |
+ plugins->push_back(group_plugin_copy); |
+ next_priority_++; |
+ string16 group_name = group->GetGroupName(); |
+ if (!group->Enabled() && !disabled_groups_.count(group_name)) { |
+ disabled_groups_.insert(DisabledGroupsListElement( |
+ group_name, |
+ PluginGroup::IsPluginNameDisabledByPolicy(group_name) ? |
+ POLICY : USER)); |
+ } else if (group->Enabled() && disabled_groups_.count(group_name)) { |
+ disabled_groups_.erase(group_name); |
+ } |
} |
// We don't need to protect the flag here because it is protected from the |
// callers of |AddToPluginGroups|. |