Skip to content

Commit eca813c

Browse files
jonahgrahamakurtakov
authored andcommitted
[GTK4] Update to new GTK4 api needed for webkit_decide_policy
The API for getting the request information (from which URI is extracted) changed between GTK3 and GTK4 (technically between webkit2gtk 4 and webkitgtk 6) This needs to work so we can enable javascript and is therefore required as a pre-requisite to make #2667 work. Part of #2667
1 parent b02fab8 commit eca813c

File tree

4 files changed

+58
-1
lines changed

4 files changed

+58
-1
lines changed

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

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1225,6 +1225,46 @@ JNIEXPORT void JNICALL WebKitGTK_NATIVE(webkit_1javascript_1result_1unref)
12251225
}
12261226
#endif
12271227

1228+
#ifndef NO_webkit_1navigation_1action_1get_1request
1229+
JNIEXPORT jlong JNICALL WebKitGTK_NATIVE(webkit_1navigation_1action_1get_1request)
1230+
(JNIEnv *env, jclass that, jlong arg0)
1231+
{
1232+
jlong rc = 0;
1233+
WebKitGTK_NATIVE_ENTER(env, that, webkit_1navigation_1action_1get_1request_FUNC);
1234+
/*
1235+
rc = (jlong)webkit_navigation_action_get_request(arg0);
1236+
*/
1237+
{
1238+
WebKitGTK_LOAD_FUNCTION(fp, webkit_navigation_action_get_request)
1239+
if (fp) {
1240+
rc = (jlong)((jlong (CALLING_CONVENTION*)(jlong))fp)(arg0);
1241+
}
1242+
}
1243+
WebKitGTK_NATIVE_EXIT(env, that, webkit_1navigation_1action_1get_1request_FUNC);
1244+
return rc;
1245+
}
1246+
#endif
1247+
1248+
#ifndef NO_webkit_1navigation_1policy_1decision_1get_1navigation_1action
1249+
JNIEXPORT jlong JNICALL WebKitGTK_NATIVE(webkit_1navigation_1policy_1decision_1get_1navigation_1action)
1250+
(JNIEnv *env, jclass that, jlong arg0)
1251+
{
1252+
jlong rc = 0;
1253+
WebKitGTK_NATIVE_ENTER(env, that, webkit_1navigation_1policy_1decision_1get_1navigation_1action_FUNC);
1254+
/*
1255+
rc = (jlong)webkit_navigation_policy_decision_get_navigation_action(arg0);
1256+
*/
1257+
{
1258+
WebKitGTK_LOAD_FUNCTION(fp, webkit_navigation_policy_decision_get_navigation_action)
1259+
if (fp) {
1260+
rc = (jlong)((jlong (CALLING_CONVENTION*)(jlong))fp)(arg0);
1261+
}
1262+
}
1263+
WebKitGTK_NATIVE_EXIT(env, that, webkit_1navigation_1policy_1decision_1get_1navigation_1action_FUNC);
1264+
return rc;
1265+
}
1266+
#endif
1267+
12281268
#ifndef NO_webkit_1navigation_1policy_1decision_1get_1request
12291269
JNIEXPORT jlong JNICALL WebKitGTK_NATIVE(webkit_1navigation_1policy_1decision_1get_1request)
12301270
(JNIEnv *env, jclass that, jlong arg0)

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ typedef enum {
8282
webkit_1javascript_1result_1get_1global_1context_FUNC,
8383
webkit_1javascript_1result_1get_1value_FUNC,
8484
webkit_1javascript_1result_1unref_FUNC,
85+
webkit_1navigation_1action_1get_1request_FUNC,
86+
webkit_1navigation_1policy_1decision_1get_1navigation_1action_FUNC,
8587
webkit_1navigation_1policy_1decision_1get_1request_FUNC,
8688
webkit_1network_1session_1get_1cookie_1manager_FUNC,
8789
webkit_1network_1session_1get_1default_FUNC,

bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2341,7 +2341,16 @@ long webkit_hovering_over_link (long web_view, long title, long uri) {
23412341
long webkit_decide_policy (long web_view, long decision, int decision_type, long user_data) {
23422342
switch (decision_type) {
23432343
case WebKitGTK.WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION:
2344-
long request = WebKitGTK. webkit_navigation_policy_decision_get_request(decision);
2344+
long request;
2345+
if (GTK.GTK4) {
2346+
long navigation = WebKitGTK. webkit_navigation_policy_decision_get_navigation_action(decision);
2347+
if (navigation == 0) {
2348+
return 0;
2349+
}
2350+
request = WebKitGTK.webkit_navigation_action_get_request(navigation);
2351+
} else {
2352+
request = WebKitGTK. webkit_navigation_policy_decision_get_request(decision);
2353+
}
23452354
if (request == 0){
23462355
return 0;
23472356
}

bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/internal/webkit/WebKitGTK.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,12 @@ public class WebKitGTK extends C {
353353
/** @method flags=dynamic */
354354
public static final native long webkit_navigation_policy_decision_get_request(long decision);
355355

356+
/** @method flags=dynamic */
357+
public static final native long webkit_navigation_policy_decision_get_navigation_action(long decision);
358+
359+
/** @method flags=dynamic */
360+
public static final native long webkit_navigation_action_get_request(long navigation);
361+
356362
/** @method flags=dynamic */
357363
public static final native void webkit_policy_decision_download(long decision);
358364

0 commit comments

Comments
 (0)