Aliaksandr Kalenik
b43b3d2f8d
LibWeb: Null check container while creating srcdoc navigation params
...
Fixes https://github.com/SerenityOS/serenity/issues/21205
Fixes https://github.com/SerenityOS/serenity/issues/21240
2023-09-28 06:09:52 +02:00
Bastiaan van der Plaat
04ee15a5ad
Ladybird+LibWeb: Use old error.html template for navigation errors again
2023-09-24 19:59:00 -06:00
Aliaksandr Kalenik
699ead0939
LibWeb: Start fleshing out update document for history step application
2023-09-23 17:59:10 -06:00
Aliaksandr Kalenik
40cbe9e72b
LibWeb: Add index
and length
into HTML::History
2023-09-23 17:59:10 -06:00
Andrew Kaster
7e277797ad
LibWeb: Add about base url to the various AOs that construct documents
...
And some assorted cleanup along the way. The browsing context and
document AOs in particular need re-alignment with the spec.
2023-09-22 19:45:11 -06:00
Andrew Kaster
dc0f7c4c54
LibWeb: Align NavigationParams and the creation AOs to the spec
...
And remove assorted spec FIXMEs along the way. Also align
populate_session_history_entry_document to the spec, with a bonus spec
bug to be filed.
This involves creating a new NonFetchSchemeNavigationParams spec, and
having the associated AOs take a Variant rather than Optional to
accomodate the fact that this extra struct could be returned by the
algorithm. We don't actually *do* anything with these params, but the
scaffolding is there now, with less TODOs.
2023-09-22 19:45:11 -06:00
Andrew Kaster
f296382e1a
LibWeb: Implement inform the navigation api about aborting navigation
...
This also requires implementing the abort the ongoing navigation AO on
Navigation, which will be used from other NavigateEvent AOs.
2023-09-22 19:45:11 -06:00
Andrew Kaster
25ffe6becb
LibWeb: Correct spelling of UserNavigationTiming enum
...
With luck we can Naviagate these typo-filled waters.
2023-09-22 19:45:11 -06:00
Andreas Kling
93e4a0de16
LibWeb: Move has_a_rendering_opportunity() to Navigable
2023-09-20 18:29:17 +02:00
Andreas Kling
51caa14381
LibWeb: Remove FrameLoader
...
This class is no longer used, now that we've moved to navigables.
2023-09-20 18:29:17 +02:00
Aliaksandr Kalenik
8e832a174e
LibWeb: Update determine_the_origin
to match the latest spec
2023-09-17 21:08:59 +02:00
Aliaksandr Kalenik
4446858401
LibWeb: Do not crash if parsing failed in load_document()
...
If `load_document()` is called with a response that has a mime type we
can't use to build a document, we should return nullptr as the spec
says, instead of crashing. Also we should not crash if error happened
during parsing.
2023-09-16 16:53:32 +02:00
Aliaksandr Kalenik
ead311eac7
LibWeb: Delete navigation id check in navigate_to_a_javascript_url
...
Adding this check was a mistake because although the navigation id
changes to null in step 2, it still has to proceed and apply the
history step.
2023-09-16 16:53:32 +02:00
Aliaksandr Kalenik
9b16e5373d
LibWeb: Process session history queue after initial iframe navigation
...
This is not in the spec, but we need to make sure that "apply the
history step" for initial navigation to about:blank in iframe is
applied before subsequent navigations. Otherwise, "set ongoing
navigation" call during "about:blank" traversal might abort subsequent
ongoing navigation which is not expected to happen.
2023-09-16 16:53:32 +02:00
Aliaksandr Kalenik
dd7bba66ed
LibWeb: Change viewport ownership from BrowsingContext
to Navigable
2023-09-16 16:53:32 +02:00
Aliaksandr Kalenik
2323c77718
LibWeb: Call page_did_create_main_document() from navigables navigation
...
Before, this function were called from FrameLoader and now we still
have to call it from navigables navigation code so JS Console is
created.
2023-09-16 16:53:32 +02:00
Aliaksandr Kalenik
ee50d9b2b5
LibWeb: Update Page to use navigables
2023-09-16 16:53:32 +02:00
Andrew Kaster
ae15b68b79
LibWeb: Call page_did_start_loading from navigate()
...
This fixes a crash in Browser on Serenity
2023-09-15 18:27:17 +02:00
Aliaksandr Kalenik
6522fa8933
LibWeb: Use DocumentLoadEventDelayer to delay load event in Navigable
...
Use a delayer object that actually delays load event for child
navigables instead of boolean flag that does nothing.
2023-09-15 18:27:17 +02:00
Aliaksandr Kalenik
b398d6a35c
LibWeb: Determine origin while populating navigation params from srcdoc
...
Address the FIXMEs by implementing the missing parts of the procedure
from the specification.
2023-09-15 18:27:17 +02:00
Aliaksandr Kalenik
7ad2dd2693
LibWeb: Exit navigation process if navigation id has changed
...
Change of navigation id means that it has been aborted, and we should
return early.
2023-09-15 18:27:17 +02:00
Aliaksandr Kalenik
c437f16cc1
LibWeb: Early return navigation process if navigable has been destroyed
...
If a navigable has been destroyed during a navigation process, we
should early return from it. The introduced checks are not in
the spec because, as explained in
https://github.com/whatwg/html/issues/9690 the spec is not written
with such a level of detail.
2023-09-15 18:27:17 +02:00
Aliaksandr Kalenik
2445205e9d
LibWeb: Align session history step application code with latest spec
...
Replaces direct "apply the history step" calls with new functions from
the spec:
- "update for navigable creation/destruction"
- "apply the push/replace history step"
- "apply the reload history step"
2023-09-15 18:27:17 +02:00
Aliaksandr Kalenik
799b465fac
LibWeb: Compare urls excluding fragments in Navigable::navigate()
2023-09-15 18:27:17 +02:00
Aliaksandr Kalenik
fbc95440a4
LibWeb: Only return initialized navigables from child_navigables()
...
Fixes a crash in `get_session_history_entries()` that happens when
it attempts to find entries for a navigable that hasn't been fully
initialized and therefore doesn't have a nested history entry yet.
2023-09-15 18:27:17 +02:00
Aliaksandr Kalenik
15d265da65
LibWeb: Fix "stack-use-after-return" in navigate_to_a_fragmement()
...
Callback running on the session history queue should capture necessary
pointers by value instead of reference, because navigate_to_a_fragment
stack will have been destroyed by the time it will be executed.
2023-09-15 18:27:17 +02:00
Aliaksandr Kalenik
84139a10d2
LibWeb: Implement navigation to javascript:
URLs for navigables
...
Implements following algorithms from the specification:
https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigate-to-a-javascript:-url
https://html.spec.whatwg.org/multipage/browsing-the-web.html#evaluate-a-javascript:-url
2023-09-13 21:35:52 +02:00
Aliaksandr Kalenik
09013583f2
LibWeb: Add Navigable::set_ongoing_navigation()
2023-09-13 21:35:52 +02:00
Aliaksandr Kalenik
aa0d254fa3
LibWeb: Start fleshing out "URL and history update steps"
2023-09-13 21:35:52 +02:00
Shannon Booth
41928c2902
LibWeb: Port DOMException interface from DeprecatedString to String
2023-09-06 11:44:45 -04:00
Andrew Kaster
088af86c90
LibWeb: Implement Navigable::target_name()
2023-08-31 22:23:39 +01:00
Andrew Kaster
6cfe19e5be
LibWeb: Update Navigable::navigate() to the current state of the spec
...
A few parameters and step renumberings have happened since we first
implemented this algorithm.
2023-08-29 09:39:57 +02:00
Andrew Kaster
d97b09693e
LibWeb: Convert SandboxingFlagSet into a enum class
...
Instead of having a nested enum within a struct, use the macro
AK_ENUM_BITWISE_OPERATORS to add all the convienent has_flag free
functions and such for ease of use.
2023-08-29 09:39:57 +02:00
Andrew Kaster
03eae09619
LibWeb: Implement snapshotting source snapshot params per the spec
2023-08-28 09:47:11 +02:00
Andrew Kaster
34ea470d4f
LibWeb: Add AO for navigation_must_be_a_replace to Navigable
...
This is used by both Navigable and Navigation, so let's put it in
Navigable. Also add a missing AK/String include to make clangd happier
with the Navigable file.
2023-08-25 19:51:13 +02:00
Aliaksandr Kalenik
48e9097aa4
LibWeb: Fix "stack-use-after-return" in "process_response" callback
...
Fixes stack-use-after-return bug found by ASAN that happens when
`response` reference captured by `process_response` is modified
after navigation has been canceled.
2023-08-23 19:49:26 +02:00
Aliaksandr Kalenik
c8271ac9e6
LibWeb: Start fleshing out "navigate to a fregment" for Navigables
2023-08-20 16:06:56 +02:00
Aliaksandr Kalenik
38c7703fe8
LibWeb: Add allowPOST param in populate_session_history_entry_document
2023-08-14 17:46:46 +02:00
Aliaksandr Kalenik
08788072c1
LibWeb: Add SessionHistoryTraversalQueue
2023-08-14 17:46:46 +02:00
Aliaksandr Kalenik
6d866dc5ba
LibWeb: Take care of ongoing navigation in Navigable::navigate()
2023-08-14 17:46:46 +02:00
Shannon Booth
9d60f23abc
AK: Port URL::m_fragment from DeprecatedString to String
2023-08-13 15:03:53 -06:00
Andreas Kling
406e3ed849
LibWeb: Implement getting the container document of a navigable
...
Co-authored-by: Aliaksandr Kalenik <kalenik.aliaksandr@gmail.com>
2023-06-23 16:20:29 +02:00
Aliaksandr Kalenik
d85bdd3ac5
LibWeb: Add API for finding NavigableContainer by content navigable
...
This is only needed because currently spec doesn't explicitly define
that navigable should have a pointer to associated container and when
this pointer should be set.
2023-06-23 16:20:29 +02:00
Aliaksandr Kalenik
2cbc9a6642
LibWeb: Start fleshing out Navigable::choose_a_navigable()
...
Equivalent of `choose_a_browsing_context` for navigables.
2023-06-22 18:18:50 +02:00
Aliaksandr Kalenik
ffd5b3da16
LibWeb: Implement reload for navigables
2023-06-20 18:30:27 +02:00
Aliaksandr Kalenik
c90136d48d
LibWeb: Start fleshing out "apply the history step" for traversables
...
Implements https://html.spec.whatwg.org/multipage/browsing-the-web.html#apply-the-history-step
2023-06-19 21:28:20 +02:00
Aliaksandr Kalenik
09cb266cb8
LibWeb: Implement "activate history entry" for navigables
2023-06-19 21:28:20 +02:00
Aliaksandr Kalenik
eb4db6057d
LibWeb: Implement child_navigables() for navigables
2023-06-19 21:28:20 +02:00
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