X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2FWebKit%2FSource%2Fcore%2Fcss%2FMediaQueryList.cpp;h=1e061407a6779fb39453e46853458524b22ae446;hb=3545e9f2671f595d2a2f3ee75ca0393b01e35ef6;hp=08e83c554f791d9573289f8fb99b45f52f870191;hpb=7d210d4c7e9ba36e635eabc5b5780495f8a63292;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/WebKit/Source/core/css/MediaQueryList.cpp b/src/third_party/WebKit/Source/core/css/MediaQueryList.cpp index 08e83c5..1e06140 100644 --- a/src/third_party/WebKit/Source/core/css/MediaQueryList.cpp +++ b/src/third_party/WebKit/Source/core/css/MediaQueryList.cpp @@ -24,6 +24,7 @@ #include "core/css/MediaQueryEvaluator.h" #include "core/css/MediaQueryListListener.h" #include "core/css/MediaQueryMatcher.h" +#include "core/dom/Document.h" namespace blink { @@ -41,7 +42,6 @@ MediaQueryList::MediaQueryList(ExecutionContext* context, PassRefPtrWillBeRawPtr , m_matchesDirty(true) , m_matches(false) { - ScriptWrappable::init(this); m_matcher->addMediaQueryList(this); updateMatches(); } @@ -58,12 +58,21 @@ String MediaQueryList::media() const return m_media->mediaText(); } +void MediaQueryList::addDeprecatedListener(PassRefPtr listener) +{ + addEventListener(EventTypeNames::change, listener, false); +} + +void MediaQueryList::removeDeprecatedListener(PassRefPtr listener) +{ + removeEventListener(EventTypeNames::change, listener, false); +} + void MediaQueryList::addListener(PassRefPtrWillBeRawPtr listener) { if (!listener) return; - listener->setMediaQueryList(this); m_listeners.add(listener); } @@ -73,21 +82,12 @@ void MediaQueryList::removeListener(PassRefPtrWillBeRawPtr protect(this); - listener->clearMediaQueryList(); - - for (ListenerList::iterator it = m_listeners.begin(), end = m_listeners.end(); it != end; ++it) { - // We can't just use m_listeners.remove() here, because we get a new wrapper for the - // listener callback every time. We have to use MediaQueryListListener::operator==. - if (**it == *listener.get()) { - m_listeners.remove(it); - break; - } - } + m_listeners.remove(listener); } bool MediaQueryList::hasPendingActivity() const { - return m_listeners.size(); + return m_listeners.size() || hasEventListeners(EventTypeNames::change); } void MediaQueryList::stop() @@ -95,16 +95,18 @@ void MediaQueryList::stop() // m_listeners.clear() can drop the last ref to this MediaQueryList. RefPtrWillBeRawPtr protect(this); m_listeners.clear(); + removeAllEventListeners(); } -void MediaQueryList::mediaFeaturesChanged(WillBeHeapVector >* listenersToNotify) +bool MediaQueryList::mediaFeaturesChanged(WillBeHeapVector >* listenersToNotify) { m_matchesDirty = true; if (!updateMatches()) - return; + return false; for (ListenerList::const_iterator it = m_listeners.begin(), end = m_listeners.end(); it != end; ++it) { listenersToNotify->append(*it); } + return hasEventListeners(EventTypeNames::change); } bool MediaQueryList::updateMatches() @@ -130,6 +132,17 @@ void MediaQueryList::trace(Visitor* visitor) visitor->trace(m_media); visitor->trace(m_listeners); #endif + EventTargetWithInlineData::trace(visitor); +} + +const AtomicString& MediaQueryList::interfaceName() const +{ + return EventTargetNames::MediaQueryList; +} + +ExecutionContext* MediaQueryList::executionContext() const +{ + return ActiveDOMObject::executionContext(); } }