Luke Wilde
7b8a6b8e7a
LibWeb: Set HTMLParser::m_scripting_enabled as according to the spec
...
This allows <noscript> elements to display their content as proper HTML
instead of raw text when scripting is disabled.
2022-09-23 22:25:09 +01:00
Luke Wilde
dfe57543a4
LibWeb: Keep message alive in postMessage task callback lambda
...
Tasks can run at any time in the future and GC can run in the time
between postMessage and running the task, meaning the message can be
reaped if we don't keep a handle to it.
Fixes Google Syndication ads crashing 100% of the time on rpcs3.net
2022-09-23 17:23:55 +01:00
Linus Groh
76ace3629a
LibWeb: Make Fetch::Infrastructure::Body::stream() const
2022-09-22 21:01:13 +01:00
Linus Groh
c7c6d7d9e1
LibWeb: Make FileAPI::Blob::create() buffer/type overload infallible
2022-09-22 21:01:13 +01:00
Linus Groh
54a987ad45
LibWeb: Update extract_body() to use BodyInit
2022-09-22 21:01:13 +01:00
Linus Groh
8f5620b5d9
LibWeb: Add BodyInit union type
2022-09-22 21:01:13 +01:00
Linus Groh
571f4e3ebb
LibWeb: Move extract_body() into Fetch
2022-09-22 21:01:13 +01:00
Linus Groh
f98ce156c4
LibWeb: Remove ReadableStreamDummy in favor of ReadableStream
2022-09-22 21:01:13 +01:00
Linus Groh
87654f5b51
LibWeb: Start fleshing out the ReadableStream interface
...
This is so we can just assume it exists in Fetch APIs (while still
skipping functionality that relies on a full implementation, of
course).
2022-09-22 21:01:13 +01:00
Linus Groh
1ace80235b
LibWeb: Move XMLHttpRequestBodyInit into Fetch
...
https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit
2022-09-22 21:01:13 +01:00
Andreas Kling
a52d346839
LibWeb: Take coordinate spaces into account when clearing past floats
...
We were forgetting to convert to and from BFC root relative coordinates
when calculating how much clearance was needed to get past floats.
This fixes the last remaining issue on Acid1, which is now perfect. :^)
2022-09-22 17:06:49 +02:00
Andreas Kling
5efd63741f
LibWeb: Perform horizontal inline alignment based on available space
...
Previously, we were using the full containing block width as a reference
for text-align values "right" and "center". This didn't take intruding
floats into account.
2022-09-22 17:06:48 +02:00
Andreas Kling
d43ef27761
LibWeb: Only include containing blocks in coordinate space translation
...
Layout box offset coordinates are always relative to their containing
block. Therefore, the functions that convert between coordinate spaces
should only visit containing blocks and apply their offsets, not *every*
box in the parent chain.
This fixes an issue where some floating boxes were unexpectedly far away
from their containing block.
2022-09-22 16:54:12 +02:00
Andreas Kling
54fb5af9ee
LibWeb: Use entire margin box of floats when testing for intrusions
2022-09-22 16:54:12 +02:00
Andreas Kling
389f47f6fe
LibWeb: Check both top and bottom of float position when looking for fit
...
We have to check that there's enough space at both the top and bottom of
the float's margin box, otherwise we risk overlapping existing content.
2022-09-22 16:54:12 +02:00
Sam Atkins
c64a5ccf29
LibWeb: Avoid unnecessary copies in CSS Parser
2022-09-22 02:04:23 +02:00
Sam Atkins
a211c06e99
LibWeb: Use llroundf() when rounding floats
2022-09-22 02:04:23 +02:00
Sam Atkins
188d9f1326
LibWeb: Resolve some trivial clang-tidy warnings in the CSS Parser
...
Issues resolved:
- Unnecessary `move()`s
- `else` after `return`
- `auto&` that could be `auto const&`
Why yes, I did just get clang-tidy set up. :^)
2022-09-22 02:04:23 +02:00
Linus Groh
edfef8e2f5
Everywhere: Rename WrapperGenerator to BindingsGenerator
...
This code generator no longer creates JS wrappers for platform objects
in the old sense, instead they're JS objects internally themselves.
Most of what we generate now are prototypes - which can be seen as
bindings for the internal C++ methods implementing getters, setters, and
methods - as well as object constructors, i.e. bindings for the internal
create_with_global_object() method.
Also tweak the naming of various CMake glue code existing around this.
2022-09-21 23:06:08 +01:00
Linus Groh
4270ede7c4
LibWeb: Remove WRAPPER_HACK() macro
...
We no longer access Bindings::FooWrapper anywhere for a Foo platform
object, so these can be removed :^)
2022-09-21 21:12:24 +01:00
Linus Groh
6055b0e850
LibWeb: Remove no-op impl() methods from the WEB_PLATFORM_OBJECT macro
...
These are leftovers from when wrapper objects still had an internal
implementation, which is no longer the case.
2022-09-21 21:12:24 +01:00
Sam Atkins
6b2a916069
LibWeb+WebContent: Move Serenity EventLoop and Font plugins into LibWeb
...
These are exactly what's wanted by headless-browser too, so this saves
us some duplication. LibWeb already links LibCore so it should not
cause any issues for Ladybird.
2022-09-21 20:42:36 +01:00
Andreas Kling
010be491a9
LibWeb: Fix e-mail address mishap
2022-09-21 18:42:09 +02:00
davidot
4912b22e3b
LibWeb+WebContent: Setup the js console client earlier
...
This allows us to print messages in inline scripts. Also add an example
of this in the welcome page to test this.
2022-09-21 17:34:32 +01:00
Andreas Kling
a5bb30d2ba
LibWeb: Make Node.childNodes vend the same NodeList every time
2022-09-21 13:51:58 +02:00
Andreas Kling
62fed2a31d
LibWeb: Add id
field to Environment
...
This is a unique string that identifies the environment. We just use a
simple incrementing number for now.
2022-09-21 11:51:18 +02:00
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