Most of these tests used to pass as both reference and test used SVG.
Now that these images are rendered correctly, this exposes new failures
in related to other CSS properties. There are some exceptions which are
given below:
/css/css-content/element-replacement-image-alt.html
Here, the test fails even when using a png image in `content: url()`
so the failure is related to our support for `content`.
/css/filter-effects/svg-image-root-filter.html
/css/css-flexbox/aspect-ratio-intrinsic-size-007.html
Here, the test renders correctly, but the reference uses inline svg
which we don't support.
/css/css-lists/list-style-image-gradients-dynamic.html
/css/css-lists/list-style-image-gradients.html
Here, the test page doesn't use svg, but it is rendered incorrectly as we don't support
gradients in list-style-image. However, the reference is also broken
as it uses svg without intrinsic dimensions.
/css/css-images/svg-script-is-ignored.html
Here, the reference uses inline SVG, so its blank. However, the test
page also renders incorrectly as `foreingObject` is not rendered by
resvg.
/css/css-images/cross-fade-natural-size.html
Here, the test page doesn't render correctly due to the use of
`content: cross-fade(..)`. However, the SVG in the reference is also
not rendered correctly as resvg doesn't seem to take into account
the style on the root svg element.
/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.no-transform.tentative.html
/html/canvas/offscreen/layers/2d.layer.global-states.filter.ctx-filter.rotation.tentative.html
/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.no-transform.tentative.html
/html/canvas/offscreen/layers/2d.layer.global-states.filter.no-cxt-filter.rotation.tentative.html
Here, the tests themselves fail with the JS error ` ctx.beginLayer is
not a function`. However, the reference is also not correct as it uses
svg image as a source for `ctx.drawImage` with is not supported yet.
/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage.https.html
Here, the now failing subtests all used to simply timeout previously. Now
they fail as we don't support SVG images as sources in `drawImage`.
/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-resize.html
Here, the now failing subtest all used to simply timeout previously. Now
it fails as we don't support SVG images as sources in
`createImageBitmap`.
/html/canvas/element/manual/drawing-images-to-the-canvas/drawimage_svg_image_with_foreign_object_does_not_taint.html
Here, the subtest used to timeout but now fails as we don't support
SVG images as a source for drawImage. The assertion about canvas not
being tainted doesn't run due to be drawImage call throwing an
exception.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
/html/semantics/embedded-content/the-img-element/naturalWidth-naturalHeight.html
The two failures are the cases where the SVG's root element doesn't
have an explicit width & height. The issue is related to how resvg
handles such cases - we rely on resvg to provide the natural
dimensions as the 'viewbox', 'width' and 'height' are not directly
exposed in the parsed tree. resvg internally defaults to a
width/height of 100x100 (can be overriden via usvg::Options, but
doesn't have any effect if viewBox is not present). It is worth noting
that all major browsers fail these cases.
https://wpt.fyi/results/html/semantics/embedded-content/the-img-element/naturalWidth-naturalHeight.html?label=experimental&label=master&aligned
/css/css-flexbox/align-items-007.html
/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-img-auto.html
/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-img-fixed.html
/html/rendering/replaced-elements/svg-embedded-sizing/svg-in-img-percentage.html
The failures are related to the issue explained above. In particular,
we are currently not distinguing the case where viewBox is present
but width, height are not. As resvg doesn't expose that, we use the viewbox
values as natural dimentions rather than treating them as absent.
/css/css-backgrounds/background-size/vector/tall--contain--height.html
Similar to the above the cases this is related to resvg and lack of
distinction between SVGs with explicit height & weight. This test has
an SVG with 'width' of 8px but only percentage 'height'. resvg takes
the missing height from viewbox (1px), so we render this as if the SVG
had an intrinsic dimensions of 8x1, scaled by the container's width,
but the test expects that the SVG is treated as no natural dimensions.
Chrome, Edge and Safari fail this test.
https://wpt.fyi/results/css/css-backgrounds/background-size/vector/tall--contain--height.html?label=experimental&label=master&aligned
/css/css-backgrounds/background-size/vector/tall--contain--width.html
Same reason as above, except with width missing instead of height.
Firefox and Safari fail this test.
/css/css-backgrounds/background-size/vector/wide--contain--height.html
/css/css-backgrounds/background-size/vector/wide--contain--width.html
Same reason as the two 'tall--contain--' tests above.
/css/css-backgrounds/background-size/vector/zero-height-ratio-5px-auto.html.ini
/css/css-backgrounds/background-size/vector/zero-height-ratio-auto-auto.html.ini
/css/css-backgrounds/background-size/vector/zero-height-ratio-contain.html.ini
/css/css-backgrounds/background-size/vector/zero-height-ratio-cover.html.ini
/css/css-backgrounds/background-size/vector/zero-ratio-no-dimensions-5px-auto.html.ini
/css/css-backgrounds/background-size/vector/zero-ratio-no-dimensions-auto-5px.html.ini
/css/css-backgrounds/background-size/vector/zero-ratio-no-dimensions-auto-auto.html.ini
/css/css-backgrounds/background-size/vector/zero-ratio-no-dimensions-contain.html.ini
/css/css-backgrounds/background-size/vector/zero-ratio-no-dimensions-cover.html.ini
/css/css-backgrounds/background-size/vector/zero-width-ratio-5px-auto.html.ini
/css/css-backgrounds/background-size/vector/zero-width-ratio-auto-auto.html.ini
/css/css-backgrounds/background-size/vector/zero-width-ratio-contain.html.ini
/css/css-backgrounds/background-size/vector/zero-width-ratio-cover.html.ini
All these tests assert that an SVG with no height specified and a
zero-ratio in the viewBox (either last or second to last component
is zero) is not rendered. Since resvg defaults the height and width
to 100px, we are not able to distinguish this case.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
/html/semantics/embedded-content/the-img-element/decode/image-decode-path-changes.html
This tests has the same issue if modified to use PNG image instead of
SVG. The test might have succedded only because SVG failed to load
previously
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
These tests used to because the reference uses SVG image which we didn't
support. Now, the reference renders correctly but the test page itself
doesn't, as support for SVG in `<video poster="..">` is not implemented
yet.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
These tests used to because the reference uses SVG image which we didn't
support. Now, the reference renders correctly but the test page itself
doesn't, as support for SVG in <object> is not implemented yet.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
These tests used to because the reference uses SVG image which we didn't
support. Now, the reference renders correctly but the test page itself
doesn't, as support for SVG in `<embed>` is not implemented yet.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
This commit contains the bulk of changes to add support for
rasterizing static SVG images using the `resvg` crate. There are
also other limitations in using resvg:
1. There is no support for animations or interactivty as these would
require implementing the full dom layer of SVG specification.
2. Only system fonts can be used for text rendering. There is some
mechanims to provide a custom font resolver to usvg, but that is
not explored in this change.
3. resvg's handling of certain edge cases involving lack of explict
`width` and `height` on the root svg element deviates from what
the specification expects from browsers. For example, resvg
uses he values in `viewBox` to derive the missing width or height
dimension, but without scaling that dimension to preserve the
aspect ratio. It also doesn't allow overriding this behaviour.
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Previously, when the theme was set it was only set on currently active
`Window`s. This change makes setting the `Theme` stateful. Now the
`Constellation` tracks what theme is applied to a `WebView` and properly
passes that value to new `Pipeline`s when they are constructed. In
addition, the value is passed to layout when that is constructed as
well.
Testing: this change adds a unit test.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Requires servo/servo#37045 for deps and config.
Testing: No need for tests to test tests.
Fixes: servo/servo#37041
---------
Signed-off-by: zefr0x <zer0-x.7ty50@aleeas.com>
I'm not sure if `CodegenRust.py` was supposed to remove the underscore,
but we end up exposing `type_` to javascript which is obviously wrong.
There's no need to rename the method in the first place, because `Type`
(with a capital T) is not a rust keyword.
Testing: Covered by existing web platform tests
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Newer keywords such as `async`/`await`/`gen` were missing from the list
There are no web platform APIs with these names, but it doesn't hurt to
keep the list up to date.
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Testing: No tests, if `test-wpt` broke again then we would notice pretty
quickly.
Fixes: https://github.com/servo/servo/issues/37124
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
DomObject::global is a tricky API because it's used pervasively but has
subtle requirements that are not documented and not yet enforced by the
type system (#36116). The method returns the relevant global object for
a given DOM object, but that operation is only meaningful if there is an
active realm. We usually, but not always, have an active realm.
This change avoids a footgun by following the principle of least
surprise. Rather than making every single caller of `something.global()`
both prove that there is an active realm and think about which realm
they want active, we implement the obvious behaviour: always activate
the realm of the callee before obtaining the relevant global.
Testing: Existing WPT coverage is sufficient; this method is called all
over the codebase.
Fixes: #37070#27037
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
The initially used config is compatible with flake8 rules, including all
pycodestyle (pep8) and pyflakes rules.
Testing: Broke some python files and used `mach test-tidy --all` to test
the linting.
Fixes: servo/servo#37041
Signed-off-by: zefr0x <zer0-x.7ty50@aleeas.com>
We fail only a couple of the URLPattern tests and I think that's mostly
due to bugs in the `urlpattern` crate.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
With this change the URLPattern API is fully implemented. I'll look into
the remaining failures and then enable the preference by default.
Testing: Covered by web platform tests
Depends on https://github.com/servo/servo/pull/37042
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Uses raycasting to determine whether point is in polygon
Testing: Added unittest
Fixes: None to my knowledge
---------
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
ImageBitmap::new always returns Ok. Simplify it by changing to return
DomRoot<ImageBitmap> directly.
The #[allow(dead_code)] seems unnecessary. This patch also removes it.
Testing: No test is needed.
Fixes: #37105
Signed-off-by: Kingsley Yung <kingsley@kkoyung.dev>
This fixes the combination of `background-attachment: fixed` and
`no-repeat`. The positioning of the background should be relative to the
viewport, so using an infinite rectangle breaks things like `center`.
I'm not sure what the original motivation of using an infinite rectangle
here
and it doesn't seem to break any tests to stop using it.
Testing: This fixes `/css/CSS2/backgrounds/background-bg-pos-206.xht`.
Fixes#37082.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
The `Column()` height and thus also the XComponent height extends beyond
the physical display for unknown reasons. This is a problem on websites
that have a footer bar, since the footer is partially below the display
end.
Using Flex with Column direction works as expected.
Testing: Manual inspection with DevEco Testing inspecting the height of
the children elements in ArkUI
Fixes: Part of the servoshell surface extending beyond the physical
screen on ohos
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
This allows to skip rebuilding the box tree when it's only necessary to
rebuild the stacking context tree.
Bumps Stylo to https://github.com/servo/stylo/pull/187
Testing: Unneeded (no behavior change). Just improving performance.
However, this adds a new test for dynamic changes of `z-index`, which we
were breaking in an earlier iteration of this patch.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
According to specification ImageBitmap objects are serializable objects
and transferable objects.
https://html.spec.whatwg.org/multipage/#the-imagebitmap-interface:imagebitmap-11
Testing:
- html/canvas/element/manual/imagebitmap/*
- html/infrastructure/safe-passing-of-structured-data/*
- html/webappapis/structured-clone/*
- workers/semantics/structured-clone/*
Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
These were disabled long ago, but nowadays the intermittent filter can
ignore them when they flake. In addition, running them will allow us to
know if they are still intermittent or not since all intermittent
failures are tracked in GitHub via mentions on issues.
Testing: This is a change to test configuration.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.23 to 1.2.24.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/cc-rs/releases">cc's
releases</a>.</em></p>
<blockquote>
<h2>cc-v1.2.24</h2>
<h3>Other</h3>
<ul>
<li>Regenerate windows sys bindings (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1471">#1471</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md">cc's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/cc-rs/compare/cc-v1.2.23...cc-v1.2.24">1.2.24</a>
- 2025-05-23</h2>
<h3>Other</h3>
<ul>
<li>Regenerate windows sys bindings (<a
href="https://redirect.github.com/rust-lang/cc-rs/pull/1471">#1471</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="332d31dd62"><code>332d31d</code></a>
chore: release v1.2.24 (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1472">#1472</a>)</li>
<li><a
href="77dddcae70"><code>77dddca</code></a>
Regenerate windows sys bindings (<a
href="https://redirect.github.com/rust-lang/cc-rs/issues/1471">#1471</a>)</li>
<li>See full diff in <a
href="https://github.com/rust-lang/cc-rs/compare/cc-v1.2.23...cc-v1.2.24">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.8 to 0.1.10.
<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.10</h2>
<ul>
<li>Reverted changes made in 0.1.9 to the behavior of the decoder under
non
libtiff-compatibility mode. Trying to read the decoder with an empty
output
buffer will at least inspect the next symbol and either error or
indicate the
end-of-stream accordingly.</li>
</ul>
<h2>Version 0.1.9 (yanked)</h2>
<ul>
<li>Increased decoding throughput by 3—30% depending on CPU and
data.</li>
<li>Added <code>{encode,decode}::Configuration</code> as builder types
for their respective
module. They can be cheaply cloned.</li>
<li>Added <code>decode::Configuration::with_yield_on_full_buffer</code>
to explicitly opt-in
to libtiff compatibility. The decoder will not read or interpret further
symbols of the decoding stream when the output buffer is full. This
enables a
caller to stop fetching symbols and elide an end of stream marker based
on
out-of-band length information. The decoder might otherwise error,
trying to
interpret data that does not belong to the stream.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="fd444602c5"><code>fd44460</code></a>
Bump crate in Cargo.lock file</li>
<li><a
href="7ef0eb40ca"><code>7ef0eb4</code></a>
Release notes for 0.1.10</li>
<li><a
href="4dc5761d51"><code>4dc5761</code></a>
Merge pull request <a
href="https://redirect.github.com/image-rs/weezl/issues/49">#49</a> from
image-rs/issue-48-behavior-change-on-empty-buffer</li>
<li><a
href="9563fd8a47"><code>9563fd8</code></a>
Fix behavior difference for 0.1.9</li>
<li><a
href="cb2c8421cc"><code>cb2c842</code></a>
Merge pull request <a
href="https://redirect.github.com/image-rs/weezl/issues/47">#47</a> from
image-rs/release-0.1.9</li>
<li><a
href="6d36f9b616"><code>6d36f9b</code></a>
Bump lockfile</li>
<li><a
href="d14169c023"><code>d14169c</code></a>
Release information for 0.1.9</li>
<li><a
href="5fa96ad878"><code>5fa96ad</code></a>
Merge pull request <a
href="https://redirect.github.com/image-rs/weezl/issues/46">#46</a> from
image-rs/performance-tuning</li>
<li><a
href="3bdf6844cd"><code>3bdf684</code></a>
Reduce burst loop register pressure</li>
<li><a
href="d3022443f8"><code>d302244</code></a>
Elimite data dependencies in creating burst codes</li>
<li>Additional commits viewable in <a
href="https://github.com/image-rs/weezl/compare/v0.1.8...v0.1.10">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>
This fixes an issue where a viewport change did not trigger a reflow,
when the restyle damage was was otherwise REPAINT. Viewport changes
mean changes to the initial containing block, which is one of the main
inputs to layout. This should trigger a reflow always.
Testing: Unfortunately, our testing infrastructure is not good enough
yet
to test changes to layout when resizing the `WebView`, so it is quite
difficult to write tests for this change.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Removed unused dependencies in various crates using cargo-machete, grep
and cargo-udeps.
Testing: The CI tests if any dependencies were used that are removed.
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Bumps [system-deps](https://github.com/gdesmott/system-deps) from 7.0.4
to 7.0.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gdesmott/system-deps/releases">system-deps's
releases</a>.</em></p>
<blockquote>
<h2>v7.0.5</h2>
<h3>Other</h3>
<ul>
<li>set rust-version to 1.78.0</li>
<li>allow cfg-expr between 0.17 and 0.20</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/gdesmott/system-deps/blob/main/CHANGELOG.md">system-deps's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/gdesmott/system-deps/compare/v7.0.4...v7.0.5">7.0.5</a>
- 2025-05-22</h2>
<h3>Other</h3>
<ul>
<li>set rust-version to 1.78.0</li>
<li>allow cfg-expr between 0.17 and 0.20</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c421e3d455"><code>c421e3d</code></a>
chore: release v7.0.5</li>
<li><a
href="88a7508ba6"><code>88a7508</code></a>
set rust-version to 1.78.0</li>
<li><a
href="383a578e21"><code>383a578</code></a>
allow cfg-expr between 0.17 and 0.20</li>
<li>See full diff in <a
href="https://github.com/gdesmott/system-deps/compare/v7.0.4...v7.0.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>
Re-remove deleted logic from `WebDriverSession::input_cancel_list` logic
in #37010 which was re-adedd during merge resolution in #36932.
Otherwise, duplicate items would be registered in Release Actions.
Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
The CI does multiple build runs so we need to handle it being
overwritten.
Multiple different build of OHOS servoshell would fight for who is first
to upload run.json and the other would error out.
Now we allow both to succeed by overwrite the run.json
Testing: Testrun:
https://github.com/Narfinger/servo/actions/runs/15180797189/job/42689748807
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
- Add support for `text-decoration-line: double`: Line drawing is done
similar to how it works in Firefox and Chromium. A gap of half of line
thickness is added between each line.
- Fix support for `text-decoration-line: wavy`: Wavy lines rectangles
were not calcualted properly, which meant they were rendered as solid
lines. Now the amplitude of the wave is 1.5 times line thickness.
Testing: A manual test is updated `tests/html/text_deco_simple.html`
to cover more cases. In general, rendering of text-decorations is
difficult
to test via reftesting.
Fixes#17887.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Bumps [anstyle-wincon](https://github.com/rust-cli/anstyle) from 3.0.7
to 3.0.8.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a731b50503"><code>a731b50</code></a>
chore: Release</li>
<li><a
href="f20e5baf87"><code>f20e5ba</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/253">#253</a>
from epage/once</li>
<li><a
href="37c9af4dfa"><code>37c9af4</code></a>
refactor: Avoid once_cell on new Rust</li>
<li><a
href="4d45d3a016"><code>4d45d3a</code></a>
chore(deps): Update Rust Stable to v1.87 (<a
href="https://redirect.github.com/rust-cli/anstyle/issues/252">#252</a>)</li>
<li><a
href="382dc34489"><code>382dc34</code></a>
style: Make clippy happy</li>
<li><a
href="2c10c471be"><code>2c10c47</code></a>
chore: Release</li>
<li><a
href="e77af2ef8b"><code>e77af2e</code></a>
docs: Update changelog</li>
<li><a
href="6d3640291c"><code>6d36402</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/248">#248</a>
from rust-cli/renovate/crossterm-0.x</li>
<li><a
href="7617d95baa"><code>7617d95</code></a>
chore(deps): Update Rust crate crossterm to 0.29.0</li>
<li><a
href="2f5287b8be"><code>2f5287b</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-cli/anstyle/issues/249">#249</a>
from epage/foo</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-cli/anstyle/compare/anstyle-wincon-v3.0.7...anstyle-wincon-v3.0.8">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 [rustversion](https://github.com/dtolnay/rustversion) from 1.0.20
to 1.0.21.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/rustversion/releases">rustversion's
releases</a>.</em></p>
<blockquote>
<h2>1.0.21</h2>
<ul>
<li>Support <code>-Zfmt-debug=none</code> (<a
href="https://redirect.github.com/dtolnay/rustversion/issues/61">#61</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1f833903f9"><code>1f83390</code></a>
Release 1.0.21</li>
<li><a
href="8be7057332"><code>8be7057</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/rustversion/issues/61">#61</a>
from dtolnay/debugnone</li>
<li><a
href="91dd8ef7b1"><code>91dd8ef</code></a>
Ignore elidable_lifetime_names pedantic clippy lint</li>
<li><a
href="052138c8c8"><code>052138c</code></a>
Support -Zfmt-debug=none</li>
<li><a
href="17dc0fd54f"><code>17dc0fd</code></a>
Pin nightly toolchain used for miri job</li>
<li>See full diff in <a
href="https://github.com/dtolnay/rustversion/compare/1.0.20...1.0.21">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>
This follows firefox's implementation:
24d49101ce/dom/webgpu/Instance.h (L68)
It changes the default on most systems to `Bgra8Unorm` but leaves it as
`Rgba8Unorm` on android.
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
This includes removing an implementation of normalize for `ByteString`,
because it is effectively duplicated in net under
`trim_http_whitespace`. This is part of an attempt to cleanup and
centralize code for header parsing and manipulation.
Testing: Covered by existing WPT tests
Signed-off-by: Sebastian C <sebsebmc@gmail.com>
Bumps [winit](https://github.com/rust-windowing/winit) from 0.30.10 to
0.30.11.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-windowing/winit/releases">winit's
releases</a>.</em></p>
<blockquote>
<h2>Winit release v0.30.11</h2>
<h3>Fixed</h3>
<ul>
<li>On Windows, fixed crash in should_apps_use_dark_mode() for Windows
versions < 17763.</li>
<li>On Wayland, fixed <code>pump_events</code> driven loop deadlocking
when loop was not drained before exit.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="911fad0af0"><code>911fad0</code></a>
Winit version 0.30.11</li>
<li><a
href="2191eacfc8"><code>2191eac</code></a>
chore: appease clippy</li>
<li><a
href="f7ac8127e3"><code>f7ac812</code></a>
wayland: fix pump events's loop drop deadlock</li>
<li><a
href="bd2b5cda8d"><code>bd2b5cd</code></a>
windows: Fix crash in for Windows versions < 17763</li>
<li><a
href="3930a6334f"><code>3930a63</code></a>
ci/deny: allow scripts in zerocopy</li>
<li><a
href="17b5737972"><code>17b5737</code></a>
Fix typos from updated <code>typos</code> tool (<a
href="https://redirect.github.com/rust-windowing/winit/issues/4213">#4213</a>)</li>
<li><a
href="f49a2a1827"><code>f49a2a1</code></a>
clippy: fix casing in windows backend</li>
<li>See full diff in <a
href="https://github.com/rust-windowing/winit/compare/v0.30.10...v0.30.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 [jiff](https://github.com/BurntSushi/jiff) from 0.2.13 to 0.2.14.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/BurntSushi/jiff/blob/master/CHANGELOG.md">jiff's
changelog</a>.</em></p>
<blockquote>
<h1>0.2.14 (2025-05-20)</h1>
<p>This release includes a smattering of bug fixes, and hopefully a
small
improvement to the time it takes to compile Jiff. Also, in this release,
when
<code>TZ</code> is set to a non-empty but invalid value, Jiff will
always fall back to
<code>Etc/Unknown</code> when using <code>TimeZone::system()</code>.
This differs from previous
behavior where Jiff would, in this case, attempt to read the system's
default
time zone. This change brings Jiff into consistency with existing Unix
tooling
like <code>date</code>, and is also arguably a better failure mode. That
is, when <code>TZ</code> is
set but invalid, we shouldn't silently fall back to the default system
time
zone, but instead do something that indicates something has potentially
gone
wrong.</p>
<p>Enhancements:</p>
<ul>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/364">#364</a>:
Jiff now falls back to <code>Etc/Unknown</code> for invalid
<code>TZ</code> values.</li>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/pull/379">#379</a>:
Improve compilation times.</li>
</ul>
<p>Bug fixes:</p>
<ul>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/365">#365</a>:
Fixes a compile error in Jiff when only the
<code>tzdb-concatenated</code> feature was
enabled.</li>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/366">#366</a>:
Fixes slow initial <code>Zoned::now()</code> in environments where
<code>/usr/share/zoneinfo</code>
is on a very slow file system (like CI environments).</li>
<li><a
href="https://redirect.github.com/BurntSushi/jiff/issues/376">#376</a>:
Avoids searching for a tzdb at <code>/usr/share/zoneinfo</code> on
Windows.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8105228403"><code>8105228</code></a>
0.2.14</li>
<li><a
href="39b9903e06"><code>39b9903</code></a>
changelog: 0.2.14</li>
<li><a
href="c0cfb2390d"><code>c0cfb23</code></a>
test: add another scratch test for printing some interesting spans</li>
<li><a
href="ca0697735b"><code>ca06977</code></a>
error: try to reduce amount of codegen by forcefully unlining error
constructors</li>
<li><a
href="08abeadd09"><code>08abead</code></a>
tz: fallback to <code>Etc/Unknown</code> when <code>TZ</code> is set to
an invalid value</li>
<li><a
href="e22013e9b9"><code>e22013e</code></a>
tz: don't search for tzdb at /usr/share/zoneinfo</li>
<li><a
href="c5c232094c"><code>c5c2320</code></a>
ci: improve tzdb init times and tests</li>
<li><a
href="0f9fdf8ec8"><code>0f9fdf8</code></a>
tz: improve performance of initial <code>Zoned::now()</code></li>
<li><a
href="4e4939d199"><code>4e4939d</code></a>
jiff-icu: bump ICU4X to 2.0.0</li>
<li><a
href="e729efaea3"><code>e729efa</code></a>
jiff-icu: upgrade to ICU4X 2.0.0</li>
<li>Additional commits viewable in <a
href="https://github.com/BurntSushi/jiff/compare/jiff-static-0.2.13...jiff-static-0.2.14">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>
Text decorations have a special kind of propagation. Instead of
propating these during box tree construction, move propagation to
stacking context tree construction. This will allow for using a very
easy type of incremental layout when text decorations change. For
instance, when a link changes color during hovering over it, we can skip
all of box and fragment tree construction.
In addition, propagation works a bit better now and color and style
properly move down from their originating `Fragment`s.
This introduces three new failures, because now we are drawing the
text-decoration with the correct color in more places, which exposes an
issue we have with text-decorations not being drawn in relation to the
baseline (taking into account `vertical-align`).
Testing: There are tests for these changes.
Fixes#31736.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Fix warnings from `components/fonts/platform/windows/font.rs` and
`components/fonts/platform/windows/font_list.rs` due to deprecations
from dwrote.
Testing: none, should behave as it did before
---------
Signed-off-by: Ashwin Naren <arihant2math@gmail.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
When the computed restyle damage is empty, do not do a layout. Instead,
just rebuild the display list. In the future, even that can be omitted,
but that requires changes to the compositor.
These kind of relayouts commonly happen when the cursor is moving around
the page and no style rules cause changes to :hover.
Testing: This is covered existing WPT tests and should only have
performance
impacts. Unfortunately there are currently no performance tests.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
To properly compute (the video) element's content size for
layout requires to dirty the element on any intrinstic size changes.
Full list of the operations which cause layout invalidation:
- media metadata update (NEW)
- removing "src" attribute
- video frame update
- show poster image
Testing:
html/semantics/embedded-content/the-video-element/intrinsic_sizes.htm
Fixes: https://github.com/servo/servo/issues/34434
Signed-off-by: Andrei Volykhin <andrei.volykhin@gmail.com>
Implement missing synchronization in `dispatch_actions` of `WebDriver`.
https://w3c.github.io/webdriver/#dispatching-actions
> The user agent event loop has spun enough times to process the DOM
events generated by the last invocation of the >[dispatch tick
actions](https://w3c.github.io/webdriver/#dfn-dispatch-tick-actions)
steps.
- Add a way for `ScriptThread` to notify `WebDriver` about the
completion of input commands.
- Add a `webdriver_id` field for `InputEvent`. `ScriptThread` uses it to
distinguish WebDriver events and sends notification.
Tests:
`./mach test-wpt --product servodriver -r
tests\wpt\tests\webdriver\tests\classic\element_click\events.py` pass if
`hit_testing` pass. Check
[issue](https://github.com/servo/servo/issues/36676#issuecomment-2882917136)
cc: @xiaochengh
---------
Signed-off-by: batu_hoang <longvatrong111@gmail.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>