2023-08-23 10:47:05 -06:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2023, Andrew Kaster <akaster@serenityos.org>
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <LibWeb/DOM/EventTarget.h>
|
|
|
|
|
|
|
|
namespace Web::HTML {
|
|
|
|
|
|
|
|
// https://html.spec.whatwg.org/multipage/nav-history-apis.html#navigationhistoryentry
|
|
|
|
class NavigationHistoryEntry : public DOM::EventTarget {
|
|
|
|
WEB_PLATFORM_OBJECT(NavigationHistoryEntry, DOM::EventTarget);
|
2024-11-15 04:01:23 +13:00
|
|
|
GC_DECLARE_ALLOCATOR(NavigationHistoryEntry);
|
2023-08-23 10:47:05 -06:00
|
|
|
|
|
|
|
public:
|
2024-11-15 04:01:23 +13:00
|
|
|
[[nodiscard]] static GC::Ref<NavigationHistoryEntry> create(JS::Realm&, GC::Ref<SessionHistoryEntry>);
|
2023-08-23 10:47:05 -06:00
|
|
|
|
2024-12-03 22:31:33 +13:00
|
|
|
Optional<String> url() const;
|
2023-08-23 10:47:05 -06:00
|
|
|
String key() const;
|
|
|
|
String id() const;
|
|
|
|
i64 index() const;
|
|
|
|
bool same_document() const;
|
|
|
|
WebIDL::ExceptionOr<JS::Value> get_state();
|
|
|
|
|
|
|
|
void set_ondispose(WebIDL::CallbackType*);
|
|
|
|
WebIDL::CallbackType* ondispose();
|
|
|
|
|
|
|
|
// Non-spec'd getter, not exposed to JS
|
|
|
|
SessionHistoryEntry const& session_history_entry() const { return *m_session_history_entry; }
|
|
|
|
SessionHistoryEntry& session_history_entry() { return *m_session_history_entry; }
|
|
|
|
|
|
|
|
virtual ~NavigationHistoryEntry() override;
|
|
|
|
|
|
|
|
private:
|
2024-11-15 04:01:23 +13:00
|
|
|
NavigationHistoryEntry(JS::Realm&, GC::Ref<SessionHistoryEntry>);
|
2023-08-23 10:47:05 -06:00
|
|
|
|
|
|
|
virtual void initialize(JS::Realm&) override;
|
|
|
|
virtual void visit_edges(JS::Cell::Visitor&) override;
|
|
|
|
|
2024-11-15 04:01:23 +13:00
|
|
|
GC::Ref<SessionHistoryEntry> m_session_history_entry;
|
2023-08-23 10:47:05 -06:00
|
|
|
};
|
2025-05-13 07:06:33 -04:00
|
|
|
|
2023-08-23 10:47:05 -06:00
|
|
|
}
|