1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-25 16:05:06 +00:00
Commit graph

3700 commits

Author SHA1 Message Date
Andreas Kling
73f77969a6 LibWeb: Add API for setting a document's referrer 2022-08-05 12:46:42 +02:00
Andreas Kling
6e71e400e6 LibWeb: Store document origin as a HTML::Origin object
This will allow us to remember an arbitrary origin instead of deriving
it from the document's URL.
2022-08-05 12:46:42 +02:00
Andreas Kling
b6bd793ede LibWeb: Clear the "is initial about:blank" flag in Document.write() 2022-08-05 12:46:41 +02:00
Andreas Kling
c46a8194b4 LibWeb: Use Document::m_type to check for XML documents
...instead of doing a string compare on the DOCTYPE node.
2022-08-05 12:46:41 +02:00
Andreas Kling
99ecc216d7 LibWeb: Show iframe URLs in layout tree dumps 2022-08-05 12:46:40 +02:00
Andreas Kling
602f927982 LibWeb: Start implementing "create and initialize a Document" from HTML
The way we've been creating DOM::Document has been pretty far from what
the spec tells us to do, and this is a first big step towards getting us
closer to spec.

The new Document::create_and_initialize() is called by FrameLoader after
loading a "text/html" resource.

We create the JS Realm and the Window object when creating the Document
(previously, we'd do it on first access to Document::interpreter().)

The realm execution context is owned by the Environment Settings Object.
2022-08-05 12:46:40 +02:00
Andreas Kling
0781bdb23e LibWeb: Add HTML::NavigationParams 2022-08-05 12:46:39 +02:00
Andreas Kling
e756b5450d LibWeb: Add a way to construct HTML::Window without a DOM::Document
This will be used to implement the rather intricate construction order
in the HTML spec.
2022-08-05 12:42:46 +02:00
Andreas Kling
eca0873245 LibWeb: Always put a dummy execution context on the main thread VM stack
A lot of code assumes that there's a current execution context. By
setting up a dummy context right after creating the main thread VM,
we ensure that such code can always run.
2022-08-05 12:42:46 +02:00
Andreas Kling
2801ddfa76 LibWeb: Implement (naive) version of HTMLIFrameElement.contentWindow
This should really return the WindowProxy, but since we don't have the
infrastructure set up just yet, just return the window object itself
for now.
2022-08-05 12:42:46 +02:00
Andreas Kling
8909ef5b90 LibWeb: Add HTML::SandboxingFlagSet 2022-08-05 12:42:46 +02:00
Andreas Kling
5d773732b7 LibWeb: Add HTML::CrossOriginOpenerPolicyEnforcementResult 2022-08-05 12:42:46 +02:00
Andreas Kling
b73bd4f988 LibWeb: Add HTML::CrossOriginOpenerPolicy 2022-08-05 12:42:46 +02:00
Andreas Kling
b838f2029b LibWeb: Move DOM::Document factory functions out of line 2022-08-05 12:42:46 +02:00
Andreas Kling
50d951aea2 LibJS: Let Shape store a Realm instead of a GlobalObject
This is a cautious first step towards being able to create JS objects
before a global object has been instantiated.
2022-08-05 12:42:46 +02:00
Andreas Kling
69a45adfbe LibWeb: Remove page_did_set_document_in_top_level_browsing_context()
This PageClient callback was never used for anything.
2022-08-05 12:42:46 +02:00
Andreas Kling
ffb23db57f LibWeb: Add browsing context "still on its initial about:blank Document" 2022-08-05 12:42:46 +02:00
Andreas Kling
c4a0b7057b LibWeb: Add basic skeleton of HTML "session history" to BrowsingContext 2022-08-05 12:42:46 +02:00
Andreas Kling
29a4266367 LibWeb: Add the "is initial about:blank" flag to DOM::Document 2022-08-05 12:42:46 +02:00
Kenneth Myhra
1e5d107649 LibWeb: Declare variable with the auto keyword
Use the auto keyword instead of the full type name like we do elsewhere
in the codebase.
2022-08-02 08:20:40 +01:00
Kenneth Myhra
c8c5f05de5 LibWeb: Make sure Blob type is not outside range 0x0020-0x007E
This makes sure that type is set to an empty string if
BlobPropertyBag::type is outside the range 0x0020 to 0x007E.
2022-08-02 08:20:40 +01:00
Kenneth Myhra
73aec263b1 LibWeb: Move is_basic_latin() to Blob.{cpp,h}
This method needs to be accessible from both Blob and File.
2022-08-02 08:20:40 +01:00
Karol Kosek
a0546318f9 LibWeb: Make <th> elements bold by default 2022-07-30 22:32:29 +02:00
MacDue
d4b2eb22e1 LibWeb: Resolve circular IDL imports
These circular imports led to the generator silently failing to
generate the required methods/properties.
2022-07-30 13:20:47 +02:00
Kenneth Myhra
bbd9490683 LibWeb: Handle endings member of options being "native"
This patch passes the options argument to process_blob_parts() and makes
use of the "convert line endings to native" algorithm when the endings
member of options (BlobPropertyBag) is set to "native".
2022-07-30 10:59:46 +01:00
Kenneth Myhra
516ea4d758 LibWeb: Implement "convert line endings to native" algorithm
This adds the "convert line endings to native" algorithm from the
FileAPI spec.
2022-07-30 10:59:46 +01:00
Sam Atkins
200e111af0 LibWeb: Extract the InnerHTML IDL mixin 2022-07-29 17:15:49 +01:00
Sam Atkins
b456adcb59 LibWeb: Extract the WindowOrWorkerGlobalScope IDL mixin
`Window` itself isn't generated from an IDL file so it doesn't get to
make use of this mixin, but it ideally would do so.
2022-07-29 17:15:49 +01:00
Sam Atkins
899fa30bdd LibWeb: Extract the LinkStyle IDL mixin 2022-07-29 17:15:49 +01:00
Sam Atkins
8d2d315858 LibWeb: Extract the HTMLHyperlinkElementUtils IDL mixin
Also added FIXMEs for some missing methods while I was at it.
2022-07-29 17:15:49 +01:00
Sam Atkins
d4c40e3aad LibWeb: Extract the ParentNode IDL mixin 2022-07-29 17:15:49 +01:00
Sam Atkins
79fdc08de9 LibWeb: Correct typo in Document.idl
Makes me wonder how things were working when Document was never
including GlobalEventHandlers.
2022-07-29 17:15:49 +01:00
Sam Atkins
d6a5ddd3c0 LibWeb: Extract the ChildNode IDL mixin 2022-07-29 17:15:49 +01:00
Undefine
97cc33ca47 Everywhere: Make the codebase more architecture aware 2022-07-27 21:46:42 +00:00
Andreas Kling
031322fde3 LibWeb: Make :enabled and :disabled selector handling more idiomatic 2022-07-27 17:29:48 +02:00
Andreas Kling
2ad98fdf80 LibWeb: Add fast_is<HTMLElement>()
This avoids slow RTTI lookups in selector matching.
2022-07-27 17:29:48 +02:00
Andreas Kling
9f32da1dbc LibWeb: Add fast_is<HTMLBaseElement>()
This avoids slow RTTI lookups in Document::base_url().
2022-07-27 17:29:48 +02:00
Sam Atkins
7b4004d682 LibWeb: Ensure PercentageOr<T>::resolved() returns a concrete T
Which is to say, a T where `is_calculated()` is false.

As is becoming a repeating theme with CSS types, we have two states for
a FooPercentage that is a `calc()` expression: Either the FooPercentage
holds the CalculatedStyleValue directly, or it holds a Foo which itself
holds the CalculatedStyleValue. The first case was already handled to
return Foo, and with this patch, the second is too. :^)
2022-07-27 17:03:55 +02:00
Sam Atkins
3fce4f7c91 LibWeb: Resolve calc() FooPercentages that only contained percentages
Fixes #14697

Percentages inside `calc()` only got converted to the concrete type
(eg, Length) when added or subtracted with one. So if the `calc
()` doesn't contain any of that type, it would resolve to a
Percentage.

Now, we catch that returned Percentage and convert it to the proper
type. This fixes cases like `width: calc(100% / 2);`.
2022-07-27 17:03:55 +02:00
Sam Atkins
ef2469bfed LibWeb: Add missing Formatters for CSS dimension types 2022-07-27 17:03:55 +02:00
MacDue
b68f48eb71 LibWeb: Shrink the inner border radii to accommodate the border widths
This fixes the shape of the subreddit logo on new reddit.
2022-07-26 23:56:29 +01:00
Kenneth Myhra
890514a057 LibWeb: Introduce the File interface from the FileAPI spec 2022-07-26 20:54:30 +01:00
Kenneth Myhra
df91dbfbb6 LibWeb: Add missing spec links to the Blob interface 2022-07-26 20:54:30 +01:00
Kenneth Myhra
6305ef197f LibWeb: Fix const issue on type() accessor for the Blob interface 2022-07-26 20:54:30 +01:00
Kenneth Myhra
c038a8c9c9 LibWeb: Make process_blob_parts() publicly accessible
This pulls process_blob_parts() out of the Blob class and makes it
publicly accessible.
2022-07-26 20:54:30 +01:00
Kenneth Myhra
622a4f29a7 LibWeb: Add public get accessor function for Blob's internal ByteBuffer
Blob::bytes() returns the ReadonlyBytes representation of our internal
ByteBuffer.

This change requires us to ByteBuffer::copy() Blob's ReadonlyBytes to a
ByteBuffer in XHR::send() and corresponding error handling of the copy
operation.

This removes the need for Blob to declare XMLHttpRequest as a friend
class.
2022-07-26 20:54:30 +01:00
Andreas Kling
5f34c8ab03 LibWeb: Make automatic heights for abspos non-replaced behave better
Previously we were checking if values were "auto" after resolving the
"auto"-ness out of them, which didn't work. There's still a bunch of
work to do on this algorithm, but now we can at least resolve some basic
automatic height scenarios.
2022-07-26 01:53:41 +02:00
Andreas Kling
0258fd8043 LibWeb: Remove FFC helpers is_{main,cross}_axis_margin_first_auto()
We already cache these values with each flex item, so let's just use
those instead.
2022-07-26 01:53:41 +02:00
Andreas Kling
71ec46b8cc LibWeb: Don't treat calc() in used flex basis as definite for now
We'll eventually need some way to determine if a calc() value results
in a definite size.
2022-07-26 01:53:41 +02:00
Andreas Kling
7200b3a16c LibWeb: Make two passes in FFC where to support percentage min/max sizes
Percentage sizes of flex items are relative to the flex container, but
even when the flex container is automatically sized, we still have to
support them.

To make this work, we first do a pass where percentage sizes are ignored
(treated as "auto", basically) in order to get a "reference" value.

Then we do a second pass where percentages can be resolved against this
reference value.
2022-07-26 01:53:41 +02:00