[epiphany/pgriffis/web-extension/content-script-replies: 4/4] WebExtensions: Set tab property on MessageSender




commit 1dca66c79660e81a59bd56a7aa3b2041918ab59b
Author: Patrick Griffis <pgriffis igalia com>
Date:   Mon Jun 6 12:21:01 2022 -0500

    WebExtensions: Set tab property on MessageSender

 src/webextension/api/tabs.c           | 11 +++++++++++
 src/webextension/api/tabs.h           |  2 ++
 src/webextension/ephy-web-extension.c |  7 +++++++
 3 files changed, 20 insertions(+)
---
diff --git a/src/webextension/api/tabs.c b/src/webextension/api/tabs.c
index e47816804..bc4916fe5 100644
--- a/src/webextension/api/tabs.c
+++ b/src/webextension/api/tabs.c
@@ -119,6 +119,17 @@ add_web_view_to_json (JsonBuilder *builder,
   json_builder_end_object (builder);
 }
 
+JsonNode *
+ephy_web_extension_api_tabs_create_tab_object (EphyWebView *web_view)
+{
+  g_autoptr (JsonBuilder) builder = json_builder_new ();
+  add_web_view_to_json (builder,
+                        EPHY_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (web_view))),
+                        web_view,
+                        FALSE);
+  return json_builder_get_root (builder);
+}
+
 typedef enum {
   TAB_QUERY_UNSET = -1,
   TAB_QUERY_DONT_MATCH = 0,
diff --git a/src/webextension/api/tabs.h b/src/webextension/api/tabs.h
index da7ce1e62..a8d526100 100644
--- a/src/webextension/api/tabs.h
+++ b/src/webextension/api/tabs.h
@@ -33,4 +33,6 @@ void ephy_web_extension_api_tabs_handler (EphyWebExtension *self,
                                           WebKitWebView    *web_view,
                                           GTask            *task);
 
+JsonNode *ephy_web_extension_api_tabs_create_tab_object (EphyWebView *web_view);
+
 G_END_DECLS
diff --git a/src/webextension/ephy-web-extension.c b/src/webextension/ephy-web-extension.c
index a360d8b6d..2a71f79d8 100644
--- a/src/webextension/ephy-web-extension.c
+++ b/src/webextension/ephy-web-extension.c
@@ -32,6 +32,8 @@
 #include "ephy-web-extension.h"
 #include "ephy-window.h"
 
+#include "tabs.h"
+
 #include <archive.h>
 #include <archive_entry.h>
 #include <glib/gstdio.h>
@@ -1510,6 +1512,11 @@ ephy_web_extension_create_sender_object (EphyWebExtension *self,
   json_object_set_string_member (obj, "id", ephy_web_extension_get_guid (self));
   if (web_view) {
     json_object_set_string_member (obj, "url", webkit_web_view_get_uri (web_view));
+
+    /* For now these are always regular views and not extension views. */
+    if (EPHY_IS_WEB_VIEW (web_view)) {
+      json_object_set_member (obj, "tab", ephy_web_extension_api_tabs_create_tab_object (EPHY_WEB_VIEW 
(web_view)));
+    }
   }
 
   return json_to_string (node, FALSE);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]