Tim Ledbetter
89fb783b42
LibWeb: Throw pre insertion validity errors from the correct global
2025-07-25 09:08:14 +02:00
Andrew Kaster
50422eb563
Tests: Add XHTML tests for CDATA, PIs and Comment nodes in the DOM
2025-07-19 14:56:20 +02:00
Shannon Booth
9054ff29f0
LibWeb/CSS: Parse the ::slotted pseudo-element
2025-07-15 13:54:17 +01:00
Shannon Booth
05ddf5c718
LibWeb/DOM: Add StorageEvent and DragEvent to Document.createEvent
...
We have since implemented these interfaces.
2025-07-11 08:22:36 +02:00
Shannon Booth
1d5ca2ae80
Tests/LibWeb: Import WPT Document-createEvent WPT tests
2025-07-11 08:22:36 +02:00
Tim Ledbetter
57dd85e4ac
LibWeb/DOM: Throw errors from correct realm in Node::move_node()
2025-07-09 15:59:06 +02:00
Shannon Booth
642a2430a9
LibWeb/DOM: Properly extract local name and prefix from strict split
...
Previously we were taking the local name from everything after the
first ':', instead of second element of strictly splitting qualified
name.
2025-07-09 10:57:14 +02:00
Shannon Booth
f263a1a6b2
Tests/LibWeb: Rebaseline createElement and createElementNS WPT tests
...
These tests were previously not aligned against the DOM standard.
2025-07-09 10:57:14 +02:00
Shannon Booth
ab2e732da9
Tests/LibWeb: Import DOM name validation WPT test
2025-07-09 10:57:14 +02:00
Sam Atkins
a424a06d45
LibWeb/DOM: Copy document's allow declarative shadow roots when cloning
...
Corresponds to 77920094a4
2025-07-08 17:08:39 +01:00
Tim Ledbetter
66ca4496c3
LibWeb: Set Document origin for DOMParser created documents
...
Previously, a crash would occur when accessing the origin of a document
created with DOMParser.
2025-07-06 13:39:45 +12:00
Tim Ledbetter
16dbb44de2
LibWeb: Update DOMImplementation.createDocumentType() name validation
...
This now follows the latest specification steps.
2025-06-19 07:55:47 -04:00
Tim Ledbetter
ba641d4784
LibWeb: Update attribute name validation in Element.setAttribute()
...
This now follows the latest specification steps.
2025-06-19 11:00:53 +01:00
Tim Ledbetter
acf2d773d5
LibWeb: Update attribute name validation in Element.toggleAttribute
...
This now follows the latest specification steps.
2025-06-19 11:00:53 +01:00
Tim Ledbetter
4593c28769
LibWeb: Update validate_and_extract and its users to the latest spec
2025-06-19 11:00:53 +01:00
Tim Ledbetter
c6cc7e1874
Tests: Update dom/nodes/attributes.html WPT test
2025-06-19 11:00:53 +01:00
Sam Atkins
0e168ce631
Tests: Reimport dom/nodes/moveBefore tests
...
Apart from these moving out of `tentative/`, the
custom-element-move-reactions.html test was updated to be less flaky:
5e87cd92c0
2025-06-17 13:59:01 +02:00
Shannon Booth
31a3bc3681
LibWeb: Implement 'State-preserving atomic move integration'
...
This was recently added to both the HTML and DOM specifications,
introducing the new moveBefore DOM API, as well as the new internal
'removing steps'.
See:
* 432e8fb
* eaf2ac7
2025-04-26 08:45:37 -06:00
Timothy Flynn
2e5e5d3816
LibWeb: Pass along the init dictionary for error / buffer change events
...
Otherwise, information stored in the base event init dictionary will be
dropped.
2025-03-25 07:52:12 +00:00
Tim Ledbetter
abe1e14812
Tests: Import some newly-passing SVG tests
2025-02-25 15:02:35 +01:00
Luke Wilde
2797f9f73e
LibWeb: Return actual callback object from TreeWalker::filter
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 (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
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-02-24 18:29:03 +01:00
Luke Wilde
95949ba8f2
LibWeb: Return actual callback object from NodeIterator::filter
2025-02-24 18:29:03 +01:00
Sam Atkins
0fcd7f9aea
LibWeb/DOM: Update an attribute's node document
...
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 (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
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Corresponds to b64559cc08
2025-02-23 22:36:42 +00:00
Andreas Kling
d8f95c5050
LibWeb: Don't neglect DOM range updates on CharacterData changes
...
Regressed in 036327332f .
This commit moves the optimization a little later in replaceData(),
still avoiding relayout (the important part).
Recovers 480 points on WPT. :^)
2025-02-21 11:54:00 +01:00
Tim Ledbetter
8b2de413ae
LibWeb: Ensure selected options collection is created prior to access
2025-02-08 07:32:24 -05:00
Felipe Muñoz Mazur
c2cc0d9cd0
LibWeb: Check if input is disabled before submit event to form
2025-02-05 14:45:57 -07:00
Luke Wilde
bf34b63439
LibWeb: Don't compare the focus chain's GC::Root contents by reference
...
The focus chain always consists of newly created GC::Root objects, so
the condition always produced `false`. The fix is to use GC::Root's
overloaded operator== method, which compares the pointers of the stored
type.
This fixes Figma dropdowns and context menus instantly disappearing
upon opening them. This is because they become focused when they insert
them. Because of this bug, it would fire blur events all the way up to
and including the window. Figma listens for the blur event on the
window, and when received, it will instantly hide dropdowns and context
menus. The intention behind this seems to be hiding them when the user
clicks off the browser window, or switches tab.
2025-01-30 19:30:44 +01:00
Tim Ledbetter
39445d6dd6
LibWeb: Implement basic high resolution time coarsening
...
Several interfaces that return a high resolution time require that
time to be coarsened, in order to prevent timing attacks. This
implementation simply reduces the resolution of the returned timestamp
to the minimum values given in the specification. Further work may be
needed to make our implementation more robust to the kind of attacks
that this mechanism is designed to prevent.
2025-01-30 18:37:53 +01:00
mikiubo
cd576e594d
LibXml: Notify listener when doctype is parsed
2025-01-20 14:48:19 +01:00
Shannon Booth
51102254b5
LibWeb/HTML: Scroll to the fragment before loading the document
...
Otherwise nowhere ends up scrolling to the fragment specified by the
fragment in document's URL. This fixes ladybird scrolling to the
correct location in the document when navigating to a link that
has a fragment, e.g:
https://html.spec.whatwg.org/multipage/browsing-the-web.html#try-to-scroll-to-the-fragment
As well as use of the :target selector.
2025-01-15 12:43:48 +00:00
Tim Ledbetter
1e9e2b6564
LibWeb: Clone all attribute properties when cloning a single node
...
Previously, the namespace of the attributes on the cloned element was
not being set.
2025-01-11 23:10:09 +01:00
Glenn Skrzypczak
08589741f5
LibWeb: Correctly implement event listeners default passive attribute
...
This commit implements the default value of the passive attribute of
event listeners according to the spec.
2024-12-25 14:57:22 +00:00
Tyler Dence
0378645c25
LibWeb: PlatformObject::DefineOwnProperty fix 'has own property' check
...
PlatformObjects with named properties does not qualify as 'has own
property' just by virtue of a named property existing.
This fixes at least one WPT test, which is imported.
2024-12-20 15:10:24 +01:00
Tim Ledbetter
d8511e39c9
LibWeb: Report exceptions that occur during mutation observer microtask
2024-12-19 15:25:08 +00:00
Shannon Booth
18dddaa742
LibWeb/HTML: Use DOM's post-connection steps for iframe elements
...
See: c8ec987d1
2024-12-14 12:06:41 -08:00
Lucien Fiorini
7feb8eb5bf
Tests: Import WPT test for firstElementChild namespace in xhtml
2024-12-09 09:13:24 +00:00
Tim Ledbetter
f1bbba2ba5
Tests: Enable imported WPT tests that were previously too slow for CI
2024-12-04 21:25:33 +00:00
Tim Ledbetter
61ae388140
Tests: Create imported WPT test output from completion callback data
...
This allows us to disable test output, which performs expensive assert
tracking. This was making our imported tests run significantly slower
than tests run via `WPT.sh`.
Formatting the output ourselves also allows us to remove unnecessary
information from the test output.
This commit also rebaselines all existing imported WPT tests to follow
the new format.
2024-12-02 22:41:51 +00:00
Pavel Shliak
e02fd4ca8c
Tests: Reimport Event-constants WPT
...
I reimported and rebaselined it using the latest version
of our WPT importer. Now it passes.
2024-12-01 22:01:48 +01:00
Netanel Haber
d743fcb376
LibWeb: Take namespace into account when matching attribute
2024-11-30 16:47:14 +00:00
Pavel Shliak
f2a406f8cc
Tests: Import WPTs to prevent optional string argument regressions
2024-11-29 20:23:01 +00:00
Milo van der Tier
15741350ba
LibWeb: Make replaceData create new surrogate pairs
...
When inserting a new utf-16 surrogate next to an existing surrogate
with replaceData, the surrogates would not get merged correctly into a
single code point. This is because internally the text data is stored
as utf-8, and the two surrogates would be converted seperately. This
has now been fixed by first recreating the whole string in utf-16 and
then converting it back to utf-8.
It's not the most efficient solution, but this fixes at least 6 WPT
subtests.
2024-11-24 13:04:06 +00:00
Milo van der Tier
54b0476d70
LibWeb: Handle second condition in NamedNodeMap's property names
...
This removes the FIXME and fixes a WPT subtest.
2024-11-23 23:21:50 +00:00
Tim Ledbetter
f378f41526
LibWeb: Use correct comparison logic in NamedNodeMap::get_attribute()
...
Previously, we were doing a case insensitive comparison, which could
return the wrong result if the attribute name was uppercase.
2024-11-23 21:19:28 +00:00
Gingeh
7444f76b0d
LibWeb: Make querySelectorAll match each element at most once
2024-11-23 09:49:33 +01:00
Gingeh
bb678e75f9
LibWeb: Reject selectors with named namespaces in querySelectorAll
2024-11-23 09:49:33 +01:00
Gingeh
ba0cc7fe46
LibWeb: Use correct case-sensitivity when matching attribute selectors
...
Also removed get_attribute_with_lowercase_qualified_name
because it was buggy, duplicated logic, and now unused.
2024-11-23 09:49:33 +01:00
Gingeh
a2cf1d17fd
LibWeb: Require CSS combinators to be followed by a simple selector
2024-11-23 09:49:33 +01:00
Gingeh
bb5678a175
LibWeb: Don't allow trailing commas in selector lists
...
comma-separated list != #-multiplier
2024-11-23 09:49:33 +01:00
Timothy Flynn
488034477a
Revert "LibWeb: Set doctype node immediately while parsing XML document"
...
This reverts commit cd446e5e9c .
This broke about 20k WPT subtests, all related to XML parsing. See:
https://wpt.fyi/results/html/the-xhtml-syntax/parsing-xhtml-documents?diff=&filter=ADC&run_id=5154815472828416&run_id=5090731742199808
2024-11-20 19:11:56 -05:00