/* * Copyright (c) 2021, Linus Groh * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Web::CSS { // 4.2. The MediaQueryList Interface, https://drafts.csswg.org/cssom-view/#the-mediaquerylist-interface class MediaQueryList final : public RefCounted , public DOM::EventTarget , public Bindings::Wrappable { public: using WrapperType = Bindings::MediaQueryListWrapper; using RefCounted::ref; using RefCounted::unref; static NonnullRefPtr create(DOM::Document& document, String media) { return adopt_ref(*new MediaQueryList(document, move(media))); } virtual ~MediaQueryList() override; String media() const; bool matches() const; // ^EventTarget virtual void ref_event_target() override { ref(); } virtual void unref_event_target() override { unref(); } virtual bool dispatch_event(NonnullRefPtr) override; virtual JS::Object* create_wrapper(JS::GlobalObject&) override; void add_listener(RefPtr listener); void remove_listener(RefPtr listener); private: MediaQueryList(DOM::Document&, String); DOM::Document& m_document; String m_media; }; } namespace Web::Bindings { MediaQueryListWrapper* wrap(JS::GlobalObject&, CSS::MediaQueryList&); }