summaryrefslogtreecommitdiff
path: root/embed/web-process-extension/ephy-webextension-common.c
diff options
context:
space:
mode:
Diffstat (limited to 'embed/web-process-extension/ephy-webextension-common.c')
-rw-r--r--embed/web-process-extension/ephy-webextension-common.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/embed/web-process-extension/ephy-webextension-common.c b/embed/web-process-extension/ephy-webextension-common.c
index 41d36df39..f0f211073 100644
--- a/embed/web-process-extension/ephy-webextension-common.c
+++ b/embed/web-process-extension/ephy-webextension-common.c
@@ -156,6 +156,13 @@ js_geturl (const char *path,
return g_strdup_printf ("ephy-webextension://%s/%s", guid, path[0] == '/' ? path + 1 : path);
}
+static JSCValue *
+js_getmanifest (gpointer user_data)
+{
+ JSCValue *manifest_object = user_data;
+ return g_object_ref (manifest_object);
+}
+
static void
js_exception_handler (JSCContext *context,
JSCException *exception)
@@ -178,7 +185,8 @@ ephy_webextension_install_common_apis (WebKitWebPage *page,
WebKitFrame *frame,
JSCContext *js_context,
const char *guid,
- JsonObject *translations)
+ JsonObject *translations,
+ const char *manifest)
{
g_autoptr (JSCValue) result = NULL;
g_autoptr (JSCValue) js_browser = NULL;
@@ -186,6 +194,7 @@ ephy_webextension_install_common_apis (WebKitWebPage *page,
g_autoptr (JSCValue) js_extension = NULL;
g_autoptr (JSCValue) js_function = NULL;
g_autoptr (JSCValue) js_object = NULL;
+ g_autoptr (JSCValue) manifest_object = NULL;
EphySendMessageData *send_message_data;
jsc_context_push_exception_handler (js_context, (JSCExceptionHandler)js_exception_handler, NULL, NULL);
@@ -230,6 +239,15 @@ ephy_webextension_install_common_apis (WebKitWebPage *page,
jsc_value_object_set_property (js_extension, "getURL", js_function);
g_clear_object (&js_function);
+ manifest_object = jsc_value_new_from_json (js_context, manifest);
+ js_function = jsc_value_new_function (js_context,
+ NULL,
+ G_CALLBACK (js_getmanifest), g_object_ref (manifest_object), g_object_unref,
+ JSC_TYPE_VALUE,
+ 0);
+ jsc_value_object_set_property (js_extension, "getManifest", js_function);
+ g_clear_object (&js_function);
+
/* global functions */
send_message_data = g_new (EphySendMessageData, 1);
send_message_data->page = page;