579 Commits

Author SHA1 Message Date
Jonathan Schwender
2cb556a87a android: Support custom build profiles (#44182)
Pass the build directory to gradle via an environment variable, to
support custom profiles.
Building the custom profiles already works, but follow-up commands
expect the artifact at the location of the profile.
This allows switching the android release build to production (in a
follow-up PR).

Testing: We don't run any runtime tests for android in CI

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-04-16 16:22:41 +00:00
Euclid Ye
0f935df0c8 embedding: Use non-advertised (standard) shortcut (#44223)
Right now we are using [advertised
shortcut](https://learn.microsoft.com/en-au/windows/win32/msi/advertisement).
This is drastically different from standard Windows shortcut. For
example, when you right click,
then click "open file position", nothing happens. 

Advertisement is mostly for "install-on-demand", but that is not the
case for our installer, as files already
installed in the path even if you do not launch. This change makes it so
that servoshell works as other apps.

Reference: [Advanced
installer](https://www.advancedinstaller.com/versus/wix-toolset/how-to-create-non-advertised-shortcuts-using-wix.html).
(Yes, they make great business by making it easier to build MSI
installer)


Testing: [Windows
Try](https://github.com/servo/servo/actions/runs/24436253745).

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-04-15 08:27:18 +00:00
Alex Feyerke
f977c06f9d Modernize and improve the Android UI (#43795)
Modernize and improve the Android UI, and add browsing history panel.

---------

Signed-off-by: Alex Feyerke <alex@neighbourhood.ie>
2026-04-07 16:39:19 +00:00
Narfinger
3612ba9e5b OHOS CI: Fix parsefromstring (#42995)
ParseFromString currently complains that it matches multiple trace
lines. The reason for that is a bit unclear as it should only produce
one alert. Local testing shows that it produces multiple (even for one
run). This should at least give us the metric back.

Testing: This is currently untested. As it is a small CI change that
can't break a broken test it should be fine.
Fixes: https://github.com/servo/servo/issues/42992

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-04-07 13:48:17 +00:00
Jonathan Schwender
d0be4e845d release: Bump version number to 0.1 (#43797)
In preparation for the next release, bump the version number to 0.1. 0.1
will be an LTS release, which receives extended support in terms of
security updates (e.g. spidermonkey security updates). Please keep in
mind that as always no specific guarantees or response times are given,
and any updated are provided on a best effort basis.

Previously some projects had a demo integration of servo based on some
version of servo, and then never or rarely updated it. Providing an LTS
release offers an option to embedders to integrate servo, while reducing
API churn and having a somewhat fixed schedule to adhere to in terms of
upgrades. Currently, the plan is for a new LTS release every 6 months,
with additional documentation regarding API changes and recommended
migration patterns (best-effort and subject to change).

Testing: No functional changes. Additional testing will be performed
post-merge on the newly created release branch.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-04-01 09:18:50 +00:00
Euclid Ye
1d0b3f1418 ci: Update WiX files and Windows workflow to reflect ServoShell name (#43104)
`candle` generates the object file based on the name of WiX source file,
which is used by linker later.
This PR effectively changes:
- `Servo.exe` to `ServoShell.exe` for the windows installer
- `Servo.zip` to `ServoShell.zip`

We already generates `servoshell.exe` from build, it is weird that we
keep the name `Servo.exe` for the MSI.

Testing: The problem is fixed, for both executable and zip, see
[this](https://github.com/servo/servo/actions/runs/22841763218/job/66249263625).
Bencher [works
too](https://github.com/servo/servo/actions/runs/22843667165/job/66256020144).
Fixes: #43102, where the windows artifact keeps missing.

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-03-09 08:17:56 +00:00
Jonathan Schwender
1632e61ed6 servoshell: Rename executable to servoshell. (#42958)
This should help clarify the difference between servo the library /
engine and servoshell the browser (demo).

Other changes: 

- Removed etc/servo.sb ( [apple sandbox profile
format](https://angelica.gitbook.io/hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox#sandbox-profiles))
since it is not needed anymore. See [this
comment](https://github.com/servo/servo/pull/42958#discussion_r2876253489)
for more details.

Testing: This is a very invasive change, and there are bound to be
scripts / places I have overlooked. Searching for usages of `servo` is
very hard, since it's also the name of the library.
Try run: https://github.com/servo/servo/actions/runs/22637676818

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2026-03-07 08:08:38 +00:00
Jonathan Schwender
a2bd2ab09b Add codesigning script for macOS (#42912)
This script automates the signing, packaging and notarization of
servoshell on macOS.
This is a first step towards: #40031 and #12532. While we could let a
maintainer code-sign and upload the signed release, probably this should
be integrated into CI, which would require additional work.

This script started out quite simple as part of `./mach package`.
However, since the script has access to secrets, it shouldn't be part of
mach (to minimize the amout of code that needs to be trusted).
We also needed to save state and be able to resume operations, since
notarizing can take quite long and the stapling needs to wait until
notarization has completed.
Since notarizing can take long (up to a day has been observed during
first tests), we save artifacts and the notarization ID, and add a
`--check-status` command that can be used to poll if notarization has
been finished.

Testing: Manually testing required. A signed and notarized `.dmg`
artifact has [been
uploaded](https://servo.zulipchat.com/#narrow/channel/500774-tsc/topic/Signing.20macos.20Servoshell/near/576256648)
to zulip, allowing others to verify the notarization worked.

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-03-06 03:43:20 +00:00
Narfinger
c204a799a7 OHOS CI: Fix resident-smaps recording (#42985)
Because of the move of the reporting function to
update_user_interface_state and the multiple events of
LoadStatus::Complete, the previous reporting did not work correctly
anymore.

This fixes it by manually summing up the reports for
'resident-according-to-smaps' and using the hitrace-bencher
point_filter_type Largest.

This should restore the bencher graph.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>

Testing: No automatic test but manual test here:
https://github.com/Narfinger/servo/actions/runs/22617931816

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-03-03 14:28:21 +00:00
Jonathan Schwender
84eff13a25 Bump version to 0.0.6 in preparation for release (#42932)
Same procedure as every month. `./mach release 0.0.6`

Testing: Not tested.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-03-01 19:07:44 +00:00
Narfinger
6e05bf89ad ohos CI: Ignore certificate errors for hitrace-bencher (#42683)
Currently the bencher tests for harmonyos have a suspiciously low ram
usage. However, Scenario tests and speedometer work.
The most likely explanation is that we forgot to add the certificate
while switching hitrace-bencher to use mitmproxy.
Hence, we add the flag.

Testing: This does not have an automatic test but manually testing shows
that we will have the certificate errors otherwise.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-02-18 08:36:01 +00:00
Alice
00e07a6736 Bump rust version to 1.92.0 (#42661)
This is a prerequisite for using the new version of egui introduced in
https://github.com/servo/servo/pull/42402.

Testing: No new behaviour.

Signed-off-by: Alice Boxhall <alice@igalia.com>
2026-02-16 18:58:15 +00:00
Narfinger
0634e53437 OHOS: reverse bump HarmonyOS version number (#42595)
It turns out the HarmonyOS version numbers can be confusing. This now
puts it as the same as the OpenHarmony version numbers.
As the SDKs are backwards compatible everything should still work with
newer SDKs.

Testing: CI will test compilation and installation and manually tested
by me.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-02-13 08:44:30 +00:00
Narfinger
9993a2168a CI: OHOS Use mitmproxy with forwarding mode in hitrace-bench (#42508)
This updates to a new hitrace-bench version which supports to handle
mitmproxy by automatically starting and destroying it for the
benchmarks.

Currently we are only in forwarding mode and do _not_ replay responses.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>

Testing:
https://github.com/Narfinger/servo/actions/runs/21867906670/job/63114716882

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
Co-authored-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
2026-02-11 10:25:30 +00:00
Asset Malik
1a406e4b71 ohos CI: Update hitrace-bench to 0.10.0 to add LCP and FCP metrics (#42164)
Update ohos.yml hitrace-bench and runs.json to 0.10.0

Testing: This should be testing using CI

Signed-off-by: jane <5373400+janeoa@users.noreply.github.com>
2026-02-09 14:32:38 +00:00
Narfinger
7488c127db OHOS: Update openharmony versions to api lvl 21 (#42404)
This updates the Openharmony required version to API lvl 21 (6.0.0.1
OpenHarmony and 6.0.1 HarmonyOS).
We need API level 19+ for https://github.com/servo/servo/pull/41738,
however an API level 19 SDK was never released for OpenHarmony. API-20
seems to be the same as the the 6.0-beta release, so we are playing it
safe and directly going for the API-21 release, which is also the 6.0.1
release that the actual HarmonyOS 6 update was, so it should be the most
polished.
This also has the update for the version used in CI.

The HarmonyOS runners are already updated.

Testing: Successful openharmony run here:
https://github.com/Narfinger/servo/actions/runs/21755920480

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2026-02-09 02:28:05 +00:00
Jonathan Schwender
de7c9d2e43 Bump servoshell to 0.0.5 (#42305)
This version bump is a bit delayed, since I forgot to open the PR before
FOSDEM. The actual release will thus likely not be based on this commit,
but backported to the release branch, to stay in sync with our monthly
report.
There still has been no resolution on the `0.1` version bump situation,
hence another bump of the patch version.

Testing: Not required

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-02-03 14:05:55 +00:00
Jonathan Schwender
66d8601c81 servoshell: ohos / android: Decouple initialization and window creation (#41532)
We can start initializing servo without needing to wait for the
creation of a window.
This allows us to perform initialization of servo itself,
concurrently to the app UI thread setting up the app UI.
Once the native window is ready, we can then let servo create
the first window and load the initial URL.
This is also interesting in the context of using servo as a
webview library, where loading the library / initialising the
webview and loading the first url are typically decoupled
steps.

Note: on the android port the Java code is not touched, which means that
we effectively still
perform the initialization at the same point in time on android. 
The change to call the base servo initialiation from the Java app, can
be done in a seperate PR, perhaps by someone more familiar with android
than me.

Follow-up PRs will add multi-window support, which means that some of
the multi-webview related code in this PR has open todos,
which will be addressed by follow-ups.



Testing: The ohos-port is tested in CI, the android port was manually
tested by me.

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2026-01-14 16:21:18 +00:00
Niklas Merz
4f3b6fd267 Rename pauseCompositor/resumeCompositor in JNIServo (#41827)
pauseCompositor/resumeCompositor have been renamed
topausePainting/resumePainting in 824f551. This renames the Java methods
to fix the regression.

Testing: Built servoview.aar and tested in Android app.
Fixes #41826

Signed-off-by: Niklas Merz <niklasmerz@apache.org>
2026-01-10 20:15:41 +00:00
Euclid Ye
71b74d7e25 package: Make Windows installer respect customized path (#41653)
Create a Burn variable and pass it to MSI, in order to really install
the bundle on customized path chosen in UI.

Doc:
https://docs.firegiant.com/wix/whatsnew/#default-installation-folder

Testing: Tested with
[try](https://github.com/servo/servo/pull/41653#issuecomment-3707098782).
- Install works
- Uninstall works
- Default path works

Fixes: #40995

---------

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
2026-01-03 14:59:24 +00:00
aquaThirsty
d808cc15d0 change #[allow]s to #[expect]s (#41635)
Changed most #[allow]s to #[expect]s, mainly for
clippy::too_many_arguments

Removed unfulfilled expectations

This is my first opensource contribution, so please let me know if
anything should
be done differently.

Testing: Refactor
Part of: #40838

---------

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
Signed-off-by: TimurBora <timurborisov5561@gmail.com>
Co-authored-by: Tim van der Lippe <TimvdLippe@users.noreply.github.com>
2026-01-03 10:54:27 +00:00
Wayne Van Son
5b9263690d Refactor allow to expect (#41586)
Replace `allow` with `expect` lints for `unused`, `unsafe_code`,
`dead_code`, and `non_upper_case_globals`.

Testing: So far just check it compiled on `x86_64-linux` on NixOS. Need
to use the module `system.fontconfig.enable = true;` I think in my NixOS
config.
Part of: #40383 

Searching `allow\(.*\)` for `.rs` files shows the following. for
(total_results:total_files) went from `707:386` to `675:368`, a
reduction of `32:18`.

How many files is too many files per PR? I feel like the 20-30 I have is
too big.

---------

Signed-off-by: Wayne Van Son <waynevanson@gmail.com>
2026-01-01 13:40:20 +00:00
Jonathan Schwender
0fa84df099 servoshell: Bump version number to 0.0.4 (#41589)
In preparation for the next release.

Testing: Not required

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-12-31 22:00:25 +00:00
Martin Robinson
0d07bbc71c crown: Fix build warning about failed expect(non_snake_case) (#41499)
`expect` is wrong here because whether or not the resulting symbol is
snake-cased depends entirely on what is passed to the macro.

Testing: This just fixes a build warning, so should not effect
behavior.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-12-23 18:02:19 +00:00
Narfinger
1f7c5b22e5 ohos: Warn on common commandline argument mistakes (#41203)
Currently, commandline arguments need to be used like this:
'--psn=--tracing_filter' which people can easily forget and use
'--psn=tracing_filter'.
This happened to multiple people and leads to weird issues, since the
argument is silently dropped.
Because OHOS appends a lot of other arguments and we don't have a good
way to filter out the OS provided arguments, we now print a big error
message that hopefully should be noticed by the user for a couple of
commonly used arguments.

Testing: Tested on device with and without the correct way to invoke
arguments.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>

---------

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2025-12-12 05:40:04 +00:00
lumiscosity
d47da6b09e Optimize assets, again (#41163)
Turns out we can squeeze a bit more out of rippy.png, as well as a
single byte off the big logo with a few new tricks I found.

This PR also converts the new kebab menu icon in the Android app to webp
like all the others, for another 3kb saved.

Testing: Manual.

Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2025-12-09 23:33:31 +00:00
Martin Robinson
1e8d1cf081 Remove our macOS-only task-info crate (#41132)
This crate is just using system APIs to get the resident and virtual
memory size of the current process. We can do this directly with
`mach2`, which also allows more flexibility if we want to fetch other
values in the future.

This does require duplicating `mach2` as the version used by `gilrs` is
older. Presumably, some future release of `gilrs` will upgrade soon.

Testing: There aren't really tests for this, but I tested it manually by
running the memory reporter and ensuring that both the old and new
values were
the same.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-12-08 12:04:26 +00:00
Anonmiraj
b207be05d9 change some allows to expects (#41040)
Changed some allow to expects and removed the unfulfilled expectations.

Testing: Refactor
Part of: #40383

Signed-off-by: anonmiraj <nabilmalek48@gmail.com>
2025-12-05 07:23:32 +00:00
Mukilan Thiyagarajan
7e744697d7 libservo: Trigger shutdown internally from Servo's Drop impl (#41012)
Remove the public API to trigger shutdown and instead trigger the
process from `Servo`'s implementation of `Drop` trait.

This makes it hard to create issues involving the order of destruction
of `Servo` and `WebView`s. It will also allow us to implement
asynchronous shutdown in the future.

Testing: Should be covered by existing unit tests.

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2025-12-03 08:26:30 +00:00
Jonathan Schwender
323d1cf987 servoshell: Prepare November release (0.0.3) (#40962)
As discussed in the tsc-channel, prepare for the next release by cutting
a version on the last day of the month.

Note: The actual release would happen ~ 2 weeks from now, when the blog
post for november is ready.

This commit was produced by running `./mach release 0.0.3`.

Testing: Not required. Additional pre-release testing will happen after
the version bump and before the release, with potential patches being
cherry-picked to a release branch.

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-12-02 04:41:50 +00:00
Martin Robinson
6d4937b5d6 servoshell: Add architectural support for opening multiple windows (#40883)
This change is a major re-architecture of servoshell to support multiple
windows. Unfortunately it was not possible to do this incrementally, but
@mukilan and I did this together so we feel more confident about these
changes.

The main change here is that now the `HashMap` of windows that `App`
has can be filled with more than one `ServoShellWindow`.
`ServoShellWindow` is a wrapper around a `PlatformWindow` which can
either be headed, headless, or for embedded platforms. Embedded
platforms (Android and OHOS) are only expected to have a single window,
but there is no reason that more windows cannot be added.

There is still a little bit more work to be done in order to fully
enable
mulitple windows, so this change is just the architectural preparation.

This change enables the embedded and desktop versions of servoshell to
start to be fully integrated so that the entire `RunningAppState` is
shared between them.


Testing: servoshell is the test harness so these changes are covered
by the WPT tests.

---------

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2025-11-27 10:41:32 +00:00
Narfinger
8215c5227a OHOS: Set the correct input type for url field (#40862)
This makes it mostly that the correct keyboard will be selected and we
don't start with an uppercase letter.

Testing: Compiled on OHOS and looked on the phone.

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2025-11-24 16:11:46 +00:00
Martin Robinson
39676a6f60 libservo: Remove Servo::animating() (#40799)
Instead of relying on `Sevo::animating()` in servoshell to drive the
event loop, it is sufficient to just let the `RefreshDriver` wake it up
when it is time to re-render.

This allows us to remove `Servo::animating()` completely. It is a bit
odd that there is a global API to track this, rather than per-`WebView`
or window, so this change just removes it entirely.

Testing: This should make the main loop of headless servoshell more
efficient,
but I do not think this difference is going to be observable in any way.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-11-21 17:35:45 +00:00
Jonathan Schwender
641a1f4cfc Update servoshell to v0.0.2 (#40614)
Ran ./mach release 0.0.2 to update the version number and update the
license.html
This is in preperation for the v0.0.2 release with the next nightly, as
discussed on zulip.

Testing: Not tested

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-11-13 15:49:06 +00:00
richerfu
680e8c7917 ohos: Support resize for tablet (#40391)
This change can allow resize window in pad and pc device.

---------

Signed-off-by: richerfu <southorange0929@foxmail.com>
2025-11-04 07:21:22 +00:00
Martin Robinson
493acd7e43 servoshell: Add a VsyncRefreshDriver for Android (#40306)
This adds an implementation of `VsyncRefreshDriver` ensuring that frame
updates are driven by the system compositor.

Testing: This should increase the smoothness of animations, but I'm
not sure how to test that exactly.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-11-03 08:00:29 +00:00
Jonathan Schwender
e285c9137c installer: Change windows installation directory (#40311)
Change the installation directory to Servo.
This was discussed during the October TSC meeting
and removes the outdated reference to mozilla research.

Testing: Manually tested the windows installer 
Fixes: #40068

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
2025-10-31 14:47:08 +00:00
Sam
53d8c59e77 cargo: Bump Rust to 1.91 (#39471)
Rust 1.90 uses lld by default on linux, which should improve link time
and memory usage (I personally override ld with lld globally). And
because of miscompilations we observed on 1.90 we need to skip to 1.91.

Testing: Existing tests.
try run: https://github.com/sagudev/servo/actions/runs/18951980580

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-10-30 21:14:10 +00:00
Martin Robinson
20179bca45 android: Let Servo handle touch events (#40240)
This change makes it so that Servo handles touch events on Android.
Flinging becomes a bit less native, but with two big benefits:

1. Before touch event handling on Android wasn't standards compliant,
   because web content didn't get a chance to call `preventDefault()` on
   touch events, whcih important for proper site behavior.
2. This unifies all touch event handling across Servo platforms. This
   means that improvements to things like fling will benefit all
   platforms equally. In addition, fling on Android can be integrated
   into Servo's animation handler.

Generally, this also just makes things much simpler to reason about on
Android.

Testing: This kind of input handling isn't tested in Servo yet.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-10-28 15:45:22 +00:00
Martin Robinson
37ae099695 compositing: Fully implement pinch zoom (#40083)
This change adds a full implementation of pinch zoom, including
center-aware zooming. Before this kind of pinch zooming was only enabled
on OpenHarmony. Now all pinch zooms must come with a focal point, which
determines the center point of the zoom. This enables full pinch zoom on
Android and has OpenHarmony use the same system for pinch zoom.

Every WebView now has a `PinchZoom` which describes the viewport of the
pinch zoom and handles panning with proper chaining of zoom viewport
panning to scroll layer scrolling.  In addition, the collection of touch
actions is simplified by storing an array and turning each into a
ScrollZoomEvent when appropriate.

Caveats:
-  We've noticed some hard to diagnose bugs with clamping the panning
  viewport, but we'll tackle those later once we figure out how to
  reliably reproduce them.
- Keyboard scroll events currently do not properly pan the pinch zoom
   viewport. This will be handled in a followup.

Testing: There are currently no tests for this kind of touch interaction
as there's no way to read the pinch zoom from a WebView. It's processed
asynchronously. Once that API is added, we should be able to add some
simple tests, but many things are still unaccessible such as the pan
position in the pinch zoom viewport.
Fixes #4224.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Rakhi Sharma <atbrakhi@igalia.com>
2025-10-23 13:52:27 +00:00
Josh Matthews
855445983d android: Add UI setting for experimental features (#40054)
These commits add a new settings screen to the app, then add:
1) a setting to disable a developer-targeted UI element (an indicator
about whether the app is polling continuously for events)
2) a toggle for experimental web platform features

The page needs to be reloaded after switching the toggle before any
changes can be observed.

Testing: Manually tested by visiting https://developer.mozilla.org with
the setting enabled and disabled. No automated testing for Android yet.
Fixes: #39791

---------

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
2025-10-22 13:29:57 +00:00
Josh Matthews
cf077efe68 servoview: Focus the view when a touch input occurs. (#40049)
Focusing the location bar in the Android app shows the onscreen
keyboard, but clicking on a link in the current document does not make
it disappear. This change ensures the input focus is reset appropriately
and ensures the keyboard disappear when the location bar is not being
edited.

Testing: Manually tested. No automated tests for Android app at this
time.
Fixes: #40008

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
2025-10-21 07:39:15 +00:00
Jonathan Schwender
205b049fcd mach: Android: Support custom profiles (#39982)
Use Release mode for gradle for production builds and Debug for any
other builds.
This fixes an exception when building for android with a custom cargo
profile.
`SERVO_TARGET_DIR` is read in `apk/jni/Android.mk` and specifies the
folder
libservoshell.so is expected to be in.

Testing: Tested manually with `./mach build --android --production`
Fixes: #34564

---------

Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
Co-authored-by: Mukilan Thiyagarajan <mukilanthiagarajan@gmail.com>
2025-10-20 17:00:00 +00:00
Josh Matthews
3a29c20fff servoshell: Hook up Android software keyboard to embedder events. (#40009)
This is the most basic integration possible. Current limitations
include:
* the done button doesn't trigger form submission/keyboard hiding
* IME events don't trigger inputs (ie. pressing and holding a letter to
get more options)

However, it is infinitely better than the current integration.

Testing: Manually tested in the Android emulator.
Fixes: #12127 (we can open more specific issues after this)

Signed-off-by: Josh Matthews <josh@joshmatthews.net>
2025-10-20 13:57:04 +00:00
Sam
aaa7f83176 crown: Check closure bodies for unrooted types and fix root TransmitBodyPromise* (#39534)
We should also check closure bodies for unrooted expressions. 

Testing: New crown tests
Fixes: #37331
Fixes (partial): #37330

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-09-29 08:57:23 +00:00
lumiscosity
d0bf02d00c Convert Android resources to lossless .webp (#39437)
Another tiny binary size win for Android! .webp assets are supported
since API level 17, and Servo is built against 33, so this shouldn't
cause issues.

Testing: Manual.

Signed-off-by: lumiscosity <averyrudelphe@gmail.com>
2025-09-22 16:00:14 +00:00
webbeef
3225d19907 cargo: Bump rustc to 1.89 (#36818)
Update Rustc to 1.89.

Reviewable by commit.

Leftover work:
- #37330 
- #38777

---------

Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Co-authored-by: sagudev <16504129+sagudev@users.noreply.github.com>
2025-08-19 11:07:53 +00:00
Martin Robinson
8743a11ba4 tidy: Add a rule ensuring that // comments are followed by a space in Rust (#38698)
This shows up sometimes in code reviews, so it makes sense that tidy
enforces it. `rustfmt` supports this via comment normalization, but it
does many other things and is still an unstable feature (with bugs).

Testing: There are new tidy tests for this change.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2025-08-18 12:09:09 +00:00
lumiscosity
eda83564f3 Losslessly optimize Android resources (#38332)
Losslessly optimizes the Android resources. These are the only non-test
PNGs remaining in the project, to my knowledge.

Testing: Unnecessary, since this only optimizes assets.

Signed-off-by: maple! <averyrudelphe@gmail.com>
2025-07-29 12:15:50 +00:00
Narfinger
4615464388 OHOS CI allow profile (#37963)
OHOS CI: We now allow a profile flag. The profile name will be prepended
to all measurements.
This allows us to distinguish different build profiles in bencher.
Additionally we are more robust on duplicated entries for some
measurements.

Testing: Tested on CI with a run here:
https://github.com/Narfinger/servo/actions/runs/16168150429/job/45635086884
Fixes: https://github.com/servo/servo/issues/37890

Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
2025-07-10 00:58:15 +00:00