1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef MediaQueryListEvent_h
6 #define MediaQueryListEvent_h
8 #include "core/css/MediaQueryList.h"
9 #include "core/events/Event.h"
13 struct MediaQueryListEventInit : public EventInit {
14 MediaQueryListEventInit() : matches(false) { }
20 class MediaQueryListEvent FINAL : public Event {
21 DEFINE_WRAPPERTYPEINFO();
23 static PassRefPtrWillBeRawPtr<MediaQueryListEvent> create()
25 return adoptRefWillBeNoop(new MediaQueryListEvent);
28 static PassRefPtrWillBeRawPtr<MediaQueryListEvent> create(PassRefPtrWillBeRawPtr<MediaQueryList> list)
30 return adoptRefWillBeNoop(new MediaQueryListEvent(list));
33 static PassRefPtrWillBeRawPtr<MediaQueryListEvent> create(const String& media, bool matches)
35 return adoptRefWillBeNoop(new MediaQueryListEvent(media, matches));
38 static PassRefPtrWillBeRawPtr<MediaQueryListEvent> create(const AtomicString& eventType, const MediaQueryListEventInit& initializer)
40 return adoptRefWillBeNoop(new MediaQueryListEvent(eventType, initializer));
43 String media() const { return m_mediaQueryList ? m_mediaQueryList->media() : m_media; }
44 bool matches() const { return m_mediaQueryList ? m_mediaQueryList->matches() : m_matches; }
46 virtual const AtomicString& interfaceName() const OVERRIDE { return EventNames::MediaQueryListEvent; }
48 virtual void trace(Visitor* visitor) OVERRIDE
50 Event::trace(visitor);
51 visitor->trace(m_mediaQueryList);
56 : m_matches(false) { }
58 MediaQueryListEvent(const String& media, bool matches)
59 : Event(EventTypeNames::change, false, false)
61 , m_matches(matches) { }
63 explicit MediaQueryListEvent(PassRefPtrWillBeRawPtr<MediaQueryList> list)
64 : Event(EventTypeNames::change, false, false)
65 , m_mediaQueryList(list)
66 , m_matches(false) { }
68 MediaQueryListEvent(const AtomicString& eventType, const MediaQueryListEventInit& initializer)
69 : Event(eventType, initializer)
70 , m_media(initializer.media)
71 , m_matches(initializer.matches) { }
73 // We have m_media/m_matches for JS-created events; we use m_mediaQueryList
74 // for events that blink generates.
75 RefPtrWillBeMember<MediaQueryList> m_mediaQueryList;
82 #endif // MediaQueryListEvent_h