/* * Copyright (c) 2022, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::Bindings { #define WEB_PLATFORM_OBJECT(class_, base_class) \ JS_OBJECT(class_, base_class) // https://webidl.spec.whatwg.org/#dfn-platform-object class PlatformObject : public JS::Object , public Weakable { JS_OBJECT(PlatformObject, JS::Object); public: virtual ~PlatformObject() override; JS::Realm& realm() const; // FIXME: This should return a type that works in both window and worker contexts. HTML::Window& global_object() const; protected: explicit PlatformObject(JS::Realm&); explicit PlatformObject(JS::Object& prototype); }; }