1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-09 17:44:56 +09:00
Commit graph

69133 commits

Author SHA1 Message Date
mikiubo
89e0896cd7 LibWeb: Implement XML Char validation for Text node serialization
With this fix, the second test in domparsing/innerhtml-01.xhtml passes.
2025-05-14 18:18:08 +12:00
Glenn Skrzypczak
5c578b6057 LibWeb/HTML: Implement report_validity
This implements the previously stubbed out `report_validity` method.

The specification is not very clear on how to exactly report the
validity. For now, we bring the first visible invalid control into
view and focus it. In the future, however, it would make sense to
support more complex scenarios and be more aligned with the other
implementations.
2025-05-14 09:39:12 +12:00
stelar7
296d9d74d8 LibWeb/IDB: Implement IDBCursorWithValue interface 2025-05-13 10:48:40 -06:00
stelar7
9c51326fcb LibWeb/IDB: Implement IDBCursor::delete 2025-05-13 10:48:40 -06:00
stelar7
cf84a98bab LibWeb/IDB: Implement IDBCursor::update 2025-05-13 10:48:40 -06:00
stelar7
3154ac8988 LibWeb/IDB: Implement IDBCursor::continuePrimaryKey 2025-05-13 10:48:40 -06:00
stelar7
6afa2c8eee LibWeb/IDB: Implement IDBCursor::advance 2025-05-13 10:48:40 -06:00
stelar7
82d17fa17e LibWeb/IDB: Sort IDBCursor fields according to IDL 2025-05-13 10:48:40 -06:00
Psychpsyo
a0be82b2cb LibWeb: Move containment checks to Layout::Node
It fits better there and avoids having to reach into the Element
all the time.
2025-05-13 15:30:14 +03:00
Psychpsyo
4989c5c793 LibWeb: Add paint containment clipping
The contain-paint-stacking-context-001a.html test has been removed
for now because it has a 1px tall blue line at the top that should
not be there. With paint containment, this line is removed only in
the actual test case, but not in the reference. This is because of
the font that we use in testing and happens in Chromium as well if
the test is run with that font.
2025-05-13 15:30:14 +03:00
Psychpsyo
ed7374783d LibWeb: Enable different overflow along the x and y axis 2025-05-13 15:30:14 +03:00
Psychpsyo
85883ee5ce LibWeb: Deduplicate clipping code
This makes it so that PaintableWithLines no longer has its own
bespoke clipping logic, using the same code as regular scroll/
overflow clipping.
2025-05-13 15:30:14 +03:00
Aliaksandr Kalenik
155e60a5ff LibJS: Use iteration_step() in IteratorNextUnpack instruction
Allows us to avoid code duplication for builtin iterators fast path.
2025-05-13 15:14:25 +03:00
Aliaksandr Kalenik
bb53485dea LibJS+LibWeb: Add fast path for builtin iterators in iterator_step()
We already have fast path for built-in iterators that skips `next()`
lookup and iteration result object allocation applied for `for..of` and
`for..in` loops. This change extends it to `iterator_step()` to cover
`Array.from()`, `[...arr]` and many other cases.

Makes following function go 2.35x faster on my computer:
```js
(function f() {
  let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  for (let i = 0; i < 1000000; i++) {
    let [a, ...rest] = arr;
  }
})();
```
2025-05-13 15:14:25 +03:00
Psychpsyo
31301ef08b LibWeb: Add support for trees of pseudo-elements
This is needed for CSS view transitions.
2025-05-13 12:38:42 +01:00
stelar7
a2ecafb968 LibWeb/IDB: Use enum flags in IDBKeyRange 2025-05-13 22:46:43 +12:00
stelar7
a5023ec053 LibWeb/IDB: Use enum flags in IDBCursor 2025-05-13 22:46:43 +12:00
Shannon Booth
41b060be81 LibDiff: Remove a bunch of unused code
We have no need to support normal or context diffs in ladybird,
as well as the ability to parse and apply patches.
2025-05-13 12:46:34 +02:00
Tim Ledbetter
03e34db9f8 LibWeb: Interpolate the content-visibility property correctly 2025-05-13 11:24:05 +01:00
Tim Ledbetter
882ad4726e LibWeb: Interpolate the visibility property correctly 2025-05-13 11:24:05 +01:00
Psychpsyo
f52df06a2a LibWeb: Do not forget to unapply empty masks 2025-05-13 10:31:08 +02:00
Andrew Kaster
0402179331 CMake: Disable C++20 module scanning
We don't use C++20 modules, and CMake will look for clang-scan-deps in
clang builds if this setting is not disabled. This is a problem when
clang-scan-deps is not installed, as it will cause CMake to fail to link
hidden visibility libraries properly.
2025-05-12 23:43:59 -06:00
Psychpsyo
c105f99547 Meta: Add doctypes to all grid layout tests 2025-05-13 03:49:32 +03:00
Psychpsyo
1fa3b16c8c Meta: Add doctypes to some flex layout tests
This adds doctypes to all the remaining flexbox layout tests.
2025-05-12 23:15:06 +01:00
stelar7
a11efe3139 LibWeb/IDB: Sort IDBObjectStore according to the IDL 2025-05-13 08:27:52 +12:00
stelar7
7250aa0b6b LibWeb/IDB: Implement IDBObjectStore::getAllKeys 2025-05-13 08:27:52 +12:00
stelar7
927237c736 LibWeb/IDB: Implement retrieve_multiple_keys_from_an_object_store 2025-05-13 08:27:52 +12:00
stelar7
c56ec49ce6 LibWeb/IDB: Implement IDBObjectStore::openKeyCursor 2025-05-13 08:27:52 +12:00
stelar7
c700bfaaf1 LibWeb/IDB: Implement IDBObjectStore::getAll 2025-05-13 08:27:52 +12:00
stelar7
ddaae635ac LibWeb/IDB: Implement retrieve_multiple_values_from_an_object_store 2025-05-13 08:27:52 +12:00
stelar7
7f98d708ef LibWeb/IDB: Implement IDBObjectStore::getKey 2025-05-13 08:27:52 +12:00
stelar7
c47ddf11ba LibWeb/IDB: Implement retrieve_a_key_from_an_object_store 2025-05-13 08:27:52 +12:00
Andrew Kaster
09c794d40d Tests: Bump lit to version 18.1.8 for ClangPlugins tests 2025-05-12 16:00:55 -04:00
Andrew Kaster
27503a5320 Tests: Invoke clang frontend instead of cc1 in ClangPlugin tests
Reverts 7fcedae610 at the same time
2025-05-12 16:00:55 -04:00
Daniel Bertalan
a2167f126d Everywhere: Fix trivial -Wunnecessary-virtual-specifier instances
- `Threading::Thread` is not polymorphic, there is no need for a virtual
  destructor.
- `HTMLAnchorElement::has_download_preference` isn't overridden by
  anything.

This warning was introduced in llvm/llvm-project#131188.
2025-05-12 11:40:45 -06:00
Daniel Bertalan
456d750539 LibJS: Make generate_labelled_evaluation non-virtual if possible
We don't override anything with definitions of this function in
`SwitchStatement` and `LabelledStatement`. Also, we can make the
`IterationStatement` abstract, there is no need to add a fallback
error-generating stub implementation of this method.
2025-05-12 11:40:45 -06:00
Daniel Bertalan
6b08a52c8b LibGC: Make destructors non-virtual where possible
`ConservativeVector`, `RootVector` and `RootHashMap` are final types,
and their base classes have a protected destructor, so when their
destructor is called, the static and dynamic types will be the same
(can't destruct them through a pointer to a base or derived class).
Therefore, there is no need for a virtual destructor.

This fixes the newly introduced `-Wunnecessary-virtual-specifier`
Clang warning (llvm/llvm-project#131188).
2025-05-12 11:40:45 -06:00
Mikkel Krautz
c48a78e37f LibWeb: Fix copyright headers with inconsistent > characters 2025-05-12 11:21:04 -06:00
Andrew Kaster
c0f0f45b6e Documentation: Add clang-tools to the Ubuntu/Debian build instructions
When using non-BFD linkers, something about our CMake setup causes
visibility checks from GenerateExportHeader to fail when clang-scan-deps
is not found.
2025-05-12 10:40:43 -06:00
Aliaksandr Kalenik
f405d71657 LibJS: Disable optimization in IteratorNextUnpack if next() is redefined
81b6a11 regressed correctness by always bypassing the `next()` method
resolution for built-in iterators, causing incorrect behavior when
`next()` was redefined on built-in prototypes. This change fixes the
issue by storing a flag on built-in prototypes indicating whether
`next()` has ever been redefined.
2025-05-12 07:41:29 -04:00
Andrew Kaster
a6d9e8acd8 CMake: Only find pthread and mman on Windows once
This reduces a lot of CMake spam when configuring
2025-05-12 03:22:23 -06:00
ayeteadoe
a3754a7bf1 LibRegex: Annotate classes with export macro for hidden visibility
This fix demos the gradual opt-in migration process libraries can
take to switch to explicit symbol exports via the FOO_API macros.
2025-05-12 03:22:23 -06:00
Andrew Kaster
3dd2fbd041 LibRegex: Move StringTable ctor/dtor out of line
This also moves the next_serial class static into a file scope static.
The public class static was causing visibility issues with certain Linux
builds when hidden visibility was enabled. However, the current design
makes more sense anyway :^).
2025-05-12 03:22:23 -06:00
ayeteadoe
8f670950e2 Meta: Add opt-in explicit symbol export for libraries
On Windows, `set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)` is currently
used. But that will need to change as LibWeb exceeds the maximum
symbols that can be exported from a single executable/dll
(See LNK1189 error). So to prevent bitrot and Unix/Windows getting
out of sync, this function that generates the export header for the
target also sets the symbol visibility to hidden on Unix to ensure
Link errors also occur on Unix if the the required library components
are not annotated with the FOO_API macro.
2025-05-12 03:22:23 -06:00
ayeteadoe
0253342c1a LibRegex: Use NO_UNIQUE_ADDRESS in RegexMatch for Windows support
Clang's `x86_64-pc-windows-msvc` target requires
`[[msvc::no_unique_address]]`, which is properly set in the
`NO_UNIQUE_ADDRESS` macro in `AK/Platform.h`. Without this, building
on Windows fails due to `-Wunknown-attributes`.
2025-05-12 03:22:23 -06:00
Andrew Kaster
fc6237325b CI: Install clang-tools-19 to ensure clang-scan-deps is available 2025-05-12 03:22:23 -06:00
Shannon Booth
b478274e0b LibWeb: Use infra sorting for URLSearchParam's sort()
Adopts editiorial change to the URL spec of:

59979a1
2025-05-12 11:20:32 +02:00
Shannon Booth
74334ea1ce LibWeb: Only use code unit length for is_code_unit_prefix
Fixes a crash in the included test.
2025-05-12 11:20:32 +02:00
Shannon Booth
1cd09724f1 LibWeb/Infra: Ignore OOM for utf16 conversion in 'is code unit prefix' 2025-05-12 11:20:32 +02:00
Psychpsyo
91159df0dd LibWeb: Draw text even if it needs to go into a 0-size inline box 2025-05-12 10:49:46 +02:00