1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-26 02:05:08 +00:00
Commit graph

6263 commits

Author SHA1 Message Date
Aliaksandr Kalenik
608a730bd6 LibWeb: Use Core::Timer for style and layout update timers in Document
Fixes leaking of DOM::Document by capturing it into JS::SafeFunction
callback when using Platform::Timer for style and layout update timers.
2023-07-20 15:01:52 +02:00
Timothy Flynn
9d7215c636 LibJS+LibWeb: Move IteratorOperations.h AOs to Iterator.h
Rather than splitting the Iterator type and its AOs into two files,
let's combine them into one file to match every other JS runtime object
that we have.
2023-07-19 14:11:43 +01:00
Sam Atkins
dd1156fb17 LibWeb: Update spec comments for math function determined types
The spec was corrected here:
de4119a6e3
2023-07-19 11:12:53 +01:00
Timothy Flynn
a7a109062a LibJS: Rename IterableToList to IteratorToList
This is an editorial change in the ECMA-262 spec. See:
ff60140

In doing so, as the new name implies, callsites are updated to pass in
an IteratorRecord themselves, rather than an iterable value.
2023-07-19 06:56:51 +02:00
Timothy Flynn
5703833116 LibJS+LibWeb: Refactor GetIterator to use GetIteratorFromMethod
This is an editorial change in the ECMA-262 spec. See:
956e5af

This splits the GetIterator AO into two AOs, to remove some recursion
and to (soon) remove optional parameters.
2023-07-19 06:56:51 +02:00
Timothy Flynn
e5bcd6c731 LibWeb: Implement the HostGetImportMetaProperties hook 2023-07-18 17:03:21 +01:00
zhiyuang
97130a4e66 LibWeb: More correctly paint joins between borders
The refactor of the border painting mainly to handle:
1. Single border with minor border radius.
2. Different border widths and border colors joined situations.
This refactor only apply to solid border.

The main differece is to use Path.fill to paint each border,
not fill_rect anymore. There's a special case need to consider.
The Path.fill will leave shared edge blank between two borders.
To handle this, we decide to combine the borders with same color
to paint together.
2023-07-18 14:51:13 +01:00
Andreas Kling
ac124fbaae LibWeb: Resolve flex item percentages against used flex container sizes
Once we've resolved the used flex item width & height, we should allow
percentage flex item sizes to resolve against them instead of forcing
flex items to always treat percentages as auto while doing intrinsic
sizing layout.

Regressed in 8dd489da61.
2023-07-18 06:04:55 +02:00
Sebastian Zaha
92b56ded02 LibWeb: Fix whitespace getting trimmed incorrectly
Whitespace at the end of line should only be trimmed when
'white-space' is set to 'normal', 'nowrap', or 'pre-line'.
2023-07-17 21:47:34 +02:00
Aliaksandr Kalenik
a8587fe54e LibWeb: Add support for "place-items" CSS property
Adds support for place-items property which allows to specify both
align-items and justify-items in a single declaration.
2023-07-17 18:58:05 +02:00
Sebastian Zaha
a74c56bc1b LibWeb: Remove unused code
The LineBoxFragment::Type enum was used earlier in the inline layouting,
but in the current algorithm there is a single type of LineBoxFragment.
2023-07-17 18:54:54 +02:00
Alan Kemp
3fd870a429 LibWeb: Create EdgeStyleValue for BackgroundPositionXY with no offset
When specifying either `background-position-x: right` or
`background-position-y: bottom` without an offset value no
EdgeStyleValue was created.

However, the spec says the offset should be optional.

Now, if you do not provide an offset, it creates the EdgeStyleValue
with a default offset of 0 pixels.
2023-07-17 14:53:52 +01:00
Andreas Kling
eb1f61f3b1 LibWeb: Fix logic typo in URL::parse()
I couldn't find a way to hit this function with our current testing
infrastructure, but since it breaks many websites, let's just get a
fix in immediately.

Regressed in 6fecd8cc44.
2023-07-17 09:50:49 +02:00
Andreas Kling
8dd489da61 LibWeb: Fully resolve min- and max-sizes for flex items
We do this by piggybacking on FormattingContext helpers instead of
reinventing the wheel in FlexFormattingContext.

This fixes an issue where `min-width: fit-content` (and other
layout-dependent values) were treated as 0 on flex items.

This makes the cookie banners look okay on https://microsoft.com/ :^)
2023-07-17 08:40:15 +02:00
Andrew Kaster
5c2c412318 Meta: Bind WritableStreamDefaultController to JS
This was missed in 868cd95069.
2023-07-17 00:00:49 +01:00
Aliaksandr Kalenik
07f451044b LibWeb: Fix inline-block percentage height calculation
If an inline-block has a percentage height that relies on the auto
height of the containing block, it should always resolve to the
automatic height of the box, regardless of the percentage value. This
change may seem confusing, but it aligns with the behavior of other
engines.
2023-07-16 15:00:30 +02:00
Aliaksandr Kalenik
3c6fdde466 LibWeb: Fix hit testing for fixed position nodes
Subtract the scroll offset translation from the position when checking
for intersection between boxes within fixed position nodes.
2023-07-15 19:57:17 +01:00
Shannon Booth
2b46e6f664 Everywhere: Update copyrights with my new serenityos.org e-mail :^) 2023-07-15 16:21:29 +02:00
Andreas Kling
2887976ce9 LibWeb: Fully resolve max-width values on inline-block elements
This fixes an issue where `max-width: fit-content` (and other
layout-dependent values) were treated as 0 on inline-blocks.
2023-07-15 12:30:07 +02:00
Kenneth Myhra
d4f729a6d3 LibWeb: Implement TransforStream's constructor 2023-07-15 11:59:39 +02:00
Kenneth Myhra
7117cb7a35 LibWeb: Add set_up_transform_stream_default_controller_from_transformer 2023-07-15 11:59:39 +02:00
Kenneth Myhra
f7c532d093 LibWeb: Add AO set_up_transform_stream_default_controller() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
86455bbb74 LibWeb: Add AO initialize_transform_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
a52f9970bc LibWeb: Add AO create_readable_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
8e6b386ff7 LibWeb: Add AO initialize_readable_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
f91c150cfc LibWeb: Add AO transform_stream_default_source_pull_algorithm() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
894f1e9d62 LibWeb: Add AO create_writable_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
7d8f24c227 LibWeb: Add AO initialize_writable_stream() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
641b9edd89 LibWeb: Add AO transform_stream_default_sink_close_algorithm() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
48921add86 LibWeb: Add AO transform_stream_default_sink_abort_algorithm() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
18aa588968 LibWeb: Add AO transform_stream_default_sink_write_algorithm() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
11c0600729 LibWeb: Add AO transform_stream_default_controller_perform_transform() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
4d4fc53f5c LibWeb: Implement TransformStreamDefaultController::terminate() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
e1740938fc LibWeb: Add AO transform_stream_default_controller_terminate() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
4ae82983a4 LibWeb: Implement TransformStreamDefaultController::enqueue() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
e028918a64 LibWeb: Add AO transform_stream_default_controller_enqueue() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
d2236e5ca5 LibWeb: Add AO readable_stream_default_controller_has_backpressure() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
2d0a2756b4 LibWeb: Implement TransformStreamDefaultController::error() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
9efcc01387 LibWeb: Add AO transform_stream_default_controller_error() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
69fb6f15f9 LibWeb: Add AO transform_stream_error() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
ad73c03ea3 LibWeb: Add AO transform_stream_error_writable_and_unblock_write() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
91f58eb220 LibWeb: Add AO transform_stream_set_backpressure() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
d8d0e8a6ea LibWeb: Add AO transform_stream_default_controller_clear_algorithms() 2023-07-15 11:59:39 +02:00
Kenneth Myhra
0091a60448 LibWeb: Add TransformStreamDefaultController scaffolding
This adds the scaffolding of TransformStreamDefaultController so we can
start implementing the necessary abstract operations for it.
2023-07-15 11:59:39 +02:00
Kenneth Myhra
f1d69d789b LibWeb: Add TransformStream scaffolding
This adds the scaffolding of TransformStream so we can start
implementing the necessary abstract operations for it.
2023-07-15 11:59:39 +02:00
Kenneth Myhra
12ff48047f LibWeb: Add Transformer API
This adds the Transformer API which the TransformStream() constructor
accepts as its first argument.
2023-07-15 11:59:39 +02:00
Andreas Kling
3ec9fd0aae LibWeb: Resolve calc() values in CSS transform
There are two parts to this fix:

- First, StyleProperties::transformations() would previously omit calc()
  values entirely when returning the list of transformations. This was
  very confusing to StackingContext which then tried to index into the
  list based on faulty assumptions. Fix this by emitting calc values.

- Second, StackingContext::get_transformation_matrix() now always calls
  resolve() on length-percentages. This takes care of actually resolving
  calc() values. If no reference value for percentages is provided, we
  default to 0px.

This stops LibWeb from asserting on websites with calc() in transform
values, such as https://qt.io/ :^)
2023-07-15 11:35:16 +02:00
Sam Atkins
8fc545992d LibWeb: Use generated math-function-parsing code 2023-07-15 10:23:33 +02:00
Sam Atkins
618c0402a7 LibWeb: Generate parsing code for CSS math functions 2023-07-15 10:23:33 +02:00
Sam Atkins
780998b3d5 LibWeb: Add CSSNumericType::matches_dimension()
This isn't a spec algorithm, but is useful when type-checking parameters
to math functions.
2023-07-15 10:23:33 +02:00