webkitwebplugindatabase.cpp [plain text]
#include "config.h"
#include "webkitwebplugindatabase.h"
#include "PluginDatabase.h"
#include "webkitglobalsprivate.h"
#include "webkitwebplugindatabaseprivate.h"
#include "webkitwebpluginprivate.h"
using namespace WebKit;
using namespace WebCore;
G_DEFINE_TYPE(WebKitWebPluginDatabase, webkit_web_plugin_database, G_TYPE_OBJECT)
static void webkit_web_plugin_database_dispose(GObject* object)
{
G_OBJECT_CLASS(webkit_web_plugin_database_parent_class)->dispose(object);
}
static void webkit_web_plugin_database_class_init(WebKitWebPluginDatabaseClass* klass)
{
webkitInit();
GObjectClass* gobjectClass = reinterpret_cast<GObjectClass*>(klass);
gobjectClass->dispose = webkit_web_plugin_database_dispose;
g_type_class_add_private(klass, sizeof(WebKitWebPluginDatabasePrivate));
}
static void webkit_web_plugin_database_init(WebKitWebPluginDatabase* database)
{
WebKitWebPluginDatabasePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(database, WEBKIT_TYPE_WEB_PLUGIN_DATABASE, WebKitWebPluginDatabasePrivate);
database->priv = priv;
priv->coreDatabase = PluginDatabase::installedPlugins();
}
void webkit_web_plugin_database_plugins_list_free(GSList* list)
{
if (!list)
return;
for (GSList* p = list; p; p = p->next)
g_object_unref(p->data);
g_slist_free(list);
}
GSList* webkit_web_plugin_database_get_plugins(WebKitWebPluginDatabase* database)
{
g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN_DATABASE(database), 0);
GSList* gPlugins = 0;
const Vector<PluginPackage*>& plugins = database->priv->coreDatabase->plugins();
for (unsigned int i = 0; i < plugins.size(); ++i) {
PluginPackage* plugin = plugins[i];
gPlugins = g_slist_append(gPlugins, kitNew(plugin));
}
return gPlugins;
}
WebKitWebPlugin* webkit_web_plugin_database_get_plugin_for_mimetype(WebKitWebPluginDatabase* database, const char* mimeType)
{
g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN_DATABASE(database), 0);
g_return_val_if_fail(mimeType, 0);
return kitNew(database->priv->coreDatabase->pluginForMIMEType(mimeType));
}
void webkit_web_plugin_database_refresh(WebKitWebPluginDatabase* database)
{
g_return_if_fail(WEBKIT_IS_WEB_PLUGIN_DATABASE(database));
database->priv->coreDatabase->refresh();
}
WebKitWebPluginDatabase* webkit_web_plugin_database_new(void)
{
return WEBKIT_WEB_PLUGIN_DATABASE(g_object_new(WEBKIT_TYPE_WEB_PLUGIN_DATABASE, 0));
}