Skip to content

Commit 974dc10

Browse files
committed
Write about Android and input changes
1 parent 9d56e7c commit 974dc10

File tree

3 files changed

+21
-14
lines changed

3 files changed

+21
-14
lines changed

_posts/2025-11-02-this-month-in-servo.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ Servo now supports several new web platform features:
1818
- **self.name** and **.onmessageerror** in dedicated workers (@yerke, #40156)
1919
- **name** and **areas** properties on **HTMLMapElement** (@tharkum, #40133)
2020

21+
In **servoshell** for **Android**, you can now enable **experimental mode** with <!-- TODO how many? --> just a few taps (@jdm, #40054), use the **software keyboard** (@jdm, #40009), deliver **touch events** to web content (@mrobinson, #40240), and dismiss the location field (@jdm, #40049).
22+
**Pinch zoom** is now fully supported in both Servo and **servoshell**, taking into account the locations of pinch inputs (@mrobinson, @atbrakhi, #40083) and allowing keyboard scrolling when zoomed in (@mrobinson, @atbrakhi, #40108).
23+
2124
**AbortController** and **AbortSignal** are now **enabled by default** (@jdm, @TimvdLippe, #40079, #39943), after implementing **AbortSignal.timeout()** (@Taym95, #40032) and fixing **throwIfAborted()** on **AbortSignal** (@Taym95, #40224).
2225
If this is the first time you’ve heard of them, you might be surprised how important they are for real-world web compat!
2326
[**Over 40%**](https://webstatus.dev/features/aborting) of Google Chrome page loads at least *check* if they are supported, and many popular websites including GitHub and Discord are broken without them.
@@ -57,7 +60,11 @@ The [default driver](https://doc.servo.org/compositing/refresh_driver/struct.Tim
5760
Servo’s embedding API has had a few **breaking changes**:
5861

5962
- <code>[Opts](https://doc.servo.org/servo_config/opts/struct.Opts.html)::wait_for_stable_image</code> was **removed**; to wait for a stable image, call <code>[WebView](https://doc.servo.org/servo/struct.WebView.html)::[**take_screenshot**](https://doc.servo.org/servo/struct.WebView.html#method.take_screenshot)</code> instead (@mrobinson, @delan, #39583).
63+
6064
- <code>[MouseButtonAction](https://doc.servo.org/servo/enum.MouseButtonAction.html)::Click</code> was **removed**; use <code>[**Down**](https://doc.servo.org/servo/enum.MouseButtonAction.html#variant.Down)</code> followed by <code>[**Up**](https://doc.servo.org/servo/enum.MouseButtonAction.html#variant.Up)</code>. [Click events](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event) need to be *derived* from mouse button downs and ups to ensure that they are fired correctly (@mrobinson, #39705).
65+
66+
- **Scrolling is now *derived*** from mouse wheel events. When you have mouse wheel input to forward to Servo, you should now call <code>[WebView](https://doc.servo.org/servo/struct.WebView.html)::[notify_input_event](https://doc.servo.org/servo/struct.WebView.html#method.notify_input_event)</code> *only*, not <code>[notify_scroll_event](https://doc.servo.org/servo/struct.WebView.html#method.notify_scroll_event)</code> (@mrobinson, @atbrakhi, #40269).
67+
6168
- <code>[WebView](https://doc.servo.org/servo/struct.WebView.html)::set_pinch_zoom</code> was renamed to <code>[pinch_zoom](https://doc.servo.org/servo/struct.WebView.html#method.pinch_zoom)</code>, to better reflect that **pinch zoom** is always **relative** (@mrobinson, @atbrakhi, #39868).
6269

6370
We’ve improved **page zoom** in our webview API (@atbrakhi, @mrobinson, @shubhamg13, #39738), which includes some **breaking changes**:

outline.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,16 @@
6767
embedding
6868
- https://github.com/servo/servo/pull/40223 (@mrobinson, @atbrakhi, #40223) libservo: Expose `WebViewPoint` / `WebViewRect` and use them for the API (#40223)
6969
embedding
70-
- https://github.com/servo/servo/pull/40269 (@mrobinson, @atbrakhi, #40269) libservo: Have wheel events trigger scroll in Servo (#40269)
70+
- DONE https://github.com/servo/servo/pull/40269 (@mrobinson, @atbrakhi, #40269) libservo: Have wheel events trigger scroll in Servo (#40269)
7171
embedding
7272
- input
7373
- https://github.com/servo/servo/pull/39776 (@mrobinson, #39776) webdriver: Send events to the embedder as `InputEvent` with a response channel (#39776)
7474
input; similar change, but in webdriver, which is an internal part of servoshell
7575
- https://github.com/servo/servo/pull/39810 (@mrobinson, #39810) libservo: Notify the embedder when an input event can't be sent to a Pipeline (#39810)
7676
input; more reliable notification of input events in some edge cases
77-
- https://github.com/servo/servo/pull/40083 (@mrobinson, @atbrakhi, #40083) compositing: Fully implement pinch zoom (#40083)
77+
- DONE https://github.com/servo/servo/pull/40083 (@mrobinson, @atbrakhi, #40083) compositing: Fully implement pinch zoom (#40083)
7878
input
79-
- https://github.com/servo/servo/pull/40108 (@mrobinson, @atbrakhi, #40108) script: Have the renderer process root viewport handle keyboard scrolling (#40108)
79+
- DONE https://github.com/servo/servo/pull/40108 (@mrobinson, @atbrakhi, #40108) script: Have the renderer process root viewport handle keyboard scrolling (#40108)
8080
input
8181
- layout
8282
- https://github.com/servo/servo/pull/39591 (@mrobinson, @Loirooriol, #39591) layout: Clone static position rectangles when caching in `IndependentFormattingContext` (#39591)
@@ -126,17 +126,17 @@
126126
servoshell; screenshots use current DPI of system
127127
- https://github.com/servo/servo/pull/39314 (@Narfinger, @mukilan, #39314) servoshell: Improve CLI help formatting (#39314)
128128
servoshell; much more readable --help output
129-
- https://github.com/servo/servo/pull/40009 (@jdm, #40009) servoshell: Hook up Android software keyboard to embedder events. (#40009)
129+
- DONE https://github.com/servo/servo/pull/40009 (@jdm, #40009) servoshell: Hook up Android software keyboard to embedder events. (#40009)
130130
servoshell
131-
- https://github.com/servo/servo/pull/40049 (@jdm, #40049) servoview: Focus the view when a touch input occurs. (#40049)
131+
- DONE https://github.com/servo/servo/pull/40049 (@jdm, #40049) servoview: Focus the view when a touch input occurs. (#40049)
132132
servoshell
133-
- https://github.com/servo/servo/pull/40054 (@jdm, #40054) android: Add UI setting for experimental features (#40054)
133+
- DONE https://github.com/servo/servo/pull/40054 (@jdm, #40054) android: Add UI setting for experimental features (#40054)
134134
servoshell
135135
- https://github.com/servo/servo/pull/39259 (@Taym95, #39259) Fix window title stuck on last opened webview (#39259)
136136
servoshell
137137
- https://github.com/servo/servo/pull/40086 (@aaron-wgd, #40086) servoshell (Desktop): Handle window resize events despite no focused webview (#40086)
138138
servoshell
139-
- https://github.com/servo/servo/pull/40240 (@mrobinson, #40240) android: Let Servo handle touch events (#40240)
139+
- DONE https://github.com/servo/servo/pull/40240 (@mrobinson, #40240) android: Let Servo handle touch events (#40240)
140140
servoshell
141141
- https://github.com/servo/servo/pull/40137 (@arihant2math, #40137) Redesign `servo:newtab` page (#40137)
142142
servoshell

tools/commits.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2483,7 +2483,7 @@ https://github.com/servo/servo/pull/39982 (@jschwe, @mukilan, #39982) mach: Andr
24832483
# Corrects Info.plist to correctly report supported system type on macOS.
24842484
# Fixes: #40025
24852485
+https://github.com/servo/servo/pull/40009 (@jdm, #40009) servoshell: Hook up Android software keyboard to embedder events. (#40009)
2486-
servoshell
2486+
;servoshell
24872487
# This is the most basic integration possible. Current limitations include: * the done button doesn't trigger form
24882488
# submission/keyboard hiding * IME events don't trigger inputs (ie. pressing and holding a letter to get more options)
24892489
# However, it is infinitely better than the current integration.
@@ -2777,7 +2777,7 @@ https://github.com/servo/servo/pull/39794 (@TimvdLippe, #39794) Implement docume
27772777
# Workers now call `run_a_classic_worker_script`, also scripts gets unminified.
27782778
# Testing: no new tests passes are expected
27792779
+https://github.com/servo/servo/pull/40049 (@jdm, #40049) servoview: Focus the view when a touch input occurs. (#40049)
2780-
servoshell
2780+
;servoshell
27812781
# Focusing the location bar in the Android app shows the onscreen keyboard, but clicking on a link in the current document
27822782
# does not make it disappear. This change ensures the input focus is reset appropriately and ensures the keyboard
27832783
# disappear when the location bar is not being edited.
@@ -2881,7 +2881,7 @@ https://github.com/servo/servo/pull/40037 (@Loirooriol, #40037) layout: Simplify
28812881
# Make the engine default to enabling the AbortController implementation.
28822882
# Testing: No behaviour change to tests, just flipping defaults. Fixes: #34866
28832883
+https://github.com/servo/servo/pull/40054 (@jdm, #40054) android: Add UI setting for experimental features (#40054)
2884-
servoshell
2884+
;servoshell
28852885
# These commits add a new settings screen to the app, then add: 1) a setting to disable a developer-targeted UI element
28862886
# (an indicator about whether the app is polling continuously for events) 2) a toggle for experimental web platform
28872887
# features
@@ -3049,7 +3049,7 @@ https://github.com/servo/servo/pull/40037 (@Loirooriol, #40037) layout: Simplify
30493049
# Testing: len and is_empty were already covered by tests. match_domstring_ascii! has more unit tests added with this
30503050
# PR.
30513051
+https://github.com/servo/servo/pull/40083 (@mrobinson, @atbrakhi, #40083) compositing: Fully implement pinch zoom (#40083)
3052-
input
3052+
;input
30533053
# This change adds a full implementation of pinch zoom, including center-aware zooming. Before this kind of pinch zooming
30543054
# was only enabled on OpenHarmony. Now all pinch zooms must come with a focal point, which determines the center point of
30553055
# the zoom. This enables full pinch zoom on Android and has OpenHarmony use the same system for pinch zoom.
@@ -3198,7 +3198,7 @@ https://github.com/servo/servo/pull/40037 (@Loirooriol, #40037) layout: Simplify
31983198
# Testing: Servoshell was tested manually except for WebXR features because it looks like I'do not have proper hardware to
31993199
# test WebXR. Fixes: #40073
32003200
+https://github.com/servo/servo/pull/40108 (@mrobinson, @atbrakhi, #40108) script: Have the renderer process root viewport handle keyboard scrolling (#40108)
3201-
input
3201+
;input
32023202
# When scrolling the root viewport of a WebView (the top level frame), ask the renderer to process that event. This
32033203
# allows keyboard scrolling to pan the pinch zoom viewport. This is important for moving around a pinch zoomed WebView
32043204
# via the keyboard.
@@ -3510,7 +3510,7 @@ https://github.com/servo/servo/pull/40037 (@Loirooriol, #40037) layout: Simplify
35103510
# Moves interfaces defined by the CSS spec to the `script/dom/css/` module from `script/dom/`.
35113511
# Testing: Just a refactor shouldn't need any testing Fixes: Partially #38901
35123512
+https://github.com/servo/servo/pull/40240 (@mrobinson, #40240) android: Let Servo handle touch events (#40240)
3513-
servoshell
3513+
;servoshell
35143514
# This change makes it so that Servo handles touch events on Android. Flinging becomes a bit less native, but with two
35153515
# big benefits:
35163516
# 1. Before touch event handling on Android wasn't standards compliant,
@@ -3950,7 +3950,7 @@ https://github.com/servo/servo/pull/40037 (@Loirooriol, #40037) layout: Simplify
39503950
# WebDriver.
39513951
# Testing: This causes some WPT tests run with WebDriver to have their expected result.
39523952
+https://github.com/servo/servo/pull/40269 (@mrobinson, @atbrakhi, #40269) libservo: Have wheel events trigger scroll in Servo (#40269)
3953-
embedding
3953+
;embedding
39543954
# Instead of forcing embedders to implement scrolling when wheel events happen, have Servo take care of this. This means
39553955
# that scrolling happens consistently with wheel events across all embedders.
39563956
# Testing: This is tested by the WebDriver conformance suite.

0 commit comments

Comments
 (0)