Timothy Flynn
88b41d4d76
LibWeb: Re-import shadow DOM property reflection tests
...
The property-reflection.html test was partially split into a second file
recently, property-reflection-imperative-setup.html. Let's re-import to
ensure we have the latest. See:
2518df1
2025-04-25 01:20:12 +01:00
Andreas Kling
0553bcb35b
LibWeb: Simplify standalone CSS math functions when used outside calc()
...
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Math functions like abs(), clamp(), round(), etc, can be used by
themselves in property values, without wrapping them in calc().
Before this change, we were neglecting to run calc simplification on the
generated calculation node trees. By doing that manually after parsing a
standalone math function, we score at least a couple hundred WPT points.
2025-04-24 20:38:00 +02:00
Jelle Raaijmakers
6f800caeaa
LibWeb: Don't mess up the order of nodes when wrapping inline contents
...
Whenever we introduce a block element in a container that at that point
has only had inline children, we create an anonymous wrapper for all the
inline elements so we can keep the invariant that each container
contains either inline or non-inline children. For some reason, we
ignore all the out-of-flow nodes since they are layed out separately and
it was thought that this shouldn't matter.
However, if we are dealing with inline blocks and floating blocks, the
order of the inline contents _including_ out-of-flow nodes becomes very
important: floating blocks need to take the order of nodes into account
when positioning themselves.
Fix this by simply hoisting the out-of-flow nodes into the anonymous
wrapper as well.
Fixes the order of blocks in #4212 . The gap is still not present.
2025-04-24 19:12:50 +02:00
Andreas Kling
d33445a4ea
LibWeb: Notify ObservableArray observer about deletions in clear()
...
Another +1 WPT subtest!
2025-04-24 18:26:54 +02:00
Andreas Kling
cf34a7bb32
LibWeb: Invalidate owner sheet on add/remove in CSSStyleProperties
...
Fixes at least 2 WPT subtests.
2025-04-24 18:26:54 +02:00
Andreas Kling
fbb3b06462
LibWeb: Don't assume table caption box wants to create a BFC
...
Instead, use the generic create_independent_formatting_context_if_needed
so that unusual situations like image-as-table-caption don't crash.
This logic clearly needs more work, but let's at least do better than
crashing. This gives us 26 new subtest passes on WPT.
2025-04-24 18:26:54 +02:00
Andreas Kling
f7a7cd9b2b
LibWeb: Prevent infinite recursion on abspos w/ intrinsic max-size
...
We were incorrectly deciding that abspos elements shouldn't treat many
max-width and max-height values as `none`. My best understanding is that
this was a hack in 2023 for an issue that has been solved since then.
By removing the incorrect short-circuit, we stop at least one WPT test
from crashing due to infinite recursion and get ourselves +34 passes.
2025-04-24 18:26:54 +02:00
Andreas Kling
e5d62e9915
LibWeb: Track whether HTMLLinkElement was enabled when created by parser
...
This information is needed by the script-blocking style sheet logic, and
its absence was causing a WPT test to crash.
2025-04-24 18:26:54 +02:00
Andreas Kling
1772adb600
LibWeb: Don't crash on non-finite values in CSS clamp() function
...
Stops a WPT test from crashing, giving us 29 new subtest passes. :^)
2025-04-24 18:26:54 +02:00
Andreas Kling
2f76b24b89
LibWeb: Throw on deleting CSS @namespace rule in disallowed conditions
...
Fixes one(!) WPT test :^)
2025-04-24 18:26:54 +02:00
Tim Ledbetter
64577ad704
LibWeb: Allow multiple values for the transition-duration property
2025-04-23 21:02:59 +01:00
Tim Ledbetter
1ca9f2a44d
LibWeb: Allow multiple values for the transition-delay property
2025-04-23 21:02:59 +01:00
Tim Ledbetter
c5f1f36119
LibWeb: Allow multiple values for transition-timing-function property
2025-04-23 21:02:59 +01:00
Tim Ledbetter
1f8f3804a3
LibWeb: Allow transition-property with multiple values
2025-04-23 21:02:59 +01:00
Andrew Kaster
86c756a589
LibWeb: Import WebAssembly jsapi cross-realm torture tests from WPT
...
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
The failures here are due to us not actually implementing the
error types yet.
2025-04-23 14:09:09 +02:00
Sam Atkins
658569b533
LibWeb/CSS: Use CSSRule's context to parse new child rules
...
Keep track of which CSSRule owns a CSSRuleList, and then use that to
produce a stack of RuleContexts for the CSS Parser to use.
There are certainly other places we should do this!
2025-04-23 10:55:45 +01:00
Sam Atkins
3d1665cc80
LibWeb/CSS: Parse nested declarations in insert_a_css_rule()
...
The spec algorithm changed at some point to support nested declarations,
but I only just noticed. The subtest regression is one we were passing
incorrectly.
2025-04-23 10:55:45 +01:00
Tim Ledbetter
8a20899382
LibWeb: Canonicalize color space when parsing color-mix() function
...
This amounts to replacing the "xyz" color space with "xyz-d65".
2025-04-23 11:26:27 +02:00
Tim Ledbetter
04d7228c51
LibWeb: Implement interpolation of repeatable lists
2025-04-23 09:13:45 +01:00
Tim Ledbetter
16e83f0b35
Tests: Remove some animation tests from the ignore list
...
These tests are relevant to the fixes being made in later commits
2025-04-23 09:13:45 +01:00
Shannon Booth
d01ee20b67
LibWeb/HTML: Update spec comments for location hash setter
...
Corresponds to open merge request in HTML spec of whatwg/html#11245
and a WPT test change of web-platform-tests/wpt#52085 .
2025-04-23 08:24:29 +01:00
Glenn Skrzypczak
d4076ec9fa
LibWeb/HTML: Signal a type change
...
Type changes are now signaled to radio buttons. This causes other radio
buttons in the group to be unchecked if the input element is a checked
radio button after the type change.
2025-04-23 07:20:02 +01:00
Glenn Skrzypczak
5f75558646
LibWeb/HTML: Correctly reset selection on type change
...
The selection now gets reset to the beginning of the control if the
type changes from an unselectable type to a selectable type.
2025-04-23 07:20:02 +01:00
Shannon Booth
e124ef52ee
LibJS+LibWeb: Set [[CanBlock]] false to Agent for window agent
...
similar-origin window agents have the [[CanBlock]] flag set to false.
Achieve this by hooking up JS's concept with an agent to HTML::Agent.
For now, this is only hooked up to the similar-origin window agent
case but should be extended to the other agent types in the future.
2025-04-22 11:50:35 -04:00
Tim Ledbetter
6f5b107fcc
LibWeb: Resolve absolute calc() values in color functions
...
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Currently, `calc()` values with relative units are not handled
correctly and will output an error to the console.
2025-04-22 12:20:26 +02:00
Tim Ledbetter
9cf04f40f6
LibWeb: Implement the color-mix() function
...
This takes 2 color values and returns the result of mixing them by a
given amount.
2025-04-22 12:19:51 +02:00
Shannon Booth
a14711a9d7
LibWeb/Bindings: Use realm's globalObject as thisValue if nullish
...
We were missing the step to use realm's global object if thisValue
was nullish. This is very trivial to fix, as `impl_this` already
handles everything as it should, allowing us to also remove the
special casing for WindowProxy.
2025-04-22 12:17:14 +02:00
Shannon Booth
dcc7fe3663
LibWeb/Tests: Import WPT test global-object-implicit-this-value
2025-04-22 12:17:14 +02:00
Tim Ledbetter
4283c73d02
LibWeb: Return correct computed value for lab-like and lch-like colors
2025-04-20 16:51:20 +02:00
Tim Ledbetter
e860dd4f65
LibWeb: Implement serialization of lch-like color values
2025-04-20 16:51:20 +02:00
Tim Ledbetter
5074d90888
LibWeb: Implement serialization of lab-like color values
2025-04-20 16:51:20 +02:00
Glenn Skrzypczak
9c758e5f65
LibWeb/HTML: Correctly parse milliseconds in time inputs
...
This commit brings the way we parse time inputs closer to the spec by
no longer ignoring milliseconds in time strings.
2025-04-19 07:09:36 -04:00
Glenn Skrzypczak
d37d0e4b59
LibWeb: Prevent crash when encoding into detached buffer
...
This handles the case where data is encoded into a detached buffer.
2025-04-19 07:08:12 -04:00
Glenn Skrzypczak
c0cbd439a2
LibWeb/HTML: Dispatch command events
...
Command events are now dispatched when buttons are activated. The
special commands for popovers and dialogs are also implemented.
2025-04-18 12:09:57 +01:00
Glenn Skrzypczak
cce7d8c0fb
LibWeb/HTML: Implement CommandEvent class
...
This implements the `CommandEvent` class.
2025-04-18 12:09:57 +01:00
Glenn Skrzypczak
ffe0b05abd
LibWeb/HTML: Add the commandForElement attribute to the button element
...
This commit adds the commandForElement attribute to the
button element. Executing commands is not implemented yet.
2025-04-18 12:09:57 +01:00
Glenn Skrzypczak
b2db07f002
LibWeb/HTML: Add the command attribute to the button element
...
This commit adds the getter and setter for the command attribute to the
button element. Executing commands is not implemented yet.
2025-04-18 12:09:57 +01:00
Timothy Flynn
60f667fc5a
LibWeb: Use (de)serialization with transfer AOs for structured cloning
...
This is important, for example, to detach transferred array buffers.
2025-04-17 12:13:13 -04:00
Timothy Flynn
0c309d4660
LibWeb: Import detached ReadableStream buffer tests
2025-04-17 12:13:13 -04:00
Vishal Biswas
eb165554e1
LibWeb: Use double type in ProgressEvent
...
loaded and total should be double as per spec
https://xhr.spec.whatwg.org/#progressevent
2025-04-17 08:28:47 -04:00
Tim Ledbetter
ca200142e9
LibWeb: Don't construct stylesheet when modifying CSSStyleSheet rules
...
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Previously, `CSSStyleSheet.replace()` and `CSSStyleSheet.replaceSync()`
parsed the given CSS text into a temporary stylesheet object, from
which a list of rules was extracted. Doing this had the unintended
side-effect that a fetch request would be started if the given CSS text
referenced any external resources. This fetch request would cause a
crash, since the temporary stylesheet object didn't set the constructed
flag, or constructor document. We now parse the given CSS text as a
list of rules without constructing a temporary stylesheet.
2025-04-16 22:03:12 +01:00
Timothy Flynn
955f6fc9cb
LibWeb: Fulfill TransformStream promises with the correct "reason"
...
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
We need to use the reason provided to the abort algorithm, not the one
from the resolved cancel promise (which will be undefined).
2025-04-16 13:15:33 -04:00
Timothy Flynn
f6438e83b8
LibWeb: Import TransformStreams reentrant strategies tests
2025-04-16 13:15:33 -04:00
Timothy Flynn
1673f6783c
LibWeb: Import TransformStream error tests
2025-04-16 13:15:33 -04:00
Timothy Flynn
3fdad8fe22
LibWeb: Update spec steps for closing TransformStreams
...
This was actually an older change to the Streams spec that we missed
when we implemented TransformStreams. This fixes a crash in the imported
WPT tests.
See: 007d729
2025-04-16 11:39:25 -04:00
Timothy Flynn
b1a189acfa
LibWeb: Use WebIDL::invoke_promise_callback in Streams where appropriate
...
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
This avoids an issue where rejected JS::Promise types were converted to
a resolved WebIDL::Promise type.
2025-04-15 20:33:30 -04:00
Timothy Flynn
b324b876f2
LibWeb: Import ReadableStreamTee tests
2025-04-15 20:33:30 -04:00
Timothy Flynn
df1e51b80b
LibWeb: Use the correct realm when initializing streams
...
There is an open issue to clarify exactly what realm is to be used when
creating promises. There are surely many more places we will need to
update to use the correct realm (which will be the realm of `this`'s
relevant global object).
2025-04-15 20:33:11 -04:00
Timothy Flynn
1abf5ce843
LibWeb: Import ReadableStream global tests
2025-04-15 20:33:11 -04:00
Sam Atkins
9f333c424c
LibWeb/CSS: Ensure a font source format() only contains one string/ident
2025-04-15 21:40:41 +02:00