| 
									
										
										
										
											2021-09-12 16:55:10 +01:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2021, Linus Groh <linusg@serenityos.org> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <AK/Forward.h>
 | 
					
						
							|  |  |  | #include <AK/RefCounted.h>
 | 
					
						
							|  |  |  | #include <LibWeb/Bindings/Wrappable.h>
 | 
					
						
							| 
									
										
										
										
											2021-09-29 12:58:22 +01:00
										 |  |  | #include <LibWeb/CSS/MediaQuery.h>
 | 
					
						
							| 
									
										
										
										
											2021-09-12 16:55:10 +01:00
										 |  |  | #include <LibWeb/DOM/EventTarget.h>
 | 
					
						
							|  |  |  | #include <LibWeb/Forward.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Web::CSS { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // 4.2. The MediaQueryList Interface, https://drafts.csswg.org/cssom-view/#the-mediaquerylist-interface
 | 
					
						
							|  |  |  | class MediaQueryList final | 
					
						
							|  |  |  |     : public RefCounted<MediaQueryList> | 
					
						
							|  |  |  |     , public DOM::EventTarget | 
					
						
							|  |  |  |     , public Bindings::Wrappable { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     using WrapperType = Bindings::MediaQueryListWrapper; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     using RefCounted::ref; | 
					
						
							|  |  |  |     using RefCounted::unref; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-29 12:58:22 +01:00
										 |  |  |     static NonnullRefPtr<MediaQueryList> create(DOM::Document& document, NonnullRefPtrVector<MediaQuery>&& media_queries) | 
					
						
							| 
									
										
										
										
											2021-09-12 16:55:10 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-09-29 12:58:22 +01:00
										 |  |  |         return adopt_ref(*new MediaQueryList(document, move(media_queries))); | 
					
						
							| 
									
										
										
										
											2021-09-12 16:55:10 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     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 JS::Object* create_wrapper(JS::GlobalObject&) override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-13 00:18:28 +01:00
										 |  |  |     void add_listener(RefPtr<DOM::EventListener> listener); | 
					
						
							|  |  |  |     void remove_listener(RefPtr<DOM::EventListener> listener); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-01 01:33:10 +01:00
										 |  |  |     void set_onchange(HTML::EventHandler); | 
					
						
							|  |  |  |     HTML::EventHandler onchange(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-12 16:55:10 +01:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2021-09-29 12:58:22 +01:00
										 |  |  |     MediaQueryList(DOM::Document&, NonnullRefPtrVector<MediaQuery>&&); | 
					
						
							| 
									
										
										
										
											2021-09-12 16:55:10 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     DOM::Document& m_document; | 
					
						
							| 
									
										
										
										
											2021-09-29 12:58:22 +01:00
										 |  |  |     NonnullRefPtrVector<MediaQuery> m_media; | 
					
						
							| 
									
										
										
										
											2021-09-12 16:55:10 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Web::Bindings { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MediaQueryListWrapper* wrap(JS::GlobalObject&, CSS::MediaQueryList&); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |