Sam Atkins
911274a84d
LibWeb/CSS: Implement ElementCSSInlineStyle.attributeStyleMap
...
Again, this isn't yet very usable, but it does appease some tests.
2025-08-13 09:47:50 +01:00
Sam Atkins
215d8b8076
LibWeb/CSS: Implement CSSStyleRule.styleMap
...
StylePropertyMap is just a stub, so this doesn't yet accomplish much.
2025-08-13 09:47:50 +01:00
Sam Atkins
3bb54ffd59
LibWeb/CSS: Stub out StylePropertyMap
2025-08-13 09:47:50 +01:00
Sam Atkins
c768cc7208
LibWeb/CSS: Implement Element.computedStyleMap()
...
Currently the map doesn't return any values, so it's not very useful,
but this does make a few tests pass just by existing. :^)
2025-08-13 09:47:50 +01:00
Sam Atkins
1620fc5bf6
LibWeb/CSS: Stub out StylePropertyMapReadOnly
...
Nothing yet produces this, and the useful parts of get() and get_all()
will have to wait until type reification is implemented.
2025-08-13 09:47:50 +01:00
Sam Atkins
05884f1d91
LibWeb/CSS: Implement is_a_valid_css_property()
...
Also mark these functions as inline instead of static, to fix a compiler
error about them being unused.
2025-08-13 09:47:50 +01:00
Sam Atkins
882288bf86
LibWeb/CSS: Stub out CSSStyleValue
2025-08-13 09:47:50 +01:00
Sam Atkins
00cadf41d8
LibWeb/CSS: Update UA stylesheet to use :heading
...
Corresponds to part of
65dc095e44
2025-08-13 09:47:28 +01:00
Sam Atkins
503d41d02d
LibWeb/CSS: Implement the :heading
/:heading()
pseudo-class
...
Corresponds to part of
65dc095e44
2025-08-13 09:47:28 +01:00
Sam Atkins
e7890429aa
LibWeb/CSS: Add support for pseudo-classes taking <an+b>#
2025-08-13 09:47:28 +01:00
Sam Atkins
fbae3b824a
LibWeb/CSS: Move An+B matching code into ANPlusBPattern::matches()
...
Not everything we want to match is an "nth element".
Also moved its serialization function's implementation out of the header
while I was at it.
2025-08-13 09:47:28 +01:00
Sam Atkins
a59c15481f
LibWeb/CSS: Prepare pseudo-classes for multiple An+B patterns
...
The upcoming `:heading()` pseudo-class takes multiple comma-separated
An+Bs. Also rename this field as the `:nth-[last-]child()`
pseudo-classes are only a subset of the users.
2025-08-13 09:47:28 +01:00
Lukas Schmidt
c2fc4b25cd
LibWeb: Implement HTMLElement.draggable()
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / 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
2025-08-12 17:15:06 +01:00
Sam Atkins
615034433b
LibWeb/HTML: Add missing if to <details>
attribute_changed() logic
2025-08-12 15:53:51 +02:00
Callum Law
ed6cac89b9
LibWeb: Discard inaccuracies when interpolating rotate
2025-08-12 14:35:02 +01:00
Kenneth Myhra
0dc2fb3781
LibWeb: Update Fetch's compute the redirect-taint concept
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / 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
2025-08-12 07:08:33 -04:00
Kenneth Myhra
e9246c15d9
LibWeb: Pass top-level navigation initiator origin to Fetch's Request
2025-08-12 07:08:33 -04:00
Callum Law
778da0175e
LibWeb: Clamp and censor top-level calc results
...
We now clamp the values returned from calc into the allowed range (where
we know it) and censor any `NaN`s to `0` both when we resolve and when
we serialize.
Gains us 76 WPT passes.
2025-08-11 17:10:04 +01:00
Callum Law
bc2ca96f50
LibWeb: Make signature of CSS::{Percentage,Number}::to_string consistent
...
By making this consistent with the other numeric data type classes we
can simplify cases where we are dealing with variants containing these
types.
2025-08-11 17:10:04 +01:00
Callum Law
3fe3adadc4
LibWeb: Remove unnecessary includes in Percentage.h
2025-08-11 17:10:04 +01:00
Callum Law
f15153ea86
LibWeb: Move formatter for Percentage
into Percentage.h
2025-08-11 17:10:04 +01:00
Callum Law
90948405fc
LibWeb: Return an intermediate struct from CSV::resolve_value
...
Returning this struct will allow us to modify the underlying value of
the `CalculationResult` without requiring us to go through the process
of constructing a whole new `CalculationResult` to return.
2025-08-11 17:10:04 +01:00
Callum Law
6025805f19
LibWeb/Meta: Compute the accepted value range for CalculationContexts
...
This currently only applies to property-level calculation contexts, more
work to be done to generate accepted ranges for other calculation
contexts (e.g. within transformation functions, color functions, etc)
2025-08-11 17:10:04 +01:00
Callum Law
2af7016a77
LibWeb: Rename ValueType::OpenTypeTag to ValueType::OpentypeTag
...
This is the correct capitalization in line with what it is called in the
spec "opentype-tag".
2025-08-11 17:10:04 +01:00
Callum Law
1a9dd70792
LibWeb: Serialize NumberStyleValue with 6 decimal places of precision
2025-08-11 17:10:04 +01:00
Callum Law
7182a537f3
LibWeb: Reduce inaccuracies when creating rotation matrices
...
When converting rotate transform functions `sin` and `cos` can sometimes
be inaccurate. To avoid these inaccuracies we:
- Mod the angle to minimise inaccuracies in the first place.
- Discard tiny (smaller than epsilon) values returned by `sin` and
`cos` as inaccuracies.
This is in line with other browsers (e.g. Gecko and WebKit).
2025-08-11 17:10:04 +01:00
Callum Law
719ab5735e
LibWeb: Avoid addition to infinity when rounding calc'd z-index
2025-08-11 17:10:04 +01:00
Andreas Kling
bd7599ccfc
LibCore: Remove macro-generated EventReceiver::try_create(...) factories
...
We can just use the infallible factory everywhere instead.
2025-08-11 16:55:25 +02:00
Andreas Kling
dfe776b722
WebDriver: Stop using the ancient Core::EventReceiver parent/child API
...
Before this change, clients were kept alive by making them children of
the TCPServer object. This ownership model is going away (and this was
the only remaining use of it!) so let's just put the clients in a hash
table instead.
2025-08-11 16:55:25 +02:00
Tete17
cf211cf99a
LibWeb: Migrate TrustedTypes to Utf16String
2025-08-11 12:21:31 +01:00
Tete17
53e0f287d1
LibWeb: Implement reporting of trusted-types-policy violations
2025-08-11 12:21:31 +01:00
Tete17
bc9e67a0dc
LibWeb: Implement methods dependant on TrustedScriptURL
2025-08-11 12:21:31 +01:00
Tete17
adaad653ca
LibWeb: Implement TrustedScriptURL class
2025-08-11 12:21:31 +01:00
Tete17
40691bf25d
LibWeb: Implement methods dependant on TrustedScript
2025-08-11 12:21:31 +01:00
Tete17
56cab6955a
LibWeb: Implement TrustedScript type
...
This turns out to be very similar to TrustedHTML.
2025-08-11 12:21:31 +01:00
Tete17
c84c97b339
LibWeb: Implement createHTML for TrustedTypePolicy
...
This is the main mechanism by which users of the api can create
safe object with a callback for any needed sanitation of the values.
2025-08-11 12:21:31 +01:00
Tete17
966e00fd69
LibWeb: Finish algorithm to block trusted type policy creation with CSP
...
This is the mechanism that should pages to determine what kind of
policies can be created on their domains mostly based around the HTTP
headers the server responds with.
2025-08-11 12:21:31 +01:00
Tete17
6398e771a3
LibWeb: Implement create_policy function for TrustedTypePolicyFactory
...
It simply consists of a wrapper around the main algorithm
2025-08-11 12:21:31 +01:00
Tete17
90bcc16a7b
LibWeb: Add TrustedTypePolicy class
...
It is mostly a skeleton with no actual implementation.
2025-08-11 12:21:31 +01:00
Tete17
a73c082f36
LibWeb: Implement is_html method for TrustedTypePolicyFactory
...
This is used to check the legitimacy of a TrustedHTML object.
2025-08-11 12:21:31 +01:00
Tete17
0a147aa9a1
LibWeb: Implement TrustedHTML class
...
The TrustedHTML interface represents a string that a developer can
confidently insert into an injection sink that will render it as HTML.
These objects are immutable wrappers around a string, constructed via a
TrustedTypePolicy’s createHTML method.
2025-08-11 12:21:31 +01:00
Tete17
68c55b0ef1
LibWeb: Implement getPropertyType for TrustedTypePolicyFactory
...
This allows authors to check if a Trusted Type is required for the given
Elements property.
This adds 28 more passing WPT tests :)
2025-08-11 12:21:31 +01:00
Sam Atkins
4bcfc4bacc
LibWeb/HTML: Add cross-site ancestor flag to environment
...
CI / macOS, arm64, Sanitizer, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, arm64 (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / 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
Corresponds to baec061a70
2025-08-11 11:08:04 +01:00
Sam Atkins
cfdc4bad7c
LibWeb: Update more navigation code to spec
...
Partly corresponds to 80ebad5fbf
This is mostly to handle null source_documents, which is something that
needs more work elsewhere. The spec change above is about the deferred
fetch quota.
2025-08-11 11:08:04 +01:00
Sam Atkins
0e5fd11bdc
LibWeb/HTML: Create navigation params for browser-UI navigations
...
Step 4 corresponds to 3b6a99b1d9
The rest is from some earlier spec change.
2025-08-11 11:08:04 +01:00
Sam Atkins
cf969abba7
LibWeb/HTML: Add missing "else" to create_navigation_params_by_fetching
2025-08-11 11:08:04 +01:00
Sam Atkins
0b998b8379
LibWeb: Update base URL change processing
...
Corresponds to 49f5cd381e
2025-08-11 11:08:04 +01:00
Sam Atkins
7c8c05ee82
LibWeb/Layout: Support visibility:collapse on table-row elements
...
When a table row (or its group) is set to collapse, the row takes up no
vertical space in the layout.
We have to account for this in multiple places, so I've cached whether a
row is collapsed in the TableGrid::Row.
2025-08-11 11:07:47 +01:00
Sam Atkins
5f986b2c33
LibWeb/Painting: Paint ridge
and groove
border styles
2025-08-11 11:07:15 +01:00
Sam Atkins
5d4a4e44fe
LibWeb/Painting: Paint border-style: double
using two solid borders
...
Call paint_border() recursively, once for the outer line, and once for
the inner one. This is done in a lambda so that we can reuse it for a
couple of other line styles.
Border-radius behaviour doesn't match other browsers, and goes a bit
haywire in some cases. I've left some FIXMEs for someone who
understands the maths here better than I do. 😅
The LineStyle handling is moved to the start of the function, to avoid
unnecessary work.
2025-08-11 11:07:15 +01:00