webkit-api.yaml RawHistoryFolder
1# WebKit API Migration Contract
2# Defines the interface mapping between WebKit2GTK 4.0 and WebKitGTK 6.0
3
4version: "1.0.0"
5migration:
6 from: "webkit2gtk-4.0"
7 to: "webkitgtk-6.0"
8
9# Core WebView Management
10webview:
11 creation:
12 old:
13 function: "webkit_web_view_new_with_context"
14 params: ["WebKitWebContext*"]
15 returns: "GtkWidget*"
16 new:
17 function: "g_object_new"
18 params: ["WEBKIT_TYPE_WEB_VIEW", "properties..."]
19 returns: "GtkWidget*"
20
21 settings:
22 hardware_acceleration:
23 function: "webkit_settings_set_hardware_acceleration_policy"
24 params: ["WebKitSettings*", "WebKitHardwareAccelerationPolicy"]
25 values:
26 - WEBKIT_HARDWARE_ACCELERATION_POLICY_ON_DEMAND
27 - WEBKIT_HARDWARE_ACCELERATION_POLICY_ALWAYS
28 - WEBKIT_HARDWARE_ACCELERATION_POLICY_NEVER
29
30 canvas_acceleration:
31 function: "webkit_settings_set_enable_2d_canvas_acceleration"
32 params: ["WebKitSettings*", "gboolean"]
33
34 webgl:
35 function: "webkit_settings_set_enable_webgl"
36 params: ["WebKitSettings*", "gboolean"]
37
38# GTK4 Widget Changes
39gtk:
40 window:
41 create:
42 old: "gtk_window_new(GTK_WINDOW_TOPLEVEL)"
43 new: "gtk_window_new()"
44
45 add_child:
46 old: "gtk_container_add(container, widget)"
47 new: "gtk_window_set_child(window, widget)"
48
49 destroy:
50 old: "gtk_widget_destroy(widget)"
51 new: "gtk_window_destroy(GTK_WINDOW(widget))"
52
53 events:
54 key_press:
55 old:
56 signal: "key-press-event"
57 callback: "gboolean (*)(GtkWidget*, GdkEventKey*, gpointer)"
58 new:
59 controller: "gtk_event_controller_key_new()"
60 signal: "key-pressed"
61 callback: "gboolean (*)(GtkEventControllerKey*, guint, guint, GdkModifierType, gpointer)"
62
63 button_press:
64 old:
65 signal: "button-press-event"
66 callback: "gboolean (*)(GtkWidget*, GdkEventButton*, gpointer)"
67 new:
68 controller: "gtk_gesture_click_new()"
69 signal: "pressed"
70 callback: "void (*)(GtkGestureClick*, gint, gdouble, gdouble, gpointer)"
71
72# Network Session (replaces WebContext)
73network:
74 session:
75 old:
76 type: "WebKitWebContext"
77 data_manager: "webkit_website_data_manager_new"
78 new:
79 type: "WebKitNetworkSession"
80 create: "webkit_network_session_new"
81 ephemeral: "webkit_network_session_new_ephemeral"
82 default: "webkit_network_session_get_default"
83
84# Build Configuration
85build:
86 pkg_config:
87 old:
88 - "webkit2gtk-4.0"
89 - "gtk+-3.0"
90 - "javascriptcoregtk-4.0"
91 new:
92 - "webkitgtk-6.0"
93 - "gtk4"
94 - "javascriptcoregtk-6.0"
95
96 headers:
97 old:
98 - "#include <webkit2/webkit2.h>"
99 - "#include <gtk/gtk.h>"
100 new:
101 - "#include <webkit/webkit.h>"
102 - "#include <gtk/gtk.h>"
103
104# Compatibility Requirements
105compatibility:
106 minimum_gtk: "4.0"
107 minimum_webkit: "2.40" # First version with webkitgtk-6.0
108 required_features:
109 - hardware_acceleration_policy
110 - network_session
111 - sandbox_always_enabled