Commit graph

60443 commits

Author SHA1 Message Date
Aliaksandr Kalenik
966b042db6 LibWeb: Fix hanging location.reload() when SHE is populated by fetching
Adds a hack to address spec bug https://github.com/whatwg/html/issues/9869
2024-03-30 07:35:55 +01:00
Aliaksandr Kalenik
609a72f7c7 LibWeb: Fix endless spinning in apply_the_history_step()
While waiting for a task that populates a session history entry, we
can't limit the processing of the event loop to the
`NavigationAndTraversal` task source. This is because fetching uses the
`Networking` task source, which also needs to be processed.

Since making a fetch request might take some time, we want to process
everything on the event loop while waiting, to avoid blocking user
interactions.

It is still possible to use `spin_processing_tasks_with_source_until()`
on subsequent steps of `apply_the_history_step()`.

Also modifies test that was flaky.
2024-03-30 07:35:55 +01:00
Aliaksandr Kalenik
baf589deef LibWeb: Add missing navigable destroyed check 2024-03-30 07:35:55 +01:00
Timothy Flynn
2393ee6548 LibWeb: Don't attempt to notify chromes about audio playing until ready
The current location of the IPC invocation is often too soon. We reach
it before the audio file has completely finished downloading / loading,
thus there isn't an AudioTrack object yet.

Instead, wait until we are actually playing the audio to invoke the IPC.

This is particularly frequent on bandcamp.
2024-03-30 07:35:30 +01:00
Timothy Flynn
0df7f5bcfc Meta: Port recent changes to the GN build
5dce559ed8
c1b5fe61d1
2024-03-30 07:35:30 +01:00
Matthew Olsson
87155c7b1d LibWeb: Fix infinite loop in CSS::Parser::parse_transition_value() 2024-03-30 07:34:25 +01:00
Andreas Kling
906c69c6d1 LibWeb: Don't fall apart on transition: none in CSS
Fixes a crash when loading https://soundcloud.com/
2024-03-30 07:34:02 +01:00
Timothy Flynn
b1a30d8269 LibWebView+WebContent: Remove some SPAM_DEBUG log points
I don't know if anyone ever enables these anymore but I think we're well
past needing to persist logging these particular IPC endpoints.
2024-03-29 22:00:25 +01:00
Timothy Flynn
4a94a7cdbb WebContent: Reduce IPC boilerplate within the web content process
Use the existing helper function to find the page / log when the page
cannot be found.
2024-03-29 22:00:25 +01:00
Timothy Flynn
7a1847e6e3 LibWebView: Reduce IPC boilerplate within the chrome process
Add a small helper function to find the view / log when the view cannot
be found.
2024-03-29 22:00:25 +01:00
MacDue
60292c9b33 Tests/LibWeb: Add some ref tests for SVG <clipPath>s 2024-03-29 21:59:56 +01:00
MacDue
8cec7ea221 LibWeb: Paint/apply uses of SVG <clipPath>s
This works just like masks, with a few more (spec imposed) limitations.
All the style properties on the contents of a <clipPath> are ignored,
and instead we just paint the "raw geometry" (as all black), then apply
that as an alpha mask to the target element.

If the element has both a `mask` and `clip-path` set, we compute the
masking area as the intersection of the mask rect and clip rect, then
apply the clip mask to the `mask` (producing a combined mask).

Fixes #19648
Fixes #23006
2024-03-29 21:59:56 +01:00
MacDue
c1b5fe61d1 LibWeb: Lay out SVG <clipPath> uses
This uses the same trick as done for masks in #23554. Each use of an
SVG `<clipPath>` becomes it's own layout subtree rooted at it's user.
This allows each use have it's own layout (which allows supporting
features such as `clipPathUnits`).
2024-03-29 21:59:56 +01:00
MacDue
0a061a6a63 LibWeb: Allow references via xlink:href for SVG <use> elements 2024-03-29 21:59:56 +01:00
MacDue
03f957dc79 LibWeb: Add the clip-path property and resolve it for SVG elements 2024-03-29 21:59:56 +01:00
Matthew Olsson
3160733c1a LibWeb: Expand transition longhand values 2024-03-29 21:58:12 +01:00
Matthew Olsson
1e6ad075f3 LibWeb: Add transition properties to Properties.json 2024-03-29 21:58:12 +01:00
Matthew Olsson
5dce559ed8 LibWeb: Parse transition style values 2024-03-29 21:58:12 +01:00
Matthew Olsson
911088278d LibWeb: Add the CSSTransition IDL object 2024-03-29 21:58:12 +01:00
Matthew Olsson
e4f1cb6f8c LibWeb: Track the transition generation
This is used for transition's class-specific composite ordering
2024-03-29 21:58:12 +01:00
Timothy Flynn
22fdcfbc50 LibJS: Include identifier information in nullish property write access
When a PutById / PutByValue bytecode operation results in accessing a
nullish object, we now include the name of the property and the object
being accessed in the exception message (if available). This should make
it easier to debug live websites.

For example, the following errors would all previously produce a generic
error message of "ToObject on null or undefined":

  > foo = null
  > foo.bar = 1
  Uncaught exception:
  [TypeError] Cannot access property "bar" on null object "foo"
      at <unknown>

  > foo = { bar: undefined }
  > foo.bar.baz = 1
  Uncaught exception:
  [TypeError] Cannot access property "baz" on undefined object "foo.bar"
      at <unknown>

Note we certainly don't capture all possible nullish property write
accesses here. This just covers cases I've seen most on live websites;
we can cover more cases as they arise.
2024-03-29 21:57:19 +01:00
Timothy Flynn
9bbd3103a8 LibJS: Include identifier information in nullish property read access
When a GetById / GetByValue bytecode operation results in accessing a
nullish object, we now include the name of the property and the object
being accessed in the exception message (if available). This should make
it easier to debug live websites.

For example, the following errors would all previously produce a generic
error message of "ToObject on null or undefined":

  > foo = null
  > foo.bar
  Uncaught exception:
  [TypeError] Cannot access property "bar" on null object "foo"
      at <unknown>

  > foo = { bar: undefined }
  > foo.bar.baz
  Uncaught exception:
  [TypeError] Cannot access property "baz" on undefined object "foo.bar"
      at <unknown>

Note we certainly don't capture all possible nullish property read
accesses here. This just covers cases I've seen most on live websites;
we can cover more cases as they arise.
2024-03-29 21:57:19 +01:00
Timothy Flynn
f6ea4bbff8 LibCore: Turn LibCoreMinimal into a normal shared library
We were able to keep LibCoreMinimal a bit smaller as an object library,
but that is causing ODR violations in the fuzzer build (realistically,
should be an issue in all builds, but only the fuzzer actively complains
for some reason).

To make it a shared library, we have to add a couple more symbols to it,
and make LibCore publicly depend on it.
2024-03-29 16:23:34 -04:00
Fabian Dellwing
6cd09cc75c Ports: Add gpgme 2024-03-29 17:00:34 +01:00
Fabian Dellwing
fdff0db5bf Ports: Update gnupg to 2.4.5 2024-03-29 17:00:34 +01:00
Fabian Dellwing
e35bf57e01 Ports: Update ntbtls to 0.3.2 2024-03-29 17:00:34 +01:00
Fabian Dellwing
c98d9b20f8 Ports: Update npth to 1.7 2024-03-29 17:00:34 +01:00
Fabian Dellwing
800a712930 Ports: Update libksba to 1.6.6 2024-03-29 17:00:34 +01:00
Fabian Dellwing
2ef44412c4 Ports: Update libgpg-error to 1.48 2024-03-29 17:00:34 +01:00
Fabian Dellwing
e0544def45 Ports: Update libgcrypt to 1.10.3 2024-03-29 17:00:34 +01:00
Fabian Dellwing
b0a026acdd Ports: Update libassuan to 2.5.7 2024-03-29 17:00:34 +01:00
Fabian Dellwing
bc605ebb9c Ports: Add openjpeg 2024-03-29 17:00:34 +01:00
Andreas Kling
dd3e002ecf LibWeb: Make empty images (no bitmap, no alt text) take no layout space
This matches the behavior of other browsers.
2024-03-29 08:52:55 -04:00
Timothy Flynn
43e55668eb LibWeb: Implement Document's supported property names closer to the spec
Our implementation was errantly matching HTML tags other than the list
specified by the spec. For example, a <meta name=title> tag would be a
match for document.title.

For example, bandcamp will dynamically update its title when audio is
played as follows:

    document.title = "▶︎ " + document.title;

And bandcamp also has a <meta name=title> tag. The result was that the
title would become "▶︎ [object HTMLMetaElement]".
2024-03-29 08:52:01 -04:00
Timothy Flynn
8ff3cd6d76 Ladybird: Reset the default favicon when starting a new page load
This matches the AppKit chrome. This resets the favicon so that we do
not keep using the previous site's favicon if the new site does not have
one.
2024-03-29 08:52:01 -04:00
Timothy Flynn
45c4e1c446 Ladybird/AppKit: Implement history state change mechanics
We now appropriately update the current history item or create a new
history item in the chrome process.
2024-03-29 08:52:01 -04:00
Timothy Flynn
258b1f30b4 Ladybird/AppKit: Remove an unused property from Tab
This was added for a feature that has since been removed, and is now
unused.
2024-03-29 08:52:01 -04:00
Timothy Flynn
2830bdf04a Ladybird/Qt: Implement history state change mechanics
We now appropriately update the current history item or create a new
history item in the chrome process.
2024-03-29 08:52:01 -04:00
Timothy Flynn
245489e68c Browser: Implement history state change mechanics
We now appropriately update the current history item or create a new
history item in the chrome process.
2024-03-29 08:52:01 -04:00
Timothy Flynn
8b1ad5c496 LibWeb+LibWebView+WebContent: Add a new IPC for modifying history state
Let's not re-invoke the "page did start loading" IPC when the history
state is pushed/replaced. It's a bit misleading (the change does not
actually load the new URL), but also the chromes may do more work than
we want when we change the URL.

Instead, add a new IPC for the history object to invoke.
2024-03-29 08:52:01 -04:00
Timothy Flynn
1767f405dc LibWeb+LibWebView+WebContent: Convert URL declarations to east-const 2024-03-29 08:52:01 -04:00
Timothy Flynn
cd73878d8c Meta: Port recent changes to the GN build
a1f4d1875e
2024-03-29 08:52:01 -04:00
Matthew Olsson
86bb51d9bf LibWeb: Add a test for Animation.persist() 2024-03-29 06:59:37 +01:00
Matthew Olsson
c22055941a LibWeb: Add a test for Animation.reverse() 2024-03-29 06:59:37 +01:00
Matthew Olsson
83d3defc11 LibWeb: Add a test for Animation.updatePlaybackRate() 2024-03-29 06:59:37 +01:00
Matthew Olsson
7d8cf49b25 LibWeb: Add a test for Animation.pause() 2024-03-29 06:59:37 +01:00
Matthew Olsson
074f5429a6 LibWeb: Add a test for Animation.play() 2024-03-29 06:59:37 +01:00
Matthew Olsson
7472536ecb LibWeb: Add a test for Animation.finish() 2024-03-29 06:59:37 +01:00
Matthew Olsson
d1b30a1bb5 LibWeb: Add a test for Animation.cancel() 2024-03-29 06:59:37 +01:00
Matthew Olsson
291871e0cc LibWeb: Associate InternalAnimationTimeline with a DOM::Document 2024-03-29 06:59:37 +01:00