diff options
Diffstat (limited to 'embed/web-process-extension/ephy-webextension-common.c')
-rw-r--r-- | embed/web-process-extension/ephy-webextension-common.c | 20 |
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; |