1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-23 06:37:40 +00:00
Commit graph

4650 commits

Author SHA1 Message Date
Linus Groh
dd5d3e2f4f LibWeb: Implement 'fetch controller' struct 2022-10-30 20:10:29 +00:00
Linus Groh
fef331a03f LibWeb: Implement 'fetch timing info' struct 2022-10-30 20:10:29 +00:00
Linus Groh
1f8ed8fca7 LibWeb: Implement 'connection timing info' struct 2022-10-30 20:10:29 +00:00
Linus Groh
cc6eaafe6b LibWeb: Implement 'Byte sequence as body' AO 2022-10-30 20:10:29 +00:00
Linus Groh
dcded8d39f LibWeb: Implement 'Safely extract BodyInit' AO 2022-10-30 20:10:29 +00:00
Linus Groh
1e1fbb93fb LibWeb: Implement 'Determine request’s Referrer' AO 2022-10-30 20:10:29 +00:00
Linus Groh
1e5cac9e9c LibWeb: Implement 'Strip url for use as a referrer' AO 2022-10-30 20:10:29 +00:00
Linus Groh
6c1a9b28f1 LibWeb: Implement 'Is url potentially trustworthy?' AO 2022-10-30 20:10:29 +00:00
Linus Groh
d56a6eb508 LibWeb: Implement 'Is origin potentially trustworthy?' AO 2022-10-30 20:10:29 +00:00
Linus Groh
58ad6de954 LibWeb: Implement 'Should response be blocked due to nosniff?' AO 2022-10-30 20:10:29 +00:00
Linus Groh
7e46150a71 LibWeb: Implement 'Should response be blocked due to its MIME type?' AO 2022-10-30 20:10:29 +00:00
Linus Groh
62228f0870 LibWeb: Implement 'Should request be blocked due to a bad port' AO 2022-10-30 20:10:29 +00:00
Linus Groh
7fd4c7b0c6 LibWeb: Implement 'host is domain' concept from the URL spec 2022-10-30 20:10:29 +00:00
Linus Groh
55315d72f7 LibWeb: Explain the use-URL-credentials flag
This is a change in the Fetch spec.

See: a388348
2022-10-30 14:51:58 +00:00
Linus Groh
d2deb8fa6d LibWeb: Add has-cross-origin-redirects flag to Fetch::Infra::Response
This is a change in the Fetch spec.

See: 7c30987
2022-10-30 14:51:58 +00:00
Linus Groh
793a1f5994 LibWeb: Actually define Blob-to-ReadableStream conversion
This is a change in the Fetch spec.

See: 4cd70cf
2022-10-30 14:48:32 +00:00
Linus Groh
b1968b8bed LibWeb: Make Fetch::Infrastructure::{Request,Response,HeaderList} GC'd
This is the way.

On a more serious note, there's no reason to keep adding ref-counted
classes to LibWeb now that the majority of classes is GC'd - it only
adds the risk of discovering some cycle down the line, and forces us to
use handles as we can't visit().
2022-10-30 11:30:23 +00:00
Linus Groh
de3e6cc75c LibWeb: Ensure dom_exception_to_throw_completion() always takes a VM
The combination of template + auto&& parameter + constexpr if statements
allowed one caller to pass in a GlobalObject, without the compiler
complaining.
2022-10-29 15:48:46 +01:00
Linus Groh
9cda0b2b2c LibWeb: Remove outdated forward declarations 2022-10-29 15:48:46 +01:00
Linus Groh
6ce08d3f75 LibWeb: Use StringView literals for all WebIDL::SimpleExceptions 2022-10-29 15:48:46 +01:00
Andreas Kling
14d4f227f2 LibWeb: Don't invalidate style when adding/removing empty style sheet
For whatever reason, web pages sometimes add and/or remove a completely
empty style sheet. When this happens, we don't need to invalidate the
document's style, since the outcome will be the same as before.
2022-10-29 15:16:57 +02:00
Andreas Kling
ba6a9318c3 LibWeb: Don't update style/layout in template contents owner documents
These helper documents don't actually get rendered, so computing style
and doing layout for them is a complete waste of work.
2022-10-29 15:16:57 +02:00
Andreas Kling
64d5d633cf LibWeb: Don't invalidate layout when setting .innerHTML on <template>
HTML template elements don't affect rendering, so invalidating the
entire document's layout after poking into a <template> was a huge waste
of work on template-heavy pages.
2022-10-29 15:16:57 +02:00
Andreas Kling
ba5e511dc1 LibWeb: Make layout-after-resize lazy (because why not)
There's no need to force a synchronous relayout after the viewport has
been resized. By making it lazy, we might be able to coalesce it with
other layout work.
2022-10-29 15:16:57 +02:00
Andreas Kling
c7489e7665 LibWeb: Don't invalidate style for entire document on Node insertion
Like for attribute changes, we now only invalidate the insertion parent
and all of its descendants. Again, this is very aggressive, but also
way less than doing the entire document.

Once we implement the CSS :has() selector, we'll need to become more
sophisticated about invalidation.
2022-10-29 15:16:57 +02:00
Andreas Kling
a4de30de5a LibWeb: Update "appropriate template contents owner document" AO
This was moved from HTMLTemplateElement to Document at some point,
so let's match the spec and move it here too.
2022-10-29 15:16:57 +02:00
Andreas Kling
ccd72a2add LibWeb: Don't invalidate style for entire document on attribute change
We now only invalidate the style of the context element and all of its
descendants. It's still very aggressive, but much less than before.

Note that this will need to become a lot smarter once we implement the
CSS :has() selector.
2022-10-29 15:16:57 +02:00
Andreas Kling
5530040b3c LibWeb: Annotate and simplify the HTML fragment parsing algorithm
This patch adds inline spec comments, and then adjusts the code a bit
so it reads more like the spec.
2022-10-29 15:16:57 +02:00
Luke Wilde
5e2b41175c LibWeb: Return empty Optional<StyleProperty> for shorthand properties
This is a stopgap until we implement shorthand -> longhand conversion.
2022-10-28 16:17:08 +01:00
Luke Wilde
377eb09492 LibWeb: Stub HTMLMediaElement.load 2022-10-28 16:17:08 +01:00
Luke Wilde
62e3117dfd LibWeb: Expose NodeFilter on the Window object 2022-10-28 16:17:08 +01:00
Andreas Kling
b1c73b3605 Revert "LibWeb: Use OrderedHashMap to store pending idle callbacks"
This reverts commit dc15cacfc3.

It appears to be causing some assertions, so let's revert it.
2022-10-27 17:25:52 +02:00
Sam Atkins
ff0a2b1a60 LibGfx+Everywhere: Make DisjointRectSet work for non-int Rects
For convenience, `DisjointIntRectSet` is an alias for
`DisjointRectSet<int>`, and is used everywhere for now.
2022-10-27 13:06:33 +02:00
Andreas Kling
27b63feae5 LibWeb: Always resolve horizontal padding and borders on block-level boxes
We were neglecting to resolve the used horizontal padding and border
properties on block-level boxes when treating their width as `auto`
during intrinsic sizing.

This led to padding and border not contributing to the intrinsic width
of their containing block
2022-10-27 13:02:27 +02:00
Andreas Kling
4580e054f5 LibWeb: Place block-level boxes in both axes before doing inside layout
This ensures that static position calculations has access to final
box offsets.
2022-10-27 13:02:27 +02:00
Andreas Kling
3e10293047 LibWeb: Implement static position for abspos children of flex container 2022-10-27 13:02:27 +02:00
Luke Wilde
5cc190ad70 LibWeb: Make Fetch::Request follow abort signals where appropriate 2022-10-26 18:49:41 +01:00
Luke Wilde
dce6327ae7 LibWeb: Add the ability for an AbortSignal to follow another
Following another abort signal basically means to make an abort signal
abort when another abort signal is aborted, unless the following signal
is already aborted.
2022-10-26 18:49:41 +01:00
Luke Wilde
07e3bb729d LibWeb: Convert DOM::AbortSignal to use JS::SafeFunction
This protects the captured GC pointers automatically instead of
manually.
2022-10-26 18:49:41 +01:00
Linus Groh
419eb7ab97 LibWeb: Fix unchecked Variant access in Request::construct_impl()
We need to keep an Infrastructure::Request::BodyType around as we're not
sure what's actually inside, instead accessing Infrastructure::Body
directly.

Co-authored-by: Luke Wilde <lukew@serenityos.org>
2022-10-26 10:36:48 +01:00
Linus Groh
16136f0bdd LibWeb: Fix incorrect peek offset in HeaderList::get_decode_and_split()
We want to look at the current character, not the next one.
2022-10-26 10:36:48 +01:00
Luke Wilde
28bc3a76d9 LibWeb: Remove old assertion in host_enqueue_promise_job context hack
We no longer need to pull a global object from somewhere to push an
execution context onto the stack, so the assertion no longer makes
sense.
2022-10-25 22:54:07 +01:00
networkException
681e36706b LibWeb: Implement recent changes to module script fetching
This patch implements all changes to the specification touching the
subset of module script fetching we support.

Notably it adds parts of the specification for supporting import maps.

With this we are also able to get rid of a non standard workaround for a
spec issue we discovered while initially implementing module scripts :^)
2022-10-24 23:06:56 +01:00
networkException
9afea1248f LibWeb: Add disallow further import maps steps to ESO 2022-10-24 23:06:56 +01:00
networkException
794dc2e16b LibWeb: Expose an import map and import maps allowed on Window 2022-10-24 23:06:56 +01:00
networkException
d7947995d9 LibWeb: Add the ImportMap struct 2022-10-24 23:06:56 +01:00
networkException
ee27d8cdfd LibWeb: Add is_code_unit_prefix() function 2022-10-24 23:06:56 +01:00
Linus Groh
b00d49bbf0 LibWeb: Teach MainThreadVM about module scripts 2022-10-24 22:58:51 +01:00
Linus Groh
7e7def71c1 LibWeb: Use getters instead of direct member access in Response methods
This fixes the behavior of those methods for FilteredResponse subclasses
as those only override the getter methods, not their private members.
2022-10-24 22:58:37 +01:00
Linus Groh
8f8fcfee1a LibWeb: Also make non-const Response getters virtual
We wouldn't want a filtered response to bypass the overridden methods
based on constness.
2022-10-24 22:58:37 +01:00