Commit graph

55230 commits

Author SHA1 Message Date
Tim Ledbetter f10db48bab AK: Avoid overflow when passing i64 minimum value to vformat() 2023-10-09 09:39:02 +03:30
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 43177fd2a1 Tests/LibWeb: Add a ref test for SVG mask with maskUnits=userSpaceOnUse 2023-10-09 07:28:18 +02:00
MacDue e9fd7c96af Tests/LibWeb: Add ref test for an SVG mask with mask-type: alpha 2023-10-09 07:28:18 +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
Xexxa 61b6146d5e Base: Modify emoji
👨‍❤️‍👨 - U+1F468 U+200D U+2764 U+200D U+1F468
COUPLE WITH HEART: MAN, MAN
👩‍❤️‍👩 - U+1F469 U+200D U+2764 U+200D U+1F469
COUPLE WITH HEART: WOMAN, WOMAN
👨‍👨‍👦 - U+1F468 U+200D U+1F468 U+200D U+1F466
FAMILY: MAN, MAN, BOY
👨‍👨‍👧 - U+1F468 U+200D U+1F468 U+200D U+1F467
FAMILY: MAN, MAN, GIRL
👨‍👨‍👧‍👦 - U+1F468 U+200D U+1F468 U+200D U+1F467 U+200D U+1F466
FAMILY: MAN, MAN, GIRL, BOY
👨‍👨‍👦‍👦 - U+1F468 U+200D U+1F468 U+200D U+1F466 U+200D U+1F466
FAMILY: MAN, MAN, BOY, BOY
👨‍👨‍👧‍👧 - U+1F468 U+200D U+1F468 U+200D U+1F467 U+200D U+1F467
FAMILY: MAN, MAN, GIRL, GIRL
👩‍👩‍👦 - U+1F469 U+200D U+1F469 U+200D U+1F466
FAMILY: WOMAN, WOMAN, BOY
👩‍👩‍👧 - U+1F469 U+200D U+1F469 U+200D U+1F467
FAMILY: WOMAN, WOMAN, GIRL
👩‍👩‍👧‍👦 - U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D U+1F466
FAMILY: WOMAN, WOMAN, GIRL, BOY
👩‍👩‍👦‍👦 - U+1F469 U+200D U+1F469 U+200D U+1F466 U+200D U+1F466
FAMILY: WOMAN, WOMAN, BOY, BOY
👩‍👩‍👧‍👧 - U+1F469 U+200D U+1F469 U+200D U+1F467 U+200D U+1F467
FAMILY: WOMAN, WOMAN, GIRL, GIRL
👨‍👦 - U+1F468 U+200D U+1F466
FAMILY: MAN, BOY
👨‍👦‍👦 - U+1F468 U+200D U+1F466 U+200D U+1F466
FAMILY: MAN, BOY, BOY
👨‍👧 - U+1F468 U+200D U+1F467
FAMILY: MAN, GIRL
👨‍👧‍👦 - U+1F468 U+200D U+1F467 U+200D U+1F466
FAMILY: MAN, GIRL, BOY
2023-10-07 15:40:47 -04:00
Xexxa c1f655dfa9 Base: Add more emoji
🦮 - U+1F9AE GUIDE DOG
🐪 - U+1F42A CAMEL
🐫 - U+1F42B TWO-HUMP CAMEL
🦪 - U+1F9AA OYSTER
👘 - U+1F458 KIMONO
🖇️ - U+1F587 LINKED PAPERCLIPS
2023-10-07 15:40:47 -04: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
Nico Weber f02b84d34d MacPDF: Give sidebar the more modern look
This Just Works with NSToolbarSidebarTrackingSeparatorItemIdentifier,
as long as your window is has NSWindowStyleMaskFullSizeContentView
in its style mask. If it doesn't, things behave pretty weirdly and
at least in the docs I looked at, this requirement wasn't documented
at all :/

Anyways, switch MacPDFView to use safeAreaRect instead of bounds
now that we use NSWindowStyleMaskFullSizeContentView so that we
don't draw parts of the PDF under the title bar.

Also be careful to invalidate the PDF view if safeAreaRect changes,
so that the page is redrawn when toolbar visibility gets toggled.
2023-10-07 09:47:43 +02:00
Nico Weber b1e9c419a6 MacPDF: Add a split view for a togglable sidebar
It can be toggled with the (only) toolbar button, or via the
menu bar, or the standard shortcut Cmd-Ctrl-S.
2023-10-07 09:47:43 +02:00
Nico Weber ae1b179474 MacPDF: Add a toolbar with a standard sidebar button 2023-10-07 09:47:43 +02:00
Nico Weber 1f1a596a46 MacPDF: In window controller, use window directly
No need to go through the view now that there's a dedicated
window controller.

No behavior change.
2023-10-07 09:47:43 +02:00
Nico Weber c0d8131a26 MacPDF: Remove logspam 2023-10-07 09:47:43 +02:00
Nico Weber 6b9afcfb7c MacPDF: Create window UI in code instead of in xib
No intentional behavior change.
2023-10-07 09:47:43 +02:00
Nico Weber dcf40892b8 MacPDF: Start moving window-related things into MacPDFWindowController
- MacPDFWindowController is now the xib file's owner
- _pdfView moves over
- MacPDFWindowController is now the MacPDFViewDelegate and responsible
  for updating the window's title
- Due to MacPDFWindowController now being the xib file's owner,
  windowControllerDidLoadNib: is no longer called automatically,
  so call a custom windowIsReady method manually instead

No behavior change.
2023-10-07 09:47:43 +02:00
Nico Weber 67f6baead0 MacPDF: Introduce MacPDFWindowController
I'd like to add a sidebar, and NSSplitViewItem apparently isn't
accessibly in .xib files without contortions. So I want to move
to creating the window in code, and this is a step towards that.

No behavior change.
2023-10-07 09:47:43 +02:00
Nico Weber d6dff83397 MacPDF: Introduce CocoaWrapper.h
No behavior change.
2023-10-07 09:47:43 +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