Commit graph

34540 commits

Author SHA1 Message Date
Andreas Kling
4e0edd42b9 LibWeb: Cap HTML dimension values at 17895700 (same as Firefox)
Instead of allowing arbitrarily large values (which could eventually
overflow an i32), let's just cap them at the same limit as Firefox does.

Found by Domato.
2024-07-20 06:41:25 +02:00
Andreas Kling
093f1dd805 LibWeb: Propagate exceptions from setAttribute() in DOMStringMap setter
We were incorrectly assuming that setAttribute() could never fail here,
even when passed an invalid name.

Found by Domato.
2024-07-20 06:41:25 +02:00
Andreas Kling
1c00e5688d LibWeb: Fix StringView OOB access when parsing 3-character legacy color
Found by Domato.
2024-07-20 06:41:25 +02:00
Aliaksandr Kalenik
0c1405ad6d LibWeb: Add missing requests to use antialiasing in Skia painter 2024-07-19 15:52:30 +02:00
Aliaksandr Kalenik
0be57df54d LibWeb: Subtract left inset from size_available_for_margins for abspos
Fixes https://github.com/LadybirdBrowser/ladybird/issues/712
2024-07-19 13:29:20 +01:00
Aliaksandr Kalenik
715f033007 Tests+headless-browser: Move screenshot ref-tests into own directory
This change will make it easier to disable screenshot comparison tests
on a specific platform or have per-platform expectations.

Additionally, it's nice to be able to tell if a ref-test uses a
screenshot as an expectation by looking at the test path.
2024-07-19 13:52:00 +02:00
Edwin Hoksberg
0ae048102c LibWeb: Resolve content-visibility fixme in html details element 2024-07-19 09:04:30 +01:00
Edwin Hoksberg
020b20d817 LibWeb: Support content-visibility css 2024-07-19 09:04:30 +01:00
Tim Ledbetter
bd72ff5669 LibWeb: Expose ChildNode methods on the DocumentType IDL interface 2024-07-19 09:22:08 +02:00
Tim Ledbetter
5a578e8f15 LibWeb: Compare node names case insensitively in Node::is_equal_node() 2024-07-19 09:22:08 +02:00
Tim Ledbetter
7ab7be694d LibWeb: Don't consider nodes in different namespaces to be equal
Previously, `Node::is_equal_node()` would return true for nodes in
different namespaces that were otherwise equal.
2024-07-19 09:22:08 +02:00
Holger Hans Peter Freyther
319bb6353e LibWeb: Fix assertion failure on telekom.de
The EntryType has three possible values: Fetching, Failed or
ModuleScript. It is possible that we transition from Fetching to Failed
as in #13.1. Change the assertion to include the failed scenario.

Fixes: https://github.com/LadybirdBrowser/ladybird/issues/661
2024-07-19 09:20:09 +02:00
Daniel Bertalan
31eb0ed938 LibWeb/DOM: Work around GCC 14 warning on always true is<T>()
GCC 14 emits a warning when an always succeeding `dynamic_cast`'s return
value is compared to NULL inside the `AK::is<T>(U)` template when `T` ==
`U`.

While warning on tautological `is` calls seems useful, it's a bit
awkward when it comes from a function template where the cast may fail
in some instantiation. There is a GCC bug open for it:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115664

Work around the warning by performing the algorithm on the base type
(`EventTarget`), with a wrapper that casts it to the more specialized
input type.
2024-07-19 09:18:27 +02:00
Diego Frias
ea67bc989f LibWasm: Remove some unnecessary memory checks
Also make `store_to_memory` take a `MemoryArgument` so that we no longer
have to make "synthetic instructions" in some scenarios.
2024-07-19 03:19:04 +02:00
Diego Frias
56ae6b3968 LibWasm: Remove some dead code 2024-07-19 03:19:04 +02:00
Timothy Flynn
368dad54ef LibTextCodec: Use AK facilities to validate and convert UTF-16 to UTF-8
This allows LibTextCodec to make use of simdutf, and also reduces the
number of places with manual UTF-16 implementations.
2024-07-18 19:43:57 +02:00
circl
8357f18e9b LibWeb: Set document.activeElement using the spec algorithm 2024-07-18 07:09:50 -06:00
circl
1aa9282103 LibWeb: Move retarget function to its own file 2024-07-18 07:09:50 -06:00
Ali Mohammad Pur
8cf0f36f7d LibWasm: Replace a hashtable with an RBTree to make instantiation faster
...by about 40%.
2024-07-18 14:54:50 +02:00
Ali Mohammad Pur
f1abc36689 LibWasm/WASI: Make the premapped stdio files configurable 2024-07-18 14:54:50 +02:00
Ali Mohammad Pur
16dd8d4d3b LibWasm/WASI+wasm: Make WASI exit() "noreturn" instead of making it exit
This makes it so exit() traps with a known error; an embedder (wasm.cpp)
can simply match this format and handle the request accordingly.
2024-07-18 14:54:50 +02:00
Ali Mohammad Pur
e08a7cb94d LibWasm/WASI: Add support for fd_seek() 2024-07-18 14:54:50 +02:00
Ali Mohammad Pur
708abf6bb1 LibWasm/WASI: Add support for fd_fdstat_get() 2024-07-18 14:54:50 +02:00
Ali Mohammad Pur
e22408b8b4 LibWasm: Make import errors a bit more descriptive and helpful
Instead of "yeah something went wrong", show what went wrong.
2024-07-18 14:54:50 +02:00
Timothy Flynn
fb228a3d85 LibJS: Implement Iterator.prototype.constructor according to spec
The spec allows setting a constructor on non built-in Iterator objects.

This is a normative change in the Iterator Helpers proposal. See:
https://github.com/tc39/proposal-iterator-helpers/commit/30b3501
2024-07-18 14:49:25 +02:00
Timothy Flynn
734e37442d LibJS: Implement Iterator.prototype [ @@toStringTag ] according to spec
The spec allows setting the prototype on non built-in Iterator objects.

This is a normative change in the Iterator Helpers proposal. See:
https://github.com/tc39/proposal-iterator-helpers/commit/30b3501
2024-07-18 14:49:25 +02:00
Aliaksandr Kalenik
1e4720700c LibWeb: Use premultiplied alpha for gradient interpolation in Skia
This change fixes the rest of regressions in
Tests/LibWeb/Ref/css-gradients.html
2024-07-18 14:47:32 +02:00
Tim Ledbetter
055c902a37 LibWeb: Implement Node.isDefaultNamespace()
This method accepts a namespace URI as an argument and returns true if
the given URI is the default namespace on the given node, false
otherwise.
2024-07-18 12:41:01 +03:00
Tim Ledbetter
27d429a85f LibWeb: Implement Node.lookupNamespaceURI()
This method takes a prefix and returns the namespace URI associated
with it on the given node, or null if no namespace is found.
2024-07-18 12:41:01 +03:00
Andrew Kaster
d106b6eae2 LibCore: Remove workarounds for system header global name conflicts 2024-07-18 09:43:38 +01:00
Andrew Kaster
8082daaa3f LibAudio+LibCore: Remove workarounds for system header conflicts
This commit could possibly be cherry-picked to serenity
2024-07-18 09:43:38 +01:00
Andrew Kaster
1529f5469c LibGfx+icc: Prefix AK::FixedPoint with AK Namespace 2024-07-18 09:43:38 +01:00
Andrew Kaster
39a41d59c8 RequestServer: Prefix AK::Duration with AK Namespace 2024-07-18 09:43:38 +01:00
Andrew Kaster
28093fecae LibWebView+WebContent: Prefix AK::Duration with AK Namespace 2024-07-18 09:43:38 +01:00
Andrew Kaster
b20a1d0fcd LibWeb: Prefix AK::Duration with AK Namespace 2024-07-18 09:43:38 +01:00
Andrew Kaster
2fa9ec20bd LibUnicode: Prefix AK::Duration with AK Namespace 2024-07-18 09:43:38 +01:00
Andrew Kaster
f8d1a25254 LibJS: Prefix AK::Duration with AK Namespace 2024-07-18 09:43:38 +01:00
Andrew Kaster
c1681931ba LibMedia: Prefix AK::Duration with AK Namespace 2024-07-18 09:43:38 +01:00
Andrew Kaster
28ab1941b9 LibIPC: Prefix AK::Duration with AK Namespace 2024-07-18 09:43:38 +01:00
Andrew Kaster
383c15b22e LibCore: Prefix AK::Duration with AK Namespace 2024-07-18 09:43:38 +01:00
Andrew Kaster
6772d442e5 LibAudio: Prefix AK::Duration with AK Namespace 2024-07-18 09:43:38 +01:00
Aliaksandr Kalenik
7a1f3f7ae3 LibWeb: Change grid item placement to look for area by boundary lines
Areas are disassembled into boundary lines on `build_grid_areas()` step,
so we can always use them to find grid item's position during placement.
This way we support both ways to define area: `grid-template-areas` and
implicitly using `-start` and `-end` boundary line names.
2024-07-18 09:05:37 +02:00
Andreas Kling
166e603c5e ImageDecoder: Pass decoded images as Gfx::Bitmap over IPC
Before this change, we were passing them as Gfx::ShareableBitmap. The
problem is that shareable bitmaps keep their underlying file descriptor
open, so that they can be shared again with someone else.

When a Gfx::Bitmap is decoded from an IPC message, the file descriptor
is closed and recovered immediately.

This fixes an issue where we'd accumulate one file descriptor for every
image decoded. This eventually led to descriptor starvation after enough
images were loaded and still referenced at the same time.
2024-07-18 09:05:10 +02:00
Andreas Kling
9f1a853cc8 LibGfx: Add ability to pass NonnullRefPtr<Gfx::Bitmap> over IPC 2024-07-18 09:05:10 +02:00
Daniel Bertalan
c62240aa80 Everywhere: Warn on function definitions without prototypes
If no header includes the prototype of a function, then it cannot be
used from outside the translation unit it was defined in. In that case,
it should be marked as `static`, in order to avoid possible ODR
problems, unnecessary exported symbols, and allow the compiler to better
optimize those.

If this warning triggers in a function defined in a header, `inline`
needs to be added, otherwise if the header is included in more than one
TU, it will fail to link with a duplicate definition error.

The reason this diff got so big is that Lagom-only code wasn't built
with this flag even in Serenity times.
2024-07-17 21:51:29 +02:00
Daniel Bertalan
7fe82a1cda CMake: Add back stricter warnings used in Serenity builds
These used to be enabled in `serenity_compile_options.cmake` for
Serenity builds and were removed in 9b05fb98. This is a slightly more
conservative subset of those, with ones that are enabled by default
omitted.

This should prevent our code quality regressing in the long run.
2024-07-17 21:51:29 +02:00
Jamie Mansfield
0961d68ebc LibWeb: Stub Text.wholeText 2024-07-17 18:19:09 +01:00
Jamie Mansfield
807e63faaf LibWeb: Implement MouseEvent.initMouseEvent 2024-07-17 18:19:09 +01:00
Jamie Mansfield
3845d174e3 LibWeb: Implement KeyboardEvent.initKeyboardEvent 2024-07-17 18:19:09 +01:00
Jamie Mansfield
aefab1de38 LibWeb: Short-circuit UIEvent.initMouseEvent if dispatched
This fixes some bugs on wpt.dom/events/Event-init-while-dispatching.html,
although the test still fails due to [GH-23722].

[GH-23722]: https://github.com/SerenityOS/serenity/issues/23722
2024-07-17 18:19:09 +01:00
Jamie Mansfield
87880e9b81 LibWeb/HTML: Remove FIXMEs from HTMLTrackElement constants 2024-07-17 18:19:09 +01:00
Jamie Mansfield
66c3388b16 LibWeb: Implement Performance.toJSON 2024-07-17 18:19:09 +01:00
Jamie Mansfield
116c1f835d LibWeb/DOM: Add FIXMEs for missing functions in Node 2024-07-17 18:19:09 +01:00
Jamie Mansfield
62f74f3b77 LibWeb/DOM: Match order of Node.idl with the spec
This makes it easier to compare with the spec :^)
2024-07-17 18:19:09 +01:00
doctortheemh
0140e5e9cc LibGfx: Decode WebP images with libwebp 2024-07-17 10:04:25 -06:00
Aliaksandr Kalenik
be644e5d5d LibWeb: Use blur_radius / 2 as sigma to blur text shadow using Skia
This change is needed to match behavior of default Gfx::Painter.

Fixes Tests/LibWeb/Ref/text-shadow.html
2024-07-17 18:02:11 +02:00
Aliaksandr Kalenik
3270df476d LibWeb: Fix flexible track sizing in GFC
- Change min track sizing function to be "auto" when flex size is
  specified.
- Never check if min track sizing funciton is flexible, because only
  max is allowed to be flexible.
- Address FIXME in automatic_minimum_size to avoid regressions after
  making two fixes mentioned above.
2024-07-17 18:00:18 +02:00
Timothy Flynn
c3f8202d0c LibJS: Create exception messages as Strings
The JS::Error types all store their exception messages as a String. So
by using ByteString, we hit the StringView constructor, and end up
allocating the same string twice.
2024-07-17 11:57:06 -04:00
Hendiadyoin1
144e822de2 LibWasm: Use shuffle_or_0 in for vector swizzles and shuffles
Otherwise we'd hit a VERIFY in AK::SIMD::shuffle() when that operand
contains an out-of-range value, the spec tests indicate that a swizzle
with an out-of-range index should return 0.

(cherry picked from commit cd454a1e3d0bc8b3342ed39891c9b27409ecc829)
2024-07-17 09:56:13 -06:00
Aliaksandr Kalenik
3ddacaa705 Ladybird+LibWeb+WebContent: Always use Skia CPU backend in tests mode
Enforce the use of the CPU backend in test mode to ensure that ref-tests
produce consistent results across different computers, as this
consistency cannot be achieved with the GPU backend.
2024-07-17 17:58:53 +03:00
Sam Atkins
9fb44cb057 LibWeb/CSS: Make StringStyleValue hold a FlyString
We already have a FlyString of its value from parsing, and most users
also want a FlyString from it, so let's use that instead of converting
backwards and forwards.

The two users that did want a String are:
- Quotes, which make sense as FlyString instead, so I've converted that.
- Animation names, which should probably be FlyString too, but the code
  currently also allows for other kinds of StyleValue, and I don't want
  to dive into this right now to figure out if that's needed or not.
2024-07-17 15:08:44 +01:00
Sam Atkins
d2f04b9f04 LibWeb/CSS: Remove unused StyleProperties::grid_area()
This does not appear to be correct; the `grid-area` property's value is
quite complicated, and not just a string.
2024-07-17 15:08:44 +01:00
simonkrauter
b1d7a27468 LibWeb: Rename HTMLInputElement members related to range shadow tree
Choose a better name for private members which were added in
https://github.com/LadybirdBrowser/ladybird/pull/513
2024-07-17 13:11:55 +02:00
Aliaksandr Kalenik
66c88b432f LibWeb: Join text clip paths before application in Skia painter
Each item in clip_paths represents a glyph run, and applying them as a
clip in intersection mode one by one results in an empty clip. Instead,
now all clip paths are joined and applied as a clip together.

This change fixes rendering of "background-clip: text" when an element
has more than one glyph run.

Fixed ref-test: Tests/LibWeb/Ref/css-background-clip-text.html
2024-07-17 14:09:52 +03:00
Braydn
dbc2f7ed48 LibJS: Implement CreatePerIterationEnvironment for 'for' statements
Implement for CreatePerIterationEnvironment for 'for' loops per the Ecma
Standard. This ensures each iteration of a 'for' loop has its own
lexical environment so that variables declared in the loop are scoped to
the current iteration.
2024-07-17 11:20:11 +02:00
Jamie Mansfield
c8e6a95988 LibWeb/SVG: SVGGradientElement includes SVGURIReference 2024-07-16 21:43:53 +02:00
Jamie Mansfield
fbb5bc471d LibWeb/SVG: SVGScriptElement includes SVGURIReference 2024-07-16 21:43:53 +02:00
Jamie Mansfield
796de74956 LibWeb/SVG: SVGAElement includes SVGURIReference 2024-07-16 21:43:53 +02:00
Jamie Mansfield
6ca4c2beb0 LibWeb/SVG: Implement SVGAElement.relList 2024-07-16 21:43:53 +02:00
Jamie Mansfield
7562f89d4e LibWeb/SVG: Implement reflected attributes in SVGAElement
This change implements the download, ping, rel, hreflang, and type
attributes using the [Reflect] annotation in the IDL file.
2024-07-16 21:43:53 +02:00
Jamie Mansfield
5bac8e7730 LibWeb/SVG: Add spec link to SVGAElement 2024-07-16 21:43:53 +02:00
Jamie Mansfield
6f3c5f5ae9 LibWeb/SVG: Implement SVGElement.ownerSVGElement 2024-07-16 21:43:53 +02:00
circl
f20010c1d3 LibWeb: Restore event characteristics of MouseEvents and WheelEvents
These were accidentally no longer set after
2c396b5378
2024-07-16 21:10:16 +03:00
Aliaksandr Kalenik
5eeb5eb36e LibWeb: Support SVGRadialGradientPaintStyle in Skia painter
Fixes:
Tests/LibWeb/Ref/svg-gradient-spreadMethod.html
Tests/LibWeb/Ref/svg-radialGradient.html
2024-07-16 19:11:56 +03:00
Aliaksandr Kalenik
4aba38e21f LibWeb: Use repeat tile mode if repeating length specified
...for radial gradient in Skia painter.
2024-07-16 17:40:34 +03:00
Aliaksandr Kalenik
fb03f36cfa LibWeb: Add support for repeating linear gradient in Skia painter 2024-07-16 17:40:34 +03:00
Aliaksandr Kalenik
dadf82f2a2 LibWeb: Handle gradient repeating as defined in the spec in Skia painter
Couple fixes found by reading the spec:
- Repeating should also happen in negative direction, so the whole
  [0, 1] is covered.
- Leftmost and rightmost stops should be clamped to [0, 1] range if
  needed, because Skia ignores everything outside of this range.
2024-07-16 17:40:34 +03:00
Ali Mohammad Pur
8c8310f0bd LibWasm: Make Absolute/Negate<SignedIntegral> explicitly work mod 2^N
Previously we relied on signed overflow, this commit makes the same
behaviour explicit (avoiding UB in the process).
2024-07-16 15:09:03 +02:00
Colin Reeder
99824eae14 LibWeb: Add support for indexed setter of HTMLOptionsCollection 2024-07-16 10:59:59 +01:00
Andreas Kling
2c918b540d LibWeb+RequestServer: Let RequestServer set HTTP Accept-Encoding header
Ultimately it's RequestServer who knows which kind of encodings it can
handle and decompress, so let's have it set the Accept-Encoding.
2024-07-16 11:01:01 +02:00
Timothy Flynn
bfc9dc447f AK+LibWeb: Replace our home-grown base64 encoder/decoders with simdutf
We currently have 2 base64 coders: one in AK, another in LibWeb for a
"forgiving" implementation. ECMA-262 has an upcoming proposal which will
require a third implementation.

Instead, let's use the base64 implementation that is used by Node.js and
recommended by the upcoming proposal. It handles forgiving decoding as
well.

Our users of AK's implementation should be fine with the forgiving
implementation. The AK impl originally had naive forgiving behavior, but
that was removed solely for performance reasons.

Using http://mattmahoney.net/dc/enwik8.zip (100MB unzipped) as a test,
performance of our old home-grown implementations vs. the simdutf
implementation (on Linux x64):

                Encode    Decode
AK base64       0.226s    0.169s
LibWeb base64   N/A       1.244s
simdutf         0.161s    0.047s
2024-07-16 10:27:39 +02:00
BenJilks
3c897e7cf3 LibWeb: Propagate margin and offset when computing a box's baseline
When traversing the layout tree to find an appropriate box child to
derive the baseline from. Only the child's margin and offset was being
applied. Now we sum each offset on the recursive call.
2024-07-15 21:31:51 +02:00
Aliaksandr Kalenik
c8e29ad691 LibWeb: Add support for repeating radial gradient in Skia painter
Progress on Tests/Ref/css-gradients.html
2024-07-15 21:31:17 +02:00
Diego Frias
8a0ef17d9a LibWasm: Correctly validate v128_load*_lane instructions 2024-07-15 09:58:04 -06:00
Diego Frias
f5326f1747 LibWasm: Implement rest of SIMD load/store instructions
Also implement `v128.any_true`.
2024-07-15 09:58:04 -06:00
simonkrauter
9df8e1f224 LibWeb: Support accent-color for range input and progress element
Fixes #466
2024-07-15 15:51:50 +01:00
Colin Reeder
5c315b532e LibWeb: Add more legacy -webkit- aliases 2024-07-15 15:45:33 +01:00
Aliaksandr Kalenik
247a07b606 LibWeb: Add support for repeating conic gradient in Skia painter 2024-07-15 15:56:34 +03:00
Aliaksandr Kalenik
1ad4cd55b5 LibWeb: Respect conic gradient start angle in Skia painter 2024-07-15 15:56:34 +03:00
Aliaksandr Kalenik
54fdbf78ab LibWeb: Rotate conic gradient in Skia painter to match CSS start angle
-90deg rotation need to be applied, so start conic gradient angle in
Skia matches CSS start angle.
2024-07-15 15:56:34 +03:00
Aliaksandr Kalenik
761fa97fef LibWeb: Add support for conic gradient transition hints in Skia painter 2024-07-15 15:56:34 +03:00
Diego Frias
f63a945ba0 LibWeb: Implement the :has() pseudo-class
See https://drafts.csswg.org/selectors-4/#relational.
2024-07-15 11:52:03 +01:00
Aliaksandr Kalenik
be1075e673 LibWeb: Support radial gradient with asymmetrical size in Skia painter
Progress on Tests/Ref/css-gradients.html
2024-07-15 13:43:50 +03:00
Aliaksandr Kalenik
af9b91e0f7 LibWeb: Mark bitmaps passed to Skia as immutable
All bitmaps passed to Skia during rendering are not supposed to be
mutated.
2024-07-15 12:36:13 +03:00
Diego Frias
ff7ca5c48c LibWebView: Trim whitespace when sanitizing file paths
Previously, the presence of surrounding whitespace would give file paths
the `https` schema instead of the `file` schema, making navigation
unsuccessful.
2024-07-14 23:44:36 +01:00
Jamie Mansfield
9ce727d315 LibWeb/Fetch: Use correct header for prefetch requests
See:
 - https://github.com/whatwg/fetch/commit/a5560d2
2024-07-14 12:08:20 +02:00
Jamie Mansfield
aee77b975c LibWeb/Fetch: Add missing fetch step for preloaded resources
This is currently no-op and a FIXME exists to implement the "consume a
preloaded resource" AO.
2024-07-14 12:08:20 +02:00
Maciej
9eb568eacb LibWeb: Make innerHTML for XML nodes actually return inner HTML
The spec says to just call the XML serialization algorithm, but it
returns the "outer serialization", and we need the "inner" one. Let's
just concatenate serializations of children; then the result produced is
similar to one from Blink or Gecko.
2024-07-14 11:49:31 +02:00
Maciej
cad3b085a8 LibXML: Set XMLNS namespace for xmlns attribute
This is what Blink and Gecko do, and is required for serialization
(innerHTML etc.) of XML elements to work.
2024-07-14 11:49:31 +02:00
Enver Balalic
f0a306fe50 LibWasm: Implement most of iNxM SIMD operations
With this we pass an additional ~2100 tests.
We are left with 7106 WASM fails :).

There's still some test cases in the iNxM tests that fail with
this PR, but they are somewhat weird.

Co-authored-by: Diego Frias <styx5242@gmail.com>
2024-07-14 11:35:11 +02:00
simonkrauter
9da3e29818 LibWeb: Make scrollbar thumbs visible on dark background
Previously, the scrollbar thumbs were (almost) invisible, when the page
background color was similar to the scrollbar thumb color (DarkGray).
Now, in addition to the filled rounded rectangle, the scrollbar thumbs
are painted with a 1px solid LightGrey border. On a white or light color
background the border stays invisible.
2024-07-14 08:13:03 +02:00
simonkrauter
04526261c3 LibWeb: Use shorter variant of fill_rect_with_rounded_corners()
Instead of passing `thumb_corner_radius` 4 times, pass it only once.
2024-07-14 08:13:03 +02:00
Jamie Mansfield
1f1276ffb1 LibWeb: Implement HTMLMarqueeElement.trueSpeed 2024-07-13 19:57:51 +02:00
Jamie Mansfield
a917f8124c LibWeb: Implement HTMLMarqueeElement.scrollDelay 2024-07-13 19:57:51 +02:00
Jamie Mansfield
2a408ecfbc LibWeb: Implement HTMLMarqueeElement.scrollAmount 2024-07-13 19:57:51 +02:00
Jamie Mansfield
66528a17cb LibWeb: Implement HTMLFrameElement.noResize 2024-07-13 19:57:51 +02:00
Jamie Mansfield
e363e89189 LibWeb: Implement HTMLFrameElement.marginWidth 2024-07-13 19:57:51 +02:00
Jamie Mansfield
4edc946aed LibWeb: Implement HTMLFrameElement.marginHeight 2024-07-13 19:57:51 +02:00
Timothy Flynn
2dbd71d54b LibJS: Update specification steps for the Set Methods proposal
It is now Stage 4 and has been merged into the main ECMA-262 spec:
https://github.com/tc39/ecma262/commit/a78d504
2024-07-13 19:57:31 +02:00
Timothy Flynn
55b4ef7915 LibJS: Introduce the CanonicalizeKeyedCollectionKey AO
This is an editorial change in the ECMA-262 spec. See:
https://github.com/tc39/ecma262/commit/30257dd
2024-07-13 19:57:31 +02:00
Jamie Mansfield
d4a7cfb68f LibWeb: Stub BroadcastChannel interface
This is enough to get the 1Password login page to load :^)
2024-07-13 19:53:02 +02:00
Diego
4c7ef01b44 LibWasm: Fix sign issues in SIMD cmp ops 2024-07-13 14:38:10 +02:00
Tim Ledbetter
0a0651f34e LibWeb: Implement Node.normalize()
This method puts the given node and all of its sub-tree into a
normalized form. A normalized sub-tree has no empty text nodes and no
adjacent text nodes.
2024-07-13 09:35:54 +02:00
Tim Ledbetter
c92222dcae LibWeb: Add styling for disabled button elements 2024-07-13 09:33:16 +02:00
Tim Ledbetter
e18501f67f LibWeb: Don't dispatch click events to disabled FormAssociatedElements
Disabled FormAssociatedElements also no longer receive focus when
clicked.
2024-07-13 09:33:16 +02:00
Aliaksandr Kalenik
c09b5b8df0 LibGfx+LibWeb: Rename Gfx::WOFF2::Font to Gfx::WOFF2::Typeface
It's a leftover from VectorFont -> Typeface renaming
2024-07-13 09:31:02 +02:00
Aliaksandr Kalenik
1d2e559e13 LibGfx+LibWeb: Rename Gfx::WOFF::Font to Gfx::WOFF::Typeface
It's a leftover from VectorFont -> Typeface renaming
2024-07-13 09:31:02 +02:00
Aliaksandr Kalenik
2f515827c0 Everywhere: Rename Gfx::OpenType::Font to Gfx::OpenType::Typeface
It's a leftover from VectorFont -> Typeface renaming
2024-07-13 09:31:02 +02:00
Aliaksandr Kalenik
cac0228d3f LibGfx: Rename m_font to m_typeface in ScaledFont
It's a leftover from VectorFont -> Typeface renaming
2024-07-13 09:31:02 +02:00
Diego Frias
13a8c2a79d LibWasm: Make SIMD float min/max operations binary ops
They previously acted like comparison operators, which was not correct.
2024-07-13 01:27:55 +02:00
Diego
3efb11f5d8 LibWasm: Validate stack correctly in v128_store*_lane instructions
Previously the validator put a `v128` on the stack, which is not what
the spec defines.
2024-07-13 00:04:02 +02:00
BenJilks
a8c1bb0461 LibWeb: Draw dashed and dotted lines in Skia painter
Use the `SkDashPathEffect` path effect, to implement dashed and dotted
line styles.
2024-07-12 18:10:46 +03:00
Kenneth Myhra
24bed027b2 LibWeb: Align transform_stream_error_writable_and_unblock_write w/ spec
This aligns AO transform_stream_error_writable_and_unblock_write() with
the spec.

No functional change is introduced by this amendment.
2024-07-12 08:28:35 -04:00
Aliaksandr Kalenik
5c4ca5ac12 LibWeb: Support SVG gradient spread method in Skia painter
Progress on Tests/LibWeb/Ref/svg-gradient-spreadMethod.html
2024-07-12 15:03:44 +03:00
⭐caitp⭐
2c396b5378 LibWeb: Remove set_event_characteristics()
These methods were overriding properties specified by the EventInit
property bags in the constructor for WheelEvent and MouseEvent.

They appear to be legacy code and no longer relevant, as they would have
been used for ensuring natively dispatched events had the correct
properties --- This is now done in separate create methods, such as
MouseEvent::create_from_platform_event.

This fixes a couple WPT failures (e.g. in
/dom/events/Event-subclasses-constructors.html)
2024-07-12 11:57:33 +03:00
⭐caitp⭐
932a7d4d81 LibWeb: Pass event_init to base class constructor in FocusEvent
This fixes some WPT failures caused by the "view" parameter not being
initialized from the property bag.
2024-07-11 10:36:04 -06:00
Aliaksandr Kalenik
8a315592cc LibWeb: Use viewport-relative position for radial gradient in Skia
Fixes incorrect radial gradient painting caused by passing
gradient-rect-relative position when Skia expects viewport-relative.
2024-07-11 15:54:33 +02:00
Aliaksandr Kalenik
386e151f96 LibWeb: Add and use to_skia_point() helper 2024-07-11 15:54:33 +02:00
Aliaksandr Kalenik
2c8267babf LibWeb: Add basic conic gradient support in Skia painter
For now it doesn't account for start angle and repeat length but it's
better than not painting conic gradients at all.
2024-07-11 15:54:33 +02:00
simonkrauter
191531b7b1 LibWeb: Use correct default value for <input type=range>
Previously the input element was displayed with value 0, when no value
was set in the HTML. Now it uses `value_sanitization_algorithm()`, which
will calculate the default value.
In `value_sanitization_algorithm()` there was a logical mistake/typo.
The comment from the spec says "unless the maximum is less than the
minimum".
The added layout test would fail without the code changes.
Fixes #520
2024-07-11 11:56:13 +02:00
Kenneth Myhra
907dc84c1e LibWeb: Implement min option for ReadableStreamBYOBReader.read()
When the min option is given the read will only be fulfilled when there
are min or more elements available in the readable byte stream.

When the min option is not given the default value for min is 1.
2024-07-11 11:55:15 +02:00
Andrew Kaster
3850214aac LibGfx: Add workaround for un-parseable OpenType font family names
Co-Authored-By: sideshowbarker <mike@w3.org>
2024-07-10 21:05:47 -06:00
Diego
420a626554 LibWasm: Make memory.grow grow the memory's type
After a `memory.grow`, the type of the memory instance should be
updated so potential memory imports on the boundary are unlinkable.
2024-07-11 01:31:22 +02:00
Diego
d07cf26894 LibWasm: Fix loop arity for single-type blocktypes
Single-type blocktypes previously gave loop labels an arity of 1, even
though they're shorthand for `[] -> [T]`.
2024-07-11 00:51:03 +02:00
Diego
625fbc8085 LibWasm: Implement SIMD bitwise operations 2024-07-11 00:50:08 +02:00
sideshowbarker
0a55e36403 LibWeb: Fix handling of find-in-page with pseudo-element content
This change makes find-in-page ignore content that’s been added to the
document using CSS ::after or ::before pseudo-elements. Ignoring such
pseudo-element content for find-in-page matches the behavior in Chrome
and Safari (though not in Firefox).

Otherwise, without this change, find-in-page doesn’t ignore the
pseudo-element content, and we instead crash in
DOM::Range::common_ancestor_container after hitting an assert, due to
the start container and end container for the matched range not having a
common ancestor.

Fixes https://github.com/LadybirdBrowser/ladybird/issues/514
2024-07-10 19:31:57 +01:00
BenJilks
bee42160c5 LibWeb: When solving abspos lengths, use min max constrained height
Solving using the unconstrained height, when solving for bottom, would
either leave a gap over overflow its container.
2024-07-10 19:41:12 +02:00
Dennis Camera
e007c24ec9 LibJS: Implement extract_pointer_bits for ppc64
On PowerPC 64 pointers can use all 64 bits, however by convention on
Linux user-space addresses use only the lower 43 bits.
I'm not 100% certain that the masking off of the 16 high bits is the
proper solution, but it matches the rest of the LibJS code which assumes
pointers only use the lower 48 bits.

https://www.kernel.org/doc/ols/2001/ppc64.pdf
2024-07-10 11:04:46 -06:00
Aliaksandr Kalenik
2539fd6a5c LibGfx+LibWeb: Support CSS gradient "transition hints" in Skia painter
Skia does not have built-in support for gradient transition hints. So
instead of adding custom gradient painting, now we do the same thing as
other engines and preprocess color stops by replacing transition hints
with a bunch of points lying between adjacent color stops and calculated
using non-linear formula from the spec. As a result we get visually
close enough rendering we would get by applying spec-formula
individually to each point of a gradient.
2024-07-10 20:01:04 +03:00
simonkrauter
7766909415 LibWeb: Harmonize look of range input element
Previously the entire slider track was colored.
Now only the lower part of the slider track (left side of the thumb) is
colored.
Chrome and Firefox do the same.
2024-07-10 10:59:41 -06:00
Colin Reeder
449f81bfbe LibWeb: Add support for -webkit-text-fill-color 2024-07-10 10:25:04 -06:00
simonkrauter
b5e80db225 LibWeb: Define width for -webkit-slider-runnable-track
Fixes #512
2024-07-10 10:24:28 -06:00
Dennis Camera
90a2dcfde1 LibWeb: Implement KeyAlgorithms for big-endian 2024-07-10 10:23:26 -06:00
Dennis Camera
81a0aa5725 LibWeb: Implement CryptoAlgorithms for big-endian 2024-07-10 10:23:26 -06:00
Caitlin Potter
fac82119df LibWeb: Legacy Platform Objects don't force [[Configurable]]
Per https://github.com/whatwg/webidl/commit/3fb6ab4dbc6a42517c84acf0909,
this step in the spec didn't reflect the reality in mainstream browsers.
This change fixes a failure in WPT/dom/collections/
2024-07-10 10:19:27 -06:00
Colin Reeder
d427344f39 LibWeb: Handle inline-start and inline-end as float values
Should resolve #449 for LTR languages at least
2024-07-10 17:41:18 +02:00
Jamie Mansfield
772d64aca2 LibWeb: Add FIXMEs for missing SVGGeometryElement attributes 2024-07-10 10:28:43 +02:00
Jamie Mansfield
c9f3a7ddbf LibWeb: Add FIXMEs for missing SVGElement attributes 2024-07-10 10:28:43 +02:00
Jamie Mansfield
9d1ea4c7e0 LibWeb: Implement SVGElement.className 2024-07-10 10:28:43 +02:00
Jamie Mansfield
59f74b909b LibWeb: SVGElement includes GlobalEventHandlers
This fixes many tests on
wpt/html/webappapis/scripting/events/event-handler-all-global-events.html
2024-07-10 10:28:43 +02:00
Jamie Mansfield
ffb3a28684 LibWeb: Implement MessageEvent.initMessageEvent
This fixes wpt/html/webappapis/scripting/events/messageevent-constructor.https.html
2024-07-10 10:28:43 +02:00
Andreas Kling
4e7558c88b LibWeb: Don't fire resize event until document actually resizes once
The first time Document learns its viewport size, we now suppress firing
of the resize event.

This fixes an issue on multiple websites that were not expecting resize
events to fire so early in the loading process.
2024-07-10 10:27:31 +02:00
rmg-x
629068c2a7 LibWeb: Ensure normal line-height on HTMLInputElement
Previously, setting CSS `line-height: 0` on an `input` element would
result in no text being displayed.

Other browsers handle this by setting the minimum height to the
"normal" value for single line inputs.
2024-07-10 07:05:52 +02:00
rmg-x
b36a78a798 LibWeb: Add method HTMLInputElement::is_single_line() 2024-07-10 07:05:52 +02:00
rmg-x
df7f7268db LibWeb: Remove StyleProperties::compute_line_height(Layout::Node)
This method was unused and a FIXME remained for combining it with
another, similar method.
2024-07-10 07:05:52 +02:00
Andrew Kaster
40a2bb32c3 LibWeb: Create separate DedicatedWorkerGlobalScope class
This is how it's supposed to have been from the beginning, we were just
lazy :).
2024-07-10 07:04:53 +02:00
Andrew Kaster
f99c7ad85d LibWeb: Add closing flag to WorkerGlobalScope
Also implement close a worker AO.
2024-07-10 07:04:53 +02:00
Andrew Kaster
27ef9ffa8f LibWeb+WebWorker: Add IPC messages to request and communicate shutdown 2024-07-10 07:04:53 +02:00
Andrew Kaster
5d8784318d LibWeb: Initialize HTML::EventLoop with its type 2024-07-10 07:04:53 +02:00
Tim Ledbetter
aa4e18fca5 LibWeb: Remove m_src_is_set field from HTMLScriptElement
Now that we pass an `old_value` parameter to `attribute_changed` it is
no longer necessary to store the current attribute state in
`HTMLScriptElement`.
2024-07-10 07:04:08 +02:00
Tim Ledbetter
a552bda8d9 LibWeb: Pass the old attribute value to Element::attribute_changed() 2024-07-10 07:04:08 +02:00
Jamie Mansfield
190a419715 LibWeb: Implement EmbedderPolicy struct 2024-07-10 07:03:37 +02:00
Andreas Kling
f073f8301c LibJS: Demote some sanity checks in Value constructors to ASSERT 2024-07-10 07:03:20 +02:00
Andreas Kling
ef30f191b6 LibJS: Demote VERIFY in GCPtr to ASSERT
These were just here to create a nicer error message for debugging.
A release build will still crash in the exact same place, but now you'll
need to get a backtrace the normal way instead.
2024-07-10 07:03:20 +02:00
Diego
e8fd8982f8 LibWasm: Give names to functions exported to JS via ref.func
https://webassembly.github.io/spec/js-api/index.html#name-of-the-webassembly-function
2024-07-10 00:37:18 +02:00
Maciej
d890be6e0f LibWeb: Prepare script when src is set the first time
From https://html.spec.whatwg.org/multipage/scripting.html#script-processing-model:
When a script element el that is not parser-inserted experiences one
of the events listed in the following list, the user agent must
immediately prepare the script element el:
- [...]
- The script element is connected and has a src attribute set where
  previously the element had no such attribute.
2024-07-09 20:30:27 +01:00
Diego
afd8d90f32 LibWasm: Error when parsed section lengths are invalidated 2024-07-09 14:22:31 +02:00
Diego
5382fbb617 LibWasm: Remove Wasm::ValueType::Kind::Null* variants
As far as I know, they're not in the spec and don't serve any purposes
in the internals of LibWasm.
2024-07-09 14:22:00 +02:00
Andreas Kling
509c10d14d LibJS: Make GetById and GetByValue avoid get_identifier() in common case
We now defer looking up the various identifiers by IdentifierTableIndex
until the last moment. This allows us to avoid the retrieval in common
cases like when a property access is cached.

Knocks a ~12% item off the profile on https://ventrella.com/Clusters/
2024-07-09 14:16:11 +02:00
Andreas Kling
ae0cfe4f2d LibJS: Move CommonImplementations.h into Interpreter.cpp
Now that the Interpreter is the only user of these functions, we might
as well keep them in Interpreter.cpp which makes CLion less confused.
2024-07-09 14:16:11 +02:00
Maciej
65d8d205ee LibWeb: Implement HTML DragEvent class
This just defines the class, drag events aren't actually fired yet.
2024-07-09 11:28:32 +01:00
Jamie Mansfield
27f3305b87 Base: Use % for keys in templates
The previous character used, @, conflicted with CSS. % is used by other
templating engines, and doesn't conflict with language features (e.g.
media queries).
2024-07-09 11:21:07 +02:00
doctortheemh
4ef76f3198 LibGfx: Decode AVIF images
Use libavif to decode AVIF images in LibGfx.
2024-07-09 08:15:47 +02:00
simonkrauter
062a266574 LibWeb: Use system colors for input type range and progress as default
Instead of using fixed arbitrary colors for the background of the bar,
AccentColor and Background are now used.
2024-07-08 21:06:42 +01:00
Aliaksandr Kalenik
067bb64eb5 headless-browser: Add CLI argument to enable Skia painter
Useful to check what ref-tests are currently broken with Skia painter.
2024-07-08 19:46:33 +01:00
Diego
31c7e98a4a LibWasm: Fix comparisons between 0.0 and -0.0
According to the spec, -0.0 < 0.0.
2024-07-08 15:12:16 +02:00
Diego
c882498d44 LibWasm: Fix some floating-point conversion issues
NaN bit patterns are now (hopefully) preserved. `static_cast` does not
preserve the bit pattern of a given NaN, so ideally we'd use some other
sort of cast and avoid `static_cast` altogether, but that's a large
change for this commit. For now, this fixes the issues found in spec
tests.
2024-07-08 15:12:16 +02:00
Luke Warlow
63a5ff70e5 LibWeb: Implement :modal pseudo class
Adds the :modal pseudo class which matches dialogs opened with
showModal().
2024-07-08 11:34:06 +02:00
Tim Ledbetter
34b9873664 LibWeb: Populate filename in WindowOrWorkerGlobalScope.reportError()
Previously, when `WindowOrWorkerGlobalScope.reportError()` was called
the `filename` property of the dispatched error event was blank. It is
now populated with the full path of the active script.
2024-07-08 11:26:24 +02:00
Tim Ledbetter
572324d47b LibWeb: Invalidate input element style on focus change
The style of input and textarea elements is now invalidated when focus
is changed to a new element. This ensures any `:focus` selectors are
applied correctly.
2024-07-08 08:48:38 +01:00
Andreas Kling
9448c957c1 LibJS: Cache environment index for global declarative bindings
This allows global `let` and `const` variable accesses to be cached
by the GetGlobal instruction, and works even when the access is in a
different translation unit from the declaration.

Knocks a ~10% item off the profile on https://ventrella.com/Clusters/
2024-07-07 20:01:46 +02:00
Natsuki Ikeguchi
ccb3a2f7ad LibWeb: Add initial implementation of global.reportError() 2024-07-07 13:53:01 +01:00
Olekoop
cb6e438019 LibCore: Don't check for Core::NotificationType::None on Android
In this section on Android it seems to loop itself for some reason
As a quick hack we can just not check for Core::NotificationType::None
2024-07-07 03:43:32 -06:00
Daniel Bertalan
33bfac23ef LibJS: Add missing ValueInlines.h include for Value::to_numeric
When compiling with `-O2 -g1` optimizations (as done in the main
Serenity build), no out-of-line definitions end up emitted for
`Value::to_numeric`, causing files that reference the function but don't
include the definition from `ValueInlines.h` to add an undefined
reference in LibJS.so.

(cherry picked from commit 85b7ce8c2f6daf0db80e801d7fb2503d070765ce)
2024-07-07 11:32:57 +02:00
simonkrauter
a676bd97a7 LibWeb: Correct HTMLMeterElement color selection
The logic of the comment "the region between the high boundary and the
maximum value must be treated as the optimum region" is correct.
However, the code below covered only two cases, the optimum case was
missing.
Fixes #473
2024-07-07 08:07:19 +02:00
Alec Murphy
1759b82114 LibWeb: Scroll page and nav history with keyboard
This patch implements basic keyboard functionality for page scrolling
and history traversal.
2024-07-07 08:05:22 +02:00
Jacob Wischnat
7a03ef45c2 LibMedia: Support videos with BT470BG color matrix 2024-07-07 07:39:07 +02:00
rmg-x
7f04ceb4f6 LibWeb: Add response status check when loading fallback favicon
If a favicon image response status was not ok,
we would still attempt to decode the received body data.
2024-07-06 15:51:22 -06:00
rmg-x
8085e3eb26 LibWeb: Add response status check in SharedImageRequest::fetch_image
If an image response status was not ok, we would still pass the received
body data to ImageDecoder which is not correct.
2024-07-06 15:51:22 -06:00
Ali Mohammad Pur
e0465b8939 Revert "LibTLS+Everywhere: Switch to using WolfSSL"
This reverts commit 8bb610b97a.
Linking wolfSSL seems to cause more legal trouble than it's worth due to
it being GPLv2, so let's undo this for now.
2024-07-06 15:15:34 -06:00
Keith Cirkel
8d593bcfeb LibWeb: Add customElements.getName 2024-07-06 14:51:43 -06:00
Ali Mohammad Pur
8bb610b97a LibTLS+Everywhere: Switch to using WolfSSL
This commit replaces all TLS connection code with wolfssl.
The certificate parsing code has to remain for now, as wolfssl does not
seem to have any exposed API for that.
2024-07-06 22:15:19 +02:00
Aliaksandr Kalenik
172e080b07 LibCore: Print error code returned by vkCreateInstance()
Good to have at least some information about instance creation failure.
2024-07-06 18:58:22 +01:00
Gingeh
e8d32bab58 LibWeb/CSS: Support hwb, oklab and oklch color functions 2024-07-06 05:18:00 -06:00
Gingeh
490a36bab1 LibWeb/CSS: Split parse_rgb_or_hsl_color into separate functions 2024-07-06 05:18:00 -06:00
Jamie Mansfield
65be928d4e LibWeb: Implement HTMLMediaElement.textTracks 2024-07-06 11:41:13 +02:00
Jamie Mansfield
ecad28657a LibWeb/HTML: Implement TextTrackList IDL interface 2024-07-06 11:41:13 +02:00
Jamie Mansfield
ba8e77df16 LibWeb: Implement TextTrack.id 2024-07-06 11:41:13 +02:00
Jamie Mansfield
ab91a616b8 LibWeb: Allow TrackEvent track to be a TextTrack
Fixes two FIXMEs :^)
2024-07-06 11:41:13 +02:00
Aziz Berkay Yesilyurt
13cd653d1c LibWeb/HTML: Update Text Input Styling
So that it is closer to the spec.
https://www.w3.org/TR/css-ui-4/#input-rules
2024-07-06 10:21:35 +02:00