Andreas Kling
1f95943274
LibWeb: Remove confusing NOTE in WindowEnvironmentSettingsObject
...
HTML::Window has absorbed what was formerly known as WindowObject.
2022-09-21 11:51:18 +02:00
Andreas Kling
66f4e2b3b0
LibWeb: Add two more scheme helpers to the Fetch infrastructure
2022-09-21 11:51:18 +02:00
Andreas Kling
b02402e116
LibWeb: Fix null dereference in ResourceClient::set_resource()
...
If resource_did_load() results in the ResourceClient being destroyed,
we can't dereference the weak ResourceClient right after.
2022-09-21 11:51:18 +02:00
Andreas Kling
68d0f30368
LibWeb: Abort the active document when navigating a browsing context
2022-09-21 11:51:18 +02:00
Andreas Kling
51d7ea7ece
LibWeb: Make WESO allow cross-origin isolated APIs for now
...
Instead of panicking in a TODO(), let's just allow them and leave the
FIXME's in this function.
2022-09-21 11:51:18 +02:00
Andreas Kling
6c33dea6a6
LibWeb: Implement the "close" algorithm for browsing contexts
...
This is used by window.close() programmatically, but of course the user
can also decide to close a top-level browsing context at any time by
closing the tab.
2022-09-21 11:51:18 +02:00
Andreas Kling
0c7ab663c1
LibWeb: Flesh out most of the "unload" algorithm for documents
...
Yet another small steps towards spec-compliant document lifecycles.
2022-09-21 11:51:18 +02:00
Andreas Kling
797d28adca
LibWeb: Save begin/end timestamps for load and DOMContentLoaded events
2022-09-21 11:51:18 +02:00
Andreas Kling
d4fc1367f6
LibWeb: Save document load timing when creating browsing context
2022-09-21 11:51:17 +02:00
Andreas Kling
270de12d59
LibWeb: Save document load timing when updating document readiness
2022-09-21 11:51:17 +02:00
Andreas Kling
67559b1279
LibWeb: Add load/unload timing structures to Document
...
We don't populate these with information just yet, but we will soon!
2022-09-21 11:51:17 +02:00
Jan Metzger
931458c337
LibWeb: Update visibility when Node was invisible before
2022-09-21 10:47:41 +01:00
Andreas Kling
92deba7197
LibWeb: Implement Document/BrowsingContext hookup according to spec
...
We now implement the browsing context's "set active document" algorithm
from the spec, as well as the "discard" algorithm for browsing contexts
and documents.
2022-09-20 23:44:59 +02:00
Andreas Kling
ab8432783e
LibWeb: Implement aborting the HTML parser
...
This is roughly on-spec, although I had to invent a simple "aborted"
state for the tokenizer.
2022-09-20 23:44:59 +02:00
Andreas Kling
aa4dd6c1bc
LibWeb: Implement Element.insertAdjacentHTML() from DOM Parsing
...
One edge case is left as a TODO() for now, since I'm not entirely sure
how to construct an element to those specifications.
With this patch, we can now run the Speedometer benchmark! :^)
2022-09-20 18:28:41 +02:00
Andreas Kling
ac76df3d47
LibWeb: Implement Window.frameElement
2022-09-20 14:48:07 +02:00
Andreas Kling
e4fd042041
LibWeb: Flesh out the default "quirks mode" style sheet
...
Import all the quirks mode rules from the HTML spec. There's more to
quirks mode, of course, but it's nice that we can just copy these.
2022-09-20 14:48:07 +02:00
Andreas Kling
77d947b8ad
LibWeb: Initialize document referrer from Fetch Request if available
2022-09-20 14:48:07 +02:00
Andreas Kling
9683da4470
LibWeb: Add referrer accessors to Fetch Request
2022-09-20 14:48:07 +02:00
Andreas Kling
d4acdac317
LibWeb+WebContent+Browser: Plumb visibility state from GUI to web pages
...
OOPWV now reacts to show/hide events and informs LibWeb about the state
change. This makes visibilitychange events fire when switching tabs. :^)
2022-09-20 10:32:14 +02:00
Andreas Kling
4ee5dfbe4b
LibWeb: Flesh out a chunk of the HTML spec's frame navigation algorithms
2022-09-20 10:32:13 +02:00
Andreas Kling
e5f6d36616
LibWeb: Keep more of the navigation parameters in Document
2022-09-20 10:32:13 +02:00
Andreas Kling
42b8656db3
LibWeb: Flesh out "document visibility" state a bit more
...
We can now "update the visibility state", which also causes
`visibilitychange` events to fire on the document.
This still needs GUI integration work at the BrowsingContext level.
2022-09-20 10:32:13 +02:00
Andreas Kling
5a500827b8
LibWeb: Move HistoryHandlingBehavior enum to its own header
...
This avoids a header cycle in a subsequent patch.
2022-09-20 10:32:12 +02:00
Andreas Kling
03375a3dc9
LibWeb: Implement more spec-compliant iframe/frame attribute processing
...
We're still missing the lazy loading attribute handling, and once we hit
the navigation step, we fall back to totally ad-hoc behavior instead of
going all the way with a Fetch Request.
2022-09-20 10:32:12 +02:00
Andreas Kling
0810e77d77
LibWeb: Set the document "completely loaded time" when appropriate
2022-09-20 10:32:12 +02:00
Andreas Kling
954da8fde5
LibWeb: Only create iframe nested context if iframe document has context
...
We had glossed over a condition in the spec that said we should only run
the nested context creation steps when the iframe's own containing
document has a browsing context.
2022-09-20 10:32:12 +02:00
Andreas Kling
8ead228202
LibWeb: Implement "browsing context group" concept from the HTML spec
2022-09-20 10:32:12 +02:00
Andreas Kling
e36750d591
LibWeb: Remove unused Layout::Node::did_insert_into_layout_tree()
2022-09-20 10:32:12 +02:00
Andreas Kling
77628289c6
LibWeb: Consolidate code for resolving vertical box model metrics in BFC
...
We already had a helper for this, but compute_height() wasn't using it.
Tweak it so that compute_height() can use it, and remove the duplicated
code that's now redundant.
2022-09-20 10:32:12 +02:00
Ben Wiederhake
d073a31c21
LibWeb: Add missing includes
...
This remained undetected for a long time as HeaderCheck is disabled by
default. This commit makes the following file compile again:
// file: compile_me.cpp
#include <LibWeb/HTML/CrossOrigin/CrossOriginOpenerPolicy.h>
// That's it, this was enough to cause a compilation error.
Likewise for most other files touched by this commit.
2022-09-18 13:27:24 -04:00
sin-ack
e9d5d2f74b
LibWeb: Remove the flex item size cache
...
This was overly permissive as the FIXME stated and was causing layout
issues.
2022-09-18 18:55:06 +02:00
Andreas Kling
97b5230413
LibWeb: Subtract border & padding when using flex line size as item size
...
The flex line cross size includes the margin boxes of items, so when
we're taking the flex line's cross size to use as an item cross size,
we have to subtract the margin, border padding from both sides.
Previous we only subtracted the cross margins, which led to oversized
items in some cases.
2022-09-18 18:34:42 +02:00
Andreas Kling
7bf3b40867
LibWeb: Remove bogus main space restriction in wrapping flex layouts
2022-09-18 18:34:42 +02:00
Andreas Kling
0ca1b4b123
LibWeb: Don't replace existing Content-Type header in outgoing XHRs
...
This fixes an issue where Twitter was HTTP 400'ing some of our XHRs.
2022-09-18 12:53:06 +02:00
Andreas Kling
575e3bf37d
LibWeb: Check document fully active status in "element cannot navigate"
...
This resolves a FIXME and brings us closer to spec.
2022-09-18 12:53:06 +02:00
Andreas Kling
e6ef366859
LibWeb: Implement basic support for Document.all
...
The finer details are missing here, but the basic API is up.
2022-09-18 02:17:29 +02:00
Andreas Kling
3df9861814
LibWeb: Capture self as a WeakPtr in ResourceClient::set_resource()
...
It's not safe to capture `this` as a raw pointer here, since nothing
is guaranteed to keep the ResourceClient alive (even if the Resource
stays alive.)
2022-09-18 02:15:01 +02:00
Andreas Kling
fa2dd4cbe3
LibWeb: Make Document vend the same HTMLCollections every time
2022-09-18 02:08:01 +02:00
Andreas Kling
1903dff365
LibWeb: Support getting and setting Attr.textContent
2022-09-18 02:08:01 +02:00
Andreas Kling
530675993b
LibWeb: Rename Attribute to Attr
...
This name is not very good, but it's what the specification calls it.
2022-09-18 02:08:01 +02:00
Andreas Kling
3c3ae3a768
LibWeb: Only uppercase qualified names in HTML documents
...
This takes care of an old FIXME now that we can distinguish between HTML
and non-HTML documents.
2022-09-18 00:53:26 +02:00
Andreas Kling
dc6e625680
LibWeb: Make ParentNode.children vend the same HTMLCollection every time
...
Instead of creating a new HTMLCollection every time you access
.children, we now follow the spec and vend the same object.
This was annoyingly difficult before, and trivial now that the DOM is
garbage-collected. :^)
2022-09-18 00:42:33 +02:00
Andreas Kling
6b3293a74b
LibWeb: Support getElementsByTagName() properly in non-HTML documents
2022-09-18 00:39:42 +02:00
Andreas Kling
bd0648a492
LibWeb: Simplify getElementsByTagName{,NS}() filters
...
Everything below the collection root is a descendant of the collection
root, so there's no need to check is_descendant_of() :^)
2022-09-18 00:37:24 +02:00
Andreas Kling
e72896e35e
LibWeb: Get default fonts via Platform::FontPlugin
...
Instead of asking Gfx::FontDatabase for the "default font" and the
"default fixed-width font", we now proxy those requests out via
the Platform::FontPlugin. This will allow Ladybird to use other default
fonts as fallback.
2022-09-17 21:27:32 +02:00
Sam Atkins
ebc29842c8
LibWeb: Start implementing the IDL Overload Resolution Algorithm :^)
...
There are a *lot* of FIXME's here. :yakoverflow:
2022-09-17 21:27:17 +02:00
Andreas Kling
83c69fa62e
LibWeb: Handle JavaScript source code with non-UTF-8 encoding
...
When fetching scripts in HTMLScriptElement's "prepare a script"
algorithm, we now re-encode the script sources to UTF-8.
2022-09-17 18:53:26 +02:00
Andreas Kling
da451467b1
LibWeb: Implement basic "scroll" events at the document level
2022-09-17 18:53:26 +02:00
Andreas Kling
07c4bf03b5
LibWeb: Add "scripts to execute in order as soon as possible"
...
Previously, we had accidentally conflated this set with the
similar-but-distinct "scripts to execute as soon as possible".
2022-09-17 18:53:26 +02:00