mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-20 03:25:13 +00:00
Some checks are pending
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Corresponds todba6e7b6c2
and4c0401186c
The spec algorithms now use "the relevant global object's associated document", so remove the concept of the History object itself having an associated document. The spec has also combined the implementations for forward/back/go so I've matched that too.
57 lines
1.9 KiB
C++
57 lines
1.9 KiB
C++
/*
|
|
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
|
|
* Copyright (c) 2022, Andreas Kling <andreas@ladybird.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <LibWeb/Bindings/HistoryPrototype.h>
|
|
#include <LibWeb/Bindings/PlatformObject.h>
|
|
#include <LibWeb/HTML/HistoryHandlingBehavior.h>
|
|
#include <LibWeb/WebIDL/ExceptionOr.h>
|
|
#include <LibWeb/WebIDL/Types.h>
|
|
|
|
namespace Web::HTML {
|
|
|
|
class History final : public Bindings::PlatformObject {
|
|
WEB_PLATFORM_OBJECT(History, Bindings::PlatformObject);
|
|
GC_DECLARE_ALLOCATOR(History);
|
|
|
|
public:
|
|
[[nodiscard]] static GC::Ref<History> create(JS::Realm&);
|
|
|
|
virtual ~History() override;
|
|
|
|
WebIDL::ExceptionOr<void> push_state(JS::Value data, String const& unused, Optional<String> const& url = {});
|
|
WebIDL::ExceptionOr<void> replace_state(JS::Value data, String const& unused, Optional<String> const& url = {});
|
|
WebIDL::ExceptionOr<void> go(WebIDL::Long delta);
|
|
WebIDL::ExceptionOr<void> back();
|
|
WebIDL::ExceptionOr<void> forward();
|
|
WebIDL::ExceptionOr<u64> length() const;
|
|
WebIDL::ExceptionOr<Bindings::ScrollRestoration> scroll_restoration() const;
|
|
WebIDL::ExceptionOr<void> set_scroll_restoration(Bindings::ScrollRestoration);
|
|
WebIDL::ExceptionOr<JS::Value> state() const;
|
|
|
|
u64 m_index { 0 };
|
|
u64 m_length { 0 };
|
|
|
|
JS::Value unsafe_state() const;
|
|
void set_state(JS::Value s) { m_state = s; }
|
|
|
|
private:
|
|
History(JS::Realm&);
|
|
|
|
virtual void initialize(JS::Realm&) override;
|
|
virtual void visit_edges(Cell::Visitor&) override;
|
|
WebIDL::ExceptionOr<void> delta_traverse(WebIDL::Long delta);
|
|
|
|
WebIDL::ExceptionOr<void> shared_history_push_replace_state(JS::Value data, Optional<String> const& url, HistoryHandlingBehavior);
|
|
|
|
JS::Value m_state { JS::js_null() };
|
|
};
|
|
|
|
bool can_have_its_url_rewritten(DOM::Document const& document, URL::URL const& target_url);
|
|
|
|
}
|