#ifndef PluginDatabase_H
#define PluginDatabase_H
#include <wtf/Vector.h>
#include <wtf/HashSet.h>
#include "PlatformString.h"
#include "PluginPackage.h"
#include "StringHash.h"
namespace WebCore {
class Element;
class Frame;
class IntSize;
class KURL;
class PluginPackage;
class PluginView;
typedef HashSet<RefPtr<PluginPackage>, PluginPackageHash> PluginSet;
class PluginDatabase {
public:
static PluginDatabase* installedPlugins();
PluginView* createPluginView(Frame* parentFrame, const IntSize&, Element* element, const KURL& url, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually);
static bool isPreferredPluginPath(const String& path);
bool refresh();
Vector<PluginPackage*> plugins() const;
bool isMIMETypeRegistered(const String& mimeType);
void addExtraPluginPath(const String&);
private:
void setPluginPaths(const Vector<String>& paths) { m_pluginPaths = paths; }
PluginSet getPluginsInPaths() const;
PluginPackage* findPlugin(const KURL& url, String& mimeType);
PluginPackage* pluginForMIMEType(const String& mimeType);
String MIMETypeForExtension(const String& extension) const;
static int preferredPluginCompare(const void*, const void*);
static Vector<String> defaultPluginPaths();
Vector<String> m_pluginPaths;
HashSet<String> m_registeredMIMETypes;
PluginSet m_plugins;
};
}
#endif