Index: Source/core/css/MediaQueryList.h |
diff --git a/Source/core/css/MediaQueryList.h b/Source/core/css/MediaQueryList.h |
index 8d85c5bb391f520480b53f4810b7a1f76b5976a2..3411ded1335c61ce66713e12a6bad0ec8357c016 100644 |
--- a/Source/core/css/MediaQueryList.h |
+++ b/Source/core/css/MediaQueryList.h |
@@ -20,6 +20,7 @@ |
#ifndef MediaQueryList_h |
#define MediaQueryList_h |
+#include "core/events/EventTarget.h" |
#include "platform/heap/Handle.h" |
#include "wtf/Forward.h" |
#include "wtf/RefCounted.h" |
@@ -27,6 +28,7 @@ |
namespace WebCore { |
+class Document; |
class MediaQueryListListener; |
class MediaQueryEvaluator; |
class MediaQueryMatcher; |
@@ -37,30 +39,44 @@ class MediaQuerySet; |
// retrieve the current value of the given media query and to add/remove listeners that |
// will be called whenever the value of the query changes. |
-class MediaQueryList FINAL : public RefCountedWillBeGarbageCollectedFinalized<MediaQueryList> { |
+class MediaQueryList FINAL : public RefCountedWillBeGarbageCollectedFinalized<MediaQueryList>, public EventTargetWithInlineData { |
+ REFCOUNTED_EVENT_TARGET(MediaQueryList); |
+ WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(MediaQueryList); |
public: |
- static PassRefPtrWillBeRawPtr<MediaQueryList> create(PassRefPtrWillBeRawPtr<MediaQueryMatcher>, PassRefPtrWillBeRawPtr<MediaQuerySet>); |
+ static PassRefPtrWillBeRawPtr<MediaQueryList> create(PassRefPtrWillBeRawPtr<MediaQueryMatcher>, PassRefPtrWillBeRawPtr<MediaQuerySet>, Document*); |
virtual ~MediaQueryList(); |
String media() const; |
bool matches(); |
- void addListener(PassRefPtrWillBeRawPtr<MediaQueryListListener>); |
- void removeListener(PassRefPtrWillBeRawPtr<MediaQueryListListener>); |
+ DEFINE_ATTRIBUTE_EVENT_LISTENER(change); |
- void mediaFeaturesChanged(WillBeHeapVector<RefPtrWillBeMember<MediaQueryListListener> >* listenersToNotify); |
+ // These two functions are provided for compatibility with JS code |
+ // written before the change listener became a DOM event. |
+ void addListener(PassRefPtrWillBeRawPtr<EventListener>); |
+ void removeListener(PassRefPtrWillBeRawPtr<EventListener>); |
+ |
+ void addMediaQueryListListener(PassRefPtrWillBeRawPtr<MediaQueryListListener>); |
+ void removeMediaQueryListListener(PassRefPtrWillBeRawPtr<MediaQueryListListener>); |
+ |
+ // Will return true if a DOM event should be scheduled. |
+ bool mediaFeaturesChanged(WillBeHeapVector<RefPtrWillBeMember<MediaQueryListListener> >* listenersToNotify); |
void trace(Visitor*); |
void documentDetached(); |
+ virtual const AtomicString& interfaceName() const OVERRIDE; |
+ virtual ExecutionContext* executionContext() const OVERRIDE; |
+ |
private: |
- MediaQueryList(PassRefPtrWillBeRawPtr<MediaQueryMatcher>, PassRefPtrWillBeRawPtr<MediaQuerySet>); |
+ MediaQueryList(PassRefPtrWillBeRawPtr<MediaQueryMatcher>, PassRefPtrWillBeRawPtr<MediaQuerySet>, Document*); |
bool updateMatches(); |
RefPtrWillBeMember<MediaQueryMatcher> m_matcher; |
RefPtrWillBeMember<MediaQuerySet> m_media; |
+ RawPtrWillBeMember<Document> m_document; |
typedef WillBeHeapListHashSet<RefPtrWillBeMember<MediaQueryListListener> > ListenerList; |
ListenerList m_listeners; |
bool m_matchesDirty; |