void PluginInfoStore::loadPluginsIfNecessary() { if (m_pluginListIsUpToDate) return; PathHashSet uniquePluginPaths; // First, load plug-ins from the additional plug-ins directories specified. for (size_t i = 0; i < m_additionalPluginsDirectories.size(); ++i) addFromVector(uniquePluginPaths, pluginPathsInDirectory(m_additionalPluginsDirectories[i])); // Then load plug-ins from the standard plug-ins directories. Vector<String> directories = pluginsDirectories(); for (size_t i = 0; i < directories.size(); ++i) addFromVector(uniquePluginPaths, pluginPathsInDirectory(directories[i])); // Then load plug-ins that are not in the standard plug-ins directories. addFromVector(uniquePluginPaths, individualPluginPaths()); Vector<PluginModuleInfo> plugins; PathHashSet::const_iterator end = uniquePluginPaths.end(); for (PathHashSet::const_iterator it = uniquePluginPaths.begin(); it != end; ++it) loadPlugin(plugins, *it); m_plugins = deepIsolatedCopyPluginInfoVector(plugins); m_pluginListIsUpToDate = true; }
void PluginInfoStore::loadPluginsIfNecessary() { if (m_pluginListIsUpToDate) return; PathHashSet uniquePluginPaths; // First, load plug-ins from the additional plug-ins directories specified. for (size_t i = 0; i < m_additionalPluginsDirectories.size(); ++i) addFromVector(uniquePluginPaths, pluginPathsInDirectory(m_additionalPluginsDirectories[i])); // Then load plug-ins from the standard plug-ins directories. Vector<String> directories = pluginsDirectories(); for (size_t i = 0; i < directories.size(); ++i) addFromVector(uniquePluginPaths, pluginPathsInDirectory(directories[i])); // Then load plug-ins that are not in the standard plug-ins directories. addFromVector(uniquePluginPaths, individualPluginPaths()); Vector<PluginModuleInfo> plugins; PathHashSet::const_iterator end = uniquePluginPaths.end(); for (PathHashSet::const_iterator it = uniquePluginPaths.begin(); it != end; ++it) loadPlugin(plugins, *it); #if ENABLE(PEPPER_PLUGIN_API) std::vector<PluginModuleInfo> pepperPlugins; content::PepperPluginRegistry::GetInstance()->ComputeList(pepperPlugins); std::vector<PluginModuleInfo>::iterator endPlugins = pepperPlugins.end(); for (std::vector<PluginModuleInfo>::iterator it = pepperPlugins.begin(); it != endPlugins; ++it) plugins.append(*it); #endif m_plugins = deepIsolatedCopyPluginInfoVector(plugins); m_pluginListIsUpToDate = true; }
Vector<PluginModuleInfo> PluginInfoStore::plugins() { MutexLocker locker(m_pluginsLock); loadPluginsIfNecessary(); return deepIsolatedCopyPluginInfoVector(m_plugins); }