Andreas Kling
5bdbc34a63
LibWeb: Resolve initial/inherit/unset before interpolating properties
...
This was preventing a number of WPT tests relating to CSS animation from
running at all.
2024-11-07 22:50:33 +01:00
Nico Weber
7ac3806a1d
LibWeb: Plumbing for lineCap, lineJoin, miterLimit, lineDashOffset
...
Not used for painting yet, but adds a FIXME for what's missing.
Also tweak some existing spec comments minorly.
2024-11-07 19:54:10 +01:00
Sam Atkins
6bb1ffbcd3
LibWeb/CSS: Accept nested style rules in grouping at-rules
...
When converting an AtRule to a grouping rule, allow both style rules,
and lists of declarations.
2024-11-07 15:11:24 +01:00
Sam Atkins
ce947ff983
LibWeb/CSS: Stop assuming CSSNestedDeclarations's parent is CSSStyleRule
...
This will no longer be true once we implement at-rules nested inside
style rules, for example:
```css
.foo {
color: yellow;
@media (min-width: 800px) {
color: orange;
}
}
```
2024-11-07 15:11:24 +01:00
Sam Atkins
0b23dddb4b
LibWeb/CSS: Clear child CSS rules' caches too
...
If a rule gets its caches cleared because it's moved in the OM, then its
child rules' caches are likely invalid and need clearing too.
Assuming that caches only point "upwards", this will correctly clear
them all. For the time being that will be true.
2024-11-07 15:11:24 +01:00
Sam Atkins
e6291c8d0e
LibWeb/CSS: Correct position indicator when dumping a TokenStream
...
Since b645e26e9b
, m_index points at the
"next" token, not the one that we're currently on.
2024-11-07 15:11:24 +01:00
Sam Atkins
a703aad082
LibWeb/CSS: Reject invalid rules and declarations during parsing
...
This implements the `is_valid_in_the_current_context()` methods by
maintaining a stack of contexts, such as whether we're inside a style
rule, or an `@media` block, or the condition of a `@supports` rule.
2024-11-07 15:11:24 +01:00
Sam Atkins
3b36ca2711
LibWeb/CSS: Update a FIXME that's completed elsewhere
2024-11-07 15:11:24 +01:00
Sam Atkins
398e112c8c
LibWeb: Make dumping of @supports
more useful
...
The string representation doesn't tell you what the internals look like,
which is what you want when dumping.
2024-11-07 15:11:24 +01:00
Aliaksandr Kalenik
a7cbc7a6b8
LibWeb+LibGfx: Use GPU backend for <canvas>
...
This is implemented by using a GPU-accelerated surface for <canvas> when
a GPU context is available.
A side effect of this change is that all canvas modifications have to be
performed through Gfx::Painter, and whenever its content has to be
accessed, we need to take a snapshot of the corresponding GPU surface.
A new DrawPaintingSurface display list command is introduced to allow
cheap blitting of canvas content without having to read GPU surface
content into RAM.
2024-11-07 13:48:12 +01:00
Aliaksandr Kalenik
ab9ecbd79d
LibCore+LibGfx+LibWeb: Move VulkanContext into LibGfx
...
Since the Vulkan context is currently only used by LibGfx, it could be
moved there to avoid having Vulkan as a dependency for everything that
uses LibCore.
2024-11-07 13:48:12 +01:00
Aliaksandr Kalenik
c4bc4fc5f6
LibCore+LibGfx+LibWeb: Move MetalContext into LibGfx
...
Since the Metal context is currently only used by LibGfx, it could be
moved there to avoid having Metal as a dependency for everything that
uses LibCore.
2024-11-07 13:48:12 +01:00
Aliaksandr Kalenik
25f264b7e7
LibGfx+LibWeb: Introduce PaintingSurface that wraps SkSurface from Skia
...
Adds a new class in LibGfx that represents GPU-accelerated surface and
will be used for both <canvas> and page rendering (display list player).
2024-11-07 13:48:12 +01:00
Aliaksandr Kalenik
5c1f6bf8ee
LibGfx+LibWeb: Make SkiaBackendContext ref-counted
2024-11-07 13:48:12 +01:00
Aliaksandr Kalenik
1688cbc991
LibWeb+LibGfx: Move class that represents Skia GPU context to LibGfx
...
This is required to share GPU context creation code between display list
player, which resides in LibWeb, and PainterSkia, which handles <canvas>
painting.
2024-11-07 13:48:12 +01:00
Pavel Shliak
1389ae02be
LibGfx: Fix 24bit BMPs being transparent and send them as RGBx to Skia
2024-11-07 12:27:00 +01:00
Timothy Flynn
ad1ba30b27
WebContent: Serialize the document element's outer HTML for WebDriver
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (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
Push notes / build (push) Waiting to run
2024-11-06 20:44:19 -05:00
Timothy Flynn
7b64942fe2
WebContent: Return element tag names as lowercase for WebDriver
...
Erring on the side of web reality on this one, as other engines return
lowercase tag names, and this is expected by WPT.
2024-11-06 20:44:19 -05:00
Timothy Flynn
1417314aa9
WebContent: Do not coerce element properties to strings for WebDriver
...
We want the "raw" value here. The spec sort of assumes we are sending JS
values over the wire, whereas we are actually sending AK::JsonValue. So
using the JSON clone AO here is our best bet.
2024-11-06 20:44:19 -05:00
Timothy Flynn
33a00f45fd
WebContent: Ensure the document's style is up to date for WebDriver
...
Otherwise, we have a timing issue retrieving computed styles.
2024-11-06 20:44:19 -05:00
Timothy Flynn
ecaacd2adf
LibWeb+WebContent: Update our list of boolean attributes for WebDriver
...
Chromium has a larger list of boolean attributes, and WPT depends on it.
We must also compare attribute names case-insensitively.
Note this method is only used by WebDriver.
2024-11-06 20:44:19 -05:00
Andreas Kling
81e75530d9
LibWeb: Make :nth-* selectors match children of non-elements
...
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (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
Push notes / build (push) Waiting to run
Build Dev Container Image / build (push) Has been cancelled
This was covered by WPT, which caught us not allowing :nth-child(1)
to match the root HTML element, and other similar issues.
2024-11-06 21:42:53 +01:00
Andreas Kling
eeba30f988
LibWeb: Allow :link and :any-link to match SVG <a> elements
2024-11-06 21:42:53 +01:00
Andreas Kling
92d9907f8f
LibWeb: Add style invalidation for :target, :focus, :active and :link
2024-11-06 21:42:53 +01:00
Andreas Kling
1045000c28
LibWeb: Style invalidation for DOM node removal needs to happen earlier
...
We can't invalidate after the removal has taken effect, since that means
invalidation won't be able to find potentially affected siblings and
ancestors by traversing from the invalidation target.
2024-11-06 21:42:53 +01:00
Andreas Kling
adfc69bc67
LibWeb: Add style invalidation for :defined selector
2024-11-06 21:42:53 +01:00
Timothy Flynn
80c6268431
Meta+LibJS: Upgrade to prettier version 3.3.3
...
Prettier v3 was released over a year ago, and most users will have it by
default by now.
2024-11-06 15:10:27 -05:00
Gingeh
f88f41cf1e
LibWeb: Reject invalid processing instructions
2024-11-06 18:48:50 +01:00
Aliaksandr Kalenik
2a29e348c9
LibWeb: Delete EditableTextNodeOwner
...
It's no longer needed after FormAssociatedTextControlElement became
responsible for managing input events for text controls.
2024-11-06 18:05:11 +01:00
Timothy Flynn
34c0303ae1
Revert "LibWeb: Make WebDriver's script executor public"
...
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (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
Push notes / build (push) Waiting to run
This reverts commit e41c668435
.
2024-11-06 08:42:17 -05:00
Timothy Flynn
94a0f36b3e
Revert "WebContent: Restore ability to use Inspector accessors like $0"
...
This reverts commit ae1c58fad1
.
2024-11-06 08:42:17 -05:00
Timothy Flynn
d40b7d67b1
Revert "LibJS+LibWeb: Remove now-unused lexical environment override"
...
This reverts commit d39f6975f9
.
2024-11-06 08:42:17 -05:00
Sam Atkins
b09b23a162
LibWeb/CSS: Avoid double promotion in CSSColorValue code
...
Co-authored-by: Nico Weber <thakis@chromium.org>
2024-11-06 11:48:48 +00:00
Piotr
06154b87dd
LibWeb: Support for "content-language" http-equiv state
...
Implemented support for setting the pragma-set default language in the
`<meta/>` tag with an `http-equiv` attribute `content-language`.
2024-11-06 10:56:57 +01:00
Timothy Flynn
413cf6b329
LibWeb+LibWebView+WebContent: Remove unused back/forward navigation IPCs
2024-11-06 10:54:17 +01:00
Timothy Flynn
1a8a3979f9
WebContent: Implement the WebDriver Forward endpoint according spec
2024-11-06 10:54:17 +01:00
Timothy Flynn
d867cd26c4
WebContent: Implement the WebDriver Back endpoint according spec
2024-11-06 10:54:17 +01:00
Timothy Flynn
d4966bc2d8
LibWeb: Add a document observer for pageHide/pageShow events
...
WebDriver will need to "block" until a pageShow event occurs in some
cases.
2024-11-06 10:54:17 +01:00
Timothy Flynn
3afd88330b
WebContent: Handle user prompts in the Take Screenshot endpoint
...
This is a spec issue, and WPT relies on this behavior.
2024-11-06 10:50:33 +01:00
Timothy Flynn
f4111ef1e1
LibWeb: Implement pausing the event loop a bit closer to the spec
...
Namely, this is to update the rendering before pausing the event loop.
2024-11-06 10:50:33 +01:00
Andreas Kling
5431db8c1c
LibWeb: Avoid unnecessary style recomputation during traversal
...
While traversing the DOM tree, looking for nodes that need a style
update, we were recomputing style for every node visited along the way,
even nodes that didn't themselves need a style update (but one of their
descendants did).
This avoids a bunch of completely unnecessary style recomputation on
basically every website.
2024-11-06 10:49:32 +01:00
Jonne Ransijn
0de9818470
LibWeb: Remove most of the copying of CSS::Parser::ComponentValue
...
This class was being copied all over the place, however, most of these
cases can be easily prevented with `auto const&` or `NonnullRawPtr<>`.
It also didn't have a move constructor, causing `Vector` to copy on
every resize as well.
Removing all these copies results in an almost 15% increase in
performance for CSS parsing, as measured with callgrind.
2024-11-06 09:43:15 +00:00
Jonne Ransijn
90b2142658
LibWeb: Make CSS::Parser::ComponentValue
immutable
...
`ComponentValue` instances are never mutated, so let's make them
immutable to indicate that they could potentially be cached in the
future.
2024-11-06 09:43:15 +00:00
Jonne Ransijn
138135e0e6
LibWeb: Fix accidental copy in ComponentValue
constructors
...
These values were being copied, despite being passed in as r-value
references.
2024-11-06 09:43:15 +00:00
Hermes Junior
5dabd468ed
LibWeb: Fix out-of-bound crash when there's more table cells than cols
...
Added a getter to ensure we are within a valid range.
This behavior is accepted by other browsers,
and crashed on some pages.
2024-11-06 09:36:33 +00:00
Gingeh
cd5d8f4d95
LibWeb: Handle steps(x, start) like steps(x, jump-start)
2024-11-06 09:27:53 +00:00
Gingeh
453e034801
LibXML: Read code points when parsing names
2024-11-06 10:07:52 +01:00
Aliaksandr Kalenik
42b31820a6
LibWeb: Use UTF-16 code units length in CharacterData::replace_data()
...
CI / Lagom (false, FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, macos-14, macOS, Clang) (push) Waiting to run
CI / Lagom (false, NO_FUZZ, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (true, NO_FUZZ, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (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
Push notes / build (push) Waiting to run
Range API uses UTF-16 code units to represent offsets, so replace_data()
needs to use it instead of bytes count while calculating new offsets.
Fixes incorrectly thrown exception when non-latin string is passed into
replace_data().
2024-11-06 05:46:30 +00:00
Timothy Flynn
185255efc3
WebContent: Close top-level traversables asynchronously
...
The spec is a bit out-of-date here, so this works around an issue with
closing top-level traversables while a dialog is open in another window
within the same agent.
2024-11-05 10:58:34 -07:00
Timothy Flynn
4c61ce5b10
WebDriver: Don't remove windows if attempting to close the window failed
...
For example, if a dialog is open and the session is configured to ignore
dialogs (instead of automatically closing them), then the Close Window
endpoint will have failed. We can't remove the client-side window handle
in that case.
2024-11-05 10:58:34 -07:00