Commit graph

45796 commits

Author SHA1 Message Date
Martin Robinson
b17d16665b
Convert some comments into rustdoc
These were always meant to be rustdoc and converting them makes them
show up in the IDE in a more helpful way.
2023-06-01 09:09:19 +02:00
bors-servo
6fa314de2a
Auto merge of #29813 - stshine:overflow-bfc, r=mrobinson
layout_2020: Check blocks for whether they will establish a formatting context

<!-- Please describe your changes on the following line: -->
According to spec
https://drafts.csswg.org/css-overflow-3/#overflow-control, If the computed value of overflow on a block box is neither visible nor clip nor a combination thereof, it establishes an independent formatting context for its contents.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors

<!-- Either: -->
- [x] There are tests for these changes OR

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-31 18:24:38 +02:00
Pu Xingyu
08067674f4 Update test expectations 2023-05-31 23:31:17 +08:00
Pu Xingyu
5c71219819 layout_2020: Check blocks for whether they will establish a formatting context 2023-05-31 23:28:28 +08:00
Pu Xingyu
b8a037fc1f layout_2020: Add 'establishes_block_formatting_context' method to 'ComputedValuesExt'
This method checks whether the style of a normal block would establish
a block formatting context.
2023-05-31 21:51:52 +08:00
Pu Xingyu
fb91a5c0f5 style: Enable 'column-span' for layout 2020 2023-05-31 19:25:01 +08:00
bors-servo
e48cfb2ebe
Auto merge of #29817 - atouchet:sha, r=jdm
De-dupe sha-1

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [ ] `./mach build -d` does not report any errors
- [ ] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)

<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because ___

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-31 01:24:01 +02:00
Alex Touchet
c351a9f380 De-dupe sha-1 2023-05-30 15:05:16 -07:00
bors-servo
4e1d3a801f
Auto merge of #29814 - Loirooriol:do-not-skip-css-logical, r=mrobinson
Stop skipping css-logical tests in layout-2020

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because there is no change in behavior

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-30 19:56:21 +02:00
Oriol Brufau
c1a9ff033a Stop skipping css-logical tests in layout-2020 2023-05-30 16:26:52 +02:00
bors-servo
fc07c21276
Auto merge of #29811 - mrobinson:remove-more-python-2, r=jdm
Remove more Python 2 compatibility code

- os.environ is always `str` in Python 3.
- The only string type is `str` so we can stop using `six.str_types`.
- `iteritems()` isn't necessary because dicts have the `items()` method.

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because they do not change behavior.

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-29 18:15:28 +02:00
Martin Robinson
faa8c0e967
Remove more Python 2 compatibility code
- os.environ is always `str` in Python 3.
- The only string type is `str` so we can stop using `six.str_types`.
- `iteritems()` isn't necessary because dicts have the `items()` method.
2023-05-29 13:56:03 +02:00
bors-servo
cab7694b08
Auto merge of #29807 - sagudev:pyfail, r=mrobinson
Propagate status on `build_like_command_arguments`

As observed in #29805

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #29806

<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because ___

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-29 13:39:41 +02:00
bors-servo
9a93c21867
Auto merge of #29808 - mrobinson:no-features-for-test-unit, r=atbrakhi
Do not pass features when running `./mach test-unit`

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] There are tests for these changes. They fix running the tests.

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-29 11:14:06 +02:00
Martin Robinson
4d8c227774
Do not pass features when running ./mach test-unit 2023-05-29 10:09:54 +02:00
sagudev
f2e067099f Propagate status on build_like_command_arguments 2023-05-29 08:12:25 +02:00
bors-servo
7d50362c72
Auto merge of #29802 - servo:wpt_update_28-05-2023, r=mukilan
Sync WPT with upstream (28-05-2023)

Automated downstream sync of changes from upstream as of 28-05-2023
[no-wpt-sync]
r? @servo-wpt-sync
2023-05-28 10:23:32 +02:00
cybai
4ee789a85c Remove unexpected TIMEOUTs 2023-05-28 16:53:14 +09:00
WPT Sync Bot
e80b99758c Update web-platform-tests to revision b'4c27189ed2db4ddad8e727d4ea9ae8329c3e1672' 2023-05-28 01:35:21 +00:00
bors-servo
d441afd9df
Auto merge of #29800 - mrobinson:only-check-gstreamer-install-for-builds, r=mukilan
Only check the GStreamer installation when building

Instead of always checking whether GStreamer is installed in mach's `build_env`, only do this when actually building. Also, use the instance variable to find features and look for the "media-gstreamer" feature instead of looking for !"media-dummy."

Fixes #29797.

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #29797
- [x] These changes do not require tests because they are changes to the build scripts.

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-27 15:33:06 +02:00
Martin Robinson
3fcff73f4d Only check the GStreamer installation when building
Instead of always checking whether GStreamer is installed in mach's
`build_env`, only do this when actually building. Also, use the instance
variable to find features and look for the "media-gstreamer" feature
instead of looking for !"media-dummy."

Fixes #29797.
2023-05-27 12:31:06 +02:00
bors-servo
ae23298403
Auto merge of #29792 - mukilan:fix-layout-2020-crashes, r=mrobinson
Fix layout 2020 crashes

<!-- Please describe your changes on the following line: -->

This PR contains (temporary) fixes for two issues discovered in layout-2020.

1. servo crashing due to 'already mutably borrowed' error when loading 'https://mozdevs.github.io/servo-experiments/experiments/bookshelf/'
2. Dev builds crashing when loading servo.org, but not in release mode.

For the first issue, when rendering a page containing an iframe, layout 2020 creates parallel 'Layout' threads which share workers in the stylo thread pool. Because of the way the 'StyleSharingCache' structures are designed using TLS for storage of LRU cache, this leads to a double borrow of the cache when both layout threads run concurrently.

More details about the issue can be found here: https://gist.github.com/mukilan/ed57eb61b83237a05fbf6360ec5e33b0

This PR is a workaround until we find a more elegant/optimal design that also can work for gecko. The fix for now is simply to not allow multiple layouts in parallel.

For the second issue, it seems like the style pool threads overrun their allocated stack space more quickly in debug mode than in release mode. Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1376883 it seems the stack size was chosen after several experiments. It is possible the results of those experiments are no longer valid.

The temporary workaround is to increase the stack size of the worker threads to avoid layout 2020 builds from crashing when servo.org is loaded, until we can confirm the theory and implement a more robust solution.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)

<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because they fix crashing behaviour

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-26 17:23:08 +02:00
Mukilan Thiyagarajan
17238b56a1 Layout-2020: Fix debug mode crash for servo.org
servo with layout-2020 segfaults when loading servo.org
in debug build, but works fine in release build.

It seems like the style pool threads seem to run
overrun allocated stack space more quickly than
in release mode.

Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1376883
it seems the stack size was chosen base on several
experiments. It is possible the results of those experiments
are no longer valid.

This is a temporary workaround to avoid layout 2020
builds from crashing when servo.org is loaded, until
we can confirm the theory and implement a more robust
solution.

Signed-off-by: Mukilan Thiyagarajan <me@mukilan.in>
2023-05-26 20:09:50 +05:30
Mukilan Thiyagarajan
05239f879e Layout-2020: Serialize access to stylo thread pool.
When rendering a page containing an iframe, layout 2020
creates parallel 'Layout' threads which share workers
in the stylo thread pool.

Because of the way the 'StyleSharingCache' is designed
using TLS for storage of the LRU cache, this leads to
a double borrow of the cache when both layout threads
run concurrently.

More details about the issue can be found here:
https://gist.github.com/mukilan/ed57eb61b83237a05fbf6360ec5e33b0

This PR is a workaround until we find a more elegant/optimal
design that also can work for gecko. The fix for now is
simply to not allow multiple layouts in parallel.

Signed-off-by: Mukilan Thiyagarajan <me@mukilan.in>
2023-05-26 20:09:50 +05:30
bors-servo
cd3bf5b529
Auto merge of #29794 - mrobinson:clean-up-cross-compilation, r=jdm
Clean up cross-compilation and features

Integrate cross-compilation and media-stack handling into the
`build_like_command_arguments` decorator. This removes a lot of
repetition in the code and standardizes how targets are selected for all
similar commands.

Now cross compilation targets, feature flags, and helper variables are
stored in the CommandBase instance. This also avoids having to
continuously pass these arguments down to functions called by the
commands.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because they do not change behavior.

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-26 15:36:52 +02:00
bors-servo
43ebf6c82c
Auto merge of #29798 - jdm:per-interface-codegen, r=jdm
Extract bodies of generated binding helpers into common code

This is part of fixing #29770, by extracting common behaviour that [will be called](https://searchfox.org/mozilla-central/rev/2d678a843ceab81e43f7ffb83212197dc10e944a/dom/bindings/BindingUtils.cpp#3744) from new code in interface.rs.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] There are tests for these changes
2023-05-26 08:18:51 +02:00
Josh Matthews
123937a500 Formatting. 2023-05-26 01:24:47 -04:00
Josh Matthews
7d9dc458af Use an enum to pass the index value for interfaces/protos. 2023-05-26 01:21:31 -04:00
Josh Matthews
747a99d3f6 Extract bodies of DefineDOMInterface and GetProtoObject/GetConstructorObject out of generated bindings. 2023-05-26 01:02:38 -04:00
bors-servo
867326c46a
Auto merge of #29772 - Loirooriol:sync, r=mrobinson
Backport several style changes from Gecko (2)

<!-- Please describe your changes on the following line: -->
This continues #29748.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)

<!-- Either: -->
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because ___

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-25 19:20:50 +02:00
bors-servo
5af3d16cb3
Auto merge of #29784 - mrobinson:compositor-side-scroll-tree-cleanup-send-display-list, r=atbrakhi
Clean up and document the `send_display_list` interface

This moves more members to the CompositorDisplayListInfo struct, which now holds all miscellaneous, non-WebRender data when sending display lists. It also documents what each things sent with a display list does.

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because they do not change behavior.

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-25 16:58:52 +02:00
Martin Robinson
debc37a7d3
Clean up cross-compilation and features
Integrate cross-compilation and media-stack handling into the
`build_like_command_arguments` decorator. This removes a lot of
repetition in the code and standardizes how targets are selected for all
similar commands.

Now cross compilation targets, feature flags, and helper variables are
stored in the CommandBase instance. This also avoids having to
continuously pass these arguments down to functions called by the
commands.
2023-05-25 16:58:05 +02:00
bors-servo
e9a7787a4d
Auto merge of #29781 - mrobinson:bootstrap-gstreamer, r=mukilan
Implement `bootstrap-gstreamer` for all platforms

This change makes it so that the Platform classes can now handle installing GStreamer dependencies and properly setting up the environment including when cross-compiling. For Windows and Linux, prepackaged GStreamer is now installed into `target/dependencies/gstreamer` when not installed system-wide. In addition this change:

1. The Environment path append helper is moved to `util.py` and a new `prepend` version is added.
2. `set_run_env` and `build_dev` functions are combined and include more code from callers so environment setup is more often in the same place. Now code that used to call `set_run_env` calls `build_dev` and then `os.environ.update(...)`. We can further refine this with the `is_build` argument later.
4. Python typing information is added in many places.

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #25335
- [x] These changes do not require tests because they are to the build scripts.

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-25 13:43:45 +02:00
bors-servo
e5004aaab1
Auto merge of #29793 - servo:layout-2020-nightly-builds, r=atbrakhi
Upload nightly builds for layout2020 variant

<!-- Please describe your changes on the following line: -->
We'd like to start offering servo nightly builds with layout 2020 engine so that users can test the new layout without building servo. These new builds will be offered in addition to the current 2013 builds until we switch over to 2020 as the default.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)

<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because they extend nightly CI job.

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
2023-05-25 11:26:07 +02:00
Martin Robinson
7d20f16d9f
Implement bootstrap-gstreamer for all platforms
This change makes it so that the Platform classes can now handle
installing GStreamer dependencies and properly setting up the
environment including when cross-compiling. For Windows and Linux
is now installed into `target/dependencies/gstreamer` when not installed
system-wide. In addition:

1. Creating and moving existing environment path append helpers to
   `util.py`.
2. Combining the `set_run_env` and `build_dev` functions and moving
   some outside code into them so that it can be shared. Now code that
   used to call `set_run_env` calls `build_dev` and then
   `os.environ.update(...)`.
3. Adding Python typing information in many places.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
2023-05-25 08:22:21 +02:00
bors-servo
a56abe44e0
Auto merge of #29790 - mrego:readme-binary-build, r=jdm
Remove outdated note on README (fix #29786)

This patch just removes a note about building only servo vs libsimpleservo binaries, as that's no longer working.
2023-05-25 05:03:10 +02:00
Oriol Brufau
05d697323d Update tests 2023-05-24 19:13:43 +02:00
Oriol Brufau
e35533196f Avoid complaints from ./mach test-tidy 2023-05-24 18:32:43 +02:00
Emilio Cobos Álvarez
55d0636fe5 style: Remove layout.css.is-and-where-better-error-recovery.enabled
We shipped this in 84

Differential Revision: https://phabricator.services.mozilla.com/D123623
2023-05-24 18:32:43 +02:00
Emilio Cobos Álvarez
fa840e1666 style: Implement transform: perspective(none)
Differential Revision: https://phabricator.services.mozilla.com/D123350
2023-05-24 18:32:43 +02:00
Nicolas Silva
ce45f68d9c style: Update euclid in stylo
Differential Revision: https://phabricator.services.mozilla.com/D85762
2023-05-24 18:32:43 +02:00
Emilio Cobos Álvarez
db1ada85dc style: Workaround GCC-calling-into-LLVM ABI issue by making GenericFontFamily larger
This enum being a bit larger doesn't cause many common data structures
to grow, so this should be fine.

Differential Revision: https://phabricator.services.mozilla.com/D123146
2023-05-24 18:32:43 +02:00
Matt Woodrow
79893116e7 style: Return an infinite perspective in TransformOperation::Perspective::to_animated_zero
Differential Revision: https://phabricator.services.mozilla.com/D122919
2023-05-24 18:32:42 +02:00
Emilio Cobos Álvarez
26c5db6a6e style: Respect transparent and system color border colors in forced-colors mode
Differential Revision: https://phabricator.services.mozilla.com/D123111
2023-05-24 18:32:42 +02:00
Emilio Cobos Álvarez
f31f541125 style: Add a use counter for content-visibility
Differential Revision: https://phabricator.services.mozilla.com/D122873
2023-05-24 18:32:42 +02:00
Oriol Brufau
6ea5fdc40e Further changes required by Servo 2023-05-24 18:32:42 +02:00
Mats Palmgren
0cb64672f4 style: [css-fonts] Implement 'font-synthesis: small-caps'
Differential Revision: https://phabricator.services.mozilla.com/D114313
2023-05-24 18:32:42 +02:00
Oriol Brufau
fd3d12e214 Further changes required by Servo 2023-05-24 18:32:41 +02:00
Barret Rennie
c241182d09 style: Support color-mix() in non-sRGB color spaces
Out of gamut colours are currently clipped into sRGB.

Differential Revision: https://phabricator.services.mozilla.com/D120561
2023-05-24 18:32:41 +02:00
Oriol Brufau
d564f200aa Further changes required by Servo 2023-05-24 18:32:41 +02:00