Commit graph

28784 commits

Author SHA1 Message Date
Sam Atkins 415a024bc8 LibGfx: Store BitmapFont range mask as Bytes instead of pointer and size 2023-10-10 14:36:25 +02:00
Sam Atkins 533ec5a06f LibGfx: Use Core::System helper for BitmapFont memory allocation 2023-10-10 14:36:25 +02:00
Sam Atkins 57497c6ab2 LibCore: Add a Core::System wrapper for memory allocation
Allocating raw memory isn't something we do often, but it does happen.
Let's make it comfier.
2023-10-10 14:36:25 +02:00
Sam Atkins 89ef3ed4ce LibGfx: Mark BitmapFont::try_clone() as virtual 2023-10-10 14:36:25 +02:00
Sam Atkins a1c24ef3ad LibGfx: Remove infallible BitmapFont::create() factory function
This was only used in TestFontHandling. So, let's remove it, and use
the "create" name for the fallible one.
2023-10-10 14:36:25 +02:00
Tim Ledbetter 2f26a7bb12 LibCompress: Avoid buffer overrun when building canonical Huffman code
Previously, decompressing a DEFLATE stream an invalid canonical
Huffman code could cause a buffer overrun. We now return an error in
this case.
2023-10-10 13:24:05 +02:00
Tim Ledbetter bc6638682d LibGfx/BMPLoader: Ensure DIB size and offset are within expected range 2023-10-10 05:50:02 +02:00
Tim Schumacher 127f6ed6eb LibCompress: Fix a typo in m_read_final_block 2023-10-09 23:40:10 +02:00
Andreas Kling 13057812d5 LibJS: Remove inline capacity from MarkedVector
Turns out this was hurting performance instead of helping it.
By removing the inline capacity, we shrink the size of ExecutionContext
by 512 bytes, which substantially reduces the stack pressure created by
JS recursion (each call creates a new ExecutionContext on the stack).

4.4% speed-up on the entire Kraken benchmark :^)
2023-10-09 09:32:24 +02:00
Karol Kosek 2ea45f4881 LibJS: Forward-declare RegexTable and BasicBlock in Executable.h
Previously every file that included Executable.h (which is pretty much
most LibJS and LibHTML files, given that VM.h needs it) had the whole
definition of LibRegex, which was slowing down source parsing.
2023-10-09 07:29:27 +02:00
Karol Kosek 426b7ffa41 LibWeb: Don't include Window.h in Element.h and Document.h
Window.h is a rather heavy file, so let's try not to include it in
header files when we can!

Element.h now also includes LibWeb/Bindings/Intrinsics.h, but that's
just out of my laziness. Most if not all objects call
`Bindings::ensure_web_prototype<>()` anyway, so I don't think we would
gain much by sticking the header to source files instead.
2023-10-09 07:29:27 +02:00
MacDue 92fc426562 LibWeb: Add basic support for maskUnits=userSpaceOnUse
This still does not use the x, y, width, or height attributes on the
mask, but this allows at least displaying these masks.
2023-10-09 07:28:18 +02:00
MacDue 479451498b LibWeb: Implement mask-type CSS property
This property allows specifying if a mask is an alpha or luminance mask.

See: https://drafts.fxtf.org/css-masking/#the-mask-type
2023-10-09 07:28:18 +02:00
Aliaksandr Kalenik b0d75ef096 LibWeb: Create navigables only for iframe in a document tree
Navigable should be created for an iframe only, if after insertion, its
root is the document.

Fixes https://github.com/SerenityOS/serenity/issues/21374
2023-10-08 20:03:43 +02:00
Shannon Booth 79ed72adb4 LibWeb: Port HTMLToken::make_start_tag from DeprecatedFlyString 2023-10-08 08:11:48 -04:00
Shannon Booth 7aac7002d1 LibWeb: Port SVG::TagNames from DeprecatedFlyString 2023-10-08 08:11:48 -04:00
Shannon Booth 48f367adbb LibWeb: Port get_element_by_id from DeprecatedFlyString
We needed to keep the old versions of these functions around before all
of the IDL interfaces were ported over to new AK String, but now that is
done, we can remove the deprecated versions of these functions.
2023-10-08 08:11:48 -04:00
Shannon Booth b37aab1277 LibWeb: Port named_item_value from DeprecatedFlyString 2023-10-08 08:11:48 -04:00
Shannon Booth c7cd6f2bef LibWeb: Remove some unused DeprecatedFlyString includes 2023-10-08 08:11:48 -04:00
Shannon Booth c4d841a6b8 LibWeb: Port tag name from DeprecatedString in Dump 2023-10-08 08:11:48 -04:00
Shannon Booth d8635fe541 LibWeb: Port HTMLParser local name and value from DeprecatedString 2023-10-08 08:11:48 -04:00
Shannon Booth e4f8c59210 LibWeb: Port AttributeNames to FlyString 2023-10-08 08:11:48 -04:00
Andreas Kling 6a3f27509f LibJS: Avoid IdentifierTable lookup in cached GetGlobal op
When we hit the cache in GetGlobal, we don't need the identifier string
at all, so let's defer fetching it until after the cache miss.

7% speed-up on Kraken/imaging-gaussian-blur.js :^)
2023-10-08 11:55:27 +02:00
Tim Ledbetter 4cc2fc4afa LibGfx/PNGLoader: Remove redundant IHDR bit depth validation 2023-10-08 10:46:00 +02:00
Tim Ledbetter bc6ae54b59 LibGfx/PNGLoader: Don't allow multiple consecutive IHDR chunks 2023-10-08 10:46:00 +02:00
Andreas Kling 3250a424f0 LibWeb: Don't offset abspos children of flex container by padding twice
We were incorrectly offsetting the static position of abspos children of
flex containers by the padding twice. This was a misguided attempt to
adjust to the abspos containing block being the padding box, not the
content box.

Fixes #21344.
2023-10-08 09:06:30 +02:00
Aliaksandr Kalenik a86531809e LibWeb: Destroy navigable containers not inserted into document tree
This change fixes the bug where navigable containers related to a
document, but not present in the tree, were never destroyed.

Fixes https://github.com/SerenityOS/serenity/issues/21364
2023-10-08 06:17:40 +02:00
Ali Mohammad Pur dc495e299e Shell: Add support for the bashy list literals in POSIX mode
This is currently only allowed in assignments, where x=(...) is parsed
as the assignment of the list (...) to the variable x.
2023-10-07 22:16:35 +03:30
Ali Mohammad Pur ebe254a6d3 LibWeb/XML: Avoid placing all elements missing an ns in the HTML ns
Also remove the hack for SVG documents, a well-formed SVG document has
the correct xmlns attribute set, which should be automatically picked up
by the builder now.
2023-10-07 20:02:10 +02:00
Ali Mohammad Pur 830f1dbbfe LibWeb/XML: Do not create text nodes for empty text chunks
This corresponds to the empty text node between foo and bar in
`<foo/><bar/>`, which is not supposed to become a text node in HTML.
2023-10-07 20:02:10 +02:00
Andreas Kling ae4e46a037 LibJS: Do less work in successfully cached GetByValue* ops
If we have a cached environment coordinate that hasn't been screwed
by eval(), we can get the value directly without instantiating a
Reference.

15% speed-up on Octane/zlib.js :^)
2023-10-07 20:01:52 +02:00
Tim Ledbetter 6f1f0710f8 find: Don't canonicalize path operands
The POSIX specification for `find` says that: "Each path operand shall
be evaluated unaltered as it was provided, including all trailing
<slash> characters". This also matches the behavior of `find` on
FreeBSD and Linux.
2023-10-07 11:37:53 +02:00
Tim Ledbetter 881581820f GameOfLife: Allow pressing escape to clear the selected pattern 2023-10-07 11:36:57 +02:00
Tim Ledbetter f25f2ba047 GameOfLife: Focus on the game board when not editing settings
This makes single key shortcuts work again :^)
2023-10-07 11:36:57 +02:00
Tim Ledbetter 649c7ee11f GameOfLife: Use the GML compiler 2023-10-07 11:36:57 +02:00
Tim Ledbetter 3930702bd2 LibGUI: Make Statusbar::set_segment_count() public
This allows the GML compiler to handle the `segment_count` property
and allows the status bar segment count to be changed after
construction.
2023-10-07 11:36:57 +02:00
Andreas Kling 8a727abd23 LibJS: Move Heap intrusive list manipulation inline
The functions for registering and unregistering MarkedVector, Handle,
etc. were quite prominent in benchmark profiles.

4% speed-up on the entire Kraken benchmark :^)
(including: 7% speed-up on Kraken/imaging-gaussian-blur.js, the current
slowest subtest)
2023-10-07 11:36:28 +02:00
Andreas Kling 0762388709 LibWeb: Make XHR.response an actual XMLDocument for XML documents
Before this change, we were producing a generic DOM::Document, which
was not distinguishable from an XMLDocument by IDL interface type.
2023-10-07 10:19:18 +02:00
Andreas Kling 2b343c9508 LibWeb: Don't crash in XHR.response{,XML} for empty XML document
There were some unhandled paths due to the liberally typed XHR response
object. This patch flushes out those issues by using a tighter type set
in the Variant. (NonnullGCPtr<Object> instead of Value)
2023-10-07 10:19:18 +02:00
Tim Ledbetter c21efdfc8a LibGfx/ICC: Avoid overflow when checking tag bounds 2023-10-07 09:48:01 +02:00
Andreas Kling 65717e3b75 LibJS: Inline fast case for Value::to_{boolean,number,numeric,primitive}
These functions all have a very common case that can be dealt with a
very simple inline check, often avoiding the need to call an out-of-line
function. This patch moves the common case to inline functions in a new
ValueInlines.h header (necessary due to header dependency issues..)

8% speed-up on the entire Kraken benchmark :^)
2023-10-07 07:13:52 +02:00
stelar7 42d80aab06 LibTLS: Reorder supported ciphers 2023-10-06 22:32:07 +02:00
Tim Ledbetter 80238f29d2 LibIMAP: Handle invalid escape sequences in Quoted-Printable parser
When an invalid escape sequence is encountered, we now output the
characters unaltered instead of crashing.
2023-10-06 22:31:43 +02:00
Tim Ledbetter debb4edcc8 LibGUI: Update model every 100ms when generating thumbmnails
This dramatically improves the responsiveness of FileManager when
navigating to folders with many images.
2023-10-06 22:18:40 +02:00
Tim Ledbetter 1abc52a689 LibGfx/DDSLoader: Avoid integer overflow in decode_color_block() 2023-10-06 22:18:27 +02:00
Tim Ledbetter b25efa219b LibGfx/DDSLoader: Allow image dimensions that are not divisible by 4 2023-10-06 22:18:27 +02:00
Tim Ledbetter 9fefb434f2 LibHTTP: Return an error if HTTP request URL is not valid UTF-8 2023-10-06 11:28:17 +03:30
Shannon Booth 57d7637b59 LibWeb: Remove DeprecatedString support from {Child,Parent}Node
No interface pulls this in that requires DeprecatedString support.
2023-10-06 08:25:40 +02:00
Shannon Booth 4321606bba LibWeb: Port Element interface from DeprecatedString
This is the last IDL interface which was using DeprecatedString! :^)
2023-10-06 08:25:40 +02:00
circl 274e0f4988 LibWeb/Canvas: Calculate text width for measureText correctly
Previously this simply added the widths of each glyph, not accounting
for glyph spacing.
2023-10-06 08:23:54 +02:00