mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-26 01:35:08 +02:00
Previously, the LibWeb bindings generator would output multiple per interface files like Prototype/Constructor/Namespace/GlobalMixin depending on the contents of that IDL file. This complicates the build system as it means that it does not know what files will be generated without knowledge of the contents of that IDL file. Instead, for each IDL file only generate a single Bindings/<IDLFile>.h and Bindings/<IDLFile>.cpp.
58 lines
1.9 KiB
C++
58 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/History.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);
|
|
|
|
}
|