PluginModuleInfo PluginInfoStore::findPlugin(String& mimeType, const KURL& url) { loadPluginsIfNecessary(); // First, check if we can get the plug-in based on its MIME type. if (!mimeType.isNull()) { PluginModuleInfo plugin = findPluginForMIMEType(mimeType); if (!plugin.path.isNull()) return plugin; } // Next, check if any plug-ins claim to support the URL extension. String extension = pathExtension(url).lower(); if (!extension.isNull() && mimeType.isEmpty()) { PluginModuleInfo plugin = findPluginForExtension(extension, mimeType); if (!plugin.path.isNull()) return plugin; // Finally, try to get the MIME type from the extension in a platform specific manner and use that. String extensionMimeType = getMIMETypeForExtension(extension); if (!extensionMimeType.isNull()) { PluginModuleInfo plugin = findPluginForMIMEType(extensionMimeType); if (!plugin.path.isNull()) { mimeType = extensionMimeType; return plugin; } } } return PluginModuleInfo(); }
void PluginInfoStore::getPlugins(Vector<PluginInfo>& plugins) { loadPluginsIfNecessary(); for (size_t i = 0; i < m_plugins.size(); ++i) plugins.append(m_plugins[i].info); }
Vector<PluginModuleInfo> PluginInfoStore::plugins() { loadPluginsIfNecessary(); return m_plugins; }
Vector<PluginModuleInfo> PluginInfoStore::plugins() { MutexLocker locker(m_pluginsLock); loadPluginsIfNecessary(); return deepIsolatedCopyPluginInfoVector(m_plugins); }