Commit graph

32739 commits

Author SHA1 Message Date
Lucas CHOLLET
94128fe027 LibWeb: Make CanvasImageSource also be an ImageBitmap 2024-04-08 14:25:36 +02:00
Lucas CHOLLET
af3a73c0a4 LibWeb: Provide an IDL definition for CanvasImageSource 2024-04-08 14:25:36 +02:00
Lucas CHOLLET
7d5b9122ec LibWeb: Define CanvasImageSource only once
The Variant is already defined in CanvasDrawImage.h.
2024-04-08 14:25:36 +02:00
Lucas CHOLLET
676fc5e8c6 LibWeb: Implement HTML::ImageBitmap
And the two methods of `WindowOrWorkerGlobalScope` that are used as
constructors for it.
2024-04-08 14:25:36 +02:00
Shannon Booth
db0519ddc1 LibWeb: Fire a pointer event on synthetic clicks 2024-04-08 14:25:08 +02:00
Shannon Booth
b873e5bc1d LibWeb: Implement the PointerEvent interface
As defined in: https://w3c.github.io/pointerevents

With the exception of the getCoalescedEvents and getPredictedEvents
APIs.

There are still many other parts of that spec (such as the event
handlers) left to implement, but this does get us at least some of the
way.
2024-04-08 14:25:08 +02:00
MacDue
d7b77d7695 LibWeb: Split SVGFormattingContext up into functions
Doing multiple `for_each_in_subtree()` passes was kind of a hack. We
can resolve everything in a single pass with a little more control over
the layout process. This also fixes a few minor issues like the sizing
of nested `<g>` elements.

More work is needed here though as this is still fairly ad-hoc.

Note: This does regress `css-namespace-tag-name-selector.html`,
previously SVG text within `<a>` elements would appear. However, this
was only because `for_each_in_subtree()` would blindly look through the
InlineNodes from the unimplemented `SVGAElement`s.
2024-04-08 14:24:35 +02:00
Aliaksandr Kalenik
a3149c1ce9 LibWeb: Wait for initial navigation to complete before modifying iframe
If initial src of an iframe is "about:blank", it does synchronous
navigation that is not supposed to be interleaved by other navigation
or usage of Document.open().

Fixes crashing in navigation on https://twinings.co.uk/
2024-04-08 09:07:18 +02:00
Nico Weber
aada06757b LibGfx/JBIG2: Add early out to composite_bitbuffer()
The halftone region decoding procedure can draw patterns completely
outside the page bitmap. I haven't seen this in practice yet (not
many files use pattern/halftone segments), but it seems like it's
possible in theory and seems like a good thing to check for.
2024-04-08 06:27:51 +02:00
Nico Weber
438be7e2ca LibGfx/JBIG2: Implement halftone_region_decoding_procedure() and Annex C
Annex C describes how to read a grayscale bitmap with n bits per pixel:
It's encoded as n bilevel bitmaps, where each bilevel bitmap stores one
bit of the grayscale value (using a en.wikipedia.org/wiki/Gray_code,
which is named after Frank Gray and doesn't normally have much to do
with grayscale images).

A halftone region stores a grayscale bitmap and a linear coordinate
system the grayscale bitmap is in.  The grayscale bitmap is overlaid
the halftone region using the coordinate system, and each sample in
the grayscale bitmap is used as an index into a pattern dictionary
and the bitmap at that index is drawn at the current location.
This allows for efficient compression of ordered dithering
(but not error-diffusion dithering).

This does not yet implement halftone region decoding for MMR bitmaps.

The halftone region decoding procedure is the only way to call the
generic region decoding procedure with a skip pattern. This does
include code to compute the skip pattern, but support for that
is not yet implemented in the generic region decoding procedure,
so it'll error out when encountered. (I haven't yet found a file
using this feature, not a way to create such a file yet.)
2024-04-08 06:27:51 +02:00
Nico Weber
9d2c115c1c LibGfx/JBIG2: Implement decode_immediate_halftone_region()
...and stub out halftone_region_decoding_procedure().
2024-04-08 06:27:51 +02:00
Nico Weber
ca5b06cc4f LibGfx/JBIG2: Implement pattern_dictionary_decoding_procedure()
A pattern dictionary stores n bitmaps with the same dimensions w x h.
They're stored in a single bitmap of width `n * w` that's then cut
into n stripes.
2024-04-08 06:27:51 +02:00
Nico Weber
d27722ee00 LibGfx/JBIG2: Implement decode_pattern_dictionary()
It calls pattern_dictionary_decoding_procedure(), which is stubbed out.

No real behavior change yet.
2024-04-08 06:27:51 +02:00
Nico Weber
825b4d4e94 LibGfx/JBIG2: Tweak decode_immediate_generic_region()
Set context only for non-MMR.

No behavior change.
2024-04-08 06:27:51 +02:00
Lucas CHOLLET
de6507ef94 LibCrypto: Remove simple-template-id from constructors
This is disallowed as from C++20. GCC 14 gives an error for these two.

See:
https://cplusplus.github.io/CWG/issues/2237.html
https://stackoverflow.com/questions/71978335/class-templates-constructor-declaration-doesnt-compile-for-c20-but-compiles
2024-04-07 21:33:46 +02:00
Andreas Kling
c0ea8825b5 LibWeb: Always log debug message about failure to parse CSS fonts
It's always good to know when and why a CSS font fails to parse,
so that we can file issues about missing functionality.
2024-04-07 19:15:23 +02:00
Andreas Kling
877ad07915 WebContent: Add missing visit in ConsoleGlobalEnvironmentExtensions 2024-04-07 18:01:50 +02:00
Andreas Kling
7cbbd4dd7e LibJS: Suppress LibJSGCVerifier warning about Map::m_keys 2024-04-07 18:01:50 +02:00
Shannon Booth
70e2f51674 LibWeb: Prefer GCPtr<T> over Optional<NonnullGCPtr<T>> 2024-04-07 18:01:05 +02:00
Shannon Booth
80658743d3 LibWeb: Generate Optional<NonnullGCPtr<T>> as GCPtr<T>
This is the general pattern which has been adopted in LibWeb, so let's
generate our IDL like this too.
2024-04-07 18:01:05 +02:00
Kenneth Myhra
d593436b6d LibWeb: Implement ReadableStream.pipeThrough() 2024-04-07 14:26:34 +01:00
Tim Ledbetter
64a226eadd Everywhere: Add spaces to generic types in IPC files
This improves the readability of type names.
2024-04-07 07:17:31 +02:00
Matthew Olsson
aac873fcec LibWeb: Fix a few "missing visit_edges" warnings from the GC verifier 2024-04-07 07:03:13 +02:00
Matthew Olsson
3c3ead5ff4 LibWeb: Don't store WindowOrWorkerGlobalScopeMixin in Performance
It wasn't used anyways, instead preferring to do dynamic_casts in every
method. Let's keep doing that, but move it into a helper function.
2024-04-07 07:03:13 +02:00
Matthew Olsson
7001e0a428 LibWeb: Fix a LibJSGCVerifier warning in DOM::Text 2024-04-07 07:03:13 +02:00
Matthew Olsson
a221a4660e WebContent: Fix some GCVerifier warnings 2024-04-07 07:03:13 +02:00
Matthew Olsson
8450041b52 LibWeb: Fix some GCVerifier warnings 2024-04-07 07:03:13 +02:00
Matthew Olsson
8b8ada292e LibJS: Fix some GCVerifier warnings 2024-04-07 07:03:13 +02:00
Matthew Olsson
f5cdb5eee0 LibWeb: Add a missing visit in PageClient 2024-04-07 07:03:13 +02:00
Matthew Olsson
4701c4bb01 LibWeb: Add a missing visit in HTMLFormElement 2024-04-07 07:03:13 +02:00
Kenneth Myhra
d3b2cd8ab6 LibWeb: Implement ReadableStream.pipeTo() 2024-04-07 07:01:52 +02:00
Kenneth Myhra
559d983fa1 LibWeb: Implement AO readable_stream_pipe_to()
This is currently a naive implementation of readable_stream_pipe_to()
which will need some further iterations before it is par with the spec.
2024-04-07 07:01:52 +02:00
Kenneth Myhra
12cfa08a09 LibWeb: Use Vector<ByteBuffer> to store chunks in ReadLoopReadRequest
This stores the incoming chunks into a Vector of ByteBuffer in order to
be able to retrieve them in the same order as they came in.
2024-04-07 07:01:52 +02:00
Lucas CHOLLET
cb5f30ae98 LibGfx/TIFF: Prevent recursion when following IFD pointers
Fixes oss-fuzz 66587.
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66587&sort=-opened&q=proj%3Aserenity%20TIFF&can=1
2024-04-07 06:45:38 +02:00
Aliaksandr Kalenik
2c86633c51 LibWeb: Fix out of order spec step numbers in "create child navigable"
No behaviour change.
2024-04-06 21:57:55 +02:00
Shannon Booth
18520561e7 LibWeb: Fix crash for calculated transition duration/delays
As the parser was trying to directly unwrap an unresolved duration.
Currently we are outputting the wrong results for the serialized
duration, but this is still a step forwards.

Fixes a crash seen on: https://evaparish.com/blog/how-i-edit
2024-04-06 19:35:27 +01:00
Idan Horowitz
945c58c7c1 LibUnicode: Generate and use code point composition mappings
These allow us to binary search the code point compositions based on
the first code point being combined, which makes the search close to
O(log N) instead of O(N).
2024-04-06 14:21:04 -04:00
Idan Horowitz
e227bf0f71 LibUnicode: Optimize the canonical composition algorithm implementation
It now takes O(N) time instead of O(N^2) time. Additionally some always
false conditions are removed.
2024-04-06 14:21:04 -04:00
Shannon Booth
f186e7e537 LibWeb: Fill out implementation for navigator.hardwareConcurrency
Instead of always reporting 1 :^)
2024-04-06 07:20:22 +02:00
Shannon Booth
9c9a378455 LibCore: Implement Core::System::hardware_concurrency() 2024-04-06 07:20:22 +02:00
Idan Horowitz
b018114bee LibWeb: Add missing visit_edges implementation to RegExpObject 2024-04-06 06:59:36 +02:00
Idan Horowitz
f357998e81 LibWeb: Add missing visit_edges implementation to ModuleNamespaceObject 2024-04-06 06:59:36 +02:00
Idan Horowitz
42853fb980 LibWeb: Add missing visit_edges implementation to MathMLElement 2024-04-06 06:59:36 +02:00
Idan Horowitz
c61f341320 LibWeb: Add missing visit_edges implementation to AnimationEffect 2024-04-06 06:59:36 +02:00
Idan Horowitz
46ad9d51df LibWeb: Replace MarkedVector with Vector in AudioTrackList
There's no need to make the m_audio_tracks entries heap roots, we can
visit them instead.
2024-04-06 06:59:36 +02:00
Idan Horowitz
270e0d4b58 LibWeb: Replace MarkedVector with Vector in VideoTrackList
There's no need to make the m_video_tracks entries heap roots, we can
visit them instead.
2024-04-06 06:59:36 +02:00
Idan Horowitz
c84cd1d668 LibJSGCVerifier: Support marking GCPtr members as raw references
This lets us avoid false positives when a GCPtr-wrapped member is only
a weak reference which is automatically updated by the GC when the
member's gc state is updated.
2024-04-06 06:59:36 +02:00
Shannon Booth
c3217754f1 LibWeb: Remove a bunch of calls to to_byte_string
A bunch of this is leftover from pre porting over to new AK::String.
For example, for functions which previously took a ByteString const&
now accepting a StringView.
2024-04-05 20:01:37 -04:00
Shannon Booth
0090b916dd LibJS: Make ParserError::to_string infallible 2024-04-05 20:01:37 -04:00
Andreas Kling
d568b15acf LibURL: Avoid expensive IDNA::to_ascii() for all-ASCII domain strings
20% of CPU usage when loading https://utah.edu/ was spent doing these
ASCII conversions in URL parsing.
2024-04-05 16:01:10 -06:00