Commit graph

48137 commits

Author SHA1 Message Date
Aarya Khandelwal
275fad8b78
Clippy: Fix the error of variants having the same prefix. (#31953)
* fix error: all variants have same prefix

* made the suggested changes

* fixed errors caused by commit

* silenced the clippy warning.

* ran ./mach fmt

* Update components/script/dom/htmlmediaelement.rs

Co-authored-by: Samson <16504129+sagudev@users.noreply.github.com>

---------

Co-authored-by: Samson <16504129+sagudev@users.noreply.github.com>
2024-04-05 16:31:41 +00:00
Martin Robinson
9ee45425e9
ci: Retry hdiutil create with randomize backoff (#32005)
Regularly we see that `hdiutil creat` when creating a DMG on the MacOS
builder fails with "Resource busy." This change is an attempt to
mitigate that by retrying the command 3 time with a randomized backoff.
2024-04-05 10:51:24 +00:00
Martin Robinson
77b2e88fb7
gfx: Do not apply scale to CoreText font metrics (#31996)
Since the original version of the CoreText font code, it has scaled the
metrics from CoreText by an unusual scale:

```
    let scale = px_to_pt(self.ctfont.pt_size()) / (ascent + descent);
```

It's unclear what this scale was trying to accomplish. Note that it's
passing the return value of `pt_size()` to `px_to_pt` which seems
backward. This scale seems bogus, but perhaps it's based on a
misconception about what its returned from CoreText. Unlike the return
values of `CGFont` methods, which are returned in font units, the ones
from `CTFont` are "scaled according to the point size and matrix of the
font reference."

Indeed, when just interpreting these values as pixel values, the results
more or less match Firefox and Chrome. This becomes much more obvious
now that we have support for `ex` units. Even when not using `ex`, you
can sometimes see the top parts of glyphs cut off due to this scaling.

This change removes the scaling and simply interpets the return values
of `CTFont` methods as pixels. It addresses all of the issues mentioned
above. Note that this path will eventually just be a fallback path and
metrics will come from sfnt tables in the future.
2024-04-05 10:22:36 +00:00
dependabot[bot]
14bf1c5434
build(deps): bump h2 from 0.3.25 to 0.3.26 (#31999)
Bumps [h2](https://github.com/hyperium/h2) from 0.3.25 to 0.3.26.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/v0.3.26/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.25...v0.3.26)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-05 08:26:01 +00:00
eri
f902a9fecf
Show poster over first video frame if available (#32001) 2024-04-05 03:44:23 +00:00
dependabot[bot]
c7542b273b
build(deps): bump servo-media-gstreamer from c04bb30 to 45756be (#31998)
Bumps [servo-media-gstreamer](https://github.com/servo/media) from `c04bb30` to `45756be`.
- [Release notes](https://github.com/servo/media/releases)
- [Commits](c04bb30253...45756bef67)

---
updated-dependencies:
- dependency-name: servo-media-gstreamer
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-04 18:03:25 +00:00
dependabot[bot]
770130a563
build(deps): bump servo-media from c04bb30 to 45756be (#31997)
Bumps [servo-media](https://github.com/servo/media) from `c04bb30` to `45756be`.
- [Release notes](https://github.com/servo/media/releases)
- [Commits](c04bb30253...45756bef67)

---
updated-dependencies:
- dependency-name: servo-media
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-04 18:03:22 +00:00
Martin Robinson
fe8b23d14a
layout: Add a FontMetricsProvider for resolving font-relative units (#31966)
The only font relative unit that Servo knows how to resolve currently is
`rem` (relative to the root font size). This is because Stylo cannot do
any font queries. This adds a mechanism to allow this, exposing the
ability to properly render `ex` units in Servo.

This change only allows resolving some font size relative units thoug,
as Servo doesn't collect all the FontMetrics it needs to resolve them
all. This capability will be added in followup changes.

Some new tests fail:
 - ex-unit-001.html: This test fails because Servo does not yet have
   support for setting the weight using @font-face rules on web fonts.
 - ex-unit-004.html: This test fails because Servo does not yet have
   support for setting the Unicode range of a web font using @font-face
   rules.
 - first-available-font-001.html: This test fails because the above
   two feature are missing.
2024-04-04 12:35:15 +00:00
Martin Robinson
24c3a2df1e
script: Make layout DOM wrappers not generic on layout data (#31994)
Remove the type parameter from the layout DOM wrappers. This is possible
now that style and layout data are separate and the `Any` nature of the
layout data is exposed in the wrappers.

Removing the phantom data member of the wrappers also allows using the
default `derive` implementations for things like `Clone`, `Copy`, and
`PartialEq`.
2024-04-04 11:34:35 +00:00
komuhangi
df457c43c8
Fixed some clippy warning by adding default implementations (#31989)
* Fixed some clippy warning by adding default implementations

* Updated PR that adds default implementation of structs

* Clean up and extend `Default` implementations

---------

Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2024-04-04 09:33:30 +00:00
Samson
62a916ce5c
webgpu: Implement onSubmittedWorkDone (#31772)
* Implement onSubmittedWorkDone

* Use rust closures for callback & actually remove entries from hashmap.

* Remove hashmap

* Fix warnings

* Update expectations

* clean flaky crashes

* re

* Update components/script/dom/gpuqueue.rs

Co-authored-by: Martin Robinson <mrobinson@igalia.com>

---------

Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2024-04-04 08:12:40 +00:00
Martin Robinson
08ef158d4e
script: Split style and layout data in DOM nodes (#31985)
This change splits the style and layout data in DOM nodes that is
populated by style and layout passes. This makes Servo's data design
more like Gecko's. This allows:

1. Removing the various `StyleAndLayout` data structures used by layout.
2. Removing the `GetStyleAndLayoutData` and
   `GetStyleAndOpaqueLayoutData` traits. Accessing style and layout data
   are now just functions on the `LayoutNode` and `ThreadSafeLayoutNode`
   traits.
3. Styling now doesn't populate layout data. This is is postponed until
   layout itself.
4. Allows the DOM wrappers to no longer have to be generic over the
   layout data. This data was already stored using `std::any::Any` and
   the new code just makes layout responsible for downcasting. Cleaning
   up the generic type parameter in the DOM wrappers can happen in a
   followup change.

The main benefit to all of this is that we should be able to remove
unsafe creation of `ServoLayoutNode` in layout and
`TrustedLayoutNodeAddress` entirely, because `ServoLayoutNode` will be
able to be passed directly from script to layout. In addition, this
removes one more abstraction layer from the layout DOM wrappers, making
the code a lot more understandable.

Note: This increases the measured size of DOM types, but the same data
is stored. It's simply that before that data was stored behind a heap
pointer.
2024-04-04 07:56:51 +00:00
Samson
1ed6b96684
Update mozjs (#31824) 2024-04-03 19:24:50 +00:00
Oluwatobi Sofela
31e0b33e73
clippy: Fix vec_box warnings in components/script (#31986)
* clippy: Fix vec_box warnings

* refactor: Allow heap values to stay boxed

* refactor: Move comments above allow directives

* Apply suggestions from code review

Adjust comments slightly

---------

Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2024-04-03 19:24:39 +00:00
Oluwatobi Sofela
fcc7a1be53
clippy: Fix toplevel_ref_arg warning in components/script (#31984)
* clippy: Fix toplevel_ref_arg warnings

* refactor: Make the let binding more idiomatic
2024-04-03 18:54:28 +00:00
Azhar Ismagulova
37cf4cf207
clippy: Fix several warnings in components/script/dom/bindings (#31945)
* clippy: fix several warnings in components/script/dom/bindings

* fix: allow non_canonical_clone_impl in components/script/dom/bindings

* chore: removed unnecessary curly braces

* fix: removed vtable_address_comparisons allow
2024-04-03 17:19:53 +00:00
Azhar Ismagulova
03b752289e
clippy: fix warnings in components/compositing (#31987) 2024-04-03 17:19:15 +00:00
dependabot[bot]
3c249b0d5b
build(deps): bump syn from 2.0.57 to 2.0.58 (#31988)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.57 to 2.0.58.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.57...2.0.58)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-03 16:55:30 +00:00
Oluwatobi Sofela
b228d7869d
clippy: Fix option_map_or_none warnings (#31983) 2024-04-03 11:39:52 +00:00
Ngo Iok Ui (Wu Yu Wei)
66878fb834
Initial internal support for multiple webviews (#31417)
* Add multiple concurrent top-level browsing contexts

Co-authored-by: Delan Azabani <dazabani@igalia.com>

* Rename variables and comments

There are some variable and comments still use browser as names.
This commit renames them to webview.

* Update log message from web view to webview

* Revert offscreen_framebuffer_id rename

* Rename all web view to webview

* Cargo fmt

* Fix viewport/event/clear coordinates when multiview is disabled

* Only deprecate things when multiview is enabled

* Update WebViewManger with shown and invisible sets

Replace visible_webviews and native_window_is_visible with shown_webviews
and invisible_webviews. Add 4 more methods to set them accordingly. The
behavior of is_effectively_visible will return true if the wbview is in
shown_webviews set but not in invisible_webviews.

* Update variant behaviors

* Rename WebViewVisibilityChanged to MarkWebViewInvisible

* Fix unit test by marking id 3 visible again

* Update MarkWebViewInvisible and add UnmarkWebViewInvisible

* Update format and doc comments

* Clean up doc comments

* Address style and naming changes

* Rename UpdateWebView to UpdateFrameTreeForWebView

* constellation: send frame tree unconditionally over focus and feature

* Clarify shown and invisible sets in constellation WebViewManager

* Eliminate forward_to_constellation!()

* Actually remove the unused macro

* Don’t gate compositor changes on multiview feature flag

* Update todo in mouse event dispatch

* Pass all visible webview ids in a single ReadyToPresent message

* Fix compile and lint errors

* servoshell: fix gap between minibrowser toolbar and webview

* Fix failure in /_mozilla/mozilla/window_resizeTo.html

* Fix compile warnings

* Remove stray dbg!()

* Remove confusing “effectively visible” logic (see #31815, #31816)

* Allow embedder to show/hide/raise webviews without ipc

* Update root pipeline only when painting order actually changes

* Stop gating old focus and SetFrameTree behaviour behind Cargo feature

* Use webview_id and WebViewId in webview-related code

* Improve logging of webview-related embedder events

* Allow webview Show and Raise events to optionally hide all others

* Don’t do anything in response to WebViewPaintingOrder

* Remove WebViewPaintingOrder, since its payload is unreliable

* On MoveResizeWebView, only update root pipeline if rect changed

* Rename IOCompositor methods for clarity

* compositor: add event tracing; log webview ops even without ipc

* Add temporary debug logging

* Add more temporary debug logging

* Remove temporary logging in compositor

* Remove temporary debug logging

* Add temporary debug logging, but defer I/O until panic

* Capture a backtrace with each crash log entry

* Proper error handling without panicking in WebViewManager

* Clean up imports in constellation

---------

Co-authored-by: Delan Azabani <dazabani@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2024-04-03 11:06:28 +00:00
Martin Robinson
18b37e676b
script: Reduce the use of unsafe in LayoutDom (#31979)
Remove the use of unsafe code in the layout wrappers of the DOM. The
main change here is that `unsafe_get()` no longer needs to be an unsafe
method, which allows us to transitively remove or reduce unsafe blocks
from callers. The function itself is not renamed, because it's still
a bit dangerous to start removing the layers of abstraction from actual
DOM nodes.

In addition `init_style_and_opaque_layout_data` can be merged into
`initialize_data`, which removes one more unsafe method.

Finally, a "Safety" section is added to some unsafe methods.
2024-04-03 08:41:19 +00:00
Martin Robinson
8aaff61334
compositing: Send entire scene's scroll offsets when sending WebRender display lists (#31892)
WebRender does not preserve spatial tree offsets when updating the
spatial tree. Updating the spatial tree of a pipeline can also
update the spatial tree of child pipelines. This change ensures that
WebRender always gets the scroll offsets of the entire scene when
modifying display lists in a way that may rebuild the spatial tree.

Fixes #31807.
2024-04-03 06:34:16 +00:00
eri
cc082efbfd
clippy: Allow too_many_arguments for existing functions (#31974)
* Allow `too_many_arguments` for existing functions

* fix: Surround ASCII with code block in rustdoc
2024-04-02 12:50:45 +00:00
Yashasvi Chaudhary
f613159cba
clippy:partialeq_to_none (#31972) 2024-04-02 10:25:06 +00:00
Munish Mummadi
2a517f786b
Implementation of baseline-source (#31904)
Updating Stylo and test expectations.
2024-04-02 10:20:13 +00:00
Oluwatobi Sofela
da3991c8f3
clippy: Fix search_is_some warnings (#31971) 2024-04-02 04:01:52 +00:00
dependabot[bot]
71f4c5c916
build(deps): bump syn from 2.0.55 to 2.0.57 (#31970)
Bumps [syn](https://github.com/dtolnay/syn) from 2.0.55 to 2.0.57.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/2.0.55...2.0.57)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-02 03:49:28 +00:00
dependabot[bot]
4227f2f8a1
build(deps): bump pin-project-lite from 0.2.13 to 0.2.14 (#31969)
Bumps [pin-project-lite](https://github.com/taiki-e/pin-project-lite) from 0.2.13 to 0.2.14.
- [Release notes](https://github.com/taiki-e/pin-project-lite/releases)
- [Changelog](https://github.com/taiki-e/pin-project-lite/blob/main/CHANGELOG.md)
- [Commits](https://github.com/taiki-e/pin-project-lite/compare/v0.2.13...v0.2.14)

---
updated-dependencies:
- dependency-name: pin-project-lite
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 17:36:39 +00:00
dependabot[bot]
5008b6c420
build(deps): bump xml-rs from 0.8.19 to 0.8.20 (#31967)
Bumps [xml-rs](https://github.com/kornelski/xml-rs) from 0.8.19 to 0.8.20.
- [Changelog](https://github.com/kornelski/xml-rs/blob/main/Changelog.md)
- [Commits](https://github.com/kornelski/xml-rs/compare/0.8.19...0.8.20)

---
updated-dependencies:
- dependency-name: xml-rs
  dependency-type: indirect
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 17:23:34 +00:00
Oluwatobi Sofela
0a40a800fd
clippy: Fix filter_next warnings (#31965) 2024-04-01 15:44:07 +00:00
Oluwatobi Sofela
c7b73e1ef4
clippy: Fix let_and_return warnings (#31964) 2024-04-01 15:43:24 +00:00
komuhangi
0da2508e4d
clippy: Allow too_many_arguments for all functions (#31962)
This is the start of preventing this in the future.

Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2024-04-01 14:53:33 +00:00
shanehandley
8c1a72f130
Update webidl and implement setter for the files property of a file input (#31934)
The files attribute was previously readonly, but was later updated to allow mutation via input.files = ...

see https://github.com/whatwg/html/issues/2861
2024-04-01 09:12:07 +00:00
Samson
8c25336e9a
Override timeout in WebGPU CTS to always be "long" (#31952)
* Long webgpu timeout

* Update expectations

* reupdate expectations 2

* re

* update-webgpu

* Update testing_commands.py with better comment
2024-04-01 08:27:46 +00:00
Rosemary Ajayi
2f5a4354e7
clippy: fixed various clippy warnings in components/scripts (#31960)
* fixed various clippy warnings

* fixed various clippy warnings

* fixed various clippy warnings

* fixed various clippy warnings
2024-04-01 08:25:42 +00:00
Rosemary Ajayi
fd8235e409
clippy: Fix a few problems in components/script (#31961)
* fixed various clippy warnings

* fixed various clippy warnings
2024-04-01 07:18:32 +00:00
Rosemary Ajayi
52a74287fc
clippy: Fix a few problems in components/scripts (#31959)
* fixed various clippy warnings

* fixed various clippy warnings
2024-04-01 05:34:48 +00:00
Rosemary Ajayi
00c4d798c9
clippy: Fix a few problems in components/script/dom (#31955)
* fixed various clippy warnings

* fixed various clippy warnings

* fixed various clippy warnings
2024-03-31 23:15:13 +00:00
Ekta Siwach
9401102691
updated components/layout_thread/lib.rs (#31958) 2024-03-31 22:54:04 +00:00
Rosemary Ajayi
673eaa569a
clippy: Fix various clippy problems in components/scripts/dom (#31910)
* boxing is unnecessary

* boxing is unnecessary

* boxing is unnecessary

* boxing is unnecessary

* fix

* fix

* fix

* Update globalscope.rs
2024-03-31 20:21:52 +00:00
Ekta Siwach
9243e8cf71
clippy: Fix some issues issues in ports/servoshell (#31939)
* fix warnings in ports/servoshell

* fixed formatting
2024-03-31 20:03:37 +00:00
Rosemary Ajayi
bd287df0d4
fixed various clippy warnings (#31954) 2024-03-31 19:58:37 +00:00
komuhangi
c3360df918
Fixed some clippy warnings in components/script (#31950)
* Fixd some clippy warnings in components/script

* Update node.rs

Removed the  ```# Safety ``` section.

* Update shadow_root.rs

Removed the ``` # Safety ``` section from components/script/layout_dom

* Updated fixes to some clippy warnings in components/script

* Revert "Updated fixes to some clippy warnings in components/script"

This reverts commit 2a37c3dec8.

* Updated fixes to clippy warnings in components/script

* Revert "Updated fixes to clippy warnings in components/script"

This reverts commit 5780dc3a0a.

* Revert "Revert "Updated fixes to some clippy warnings in components/script""

This reverts commit 98c411354a.

* Revert "Updated fixes to some clippy warnings in components/script"

This reverts commit 2a37c3dec8.

* Update shadow_root.rs (Ignore change)

* Update node.rs (Ignore changes)

* Updated fixes to clippy warnings in components/script

* Removed  trailing white space in componets/script/layout_dom_root.rs

* Revert "Removed  trailing white space in componets/script/layout_dom_root.rs"

This reverts commit 1976fd0405.

* Revert "Updated fixes to clippy warnings in components/script"

This reverts commit 5c71b925fb.

* Updated fixes to clippy warnings in components/script including review suggestions.
2024-03-31 19:51:16 +00:00
Servo WPT Sync
8c8d68e415
Update web-platform-tests to revision b'16f18d8135a80e89f2e910ca7548999fa2f7937e' (#31951) 2024-03-31 05:15:08 +00:00
Oriol Brufau
fff9ef87e6
Update Stylo to 2023-10-16 (#31932)
* Update Stylo to 2023-10-16

* Fixup for https://phabricator.services.mozilla.com/D185154

* Fixup for https://phabricator.services.mozilla.com/D188216

* Fixup for https://phabricator.services.mozilla.com/D185677

* Fixup for https://phabricator.services.mozilla.com/D188566

* Fixup for https://phabricator.services.mozilla.com/D188727

* Fixup for https://phabricator.services.mozilla.com/D189475

* Fixup for https://phabricator.services.mozilla.com/D189521

* Fixup for https://phabricator.services.mozilla.com/D188812

* Fixup for https://phabricator.services.mozilla.com/D189484

* Update test expectations
2024-03-30 13:30:13 +00:00
eri
a7ad92d9a3
clippy: Fix from_over_into warnings (#31946) 2024-03-30 11:30:14 +00:00
eri
e3d6b66d5f
clippy: Fix match_like_matches warnings (#31947)
* clippy: Fix `match_like_matches` warnings

* Fix link to custom element state in specification.

---------

Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2024-03-30 10:06:26 +00:00
Azhar Ismagulova
92d9081366
fix: remove unused imports in components/script (#31943) 2024-03-29 18:15:13 +00:00
Martin Robinson
b7d089930e
layout: Remove LayoutRPC and query layout via the Layout trait (#31937)
Instead of the tricky `LayoutRPC` interface, query layout using the
`Layout` trait. This means that now queries will requires calling layout
and then running the query. During layout an enum is used to indicate
what kind of layout is necessary.

This change also removes the mutex-locked `rw_data` from both layout
threads. It's no longer necessary since layout runs synchronously. The
one downside here is that for resolved style queries, we now have to
create two StyleContexts. One for layout and one for the query itself.
The creation of this context should not be very expensive though.

`LayoutRPC` used to be necessary because layout used to run
asynchronously from script, but that no longer happens. With this
change, it becomes possible to safely pass nodes to layout from script
-- a cleanup that can happen in a followup change.
2024-03-29 16:25:47 +00:00
Oriol Brufau
07391e346b
Obey white-space: pre-wrap when intrinsically sizing an IFC (#31930)
It was being treated like `pre`, but it allows wrapping lines.
2024-03-29 15:02:47 +00:00