Chromium Code Reviews| Index: Source/core/css/MediaQueryMatcher.cpp |
| diff --git a/Source/core/css/MediaQueryMatcher.cpp b/Source/core/css/MediaQueryMatcher.cpp |
| index c9e748ea306699aa06658f8c756d77aa2e86f90d..89bcf843511b67512dab75de90e07624f28a17f5 100644 |
| --- a/Source/core/css/MediaQueryMatcher.cpp |
| +++ b/Source/core/css/MediaQueryMatcher.cpp |
| @@ -26,6 +26,7 @@ |
| #include "core/css/MediaQueryListListener.h" |
| #include "core/css/resolver/StyleResolver.h" |
| #include "core/dom/Document.h" |
| +#include "core/dom/ScriptedAnimationController.h" |
| #include "core/frame/FrameView.h" |
| #include "core/frame/LocalFrame.h" |
| @@ -105,18 +106,29 @@ void MediaQueryMatcher::mediaFeaturesChanged() |
| if (!m_document) |
| return; |
| - WillBeHeapVector<RefPtrWillBeMember<MediaQueryListListener> > listenersToNotify; |
| + WillBeHeapVector<RefPtrWillBeMember<MediaQueryList::Listener> > listenersToNotify; |
| for (MediaQueryListSet::iterator it = m_mediaLists.begin(); it != m_mediaLists.end(); ++it) |
| (*it)->mediaFeaturesChanged(&listenersToNotify); |
| - // FIXME: This should be async! We're running script inside ::layout() or ::updateRenderTree(). |
| for (size_t i = 0; i < listenersToNotify.size(); ++i) |
| - listenersToNotify[i]->call(); |
| + m_delayedListeners.append(listenersToNotify[i]); |
| + |
| + m_document->ensureScriptedAnimationController().scheduleAnimationIfNeeded(); |
|
esprehn
2014/07/01 00:01:06
scheduleAnimationIfNeeded() should be private, I t
cbiesinger
2014/07/01 00:12:09
On PageAnimator? Hm... I'm not positive but I don'
|
| +} |
| + |
| +void MediaQueryMatcher::notifyDelayedListeners() |
| +{ |
| + WillBeHeapVector<RefPtrWillBeMember<MediaQueryList::Listener> > listeners; |
| + listeners.swap(m_delayedListeners); |
| + |
| + for (size_t i = 0; i < listeners.size(); ++i) |
| + listeners[i]->mediaQueryChanged(); |
| } |
| void MediaQueryMatcher::trace(Visitor* visitor) |
| { |
| visitor->trace(m_document); |
| + visitor->trace(m_delayedListeners); |
| visitor->trace(m_mediaLists); |
| } |