A new event `PlayerEvent::DurationChanged` has been added to the media
engine to simplify handling changes in the duration of a media stream
(sometimes the duration could be inaccurate or even determined by the
media engine with significant delay after the initial metadata was
ready).
This new event eliminates the need to check conditions for two
consecutive `MetadataUpdated` events (the initial metadata and the
metadata with the changed duration) during the loading phase.
servo-media:
- Add new `PlayerEvent::DurationChanged` event
(https://github.com/servo/media/pull/461)
Testing: No expected changes in test results
Fixes: https://github.com/servo/servo/issues/40626
Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
This implements the web-facing API's behind a flag, where we further
design the embedding API in a
follow-up PR.
It passes all relevant WPT tests, since the HTML
specification leaves it up to user agents to
determine when to process these protocol handlers.
It also uses `once_cell` to lazily construct the
regex, which is what the CSP crate also uses for
its regexes [1].
Part of #40615
[1]:
db8f2e97fe/src/lib.rs (L1550-L1569)
Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This patch flattens nested match arms in `NormalizedAlgorithm` to
simplify our code. Moreover, primarily matching the algorithm names,
instead of matching the enum variant types, makes more sense, since some
algorithms share the same enum variant type.
Testing: Refactoring. Existing tests suffice.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
These WPT tests on WebCrypto API were either renamed or removed. We can
safely remove these legacy test expectations
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Add scroll and fling trace.
Testing: There are no related tests available for now; we will add a
test item for frame rate statistics on CI later.
Fixes: NA
Signed-off-by: kongbai1996 <1782765876@qq.com>
Tests seem to assume that resource timing is available during the "load"
event. Doing so causes some tests to pass and others to fail, which
appear to have been false passes.
This is a preparatory change for asynchronous stylesheet parsing, when
resource timing entires must be added before sending stylesheets to
another thread for parsing.
Testing: This change updates WPT test results.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Bumps [crypto-common](https://github.com/RustCrypto/traits) from 0.1.6
to 0.1.7.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="66a997ccf5"><code>66a997c</code></a>
Pin generic-array to v0.14.7 and release crypto-common v0.1.7 (<a
href="https://redirect.github.com/RustCrypto/traits/issues/2088">#2088</a>)</li>
<li>See full diff in <a
href="https://github.com/RustCrypto/traits/compare/crypto-common-v0.1.6...crypto-common-v0.1.7">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [anstyle-wincon](https://github.com/rust-cli/anstyle) from 3.0.10
to 3.0.11.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="368a871947"><code>368a871</code></a>
chore: Release</li>
<li><a
href="4d5c297144"><code>4d5c297</code></a>
docs: Update changelog</li>
<li><a
href="263b34cb6d"><code>263b34c</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/284">#284</a>
from hanna-kruppe/windows-sys-0.61</li>
<li><a
href="8029e729f5"><code>8029e72</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/286">#286</a>
from epage/template</li>
<li><a
href="5b1cab43bc"><code>5b1cab4</code></a>
fix(syntect): Update a windows minimal dep</li>
<li><a
href="21b13fa224"><code>21b13fa</code></a>
chore(ci): Run more jobs on Windows</li>
<li><a
href="51e86faf59"><code>51e86fa</code></a>
chore: Update from '_rust/main' template</li>
<li><a
href="b0881a6ba0"><code>b0881a6</code></a>
chore(ci): Give more control over where alt version jobs run</li>
<li><a
href="829ebd7f2f"><code>829ebd7</code></a>
chore(deps): Allow windows-sys 0.61</li>
<li><a
href="36dd1a2406"><code>36dd1a2</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/285">#285</a>
from epage/template</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-cli/anstyle/compare/anstyle-wincon-v3.0.10...anstyle-wincon-v3.0.11">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [hyper](https://github.com/hyperium/hyper) from 1.8.0 to 1.8.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/hyperium/hyper/releases">hyper's
releases</a>.</em></p>
<blockquote>
<h2>v1.8.1</h2>
<h2>Bug Fixes</h2>
<ul>
<li><strong>http1:</strong> fix consuming extra CPU from previous change
(<a
href="https://redirect.github.com/hyperium/hyper/issues/3977">#3977</a>)
(<a
href="4492f31e94">4492f31e</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/hyperium/hyper/compare/v1.8.0...v1.8.1">https://github.com/hyperium/hyper/compare/v1.8.0...v1.8.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/hyperium/hyper/blob/master/CHANGELOG.md">hyper's
changelog</a>.</em></p>
<blockquote>
<h3>v1.8.1 (2025-11-13)</h3>
<h4>Bug Fixes</h4>
<ul>
<li><strong>http1:</strong> fix consuming extra CPU from previous change
(<a
href="https://redirect.github.com/hyperium/hyper/issues/3977">#3977</a>)
(<a
href="4492f31e94">4492f31e</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="166c6cacc7"><code>166c6ca</code></a>
v1.8.1</li>
<li><a
href="4492f31e94"><code>4492f31</code></a>
fix(http1): fix consuming extra CPU from previous change (<a
href="https://redirect.github.com/hyperium/hyper/issues/3977">#3977</a>)</li>
<li>See full diff in <a
href="https://github.com/hyperium/hyper/compare/v1.8.0...v1.8.1">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [anstyle-query](https://github.com/rust-cli/anstyle) from 1.1.4 to
1.1.5.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="368a871947"><code>368a871</code></a>
chore: Release</li>
<li><a
href="4d5c297144"><code>4d5c297</code></a>
docs: Update changelog</li>
<li><a
href="263b34cb6d"><code>263b34c</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/284">#284</a>
from hanna-kruppe/windows-sys-0.61</li>
<li><a
href="8029e729f5"><code>8029e72</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/286">#286</a>
from epage/template</li>
<li><a
href="5b1cab43bc"><code>5b1cab4</code></a>
fix(syntect): Update a windows minimal dep</li>
<li><a
href="21b13fa224"><code>21b13fa</code></a>
chore(ci): Run more jobs on Windows</li>
<li><a
href="51e86faf59"><code>51e86fa</code></a>
chore: Update from '_rust/main' template</li>
<li><a
href="b0881a6ba0"><code>b0881a6</code></a>
chore(ci): Give more control over where alt version jobs run</li>
<li><a
href="829ebd7f2f"><code>829ebd7</code></a>
chore(deps): Allow windows-sys 0.61</li>
<li><a
href="36dd1a2406"><code>36dd1a2</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/285">#285</a>
from epage/template</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-cli/anstyle/compare/anstyle-query-v1.1.4...anstyle-query-v1.1.5">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
converts MutationObserver's record_queue and node_list, as well as
RegisteredObserver's observer field, to use Dom<T> instead.
Testing: `./mach build --use-crown` pass locally
Fixes#40602
Signed-off-by: WaterWhisperer <waterwhisperer24@qq.com>
When a NodeSet is passed to the `id` function then we want to act as if
we were computing the union of individual `id` calls for each node in
the set. We weren't doing that before.
Depends on https://github.com/servo/servo/pull/40592
Testing: A new test starts to pass
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
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>
The two are semantically equivalent, but `find_map` is more concise.
Testing: Covered by existing tests
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Follow the HTML specification and split the previous `playback position`
to `current playback position` (a time on the media timeline) and
`official playbac position` (an approximation of the current playback
position that is kept stable while scripts are running) which must be
set to `the current playback position` any time the user agent provides
a stable state.
See https://html.spec.whatwg.org/multipage/#current-playback-position
See https://html.spec.whatwg.org/multipage/#official-playback-position
Note that at this point, there are no difference between the `current`
and `official` playback positions (as the time on the media timeline),
except the `seek` case.
Testing: Improvements in the following tests
-
html/semantics/embedded-content/media-elements/seeking/seek-to-max-value.htm
-
html/semantics/embedded-content/media-elements/seeking/seek-to-negative-time.htm
Fixes: https://github.com/servo/servo/issues/34496
Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
The result of a predicate can depend on the position of the node in its
set, and this position is dependent on the axis that the node set came
from. This is specified in
https://www.w3.org/TR/1999/REC-xpath-19991116/#predicates.
Additionally, this change fixes a small bug in the implementation of
`preceding::` (https://github.com/servo/servo/pull/40588) where the root
of a subtree would be included twice. That wasn't discovered earlier
because nodes are deduplicated at the end of the evaluation.
Testing: New tests start to pass, this change adds more tests
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This is a speculative attempt to make WebDriver WPT runs more stable.
Without this change, it seems likely that embedder controls could stay
open indefinitely during WebDriver test runs.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Testing: This should (hopefully) decrease the amount of tests that flake
when running WPT.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
We parse the `parameter` field of the `algorithm` AlgorithmIdentifier
field of `spki` and `pkcs8` of ECDH keys as an object identifier.
However, according to WebCrypto API specification, we should parse it as
an `ECParameters` ASN.1 type defined in [RFC5480].
```plaintext
ECParameters ::= CHOICE {
namedCurve OBJECT IDENTIFIER
-- implicitCurve NULL
-- specifiedCurve SpecifiedECDomain
}
```
Although our current implementation works fine since `ECParameters` is
defined as a `CHOICE` type with an object identifier as the only option,
it is technically incorrect. This patch fixes this mistake.
Testing: No behavioral change. Existing tests suffice.
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
Similar to about:license in firefox. Generated with `cargo-about`.
A few open questions:
- When/how should it be updated (the command I used was `cargo about
generate etc/about.hbs > resources/resource_protocol/license.html`, it
takes ~20 seconds)
- How should `about.toml` be kept in sync with `deny.toml`
- What about licenses for packages that are not crates (i.e. gstreamer)
Fixes: #40266
---------
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
Following the HTML specification, a new internal method,
`ended_playback`, has been added to differentiate it from the `ended`
attribute:
- `ended_playback`: playback has ended for the `forward/backward`
directions
- `ended` attribute: playback has ended for the `forward` direction
See https://html.spec.whatwg.org/multipage/#ended-playback
Added descriptions for the steps of the `Play`, `Pause`,
`internal_play_steps` (new), `internal_pause_steps`,
`notify_about_playing`, `change_ready_state` methods.
Testing: No expected changes in test results.
Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
The `seek` method isn't explicitly exposed in the API, but is called
from various places (`currentTime`, `fastSeek`, by the `media metadata`
event) and doesn't itself create new DOM objects, so the `canGC`
argument can be omitted.
It was previously required because calling the `Seekable` method creates
a new `TimeRanges` object, but it will now be replaced by the internal
`seekable` method to avoid interaction with the JavaScript engine (and
potential garbage collector).
The `earlyest possible position` method has been changed to match the
specification and use `seekable` instead of `played`. See
https://html.spec.whatwg.org/multipage/#earliest-possible-position
Testing: No expected changes in tests
Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
These two new API method make it easier to enable and disable the back
and forward buttons in the browser UI. In addition, they are used to
enable and disable the context menu items for "Back" and "Forward". This
is something that is much, much easier to do in the embedding layer,
rather than in script.
In addition, the new methods are wired up to the buttons in Servoshell.
Testing: This change includes a new API test.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Instead of using a task source for SpiderMonkey runtime callbacks, use a
`ScriptEventLoopSender`. Task sources are associated with a particular
Pipeline, but the runtime callback is run indepenently of any particular
Pipeline and could theoretically happen when no Pipeline exists at all.
This reduces the dependency of the `ScriptThread` on the existence of
the first Pipeline.
Testing: This should not change observable behavior, so is covered by
existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Updated the `PlayerEvent::PositionChanged/SeekDone` events to support
precise position timestamps (u64 -> f64).
Also set precise time value (seconds with fractional part) for the
HTMLMediaElement `duration` from media metadata to sync with
`PlayerEvent` changes.
servo-media:
- Pass precise position timestamp within PlayerEvent
(https://github.com/servo/media/pull/460)
Testing: No expected changes in test results
Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
Have more of the code follow the same path calling
`ScriptThread::spawn_pipeline`. Somewhat tricky was that the `origin` of
the new Pipeline was being determined in several different places, but
all in a consistent way for different types of page loads. This change
makes it is so that the origin is always determined in the same place.
This change is preparation for splitting out the creation of a new
`ScriptThread` and the spawning of its first pipeline.
Testing: This should not change observable behavior, so is covered by
existing tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
The versions of html5ever were bumped due to a breaking change to the
`web_atoms` crate initially being published under the wrong version
number.
Testing: not required as the code is identical, only version numbers
have changed.
Signed-off-by: Nico Burns <nico@nicoburns.com>
Finish adding ECDSA support to WebCrypto API. This patch implements sign
operation of ECDSA, using ECDSA implementation from the crates `ecdsa`
for the operation, `p256`, `p384`, `p521`, and `elliptic_curve` for the
key, and `sha1`, `sha2` and `digest` for digesting messages.
Testing: Pass some WPT tests that were expected to fail.
Fixes: Part of #39060
---------
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
If a widget like `<textarea>` had `display: block` and `width: auto`, we
were stretching it like a `<div>`. However, similar to replaced
elements, widgets should not stretch by default.
It will still be possible to opt into stretching with an explicit
`justify-self: stretch` or `width: stretch`.
Testing: Adding new test.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
- Remove unused accepted Copyright line `See
http://rust-lang.org/COPYRIGHT`. This URL now yields a 404, and we don't
seem to use this line anywhere in the project so we can remove it. Note:
We should probably use a regex anyway, so we can match the whole
required expression, but thats a different topic.
- Remove unused `licenses_dep_toml` table. We use cargo deny for
checking the licenses of our rust dependencies.
Testing: Changing tidy is covered by `./mach test-tidy` in CI
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
`preceding::` needs to yield all preceding nodes, excluding ancestors.
`following::` needs to yield all following nodes, excluding descendants.
Both `Node::preceding_nodes` and `Node::following_nodes` (which we're
currently using) don't quite match these requirements, so we have to
engineer some xpath-specific iterators.
Testing: New tests start to pass
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
XML and HTML serialization routines relied on a single, shared
implementation of the `markup5ever::Serialize` trait for the DOM Node
type.
These changes introduce the HtmlSerialize type to make it possible to
support XML serialization and fix other issues.
Testing: It does not change any behavior and it builds.
Fixes: #40552
---------
Signed-off-by: Rodion Borovyk <rodion.borovyk@gmail.com>
`translate` was incorrect in numerous ways before, so this change
completely replaces it.
Testing: This change adds a couple unit tests, a new xpathmark-ft test
starts to pass
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Adds an optional error message to HierarchyRequestError
Testing: refactor
Fixes: one item in #39053
---------
Signed-off-by: Austin Willis <austinwillis8@gmail.com>
The `JoinHandle` was added as a newer return value from this
constructor. Both return values accomplish more or less the same thing.
The difference is that the `Sender` return value is triggered right
before the thread ends while the `JoinHandle` is triggered after thread
completion. One was used in multiprocess mode and one in single process
mode. In any case, the `JoinHandle` works fine for both cases.
Testing: Multiprocess isn't tested currently, but I confirmed that the
ScripThread shut down properly in multiprocess mode with this change.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
The main change is running `hdc shell power-shell setmode 602`, which
sets the device to performance mode, increasing the screen timeout and
manually waking the device up.
We add a helper class for that, so that we can use the `with` syntax to
undo these changes at the end of scope.
We also add a small HDC wrapper class, which slightly simplifies and
abstracts over some common functionality like running commands or making
a screenshot.
Testing: This is a CI script change.
Fixes: Speculative fix for speedometer sometimes timing out on HOS and
the screenshot showing a locked device screen.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.109 to 2.0.110.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/syn/releases">syn's
releases</a>.</em></p>
<blockquote>
<h2>2.0.110</h2>
<ul>
<li>Tweaks to improve build speed (<a
href="https://redirect.github.com/dtolnay/syn/issues/1939">#1939</a>,
thanks <a
href="https://github.com/dishmaker"><code>@dishmaker</code></a>)</li>
<li>Make <code>syn::ext::IdentExt::unraw</code> available without
"parsing" feature (<a
href="https://redirect.github.com/dtolnay/syn/issues/1940">#1940</a>)</li>
<li>Support parsing <code>syn::Meta</code> followed by
<code>=></code> (<a
href="https://redirect.github.com/dtolnay/syn/issues/1944">#1944</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1c8cabea3c"><code>1c8cabe</code></a>
Release 2.0.110</li>
<li><a
href="8ef195b658"><code>8ef195b</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/syn/issues/1944">#1944</a>
from dtolnay/metaarrow</li>
<li><a
href="9ab4aefeae"><code>9ab4aef</code></a>
Support parsing Meta followed by fat arrow</li>
<li><a
href="7711764c47"><code>7711764</code></a>
Add test of parsing fat arrow after meta</li>
<li><a
href="193f52e4b3"><code>193f52e</code></a>
Update test suite to nightly-2025-11-10</li>
<li><a
href="5ece7e1f6c"><code>5ece7e1</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/syn/issues/1941">#1941</a>
from dtolnay/ext</li>
<li><a
href="6a4447897c"><code>6a44478</code></a>
Add extension trait for Punct construction with span</li>
<li><a
href="798e109d77"><code>798e109</code></a>
Drop 2 from name of TokenStreamExt2</li>
<li><a
href="b344f2dee8"><code>b344f2d</code></a>
Never import name of quote::TokenStreamExt</li>
<li><a
href="b0ec4c7f28"><code>b0ec4c7</code></a>
Touch up PR 1939</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/syn/compare/2.0.109...2.0.110">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [hyper](https://github.com/hyperium/hyper) from 1.7.0 to 1.8.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/hyperium/hyper/releases">hyper's
releases</a>.</em></p>
<blockquote>
<h2>v1.8.0</h2>
<h2>Highlights</h2>
<h3>Features</h3>
<ul>
<li><strong>rt:</strong> add <code>Timer::now()</code> method to allow
overriding the instant returned (<a
href="https://redirect.github.com/hyperium/hyper/issues/3965">#3965</a>)
(<a
href="5509ebe615">5509ebe6</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>http1:</strong> fix rare missed write wakeup on connections
(<a
href="https://redirect.github.com/hyperium/hyper/issues/3952">#3952</a>)
(<a
href="2377b893f6">2377b893</a>)</li>
<li><strong>http2:</strong> fix internals of HTTP/2 CONNECT upgrades (<a
href="https://redirect.github.com/hyperium/hyper/issues/3967">#3967</a>)
(<a
href="58e0e7dc70">58e0e7dc</a>,
closes <a
href="https://redirect.github.com/hyperium/hyper/issues/3966">#3966</a>)</li>
</ul>
<h3>Breaking Changes</h3>
<p>While technically breaking, it's assumed you will not need to do
anything or be affected.</p>
<ul>
<li>
<p>The HTTP/2 client connection no longer allows an executor
that can not spawn itself.</p>
<p>This was an oversight originally. The client connection will now
include spawning
a future that keeps a copy of the executor to spawn other futures. Thus,
if it is
<code>!Send</code>, it needs to spawn <code>!Send</code> futures. The
likelihood of executors that match
the previously allowed behavior should be very remote.</p>
<p>There is also technically a semver break in here, which is that the
<code>Http2ClientConnExec</code> trait no longer dyn-compatible, because
it now expects to
be <code>Clone</code>. This should not break usage of the
<code>conn</code> builder, because it already
separately had <code>E: Clone</code> bounds. If someone were using
<code>dyn Http2ClientConnExec</code>,
that will break. However, there is no purpose for doing so, and it is
not usable
otherwise, since the trait only exists to propagate bounds into hyper.
Thus, the
breakage should not affect anyone.
(<a
href="58e0e7dc70">58e0e7dc</a>)</p>
</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>chore(ci): update to actions/checkout@v5 by <a
href="https://github.com/tottoto"><code>@tottoto</code></a> in <a
href="https://redirect.github.com/hyperium/hyper/pull/3935">hyperium/hyper#3935</a></li>
<li>refactor(ffi): specify "C" ABI explicitly in ffi_fn! macro
by <a href="https://github.com/1911860538"><code>@1911860538</code></a>
in <a
href="https://redirect.github.com/hyperium/hyper/pull/3937">hyperium/hyper#3937</a></li>
<li>Update documented default values for <code>http1::Builder</code> by
<a href="https://github.com/Will-Low"><code>@Will-Low</code></a> in <a
href="https://redirect.github.com/hyperium/hyper/pull/3938">hyperium/hyper#3938</a></li>
<li>fix(client): port tests to in-memory socket by <a
href="https://github.com/cratelyn"><code>@cratelyn</code></a> in <a
href="https://redirect.github.com/hyperium/hyper/pull/3947">hyperium/hyper#3947</a></li>
<li>feat: allow overriding the instant returned from Timer by <a
href="https://github.com/arielb1"><code>@arielb1</code></a> in <a
href="https://redirect.github.com/hyperium/hyper/pull/3965">hyperium/hyper#3965</a></li>
<li>fix(http1): poll_loop writes when ready by <a
href="https://github.com/lthiery"><code>@lthiery</code></a> in <a
href="https://redirect.github.com/hyperium/hyper/pull/3952">hyperium/hyper#3952</a></li>
<li>test(ready_stream): replace tracing with printlns by <a
href="https://github.com/seanmonstar"><code>@seanmonstar</code></a> in
<a
href="https://redirect.github.com/hyperium/hyper/pull/3973">hyperium/hyper#3973</a></li>
<li>fix(http2): fix internals of HTTP/2 CONNECT upgrades by <a
href="https://github.com/seanmonstar"><code>@seanmonstar</code></a> in
<a
href="https://redirect.github.com/hyperium/hyper/pull/3967">hyperium/hyper#3967</a></li>
<li>Release v1.8.0 by <a
href="https://github.com/seanmonstar"><code>@seanmonstar</code></a> in
<a
href="https://redirect.github.com/hyperium/hyper/pull/3974">hyperium/hyper#3974</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Will-Low"><code>@Will-Low</code></a>
made their first contribution in <a
href="https://redirect.github.com/hyperium/hyper/pull/3938">hyperium/hyper#3938</a></li>
<li><a href="https://github.com/arielb1"><code>@arielb1</code></a> made
their first contribution in <a
href="https://redirect.github.com/hyperium/hyper/pull/3965">hyperium/hyper#3965</a></li>
<li><a href="https://github.com/lthiery"><code>@lthiery</code></a> made
their first contribution in <a
href="https://redirect.github.com/hyperium/hyper/pull/3952">hyperium/hyper#3952</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/hyperium/hyper/blob/master/CHANGELOG.md">hyper's
changelog</a>.</em></p>
<blockquote>
<h2>v1.8.0 (2025-11-11)</h2>
<h4>Bug Fixes</h4>
<ul>
<li><strong>http1:</strong> fix rare missed write wakeup on connections
(<a
href="https://redirect.github.com/hyperium/hyper/issues/3952">#3952</a>)
(<a
href="2377b893f6">2377b893</a>)</li>
<li><strong>http2:</strong> fix internals of HTTP/2 CONNECT upgrades (<a
href="https://redirect.github.com/hyperium/hyper/issues/3967">#3967</a>)
(<a
href="58e0e7dc70">58e0e7dc</a>,
closes <a
href="https://redirect.github.com/hyperium/hyper/issues/3966">#3966</a>)</li>
</ul>
<h4>Features</h4>
<ul>
<li><strong>rt:</strong> add <code>Timer::now()</code> method to allow
overriding the instant returned (<a
href="https://redirect.github.com/hyperium/hyper/issues/3965">#3965</a>)
(<a
href="5509ebe615">5509ebe6</a>)</li>
</ul>
<h4>Breaking Changes</h4>
<ul>
<li>
<p>The HTTP/2 client connection no longer allows an executor
that can not spawn itself.</p>
<p>This was an oversight originally. The client connection will now
include spawning
a future that keeps a copy of the executor to spawn other futures. Thus,
if it is
<code>!Send</code>, it needs to spawn <code>!Send</code> futures. The
likelihood of executors that match
the previously allowed behavior should be very remote.</p>
<p>There is also technically a semver break in here, which is that the
<code>Http2ClientConnExec</code> trait no longer dyn-compatible, because
it now expects to
be <code>Clone</code>. This should not break usage of the
<code>conn</code> builder, because it already
separately had <code>E: Clone</code> bounds. If someone were using
<code>dyn Http2ClientConnExec</code>,
that will break. However, there is no purpose for doing so, and it is
not usable
otherwise, since the trait only exists to propagate bounds into hyper.
Thus, the
breakage should not affect anyone.
(<a
href="58e0e7dc70">58e0e7dc</a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="dbe6f25ba2"><code>dbe6f25</code></a>
v1.8.0</li>
<li><a
href="58e0e7dc70"><code>58e0e7d</code></a>
fix(http2): fix internals of HTTP/2 CONNECT upgrades (<a
href="https://redirect.github.com/hyperium/hyper/issues/3967">#3967</a>)</li>
<li><a
href="0a37a8cd9d"><code>0a37a8c</code></a>
test(ready_stream): replace tracing with printlns (<a
href="https://redirect.github.com/hyperium/hyper/issues/3973">#3973</a>)</li>
<li><a
href="2377b893f6"><code>2377b89</code></a>
fix(http1): fix rare missed write wakeup on connections (<a
href="https://redirect.github.com/hyperium/hyper/issues/3952">#3952</a>)</li>
<li><a
href="5509ebe615"><code>5509ebe</code></a>
feat(rt): add <code>Timer::now()</code> method to allow overriding the
instant returned ...</li>
<li><a
href="f9f8f44058"><code>f9f8f44</code></a>
tests(client): port tests to in-memory socket (<a
href="https://redirect.github.com/hyperium/hyper/issues/3947">#3947</a>)</li>
<li><a
href="5803a9c059"><code>5803a9c</code></a>
docs(server): update default values for <code>http1::Builder</code> (<a
href="https://redirect.github.com/hyperium/hyper/issues/3938">#3938</a>)</li>
<li><a
href="e1e1f2b461"><code>e1e1f2b</code></a>
refactor(ffi): specify "C" ABI explicitly in ffi_fn! macro (<a
href="https://redirect.github.com/hyperium/hyper/issues/3937">#3937</a>)</li>
<li><a
href="64ab7ae339"><code>64ab7ae</code></a>
chore(ci): update to actions/checkout@v5 (<a
href="https://redirect.github.com/hyperium/hyper/issues/3935">#3935</a>)</li>
<li>See full diff in <a
href="https://github.com/hyperium/hyper/compare/v1.7.0...v1.8.0">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [glslopt](https://github.com/jamienicol/glslopt-rs) from 0.1.11 to
0.1.12.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/jamienicol/glslopt-rs/commits">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [weezl](https://github.com/image-rs/weezl) from 0.1.11 to 0.1.12.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/image-rs/weezl/blob/master/Changes.md">weezl's
changelog</a>.</em></p>
<blockquote>
<h2>Version 0.1.12</h2>
<ul>
<li>Further adjusted a debug assertion for TIFF compatibility. It still
had one
of its OR conditions formulated incorrectly, relying on equality of the
code word mask and the size switch code. In TIFF we hit the limit of the
code dictionary (all 12-bit words) one code later than we would detect a
code switch that we need to ignore.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/image-rs/weezl/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>