X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2FWebKit%2FSource%2Fcore%2Fhtml%2FMediaController.cpp;h=8eae382b75edf706fb8d4122804243f1cf42b491;hb=004985e17e624662a4c85c76a7654039dc83f028;hp=9ddaf618f3f6b059847bd0b25a64fc6cb05d65d5;hpb=2f108dbacb161091e42a3479f4e171339b7e7623;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/WebKit/Source/core/html/MediaController.cpp b/src/third_party/WebKit/Source/core/html/MediaController.cpp index 9ddaf61..8eae382 100644 --- a/src/third_party/WebKit/Source/core/html/MediaController.cpp +++ b/src/third_party/WebKit/Source/core/html/MediaController.cpp @@ -30,6 +30,7 @@ #include "bindings/v8/ExceptionState.h" #include "bindings/v8/ExceptionStatePlaceholder.h" #include "core/dom/ExceptionCode.h" +#include "core/events/GenericEventQueue.h" #include "core/html/HTMLMediaElement.h" #include "core/html/TimeRanges.h" #include "platform/Clock.h" @@ -53,7 +54,7 @@ MediaController::MediaController(ExecutionContext* context) , m_muted(false) , m_readyState(HTMLMediaElement::HAVE_NOTHING) , m_playbackState(WAITING) - , m_asyncEventTimer(this, &MediaController::asyncEventTimerFired) + , m_pendingEventsQueue(GenericEventQueue::create(this)) , m_clearPositionTimer(this, &MediaController::clearPositionTimerFired) , m_clock(Clock::create()) , m_executionContext(context) @@ -83,11 +84,6 @@ void MediaController::removeMediaElement(HTMLMediaElement* element) m_mediaElements.remove(m_mediaElements.find(element)); } -bool MediaController::containsMediaElement(HTMLMediaElement* element) const -{ - return m_mediaElements.contains(element); -} - PassRefPtr MediaController::buffered() const { if (m_mediaElements.isEmpty()) @@ -160,12 +156,6 @@ double MediaController::currentTime() const void MediaController::setCurrentTime(double time, ExceptionState& exceptionState) { - // FIXME: generated bindings should check isfinite: http://crbug.com/354298 - if (!std::isfinite(time)) { - exceptionState.throwTypeError(ExceptionMessages::notAFiniteNumber(time)); - return; - } - // When the user agent is to seek the media controller to a particular new playback position, // it must follow these steps: // If the new playback position is less than zero, then set it to zero. @@ -176,6 +166,7 @@ void MediaController::setCurrentTime(double time, ExceptionState& exceptionState time = min(time, duration()); // Set the media controller position to the new playback position. + m_position = time; m_clock->setCurrentTime(time); // Seek each slaved media element to the new playback position relative to the media element timeline. @@ -224,14 +215,8 @@ void MediaController::pause() reportControllerState(); } -void MediaController::setDefaultPlaybackRate(double rate, ExceptionState& exceptionState) +void MediaController::setDefaultPlaybackRate(double rate) { - // FIXME: generated bindings should check isfinite: http://crbug.com/354298 - if (!std::isfinite(rate)) { - exceptionState.throwTypeError(ExceptionMessages::notAFiniteNumber(rate)); - return; - } - if (m_defaultPlaybackRate == rate) return; @@ -248,14 +233,8 @@ double MediaController::playbackRate() const return m_clock->playRate(); } -void MediaController::setPlaybackRate(double rate, ExceptionState& exceptionState) +void MediaController::setPlaybackRate(double rate) { - // FIXME: generated bindings should check isfinite: http://crbug.com/354298 - if (!std::isfinite(rate)) { - exceptionState.throwTypeError(ExceptionMessages::notAFiniteNumber(rate)); - return; - } - if (m_clock->playRate() == rate) return; @@ -272,12 +251,6 @@ void MediaController::setPlaybackRate(double rate, ExceptionState& exceptionStat void MediaController::setVolume(double level, ExceptionState& exceptionState) { - // FIXME: generated bindings should check isfinite: http://crbug.com/354298 - if (!std::isfinite(level)) { - exceptionState.throwTypeError(ExceptionMessages::notAFiniteNumber(level)); - return; - } - if (m_volume == level) return; @@ -591,19 +564,7 @@ bool MediaController::hasEnded() const void MediaController::scheduleEvent(const AtomicString& eventName) { - m_pendingEvents.append(Event::createCancelable(eventName)); - if (!m_asyncEventTimer.isActive()) - m_asyncEventTimer.startOneShot(0, FROM_HERE); -} - -void MediaController::asyncEventTimerFired(Timer*) -{ - Vector > pendingEvents; - - m_pendingEvents.swap(pendingEvents); - size_t count = pendingEvents.size(); - for (size_t index = 0; index < count; ++index) - dispatchEvent(pendingEvents[index].release(), IGNORE_EXCEPTION); + m_pendingEventsQueue->enqueueEvent(Event::createCancelable(eventName)); } void MediaController::clearPositionTimerFired(Timer*) @@ -611,15 +572,6 @@ void MediaController::clearPositionTimerFired(Timer*) m_position = MediaPlayer::invalidTime(); } -bool MediaController::hasAudio() const -{ - for (size_t index = 0; index < m_mediaElements.size(); ++index) { - if (m_mediaElements[index]->hasAudio()) - return true; - } - return false; -} - const AtomicString& MediaController::interfaceName() const { return EventTargetNames::MediaController;