Timothy Flynn
872e18f660
LibWeb: Convert Navigable::navigate's csp_navigation_type to an enum
...
Some versions of clang will have an issue using a consteval function to
set the optional parameter's default value. For example, see:
https://stackoverflow.com/questions/68789984/immediate-function-as-default-function-argument-initializer-in-clang
This doesn't need to be a String anyways, so let's make it an enum.
2023-05-08 20:54:31 -06:00
Aliaksandr Kalenik
5896f4c400
LibWeb: Implement "populate session history entry" step in navigate()
...
Implements
https://html.spec.whatwg.org/multipage/browsing-the-web.html#finalize-a-cross-document-navigation
2023-05-08 17:53:59 +02:00
Aliaksandr Kalenik
0444df1a7c
LibWeb: Implement "clear the forward session history" for traversable
...
https://html.spec.whatwg.org/multipage/browsing-the-web.html#clear-the-forward-session-history
2023-05-08 17:53:59 +02:00
Andreas Kling
064b7a6216
LibWeb: Make HTMLObjectElement invalidate the document layout
...
This is an oversized hammer for sure, but we have to make sure the
layout tree gets rebuilt in case the object representation changes.
Since "throw out the entire layout tree" is the finest tool we have
right now, it'll have to do.
This fixes an issue where the eyes on Acid2 would sometimes not show up
until the next layout invalidation occurred.
2023-05-08 10:26:09 +02:00
Andreas Kling
70db40c9b0
LibWeb: Don't include Layout/Node.h from DOM/Element.h
...
This required moving the CSS::StyleProperty destruct out of line.
2023-05-08 09:29:44 +02:00
Andreas Kling
e43027091d
LibWeb: Don't include HTML/Window.h from DOM/Element.h
...
This required moving HTML::ScrollOptions to its own header file.
2023-05-08 09:29:44 +02:00
Andreas Kling
4637d020c3
LibWeb: Add fast_is<T>() helper for HTMLScriptElement
...
This makes loading Google Groups quite a bit faster, as 20% of runtime
while loading was spent asking if DOM nodes are HTMLScriptElement.
2023-05-07 10:47:30 +02:00
Ben Wiederhake
36ff6187f6
Everywhere: Change spelling of 'behaviour' to 'behavior'
...
"The official project language is American English […]."
5d2e915623/CONTRIBUTING.md (L30)
Here's a short statistic of the occurrences of the word "behavio(u)r":
$ git grep -IPioh 'behaviou?r' | sort | uniq -c | sort -n
2 BEHAVIOR
24 Behaviour
32 behaviour
407 Behavior
992 behavior
Therefore, it is clear that "behaviour" (56 occurrences) should be
regarded a typo, and "behavior" (1401 occurrences) should be preferred.
Note that The occurrences in LibJS are intentionally NOT changed,
because there are taken verbatim from the specification. Hence:
$ git grep -IPioh 'behaviou?r' | sort | uniq -c | sort -n
2 BEHAVIOR
10 behaviour
24 Behaviour
407 Behavior
1014 behavior
2023-05-07 01:05:09 +02:00
Sam Atkins
f4d8a24fe4
LibWeb: Propagate errors from parse_css_value and property_initial_value
2023-05-06 08:07:28 +02:00
Sam Atkins
d16600a48b
LibWeb: Propagate errors from StyleValue construction
...
Turns out we create a lot of these, mostly from places that don't return
ErrorOr. The yak stack grows.
2023-05-06 08:07:28 +02:00
Andreas Kling
66c41e7c45
LibWeb: Use JS::SafeFunction for module fetching callbacks
...
This fixes another GC crash seen on https://shopify.com/
Found it by collecting garbage after every 500th heap allocation.
2023-05-04 18:30:57 +02:00
Timothy Flynn
ac8b892a25
LibWeb: Pause HTMLMediaElement when its document becomes inactive
...
For example, when navigating to another page, this ensures any media
resource will not continue playing.
2023-05-04 16:48:10 +02:00
Timothy Flynn
88b8969443
LibWeb: Implement steps for removing an HTMLMediaElement from a document
2023-05-04 16:48:10 +02:00
Andreas Kling
3811be2f7c
LibWeb: Make module maps GC-allocated
...
This allows them to mark JS modules, and fixes a crash seen on
https://shopify.com/
2023-05-04 11:56:55 +02:00
Aliaksandr Kalenik
e1c1aaa956
LibWeb: Implement "create navigation params from a srcdoc resource"
...
Implements:
https://html.spec.whatwg.org/multipage/browsing-the-web.html#create-navigation-params-from-a-srcdoc-resource
This is supporting function for populating document in session history
entry.
This function populates navigation params response with HTML text
passed in document resource.
2023-05-03 09:39:49 +02:00
Aliaksandr Kalenik
c235ee380f
LibWeb: Implement "create navigation params by fetching"
...
Implements:
https://html.spec.whatwg.org/multipage/browsing-the-web.html#create-navigation-params-by-fetching
This is supporting function for population of document in a session
history entry.
This function populates response in navigation params by fetching url
in navigation params and handling redirects if required.
2023-05-03 09:39:49 +02:00
Aliaksandr Kalenik
de2c016556
LibWeb: Implement "attempt to populate the history entry's document"
...
Implements:
https://html.spec.whatwg.org/multipage/browsing-the-web.html#attempt-to-populate-the-history-entry's-document
This is going to be a replacement for `FrameLoader::load()` after
switching to navigables.
Brief description of `populate_session_history_entry_document`:
- If navigation params have url with fetch scheme then DOM document
will be populated by fetching url and parsing response. This
is going to be a replacement for `FrameLoader::load(AK::URL&)`.
- If url in navigation params is abort:srcdoc then DOM document
will be populated by parsing HTML text passed in document resource.
This is going to be a replacement for `FrameLoader::load_html()`
2023-05-03 09:39:49 +02:00
Aliaksandr Kalenik
60a26077a7
LibWeb: Reuse ReferrerType from Fetch in HTML::DocumentState
2023-05-03 09:39:49 +02:00
Aliaksandr Kalenik
a27a30898c
LibWeb: Add fetch_controller property in HTML::NavigationParams
2023-05-03 09:39:49 +02:00
Aliaksandr Kalenik
38a2d5ead3
LibWeb: Add navigable property in NavigationParams
2023-05-03 09:39:49 +02:00
Aliaksandr Kalenik
0c919718ae
LibWeb: Change id to be optional in HTML::NavigationParams
2023-05-03 09:39:49 +02:00
Aliaksandr Kalenik
71b7a929db
LibWeb: Fix typo in HTML::DocumentState
...
ever_navigable_target_name -> navigable_target_name
2023-05-03 09:39:49 +02:00
Aliaksandr Kalenik
f738a166f2
LibWeb: Add resource property in DocumentState
2023-05-03 09:39:49 +02:00
Aliaksandr Kalenik
bccc687175
LibWeb: Add request_body property in HTML::POSTResource
2023-05-03 09:39:49 +02:00
Aliaksandr Kalenik
8be3de665b
LibWeb: Introduce SourceSnapshotParams
2023-05-03 09:39:49 +02:00
Emil Militzer
31e1be0438
LibWeb: Support multi-keyword syntax for CSS display property
...
The Display class already supported all specific values, and now they
will be parsed too. The display property now has a special type
DisplayStyleValue.
2023-05-02 20:27:28 +02:00
Matthew Olsson
a9d192e882
LibJS+LibWeb: Explicitly mark ignored members in visit_edges methods
2023-04-30 06:04:33 +02:00
Matthew Olsson
39d8c8d2a9
LibJS+LibWeb: Add missing visit calls in visit_edges implementations
2023-04-30 06:04:33 +02:00
Matthew Olsson
82eeee2008
LibJS+LibWeb: Normalize calls to Base::visit_edges in GC objects
2023-04-30 06:04:33 +02:00
Matthew Olsson
3f22919eb5
LibWeb: Add missing JS::GCPtr wrappers in HTMLLinkElement
2023-04-30 06:04:33 +02:00
Aliaksandr Kalenik
62bc8590ad
LibWeb: Implement "get all used history steps" for traversables
...
https://html.spec.whatwg.org/multipage/browsing-the-web.html#getting-all-used-history-steps
2023-04-28 18:11:44 +02:00
Aliaksandr Kalenik
6ec88b36b9
LibWeb: Implement "get the target history entry" for navigables
2023-04-28 18:11:44 +02:00
Aliaksandr Kalenik
d9d8896380
LibWeb: Implement "get session history entries" for navigables
...
https://html.spec.whatwg.org/multipage/browsing-the-web.html#getting-session-history-entries
2023-04-28 18:11:44 +02:00
Aliaksandr Kalenik
c9c8f2413f
LibWeb: Change Navigable::traversable_navigable() to be const
2023-04-28 18:11:44 +02:00
Aliaksandr Kalenik
6660eb3e1b
LibWeb: Add non-const session_history_entries getter in traversable
2023-04-28 18:11:44 +02:00
Aliaksandr Kalenik
51d64bdaec
LibWeb: Add NestedHistory in DocumentState
2023-04-28 18:11:44 +02:00
Aliaksandr Kalenik
3c89286467
LibWeb: Implement creation of fresh top-level traversables
...
Co-authored-by: Andreas Kling <kling@serenityos.org>
2023-04-26 15:51:50 +02:00
Aliaksandr Kalenik
9a19bdbfcf
LibWeb: Implement Navigable::initialize_navigable()
2023-04-26 15:51:50 +02:00
Aliaksandr Kalenik
74ab8ec4f0
LibWeb: Add step property in SessionHistoryEntry
2023-04-26 15:51:50 +02:00
Timothy Flynn
78ad471367
LibWeb: Remove custom playback timer from HTMLMediaElement
...
After the EventLoop changes, we do not need to override LibVideo's timer
with a Qt timer for Ladybird. The timer callback provided here also does
not need the JS::SafeFunction wrapper that Platform::Timer provides.
2023-04-25 18:02:22 +02:00
Aliaksandr Kalenik
ce9d9a10b8
LibWeb: Start fleshing out Navigable::navigate()
...
Start implementation of https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigate
Co-authored-by: Andreas Kling <kling@serenityos.org>
2023-04-25 12:54:01 +02:00
Aliaksandr Kalenik
1ee4a3e310
LibWeb: Add m_ongoing_navigation in Navigable
2023-04-25 12:54:01 +02:00
Andreas Kling
2626e28bb6
LibWeb: Add HTML::Task::Source::NavigationAndTraversal
2023-04-25 12:54:01 +02:00
Andreas Kling
4d8edf65b5
LibWeb: Add HistoryHandlingBehavior::Push
...
Also add FIXMEs about removing no-longer-used enum values.
2023-04-25 12:54:01 +02:00
Aliaksandr Kalenik
5446c7adc3
LibWeb: Add HTML::POSTResource
...
This is "POST resource" from the HTML spec.
2023-04-25 12:54:01 +02:00
Aliaksandr Kalenik
3b00636288
LibWeb: Implement "create a new browsing context and document"
...
Co-authored-by: Andreas Kling <kling@serenityos.org>
2023-04-24 07:57:15 +02:00
Andreas Kling
6871fbce9f
LibWeb: Implement the "top-level traversable" of a browsing context
2023-04-24 07:57:15 +02:00
Andreas Kling
65467021e2
LibWeb: Add updated version of "determine the origin" AO from HTML spec
...
The old version is still around since it has many users, so we can't
remove it until everything has been updated to use the new version.
2023-04-24 07:57:15 +02:00
Aliaksandr Kalenik
3225c39191
LibWeb: Implement Document::make_active()
...
Implementation of "make active" algorithm from the spec for Document.
Co-authored-by: Andreas Kling <kling@serenityos.org>
2023-04-24 07:57:15 +02:00
Timothy Flynn
32e2207b55
LibWeb: Implement the HTMLMediaElement fastSeek method
2023-04-24 07:55:54 +02:00