Skip to content

libservo: Set up graft node in AccessKit trees for webviews#43556

Merged
delan merged 2 commits intoservo:mainfrom
delan:webview-graft-nodes
Mar 26, 2026
Merged

libservo: Set up graft node in AccessKit trees for webviews#43556
delan merged 2 commits intoservo:mainfrom
delan:webview-graft-nodes

Conversation

@delan
Copy link
Copy Markdown
Member

@delan delan commented Mar 23, 2026

in #43029, we defined an accessibility tree for each webview. we create those trees when accessibility is activated for that webview, then the embedder can graft it into their main accessibility tree. at the time, this accessibility tree was empty, but we ultimately want it to contain the accessibility tree of the documents loaded in the webview at any given time. to do that, we need to graft the active top-level pipeline’s accessibility tree into the webview accessibility tree. we should be able to ignore nested documents inside iframes here, and leave it to their parent documents to graft those in as part of layout accessibility.

this patch hooks into the moment in the constellation where we detect that the top-level document has changed (#43013), and notifies libservo of the new AccessKit TreeId for the webview-to-pipeline graft node. this moment covers navigating to a new top-level document and navigating back or forward, but not the initial document loaded in the webview, so we also hook into the moment a ConstellationWebView is created, and do the same for that initial document. now the accessibility tree for a webview with accessibility activated should look like this:

  • embedder’s main tree
    • graft node for webview tree → webview tree
      • graft node for document back in history
      • graft node for active top-level document → (nothing yet)
      • graft node for document forward in history

Testing: this patch updates the relevant accessibility test in libservo
Fixes: part of #4344, extracted from our work in #42338

@delan delan requested review from mrobinson and mukilan March 23, 2026 05:51
@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Mar 23, 2026
@servo-highfive servo-highfive added S-awaiting-review There is new code that needs to be reviewed. S-needs-rebase There are merge conflict errors. and removed S-awaiting-review There is new code that needs to be reviewed. labels Mar 23, 2026
Co-authored-by: delan azabani <[email protected]>
Signed-off-by: Alice Boxhall <[email protected]>
@delan delan force-pushed the webview-graft-nodes branch from 3ee2c71 to 378707d Compare March 26, 2026 09:38
@servo-highfive servo-highfive removed the S-needs-rebase There are merge conflict errors. label Mar 26, 2026
Co-authored-by: Alice Boxhall <[email protected]>
Signed-off-by: delan azabani <[email protected]>
@mrobinson
Copy link
Copy Markdown
Member

@delan feel free to land this whenever you like.

@delan delan added this pull request to the merge queue Mar 26, 2026
@servo-highfive servo-highfive added the S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. label Mar 26, 2026
Merged via the queue into servo:main with commit 3f74648 Mar 26, 2026
30 checks passed
@delan delan deleted the webview-graft-nodes branch March 26, 2026 15:53
@servo-highfive servo-highfive removed the S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. label Mar 26, 2026
github-merge-queue bot pushed a commit that referenced this pull request Apr 1, 2026
this patch plumbs the webview accessibility trees (#43029, #43556) into
servoshell. we add a global flag in servoshell, which is set when the
platform activates accessibility and cleared when the platform
deactivates accessibility. the flag in turn [activates
accessibility](https://doc.servo.org/servo/struct.WebView.html#method.set_accessibility_active)
in existing and new webviews.

Testing: none in this patch, but will be covered by end-to-end platform
a11y tests in WPT
Fixes: part of #4344, extracted from our work in #42338

Signed-off-by: delan azabani <[email protected]>
Co-authored-by: Luke Warlow <[email protected]>
Co-authored-by: Alice Boxhall <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-awaiting-review There is new code that needs to be reviewed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants