Skip to content

Commit d440c9c

Browse files
nparr-devoawakecoding
authored andcommitted
webview: Added callback for when a javascript error is encountered
[RDMLI-2895] CR: DRinguet
1 parent fa06788 commit d440c9c

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

recipes/webview/src/WebView.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ typedef struct web_view{
1616
callback_decide_policy_evnt_fn decide_policy_handler;
1717
callback_decide_new_window_policy_evnt_fn decide_new_window_policy_handler;
1818
callback_js_ready_evnt_fn js_ready_handler;
19+
callback_js_error_evnt_fn js_error_handler;
1920
callback_context_menu_evnt_fn context_menu_handler;
2021
callback_script_message_received_evnt_fn script_message_received_handler;
2122
callback_get_cookies_evnt_fn get_cookie_handler;
@@ -87,6 +88,7 @@ LAUNCHER_EXPORT void* webview_new()
8788
wv->load_failed_handler = 0;
8889
wv->decide_policy_handler = 0;
8990
wv->js_ready_handler = 0;
91+
wv->js_error_handler = 0;
9092
wv->clear_data_manager_finish_handler = 0;
9193
WebKitWebContext* context = webkit_web_context_new ();
9294
wv->view = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context (context));
@@ -105,6 +107,7 @@ LAUNCHER_EXPORT void* webview_new_ephemeral()
105107
wv->load_failed_handler = 0;
106108
wv->decide_policy_handler = 0;
107109
wv->js_ready_handler = 0;
110+
wv->js_error_handler = 0;
108111
wv->clear_data_manager_finish_handler = 0;
109112
WebKitWebContext* context = webkit_web_context_new_ephemeral ();
110113
wv->view = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context (context));
@@ -210,6 +213,9 @@ static void evaluate_javascript_cb(GObject *obj, GAsyncResult *result, gpointer
210213
g_warning ("Error running javascript: %s", error->message);
211214
}
212215

216+
if(wv->js_error_handler)
217+
wv->js_error_handler(error->message);
218+
213219
g_error_free (error);
214220
return;
215221
}
@@ -397,6 +403,13 @@ LAUNCHER_EXPORT bool set_callback_js_ready(void* view, callback_js_ready_evnt_fn
397403
return 1;
398404
}
399405

406+
LAUNCHER_EXPORT bool set_callback_js_error(void* view, callback_js_error_evnt_fn handler)
407+
{
408+
webView* wv = (webView*)view;
409+
wv->js_error_handler = handler;
410+
return 1;
411+
}
412+
400413
LAUNCHER_EXPORT bool set_callback_clear_data_manager_finish(void* view, callback_clear_data_manager_finish_evnt_fn handler)
401414
{
402415
webView* wv = (webView*)view;

recipes/webview/src/WebView.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#endif
1111

1212
typedef void (*callback_js_ready_evnt_fn)();
13+
typedef void (*callback_js_error_evnt_fn)(char* error_message);
1314
typedef bool (*callback_load_failed_evnt_fn)(char* failed_uri, char* message);
1415
typedef bool (*callback_load_changed_evnt_fn)(WebKitWebView* view, WebKitLoadEvent load_event, gpointer user_data);
1516
typedef bool (*callback_decide_policy_evnt_fn)(WebKitWebView* view, gpointer decision, WebKitPolicyDecisionType type);
@@ -30,6 +31,7 @@ LAUNCHER_EXPORT char* get_evaluate_javascript_string(void* view);
3031
LAUNCHER_EXPORT bool set_callback_decide_policy(void* view, callback_decide_policy_evnt_fn handler);
3132
LAUNCHER_EXPORT bool set_callback_decide_new_window_policy(void* view, callback_decide_new_window_policy_evnt_fn handler);
3233
LAUNCHER_EXPORT bool set_callback_js_ready(void* view, callback_js_ready_evnt_fn handler);
34+
LAUNCHER_EXPORT bool set_callback_js_error(void* view, callback_js_error_evnt_fn handler);
3335
LAUNCHER_EXPORT bool set_callback_clear_data_manager_finish(void* view, callback_clear_data_manager_finish_evnt_fn handler);
3436
LAUNCHER_EXPORT bool set_callback_load_changed(void* view, callback_load_changed_evnt_fn handler);
3537
LAUNCHER_EXPORT bool set_callback_menu(void* view, callback_context_menu_evnt_fn handler);

0 commit comments

Comments
 (0)