summaryrefslogtreecommitdiff
path: root/Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp')
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp152
1 files changed, 152 insertions, 0 deletions
diff --git a/Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp b/Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp
new file mode 100644
index 000000000..8d11170b4
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "webkitwebplugindatabase.h"
+
+#include "PluginDatabase.h"
+#include "webkitglobalsprivate.h"
+#include "webkitwebplugindatabaseprivate.h"
+#include "webkitwebpluginprivate.h"
+
+/**
+ * SECTION:webkitwebplugindatabase
+ * @short_description: Provides information about the plugins the engine knows about
+ * @see_also: #WebKitWebPlugin
+ *
+ * This object allows you to query information about the plugins found
+ * by the engine while scanning the usual directories. You can then
+ * use the #WebKitWebPlugin objects to get more information or
+ * enable/disable individual plugins.
+ */
+
+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();
+}
+
+/**
+ * webkit_web_plugin_database_list_free:
+ * @list: a #WebKitWebPluginDatabasePluginList
+ *
+ * Frees @list.
+ *
+ * Since: 1.3.8
+ */
+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);
+}
+
+/**
+ * webkit_web_plugin_database_get_plugins:
+ * @database: a #WebKitWebPluginDatabase
+ *
+ * Returns all #WebKitWebPlugin available in @database.
+ * The returned list must be freed with webkit_web_plugin_database_plugins_list_free()
+ *
+ * Returns: (transfer full) (element-type WebKitWebPlugin): a #GSList of #WebKitWebPlugin
+ *
+ * Since: 1.3.8
+ */
+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;
+}
+
+/**
+ * webkit_web_plugin_database_get_plugin_for_mimetype:
+ * @database: a #WebKitWebPluginDatabase
+ * @mime_type: a mime type
+ *
+ * Returns the #WebKitWebPlugin that is handling @mimeType in the
+ * @database, or %NULL if there's none doing so.
+ *
+ * Returns: (transfer full): a #WebKitWebPlugin
+ *
+ * Since: 1.3.8
+ */
+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));
+}
+
+/**
+ * webkit_web_plugin_database_refresh:
+ * @database: a #WebKitWebPluginDatabase
+ *
+ * Refreshes @database adding new plugins that are now in use and
+ * removing those that have been disabled or are otherwise no longer
+ * available.
+ *
+ * Since: 1.3.8
+ */
+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));
+}