Skip to content

Commit 6014e1b

Browse files
jonahgrahamakurtakov
authored andcommitted
[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 08f5f87 commit 6014e1b

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)
@@ -1958,6 +2222,52 @@ JNIEXPORT jint JNICALL WebKitGTK_NATIVE(webkit_1web_1view_1can_1show_1mime_1type
19582222
}
19592223
#endif
19602224

2225+
#ifndef NO_webkit_1web_1view_1evaluate_1javascript
2226+
JNIEXPORT void JNICALL WebKitGTK_NATIVE(webkit_1web_1view_1evaluate_1javascript)
2227+
(JNIEnv *env, jclass that, jlong arg0, jbyteArray arg1, jlong arg2, jlong arg3, jlong arg4, jlong arg5, jlong arg6, jlong arg7)
2228+
{
2229+
jbyte *lparg1=NULL;
2230+
WebKitGTK_NATIVE_ENTER(env, that, webkit_1web_1view_1evaluate_1javascript_FUNC);
2231+
if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail;
2232+
/*
2233+
webkit_web_view_evaluate_javascript(arg0, lparg1, arg2, arg3, arg4, arg5, arg6, arg7);
2234+
*/
2235+
{
2236+
WebKitGTK_LOAD_FUNCTION(fp, webkit_web_view_evaluate_javascript)
2237+
if (fp) {
2238+
((void (CALLING_CONVENTION*)(jlong, jbyte *, jlong, jlong, jlong, jlong, jlong, jlong))fp)(arg0, lparg1, arg2, arg3, arg4, arg5, arg6, arg7);
2239+
}
2240+
}
2241+
fail:
2242+
if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0);
2243+
WebKitGTK_NATIVE_EXIT(env, that, webkit_1web_1view_1evaluate_1javascript_FUNC);
2244+
}
2245+
#endif
2246+
2247+
#ifndef NO_webkit_1web_1view_1evaluate_1javascript_1finish
2248+
JNIEXPORT jlong JNICALL WebKitGTK_NATIVE(webkit_1web_1view_1evaluate_1javascript_1finish)
2249+
(JNIEnv *env, jclass that, jlong arg0, jlong arg1, jlongArray arg2)
2250+
{
2251+
jlong *lparg2=NULL;
2252+
jlong rc = 0;
2253+
WebKitGTK_NATIVE_ENTER(env, that, webkit_1web_1view_1evaluate_1javascript_1finish_FUNC);
2254+
if (arg2) if ((lparg2 = (*env)->GetLongArrayElements(env, arg2, NULL)) == NULL) goto fail;
2255+
/*
2256+
rc = (jlong)webkit_web_view_evaluate_javascript_finish(arg0, arg1, (GError **)lparg2);
2257+
*/
2258+
{
2259+
WebKitGTK_LOAD_FUNCTION(fp, webkit_web_view_evaluate_javascript_finish)
2260+
if (fp) {
2261+
rc = (jlong)((jlong (CALLING_CONVENTION*)(jlong, jlong, GError **))fp)(arg0, arg1, (GError **)lparg2);
2262+
}
2263+
}
2264+
fail:
2265+
if (arg2 && lparg2) (*env)->ReleaseLongArrayElements(env, arg2, lparg2, 0);
2266+
WebKitGTK_NATIVE_EXIT(env, that, webkit_1web_1view_1evaluate_1javascript_1finish_FUNC);
2267+
return rc;
2268+
}
2269+
#endif
2270+
19612271
#ifndef NO_webkit_1web_1view_1get_1context
19622272
JNIEXPORT jlong JNICALL WebKitGTK_NATIVE(webkit_1web_1view_1get_1context)
19632273
(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,
@@ -118,6 +131,8 @@ typedef enum {
118131
webkit_1web_1view_1can_1go_1back_FUNC,
119132
webkit_1web_1view_1can_1go_1forward_FUNC,
120133
webkit_1web_1view_1can_1show_1mime_1type_FUNC,
134+
webkit_1web_1view_1evaluate_1javascript_FUNC,
135+
webkit_1web_1view_1evaluate_1javascript_1finish_FUNC,
121136
webkit_1web_1view_1get_1context_FUNC,
122137
webkit_1web_1view_1get_1estimated_1load_1progress_FUNC,
123138
webkit_1web_1view_1get_1find_1controller_FUNC,

0 commit comments

Comments
 (0)