/* * Copyright (c) 2025, Psychpsyo * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace Web::WebXR { // https://immersive-web.github.io/webxr/#dictdef-xrsessioneventinit struct XRSessionEventInit : public DOM::EventInit { GC::Ptr session; }; // https://immersive-web.github.io/webxr/#xrsessionevent class XRSessionEvent : public DOM::Event { WEB_PLATFORM_OBJECT(XRSessionEvent, DOM::Event); GC_DECLARE_ALLOCATOR(XRSessionEvent); public: [[nodiscard]] static GC::Ref create(JS::Realm&, FlyString const&, XRSessionEventInit const&); static GC::Ref construct_impl(JS::Realm&, FlyString const&, XRSessionEventInit const&); virtual ~XRSessionEvent() override = default; GC::Ptr session() const { return m_session; } private: XRSessionEvent(JS::Realm&, FlyString const&, XRSessionEventInit const&); virtual void initialize(JS::Realm&) override; virtual void visit_edges(JS::Cell::Visitor&) override; // https://immersive-web.github.io/webxr/#dom-xrsessionevent-session GC::Ptr m_session; }; }