Commit graph

9653 commits

Author SHA1 Message Date
cathiechen
cb275e086c
Implement StaticRange (#31809)
* Add DOM interface for AbstractRange

* Add DOM interface for StaticRange

* Update WPT tests for StaticRange-constructor.html

* Fix formatting

* Add AbstractRange & StaticRange in interfaces.html

* rebased the code and fixed the failures

Signed-off-by: Cathie Chen <cathiechen@igalia.com>

* update the expected result in idlharness.window.js.ini file

* Addressed the code review comments

* updae the test result of legacy layout

---------

Signed-off-by: Cathie Chen <cathiechen@igalia.com>
Co-authored-by: Nipun Garg <nipung271@gmail.com>
2024-03-22 15:02:01 +00:00
Richard Dushime
b22281d94f
Fix WPT reference no_red_3x3_monospace_table-ref.xht (#31802)
* Fix WPT reference no_red_3x3_monospace_table-ref.xht

* wpt Update manifest.json
2024-03-21 17:03:55 +00:00
Martin Robinson
841bd91784
layout: Take into account text-indent for justification (#31777)
This change makes it so that when calculating the space added between
words for justification, text-indent is taken into account.

Fixes #31775.
2024-03-21 15:58:03 +00:00
Oriol Brufau
ecabdc2583
Don't trim leading whitespace of anonymous table cells (#31803)
A sequence of whitespace shouldn't generate an anonymous table row/cell,
but we can't just throw away the leading whitespace, because afterwards
we may encounter some other content, and then the leading whitespace
should appear in the cell (noticeable with e.g. `white-space: pre`).
2024-03-21 11:48:39 +00:00
Martin Robinson
2ec995a56f
layout: Enable text-shadow (#31734)
`text-shadow` is enabled for legacy layout, so this just extends support
to the modern layout system.
2024-03-19 10:29:20 +00:00
Samson
c25069161d
Add pseudo async Create*PipelineAsync methods (#31695)
* Create fake CreatePipelineAsync

* Update WebGPU CTS

* Update expectations and disable some webgpu tests
2024-03-19 05:39:42 +00:00
Oriol Brufau
c07484fcb6
Update Stylo to 2023-09-01 (#31609)
* Update Stylo to 2023-09-01

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

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

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

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

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

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

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

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

* Update test expectations
2024-03-18 13:52:40 +00:00
Servo WPT Sync
52c2b1e3a8
Sync WPT with upstream (17-03-2024) (#31715)
* Update raw lags path for WPT import

I forgot to do this in #31616

* Update web-platform-tests to revision b'298d1599dbf6255aea63506daaa1702ff0c4fdc5'

---------

Co-authored-by: Samson <16504129+sagudev@users.noreply.github.com>
2024-03-17 10:51:07 +00:00
Smitty
d2dcb20bea
Implement console.count/countReset (#31635)
* Implement console.count/countReset

* Address review comment

Signed-off-by: syvb <me@iter.ca>

---------

Signed-off-by: syvb <me@iter.ca>
2024-03-17 09:50:40 +00:00
Oriol Brufau
82128d3838
Don't null out the baselines of anonymous tables (#31704) 2024-03-15 20:46:41 +00:00
Martin Robinson
47a4ce467f
layout: Add basic support for getClientRects() queries (#31696)
This adds basic support for `getClientRects()` by sharing code with the
implementation of `getBoundingClientRect()`. In addition to sharing
code, it also shares all of the bugs. Primarily, scrolilng positions are
not taken into account when return boundary rectangles.
2024-03-15 17:20:47 +00:00
Oriol Brufau
39f660f520
Allow pre-wrap whitespace to hang at the end of the line (#31681)
* Allow pre-wrap whitespace to hang at the end of the line

* Use bitflags
2024-03-15 16:12:41 +00:00
Oriol Brufau
99c14c83ed
Obey white-space when intrinsically sizing an IFC (#31660)
The old logic was assuming that all whitespace was a break opportunity,
and that no newlines would be preserved.

Note that text shaping considers the advance of a newline to be the same
as a space. This was problematic because if we have a segment with a
preserved space and newline, only the advance of the space should
contrinute to the size of the block container. Therefore, I'm changing
the breaker logic in other to have newline characters in their own
segment.

Then glyph_run_is_whitespace_ending_with_preserved_newline can just be
renamed to glyph_run_is_preserved_newline.

This patch is still not perfect because it doesn't check allow_wrap(),
so `nowrap` is treated like `normal`, and `pre-wrap` like `pre`.
2024-03-15 12:45:23 +00:00
Oriol Brufau
bc4f1c217d
Implement HTMLStyleElement.disabled attribute (#31682)
https://html.spec.whatwg.org/multipage/#dom-style-disabled
2024-03-14 23:48:29 +00:00
Martin Robinson
ad37a54f59
dependencies: Upgrade to WebRender 0.64 (#31486)
This brings the version of WebRender used in Servo up-to-date with Gecko
upstream. The big change here is that HiDPI is no longer handled via
WebRender. Instead this happens via a scale applied to the root layer in
the compositor. In addition to this change, various changes are made to
Servo to adapt to the new WebRender API.

Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
2024-03-14 17:40:54 +00:00
Martin Robinson
78fe461ff2
layout: Properly parent table-row and table-row-group (#31619)
Put table cell content fragments into a hieararchy of fragments that
include their table row and table row group fragments. This ensures that
things like relative positioning and transforms set on rows and row
groups properly affect cells and cell content.

Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2024-03-14 10:33:42 +00:00
Oriol Brufau
0e78c8114b
Allow finishing anonymous inline-table at the end of inline elements (#31650)
This avoids inserting it outside of its parent.
2024-03-14 09:58:00 +00:00
Oriol Brufau
f3a73dbed3
End ongoing IFC when inserting anonymous block-level table (#31606)
So that the table appears after preceding inline-level contents.
Fixes #31603.
2024-03-13 21:03:06 +00:00
Oriol Brufau
0860deba05
Fix vertical alignment at the root of an IFC (#31636)
At the root of an inline formatting context, we used its vertical-align
in order to compute the strut. That was wrong, since vertical-align
on a block container shouldn't affect the contents, it should only
affect the alignment of the block container (if it's inline-level)
within the parent IFC.

This was only working well if the block container was block-level, since
effective_vertical_align_for_inline_layout returned `baseline` for
block-level boxes.

Instead of the outer display type, this patch changes the logic to check
whether we are at the root of the IFC.
2024-03-13 10:39:01 +00:00
Martin Robinson
716f4a006d
layout: Propagate overflow values from <body> to root element (#31618)
The specification gives instructions for how these values should be
propagated. The other big changs here is that they aren't applied to the
`<body>`.

 Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2024-03-13 09:17:09 +00:00
Daniel Adams
48fa77df67
Gamepad: Align closer to spec and implement missing slots (#31385)
* Implement missing gamepad slots, align to spec more

- Fixes TODO's from initial gamepad implementation
- Adds some missing spec steps

* Only handle gamepad events when pref is enabled

* Return empty list in getGamepads if document not active

* ./mach fmt

* Update getGamepads to return an array instead of GamepadList

* Add spec link for [[exposed]] slot

* Remove failing test expectations for not-fully-active

* A few fixes

- Change should_notify to has_gesture
- Add spec links and TODO to navigator
- Remove unneeded clone from GamepadList::list
- Move gamepadconnected event firing into has_gesture block

* Use queue_with_canceller for tasks and add expects

* Explicitly check for gamepad user gesture

* Move user gesture check into separate function

* Change contains_user_gesture to be a gamepad function

* mach fmt

* Change axis/button threshold constants to be private to module
2024-03-12 12:32:30 +00:00
Martin Robinson
45344dca2b
font_cache: Handle filtering @font-face rules in Servo (#31601)
Instead of letting Stylo filter `@font-face` rules, handle this
filtering in Servo. It doesn't make sense that Stylo knows about what
fonts Servo supports. This also cleans up a bit the way that this is
handled, giving an entire stylesheet of rules to the font cache to
process instead of letting each layout thread walk the rules. This
brings more of the font-related code into the FontCacheThread itself.

This is the first step toward adding WOFF2 support and fixing various
web font related bugs.
2024-03-11 14:47:52 +00:00
Martin Robinson
1d1f239ecc
layout: Enable rendering of conical-gradient and repeating-conical-gradient (#31597)
This also ignores a clippy warning for a new function (and a similar
existing one), until this code can be refactored to use temporary Rust
strutures to carry display list building state.

There are a few new test failures here:

 - FAIL [expected PASS] /css/css-images/image-set/image-set-conic-gradient-rendering.html
 - FAIL [expected PASS] /css/css-images/image-set/image-set-repeating-conic-gradient-rendering.html

 These fail because Servo does not yet support `image-set()`.

 - FAIL [expected PASS] /css/filter-effects/filter-function/filter-function-conic-gradient.html
 - FAIL [expected PASS] /css/filter-effects/filter-function/filter-function-repeating-conic-gradient.html

 These fail because Servo does not support the very early filter effects
 specification.

 - FAIL [expected PASS] /html/canvas/element/manual/fill-and-stroke-styles/conic-gradient-rotation.html
 - FAIL [expected PASS] /html/canvas/element/manual/fill-and-stroke-styles/conic-gradient.html

 These fail because this change only adds support for CSS conical
 gradients. Another set of changes will be necessary to support this for
 Canvas.
2024-03-11 12:58:44 +00:00
Oriol Brufau
de7b9bed85
Take spaces into account in the max-content size of an IFC (#31613)
They were only considered in min-content sizes.
Also avoid some pointless conversions from Au to Length.

Fixes #31605.
2024-03-11 12:01:53 +00:00
Samson
099bb0fa19
Use get_desired_proto in htmlconstructor (#31600)
* Use get_desired_proto in htmlconstructor

* Update expectations
2024-03-10 14:44:25 +00:00
Servo WPT Sync
60e4c1adb4
Update web-platform-tests to revision b'd9a5cc25fc5f520bde022cee67e9e6a6f0b588f9' (#31599) 2024-03-10 05:11:24 +00:00
Martin Robinson
9dff1fecfc
wpt: Start running the WOFF2 tests (#31595)
This is the first step implementing WOFF2 font support in Servo.
2024-03-09 13:29:00 +00:00
Oriol Brufau
fddc7a1390
Align table cell measures in the block axis to Gecko/Blink/WebKit (#31596) 2024-03-09 12:59:57 +00:00
Oriol Brufau
6b5a5147f8
Obey table cell's box-sizing (#31536)
Instead of assuming `box-sizing: content-box`.
2024-03-08 12:07:42 +00:00
Martin Robinson
49ae9bb442
layout: Fix the pseudo for anonymous tables (#31578)
Anonymous tables should not use legacy pseudos, as the legacy layout
engine had them inherit lots of random properites that lead to bad
layout in the new layout engine.

Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2024-03-08 10:32:51 +00:00
Azhar Ismagulova
a5a0e1cb3c
Fix inheritance.sub.html WPT to work on Servo (#31534) 2024-03-08 10:13:39 +00:00
eri
6c7fe31db1
clippy: fix warnings on modules outside components (#31567) 2024-03-07 23:42:39 +00:00
Martin Robinson
602a5092c0
layout: Add support for box-shadow to Layout 2020 (#31453) 2024-03-07 11:13:57 +00:00
Oriol Brufau
007a31c1b5
Enable CSS Tables by default (#31470)
And remove the pref `layout.tables.enabled`.
2024-03-07 10:09:10 +00:00
Oriol Brufau
ea38d8ad6f
Add basic support for enumerating computed styles (#31499)
* Add basic support for enumerating computed styles

The old code was so broken, it was enumerating the style attribute
instead of the computed styles.

So this patch implements a basic enumeration, but not including custom
properties whose computed value is not the guaranteed-invalid value.

* Feedback
2024-03-06 21:43:06 +00:00
Oriol Brufau
dea416eec9
Fix the measures of a table cell (#31513)
The spec doesn't make much sense, this seems to match Gecko and Blink.
2024-03-06 12:42:06 +00:00
Oriol Brufau
a483e2806c
Enable accidentally skipped tests (#31507)
In #31469 I misunderstood how include.ini works (see #31502).
2024-03-05 23:07:42 +00:00
Oriol Brufau
abda22ed63
Fix intrinsic sizing of tables (#31506)
* Fix intrinsic sizing of tables

* Feedback
2024-03-05 20:38:30 +00:00
Mukilan Thiyagarajan
8f3e1bcabe
Enable css-text explicitly in include.ini (#31502)
* Enable `css-text` explicitly in include.ini

The WPT test runner has some strange logic for determining
the key's value for a node like `[css]` or `[css-text]`.
In this logic, if the node doesn't have an explicit value for
a key (here `skip`), then the implicit root node's setting
(i.e key/value pair at the top of the file that is not nested
under a heading) is used as the default fallback value [1]. Only
when the implicit root node doesn't have an explicit value set
does the logic starts looking at the current node's parent [2].

In our case, in `include.ini` the default value for `skip`
is `true` as that is the first line in the file.
Since `[css-text]` doesn't have `skip` set explicitly, the
default value of `true` is used even though the parent's
value is `false`.

[1]: 2bafcf9f18/tests/wpt/tests/tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py (L265)
[2]: 2bafcf9f18/tests/wpt/tests/tools/wptrunner/wptrunner/manifestinclude.py (L59)

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>

* Update text expectations

---------

Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2024-03-05 10:56:18 +00:00
Oriol Brufau
2bafcf9f18
Update manifest (#31497)
In #31481 I forgot to run ./mach update-manifest
2024-03-04 22:44:10 +00:00
Oriol Brufau
e76770202c
Fix column and row measures (#31480)
The min-content size of a table track was >= the max-content size. So
- For the min-content size of a column, now we just use min-inline-size,
  ignoring inline-size and max-inline-size. This matches Gecko, Blink
  and WebKit.
- For the max-content size of a column, we keep matching Gecko.
  Note that Blink and WebKit are different, they ignore max-inline-size.
- For both the min-content and max-content sizes of a row, now we just
  use block-size. This matches Gecko, Blink and WebKit.

Also, if the computed value contains percentages, now we treat it as
the initial value, instead of resolving percentages against zero.
This matches Gecko and Blink, but not WebKit for rows.
2024-03-04 08:10:14 +00:00
Oriol Brufau
a977729a9e
Treat indefinite percentages as auto offsets in relative positioning (#31484)
* Treat indefinite percentages as auto offsets in relative positioning

Instead of just resolving the percentages against zero.
The spec is not clear (https://github.com/w3c/csswg-drafts/issues/9353),
but this way we match Gecko, Blink and WebKit.

* Update test expectations
2024-03-04 08:09:33 +00:00
Oriol Brufau
06aeeeb1f3
Add CSSOM support for CSS layers (#31481)
Instead of just crashing.
2024-03-03 12:47:39 +00:00
Servo WPT Sync
845f503c34
Sync WPT with upstream (03-03-2024) (#31482)
* Update web-platform-tests to revision b'1b88c8bd56a924f9865daa15834d444c55dd7327'

* Update expectations

---------

Co-authored-by: sagudev <16504129+sagudev@users.noreply.github.com>
2024-03-03 09:03:40 +00:00
Oriol Brufau
50fdb82246
Fix size of tables in flow layout (#31455)
* Fix size of tables in flow layout

The contents of a table can make it bigger than what we would expect
from its 'width', 'min-width', 'height' and ' min-height' properties.
Also, 'width: auto' doesn't stretch it to fill the containing block.

We had to refactor the resolution of margins to happen after layout,
otherwise 'auto' margins wouldn't align correctly.

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

* Feedback

* Consistently use `containing_block_for_table` in table layout

* Update test result

---------

Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2024-03-02 01:39:41 +00:00
Oriol Brufau
2b1d342102
Enable more css tests (#31469)
* Enable more css tests

In particular, these directories are no longer skipped:
 - CSS1 (has no tests)
 - css-box (except margin-trim)
 - css-cascade
 - css-display (except run-in)
 - css-easing
 - css-env
 - css-lists
 - css-namespaces
 - css-overflow
 - css-pseudo
 - css-sizing (except aspect-ratio and contain-intrinsic-size)
 - css-syntax
 - reference
 - support (has no tests)

* Sort list properly

* Explicitly list skipped directories

* Do not skip css tests by default

* Add expectations
2024-03-01 07:49:39 +00:00
Smitty
0beec63c86
script: Implement <meta http-equiv="refresh"> (#31468)
* script: Implement <meta http-equiv="refresh">

* Address review comments
2024-03-01 07:42:18 +00:00
Oriol Brufau
5f399139ae
Fix percentages in CSS tables (#31454)
100% is stored as Percent(1.), not as percent(100.)

Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2024-02-29 15:21:14 +00:00
Martin Robinson
127aa657c2
layout: Add initial support for row height distribution (#31421)
This change adds a version of row height distribution that follows the
distribtuion algorithm used for tables in Blink's LayoutNG. This is just
an intermediate step toward implementing a distribution algorithm for
both rows and columns more similar to Layout NG.

The CSS Table 3 specification is often wrong with regard to web
compatability, which is why we have abandoned it in favor of the Layout
NG algorithm for row height distribution.  this work.

Co-authored-by: Oriol Brufau <obrufau@igalia.com>
2024-02-29 12:12:54 +00:00
Oriol Brufau
31cfaf290d
Update Stylo to 2023-07-23 (#31437)
* Update Stylo to 2023-07-23

* to_shmem should be local when working with Stylo

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

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

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

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

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

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

* Update test expectations
2024-02-29 10:23:53 +00:00