Skip to content

Commit f67a348

Browse files
committed
[GTK4] Update to new API for running javascript
The API for running javascript and integrating with javascript objects and types has changed substantially between GTK3 and GTK4 (technically between webkit2gtk 4 and webkitgtk 6) The top level methods to call to run javascript changed: - webkit_web_view_run_javascript -> webkit_web_view_evaluate_javascript - webkit_web_view_run_javascript_finish -> webkit_web_view_evaluate_javascript_finish - JSValue methods -> JSCValue methods With this Browser.execute works, so for example Snippet161 now works and the ControlExample shuts down cleanly. Fixes #2667
1 parent 559d4c1 commit f67a348

File tree

4 files changed

+486
-8
lines changed

4 files changed

+486
-8
lines changed

bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/library/webkitgtk.c

Lines changed: 310 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,270 @@ JNIEXPORT jlong JNICALL WebKitGTK_NATIVE(JSValueToStringCopy)
243243
}
244244
#endif
245245

246+
#ifndef NO_jsc_1value_1is_1boolean
247+
JNIEXPORT jboolean JNICALL WebKitGTK_NATIVE(jsc_1value_1is_1boolean)
248+
(JNIEnv *env, jclass that, jlong arg0)
249+
{
250+
jboolean rc = 0;
251+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1is_1boolean_FUNC);
252+
/*
253+
rc = (jboolean)jsc_value_is_boolean(arg0);
254+
*/
255+
{
256+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_is_boolean)
257+
if (fp) {
258+
rc = (jboolean)((jboolean (CALLING_CONVENTION*)(jlong))fp)(arg0);
259+
}
260+
}
261+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1is_1boolean_FUNC);
262+
return rc;
263+
}
264+
#endif
265+
266+
#ifndef NO_jsc_1value_1is_1null
267+
JNIEXPORT jboolean JNICALL WebKitGTK_NATIVE(jsc_1value_1is_1null)
268+
(JNIEnv *env, jclass that, jlong arg0)
269+
{
270+
jboolean rc = 0;
271+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1is_1null_FUNC);
272+
/*
273+
rc = (jboolean)jsc_value_is_null(arg0);
274+
*/
275+
{
276+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_is_null)
277+
if (fp) {
278+
rc = (jboolean)((jboolean (CALLING_CONVENTION*)(jlong))fp)(arg0);
279+
}
280+
}
281+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1is_1null_FUNC);
282+
return rc;
283+
}
284+
#endif
285+
286+
#ifndef NO_jsc_1value_1is_1number
287+
JNIEXPORT jboolean JNICALL WebKitGTK_NATIVE(jsc_1value_1is_1number)
288+
(JNIEnv *env, jclass that, jlong arg0)
289+
{
290+
jboolean rc = 0;
291+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1is_1number_FUNC);
292+
/*
293+
rc = (jboolean)jsc_value_is_number(arg0);
294+
*/
295+
{
296+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_is_number)
297+
if (fp) {
298+
rc = (jboolean)((jboolean (CALLING_CONVENTION*)(jlong))fp)(arg0);
299+
}
300+
}
301+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1is_1number_FUNC);
302+
return rc;
303+
}
304+
#endif
305+
306+
#ifndef NO_jsc_1value_1is_1object
307+
JNIEXPORT jboolean JNICALL WebKitGTK_NATIVE(jsc_1value_1is_1object)
308+
(JNIEnv *env, jclass that, jlong arg0)
309+
{
310+
jboolean rc = 0;
311+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1is_1object_FUNC);
312+
/*
313+
rc = (jboolean)jsc_value_is_object(arg0);
314+
*/
315+
{
316+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_is_object)
317+
if (fp) {
318+
rc = (jboolean)((jboolean (CALLING_CONVENTION*)(jlong))fp)(arg0);
319+
}
320+
}
321+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1is_1object_FUNC);
322+
return rc;
323+
}
324+
#endif
325+
326+
#ifndef NO_jsc_1value_1is_1string
327+
JNIEXPORT jboolean JNICALL WebKitGTK_NATIVE(jsc_1value_1is_1string)
328+
(JNIEnv *env, jclass that, jlong arg0)
329+
{
330+
jboolean rc = 0;
331+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1is_1string_FUNC);
332+
/*
333+
rc = (jboolean)jsc_value_is_string(arg0);
334+
*/
335+
{
336+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_is_string)
337+
if (fp) {
338+
rc = (jboolean)((jboolean (CALLING_CONVENTION*)(jlong))fp)(arg0);
339+
}
340+
}
341+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1is_1string_FUNC);
342+
return rc;
343+
}
344+
#endif
345+
346+
#ifndef NO_jsc_1value_1is_1typed_1array
347+
JNIEXPORT jboolean JNICALL WebKitGTK_NATIVE(jsc_1value_1is_1typed_1array)
348+
(JNIEnv *env, jclass that, jlong arg0)
349+
{
350+
jboolean rc = 0;
351+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1is_1typed_1array_FUNC);
352+
/*
353+
rc = (jboolean)jsc_value_is_typed_array(arg0);
354+
*/
355+
{
356+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_is_typed_array)
357+
if (fp) {
358+
rc = (jboolean)((jboolean (CALLING_CONVENTION*)(jlong))fp)(arg0);
359+
}
360+
}
361+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1is_1typed_1array_FUNC);
362+
return rc;
363+
}
364+
#endif
365+
366+
#ifndef NO_jsc_1value_1is_1undefined
367+
JNIEXPORT jboolean JNICALL WebKitGTK_NATIVE(jsc_1value_1is_1undefined)
368+
(JNIEnv *env, jclass that, jlong arg0)
369+
{
370+
jboolean rc = 0;
371+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1is_1undefined_FUNC);
372+
/*
373+
rc = (jboolean)jsc_value_is_undefined(arg0);
374+
*/
375+
{
376+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_is_undefined)
377+
if (fp) {
378+
rc = (jboolean)((jboolean (CALLING_CONVENTION*)(jlong))fp)(arg0);
379+
}
380+
}
381+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1is_1undefined_FUNC);
382+
return rc;
383+
}
384+
#endif
385+
386+
#ifndef NO_jsc_1value_1object_1get_1property
387+
JNIEXPORT jlong JNICALL WebKitGTK_NATIVE(jsc_1value_1object_1get_1property)
388+
(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1)
389+
{
390+
jbyte *lparg1=NULL;
391+
jlong rc = 0;
392+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1object_1get_1property_FUNC);
393+
if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
394+
/*
395+
rc = (jlong)jsc_value_object_get_property(arg0, lparg1);
396+
*/
397+
{
398+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_object_get_property)
399+
if (fp) {
400+
rc = (jlong)((jlong (CALLING_CONVENTION*)(jlong, jbyte *))fp)(arg0, lparg1);
401+
}
402+
}
403+
fail:
404+
if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
405+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1object_1get_1property_FUNC);
406+
return rc;
407+
}
408+
#endif
409+
410+
#ifndef NO_jsc_1value_1object_1get_1property_1at_1index
411+
JNIEXPORT jlong JNICALL WebKitGTK_NATIVE(jsc_1value_1object_1get_1property_1at_1index)
412+
(JNIEnv *env, jclass that, jlong arg0, jint arg1)
413+
{
414+
jlong rc = 0;
415+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1object_1get_1property_1at_1index_FUNC);
416+
/*
417+
rc = (jlong)jsc_value_object_get_property_at_index(arg0, arg1);
418+
*/
419+
{
420+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_object_get_property_at_index)
421+
if (fp) {
422+
rc = (jlong)((jlong (CALLING_CONVENTION*)(jlong, jint))fp)(arg0, arg1);
423+
}
424+
}
425+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1object_1get_1property_1at_1index_FUNC);
426+
return rc;
427+
}
428+
#endif
429+
430+
#ifndef NO_jsc_1value_1to_1boolean
431+
JNIEXPORT jboolean JNICALL WebKitGTK_NATIVE(jsc_1value_1to_1boolean)
432+
(JNIEnv *env, jclass that, jlong arg0)
433+
{
434+
jboolean rc = 0;
435+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1to_1boolean_FUNC);
436+
/*
437+
rc = (jboolean)jsc_value_to_boolean(arg0);
438+
*/
439+
{
440+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_to_boolean)
441+
if (fp) {
442+
rc = (jboolean)((jboolean (CALLING_CONVENTION*)(jlong))fp)(arg0);
443+
}
444+
}
445+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1to_1boolean_FUNC);
446+
return rc;
447+
}
448+
#endif
449+
450+
#ifndef NO_jsc_1value_1to_1double
451+
JNIEXPORT jdouble JNICALL WebKitGTK_NATIVE(jsc_1value_1to_1double)
452+
(JNIEnv *env, jclass that, jlong arg0)
453+
{
454+
jdouble rc = 0;
455+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1to_1double_FUNC);
456+
/*
457+
rc = (jdouble)jsc_value_to_double(arg0);
458+
*/
459+
{
460+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_to_double)
461+
if (fp) {
462+
rc = (jdouble)((jdouble (CALLING_CONVENTION*)(jlong))fp)(arg0);
463+
}
464+
}
465+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1to_1double_FUNC);
466+
return rc;
467+
}
468+
#endif
469+
470+
#ifndef NO_jsc_1value_1to_1int32
471+
JNIEXPORT jint JNICALL WebKitGTK_NATIVE(jsc_1value_1to_1int32)
472+
(JNIEnv *env, jclass that, jlong arg0)
473+
{
474+
jint rc = 0;
475+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1to_1int32_FUNC);
476+
/*
477+
rc = (jint)jsc_value_to_int32(arg0);
478+
*/
479+
{
480+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_to_int32)
481+
if (fp) {
482+
rc = (jint)((jint (CALLING_CONVENTION*)(jlong))fp)(arg0);
483+
}
484+
}
485+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1to_1int32_FUNC);
486+
return rc;
487+
}
488+
#endif
489+
490+
#ifndef NO_jsc_1value_1to_1string
491+
JNIEXPORT jlong JNICALL WebKitGTK_NATIVE(jsc_1value_1to_1string)
492+
(JNIEnv *env, jclass that, jlong arg0)
493+
{
494+
jlong rc = 0;
495+
WebKitGTK_NATIVE_ENTER(env, that, jsc_1value_1to_1string_FUNC);
496+
/*
497+
rc = (jlong)jsc_value_to_string(arg0);
498+
*/
499+
{
500+
WebKitGTK_LOAD_FUNCTION(fp, jsc_value_to_string)
501+
if (fp) {
502+
rc = (jlong)((jlong (CALLING_CONVENTION*)(jlong))fp)(arg0);
503+
}
504+
}
505+
WebKitGTK_NATIVE_EXIT(env, that, jsc_1value_1to_1string_FUNC);
506+
return rc;
507+
}
508+
#endif
509+
246510
#ifndef NO_soup_1cookie_1get_1name
247511
JNIEXPORT jlong JNICALL WebKitGTK_NATIVE(soup_1cookie_1get_1name)
248512
(JNIEnv *env, jclass that, jlong arg0)
@@ -1918,6 +2182,52 @@ JNIEXPORT jint JNICALL WebKitGTK_NATIVE(webkit_1web_1view_1can_1show_1mime_1type
19182182
}
19192183
#endif
19202184

2185+
#ifndef NO_webkit_1web_1view_1evaluate_1javascript
2186+
JNIEXPORT void JNICALL WebKitGTK_NATIVE(webkit_1web_1view_1evaluate_1javascript)
2187+
(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jlong arg2, jlong arg3, jlong arg4, jlong arg5, jlong arg6, jlong arg7)
2188+
{
2189+
jbyte *lparg1=NULL;
2190+
WebKitGTK_NATIVE_ENTER(env, that, webkit_1web_1view_1evaluate_1javascript_FUNC);
2191+
if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
2192+
/*
2193+
webkit_web_view_evaluate_javascript(arg0, lparg1, arg2, arg3, arg4, arg5, arg6, arg7);
2194+
*/
2195+
{
2196+
WebKitGTK_LOAD_FUNCTION(fp, webkit_web_view_evaluate_javascript)
2197+
if (fp) {
2198+
((void (CALLING_CONVENTION*)(jlong, jbyte *, jlong, jlong, jlong, jlong, jlong, jlong))fp)(arg0, lparg1, arg2, arg3, arg4, arg5, arg6, arg7);
2199+
}
2200+
}
2201+
fail:
2202+
if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
2203+
WebKitGTK_NATIVE_EXIT(env, that, webkit_1web_1view_1evaluate_1javascript_FUNC);
2204+
}
2205+
#endif
2206+
2207+
#ifndef NO_webkit_1web_1view_1evaluate_1javascript_1finish
2208+
JNIEXPORT jlong JNICALL WebKitGTK_NATIVE(webkit_1web_1view_1evaluate_1javascript_1finish)
2209+
(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlongArray arg2)
2210+
{
2211+
jlong *lparg2=NULL;
2212+
jlong rc = 0;
2213+
WebKitGTK_NATIVE_ENTER(env, that, webkit_1web_1view_1evaluate_1javascript_1finish_FUNC);
2214+
if (arg2) if ((lparg2 = (*env)->GetLongArrayElements(env, arg2, NULL)) == NULL) goto fail;
2215+
/*
2216+
rc = (jlong)webkit_web_view_evaluate_javascript_finish(arg0, arg1, (GError **)lparg2);
2217+
*/
2218+
{
2219+
WebKitGTK_LOAD_FUNCTION(fp, webkit_web_view_evaluate_javascript_finish)
2220+
if (fp) {
2221+
rc = (jlong)((jlong (CALLING_CONVENTION*)(jlong, jlong, GError **))fp)(arg0, arg1, (GError **)lparg2);
2222+
}
2223+
}
2224+
fail:
2225+
if (arg2 && lparg2) (*env)->ReleaseLongArrayElements(env, arg2, lparg2, 0);
2226+
WebKitGTK_NATIVE_EXIT(env, that, webkit_1web_1view_1evaluate_1javascript_1finish_FUNC);
2227+
return rc;
2228+
}
2229+
#endif
2230+
19212231
#ifndef NO_webkit_1web_1view_1get_1context
19222232
JNIEXPORT jlong JNICALL WebKitGTK_NATIVE(webkit_1web_1view_1get_1context)
19232233
(JNIEnv *env, jclass that, jlong arg0)

bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/library/webkitgtk_stats.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,19 @@ typedef enum {
3434
JSValueGetType_FUNC,
3535
JSValueToNumber_FUNC,
3636
JSValueToStringCopy_FUNC,
37+
jsc_1value_1is_1boolean_FUNC,
38+
jsc_1value_1is_1null_FUNC,
39+
jsc_1value_1is_1number_FUNC,
40+
jsc_1value_1is_1object_FUNC,
41+
jsc_1value_1is_1string_FUNC,
42+
jsc_1value_1is_1typed_1array_FUNC,
43+
jsc_1value_1is_1undefined_FUNC,
44+
jsc_1value_1object_1get_1property_FUNC,
45+
jsc_1value_1object_1get_1property_1at_1index_FUNC,
46+
jsc_1value_1to_1boolean_FUNC,
47+
jsc_1value_1to_1double_FUNC,
48+
jsc_1value_1to_1int32_FUNC,
49+
jsc_1value_1to_1string_FUNC,
3750
soup_1cookie_1get_1name_FUNC,
3851
soup_1cookie_1get_1value_FUNC,
3952
soup_1cookie_1parse_FUNC,
@@ -116,6 +129,8 @@ typedef enum {
116129
webkit_1web_1view_1can_1go_1back_FUNC,
117130
webkit_1web_1view_1can_1go_1forward_FUNC,
118131
webkit_1web_1view_1can_1show_1mime_1type_FUNC,
132+
webkit_1web_1view_1evaluate_1javascript_FUNC,
133+
webkit_1web_1view_1evaluate_1javascript_1finish_FUNC,
119134
webkit_1web_1view_1get_1context_FUNC,
120135
webkit_1web_1view_1get_1estimated_1load_1progress_FUNC,
121136
webkit_1web_1view_1get_1find_1controller_FUNC,

0 commit comments

Comments
 (0)