summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp')
-rw-r--r--Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp59
1 files changed, 53 insertions, 6 deletions
diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp
index bbbed0ddc..ff0879648 100644
--- a/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp
+++ b/Source/WebKit2/UIProcess/API/gtk/WebKitContextMenu.cpp
@@ -24,6 +24,7 @@
#include "WebContextMenuItem.h"
#include "WebKitContextMenuItemPrivate.h"
#include "WebKitContextMenuPrivate.h"
+#include <wtf/glib/GRefPtr.h>
using namespace WebKit;
using namespace WebCore;
@@ -50,6 +51,7 @@ using namespace WebCore;
struct _WebKitContextMenuPrivate {
GList* items;
WebKitContextMenuItem* parentItem;
+ GRefPtr<GVariant> userData;
};
WEBKIT_DEFINE_TYPE(WebKitContextMenu, webkit_context_menu, G_TYPE_OBJECT)
@@ -66,21 +68,27 @@ static void webkit_context_menu_class_init(WebKitContextMenuClass* listClass)
gObjectClass->dispose = webkitContextMenuDispose;
}
-void webkitContextMenuPopulate(WebKitContextMenu* menu, Vector<ContextMenuItem>& contextMenuItems)
+void webkitContextMenuPopulate(WebKitContextMenu* menu, Vector<WebContextMenuItemData>& contextMenuItems)
{
for (GList* item = menu->priv->items; item; item = g_list_next(item)) {
WebKitContextMenuItem* menuItem = WEBKIT_CONTEXT_MENU_ITEM(item->data);
- contextMenuItems.append(ContextMenuItem(webkitContextMenuItemRelease(menuItem)));
+ contextMenuItems.append(webkitContextMenuItemToWebContextMenuItemData(menuItem));
}
}
-WebKitContextMenu* webkitContextMenuCreate(API::Array* items)
+void webkitContextMenuPopulate(WebKitContextMenu* menu, Vector<WebContextMenuItemGtk>& contextMenuItems)
+{
+ for (GList* item = menu->priv->items; item; item = g_list_next(item)) {
+ WebKitContextMenuItem* menuItem = WEBKIT_CONTEXT_MENU_ITEM(item->data);
+ contextMenuItems.append(webkitContextMenuItemToWebContextMenuItemGtk(menuItem));
+ }
+}
+
+WebKitContextMenu* webkitContextMenuCreate(const Vector<WebContextMenuItemData>& items)
{
WebKitContextMenu* menu = webkit_context_menu_new();
- for (size_t i = 0; i < items->size(); ++i) {
- WebContextMenuItem* item = static_cast<WebContextMenuItem*>(items->at(i));
+ for (const auto& item : items)
webkit_context_menu_prepend(menu, webkitContextMenuItemCreate(item));
- }
menu->priv->items = g_list_reverse(menu->priv->items);
return menu;
@@ -316,3 +324,42 @@ void webkit_context_menu_remove_all(WebKitContextMenu* menu)
g_list_free_full(menu->priv->items, reinterpret_cast<GDestroyNotify>(g_object_unref));
menu->priv->items = 0;
}
+
+/**
+ * webkit_context_menu_set_user_data:
+ * @menu: a #WebKitContextMenu
+ * @user_data: a #GVariant
+ *
+ * Sets user data to @menu.
+ * This function can be used from a Web Process extension to set user data
+ * that can be retrieved from the UI Process using webkit_context_menu_get_user_data().
+ * If the @user_data #GVariant is floating, it is consumed.
+ *
+ * Since: 2.8
+ */
+void webkit_context_menu_set_user_data(WebKitContextMenu* menu, GVariant* userData)
+{
+ g_return_if_fail(WEBKIT_IS_CONTEXT_MENU(menu));
+ g_return_if_fail(userData);
+
+ menu->priv->userData = userData;
+}
+
+/**
+ * webkit_context_menu_get_user_data:
+ * @menu: a #WebKitContextMenu
+ *
+ * Gets the user data of @menu.
+ * This function can be used from the UI Process to get user data previously set
+ * from the Web Process with webkit_context_menu_set_user_data().
+ *
+ * Returns: (transfer none): the user data of @menu, or %NULL if @menu doesn't have user data
+ *
+ * Since: 2.8
+ */
+GVariant* webkit_context_menu_get_user_data(WebKitContextMenu* menu)
+{
+ g_return_val_if_fail(WEBKIT_IS_CONTEXT_MENU(menu), nullptr);
+
+ return menu->priv->userData.get();
+}