From e8060c40f539cec81ad4e46b8884f88f78fdec43 Mon Sep 17 00:00:00 2001 From: Jonas Danielsson Date: Sun, 22 Jan 2023 19:23:18 +0100 Subject: [PATCH] wpe: Post console messages as element messages Fixes #1731 Part-of: --- .../ext/wpe/WPEThreadedView.cpp | 10 +++++++- .../ext/wpe/wpe-extension/gstwpeextension.c | 23 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/subprojects/gst-plugins-bad/ext/wpe/WPEThreadedView.cpp b/subprojects/gst-plugins-bad/ext/wpe/WPEThreadedView.cpp index c195ede08a..7e14b2c366 100644 --- a/subprojects/gst-plugins-bad/ext/wpe/WPEThreadedView.cpp +++ b/subprojects/gst-plugins-bad/ext/wpe/WPEThreadedView.cpp @@ -326,6 +326,14 @@ webkit_extension_msg_received (WebKitWebContext *context, webkit_extension_gerror_msg_received (src, params); } else if (!g_strcmp0(name, "gstwpe.bus_message")) { webkit_extension_bus_message_received (src, params); + } else if (!g_strcmp0(name, "gstwpe.console_message")) { + const gchar *message = g_variant_get_string (g_variant_get_child_value (params, 0), NULL); + GstStructure *structure = gst_structure_new ("wpe-console-message", + "message", G_TYPE_STRING, message, + NULL); + + gst_element_post_message(GST_ELEMENT(src), gst_message_new_custom(GST_MESSAGE_ELEMENT, + GST_OBJECT(src), structure)); } else { res = FALSE; g_error("Unknown event: %s", name); @@ -348,7 +356,7 @@ WPEView* WPEContextThread::createWPEView(GstWpeVideoSrc* src, GstGLContext* cont WPEView* view = nullptr; dispatch([&]() mutable { if (!glib.web_context) { - auto *manager = webkit_website_data_manager_new_ephemeral(); + auto *manager = webkit_website_data_manager_new(NULL); glib.web_context = webkit_web_context_new_with_website_data_manager(manager); g_object_unref(manager); diff --git a/subprojects/gst-plugins-bad/ext/wpe/wpe-extension/gstwpeextension.c b/subprojects/gst-plugins-bad/ext/wpe/wpe-extension/gstwpeextension.c index bcdfa9b765..845e95f87f 100644 --- a/subprojects/gst-plugins-bad/ext/wpe/wpe-extension/gstwpeextension.c +++ b/subprojects/gst-plugins-bad/ext/wpe/wpe-extension/gstwpeextension.c @@ -38,6 +38,26 @@ G_MODULE_EXPORT void webkit_web_extension_initialize (WebKitWebExtension * static WebKitWebExtension *global_extension = NULL; + +static void +console_message_cb (WebKitWebPage * page, + WebKitConsoleMessage * console_message, gpointer data) +{ + char *message = g_strdup (webkit_console_message_get_text (console_message)); + gst_wpe_extension_send_message (webkit_user_message_new + ("gstwpe.console_message", g_variant_new ("(s)", message)), NULL, NULL, + NULL); + g_free (message); +} + +static void +web_page_created_callback (WebKitWebExtension * extension, + WebKitWebPage * web_page, gpointer data) +{ + g_signal_connect (web_page, "console-message-sent", + G_CALLBACK (console_message_cb), NULL); +} + void webkit_web_extension_initialize (WebKitWebExtension * extension) { @@ -55,6 +75,9 @@ webkit_web_extension_initialize (WebKitWebExtension * extension) global_extension = extension; GST_INFO ("Setting as global extension."); + + g_signal_connect (global_extension, "page-created", + G_CALLBACK (web_page_created_callback), NULL); } void