Making WebKitGTK Accessible Again

igalia 11 views 27 slides Aug 21, 2024
Slide 1
Slide 1 of 27
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27

About This Presentation

Since the GTK4 port of WebKit was released, a major missing feature was the
accessibility of the web contents. Accessibility technologies like Orca
couldn't inspect what was the web content visible on screen. But as of GNOME
46, this is (mostly) fixed!

Let's deep dive into how WebKitGTK imp...


Slide Content

Ma king WebKitG TK Ac c essibleMa king WebKitG TK Ac c essible
Aga i nAga i n
Georges StavracasGeorges Stavracas
1 / 27

We b K i t G T KWe b K i t G T K
2 / 27

GTKGTK
3 / 27

GTK3 vs GTK4GTK3 vs GTK4
4 / 27

WPE WebKitWPE WebKit
https:/ / webkit.org/ wpe/
5 / 27

Current StatusCurrent Status
Flatpak Bubblewrap Unsandboxed
GTK3 ! " "
GTK4 ! " "
6 / 27

ChallengesChallenges
7 / 27

Challenge 1Challenge 1
Out-of-process AccessibilityOut-of-process Accessibility
Tr e e sTr e e s
8 / 27

Status: Fixed ✔✔
9 / 27

Challenge 2Challenge 2
D-Bus FilteringD-Bus Filtering
10 / 27

Status: Fixed ✔✔
11 / 27

Challenge 3Challenge 3
Flatpak Sub-SandboxingFlatpak Sub-Sandboxing
12 / 27

Pha se 1 : The BrowserPha se 1 : The Browser
1. GNOME Shell executes the org.gnome.Epiphany.desktop
fi le
2. It runs flatpak run org.gnome.Epiphany
3. Flatpak spawns Bubblewrap
4. Bubblewrap spawns xdg-dbus-proxy with permissions
5. Bubblewrap spawns the epiphany p ro c e s s
13 / 27

Pha se 1 : The BrowserPha se 1 : The Browser
1. GNOME Shell executes the org.gnome.Epiphany.desktop
fi le
2. It runs flatpak run org.gnome.Epiphany
3. Flatpak spawns Bubblewrap
4. Bubblewrap spawns xdg-dbus-proxy with permissions
5. Bubblewrap spawns the epiphany p ro c e s s
14 / 27

Pha se 2 : The Web ViewPha se 2 : The Web View
1. GNOME Web connects to D-Bus
2. GNOME Web acquires a unique bus name ( :1.300 )
3. GNOME Web creates its widgetry
4. GNOME Web a WebKitWeView
5. We b K i t We bV i e w u s e s flatpak-spawn fo r t h e We b p ro c e s s
6. flatpak-spawn c a l l s t h e F l a t p a k p o r t a l
15 / 27

Pha se 3 : The Fla tpa k Porta lPha se 3 : The Fla tpa k Porta l
1. Flatpak portal creates a new sandbox
2. Flatpak portal spawns Bubblewrap
3. Bubblewrap spawns xdg-dbus-proxy with sockets
4. Bubblewrap spawns the Web process
16 / 27

Pha se 4 : The Web Proc essPha se 4 : The Web Proc ess
1. The Web Process connects to D-Bus
2. The Web Process acquires a unique bus name ( :1.301 )
3. The Web Process starts doing web processy stuff
4. The Web Process notifies G NO ME Web it’s ready
17 / 27

Pha se 5 : It A ll Fa lls A pa rtPha se 5 : It A ll Fa lls A pa rt
1. GNOME Web learns the Web Process is ready at :1.301
2. GNOME Web calls org.a11y.atspi.Socket.Embedded
3. It fails
18 / 27

Why?Why?
19 / 27

Pha se 1 : The BrowserPha se 1 : The Browser
1. GNOME Shell executes the org.gnome.Epiphany.desktop
fi le
2. It runs flatpak run org.gnome.Epiphany
3. Flatpak spawns Bubblewrap
4. Bubblewrap spawns xdg-dbus-proxy with permissions
5. Bubblewrap spawns the epiphany p ro c e s s
20 / 27

Ephy’s xdg-dbus-proxy was not set to talkEphy’s xdg-dbus-proxy was not set to talk
to to :1.301:1.301 !!
21 / 27

Status: Not Fixed ⚠⚠
22 / 27

Challenge 4Challenge 4
Ac c e ssi ble Tre e C onte ntsAc c e ssi ble Tre e C onte nts
23 / 27

Status: Not Fixed ⚠⚠
24 / 27

Roa dma pRoa dma p
• Continue investigating the Flatpak situation
• Massage the a1 1 y tree of WebKi t i nto what ATs expect
25 / 27

Q&AQ&A
26 / 27

Tha nksTha nks
27 / 27