diff options
Diffstat (limited to 'Source/WebCore/html/MediaController.h')
-rw-r--r-- | Source/WebCore/html/MediaController.h | 153 |
1 files changed, 73 insertions, 80 deletions
diff --git a/Source/WebCore/html/MediaController.h b/Source/WebCore/html/MediaController.h index 1e7bd8a2e..178fa742d 100644 --- a/Source/WebCore/html/MediaController.h +++ b/Source/WebCore/html/MediaController.h @@ -10,10 +10,10 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR @@ -23,8 +23,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef MediaController_h -#define MediaController_h +#pragma once #if ENABLE(VIDEO) @@ -32,110 +31,104 @@ #include "EventTarget.h" #include "MediaControllerInterface.h" #include "Timer.h" -#include <wtf/PassRefPtr.h> -#include <wtf/RefCounted.h> #include <wtf/Vector.h> namespace WebCore { class Clock; class HTMLMediaElement; -class Event; -class ScriptExecutionContext; class MediaController final : public RefCounted<MediaController>, public MediaControllerInterface, public EventTargetWithInlineData { public: - static PassRefPtr<MediaController> create(ScriptExecutionContext&); + static Ref<MediaController> create(ScriptExecutionContext&); virtual ~MediaController(); - void addMediaElement(HTMLMediaElement*); - void removeMediaElement(HTMLMediaElement*); - bool containsMediaElement(HTMLMediaElement*) const; + Ref<TimeRanges> buffered() const final; + Ref<TimeRanges> seekable() const final; + Ref<TimeRanges> played() final; - const String& mediaGroup() const { return m_mediaGroup; } - - virtual PassRefPtr<TimeRanges> buffered() const override; - virtual PassRefPtr<TimeRanges> seekable() const override; - virtual PassRefPtr<TimeRanges> played() override; - - virtual double duration() const override; - virtual double currentTime() const override; - virtual void setCurrentTime(double) override; - - virtual bool paused() const override { return m_paused; } - virtual void play() override; - virtual void pause() override; + double duration() const final; + double currentTime() const final; + void setCurrentTime(double) final; + + bool paused() const final { return m_paused; } + void play() final; + void pause() final; void unpause(); + + double defaultPlaybackRate() const final { return m_defaultPlaybackRate; } + void setDefaultPlaybackRate(double) final; - virtual double defaultPlaybackRate() const override { return m_defaultPlaybackRate; } - virtual void setDefaultPlaybackRate(double) override; - - virtual double playbackRate() const override; - virtual void setPlaybackRate(double) override; - - virtual double volume() const override { return m_volume; } - virtual void setVolume(double, ExceptionCode&) override; - - virtual bool muted() const override { return m_muted; } - virtual void setMuted(bool) override; - - virtual ReadyState readyState() const override { return m_readyState; } + double playbackRate() const final; + void setPlaybackRate(double) final; - enum PlaybackState { WAITING, PLAYING, ENDED }; - const AtomicString& playbackState() const; + double volume() const final { return m_volume; } + ExceptionOr<void> setVolume(double) final; - virtual bool supportsFullscreen() const override { return false; } - virtual bool isFullscreen() const override { return false; } - virtual void enterFullscreen() override { } + bool muted() const final { return m_muted; } + void setMuted(bool) final; - virtual bool hasAudio() const override; - virtual bool hasVideo() const override; - virtual bool hasClosedCaptions() const override; - virtual void setClosedCaptionsVisible(bool) override; - virtual bool closedCaptionsVisible() const override { return m_closedCaptionsVisible; } - - virtual bool supportsScanning() const override; - - virtual void beginScrubbing() override; - virtual void endScrubbing() override; - - virtual bool canPlay() const override; - - virtual bool isLiveStream() const override; - - virtual bool hasCurrentSrc() const override; - - virtual void returnToRealtime() override; - - bool isBlocked() const; + const AtomicString& playbackState() const; - // EventTarget - using RefCounted<MediaController>::ref; - using RefCounted<MediaController>::deref; + using RefCounted::ref; + using RefCounted::deref; private: explicit MediaController(ScriptExecutionContext&); + void reportControllerState(); void updateReadyState(); void updatePlaybackState(); void updateMediaElements(); - void bringElementUpToSpeed(HTMLMediaElement*); + void bringElementUpToSpeed(HTMLMediaElement&); void scheduleEvent(const AtomicString& eventName); - void asyncEventTimerFired(Timer<MediaController>&); - void clearPositionTimerFired(Timer<MediaController>&); + void asyncEventTimerFired(); + void clearPositionTimerFired(); bool hasEnded() const; void scheduleTimeupdateEvent(); - void timeupdateTimerFired(Timer<MediaController>&); void startTimeupdateTimer(); - // EventTarget - virtual void refEventTarget() override { ref(); } - virtual void derefEventTarget() override { deref(); } - virtual EventTargetInterface eventTargetInterface() const override { return MediaControllerEventTargetInterfaceType; } - virtual ScriptExecutionContext* scriptExecutionContext() const override { return &m_scriptExecutionContext; }; + void refEventTarget() final { ref(); } + void derefEventTarget() final { deref(); } + EventTargetInterface eventTargetInterface() const final { return MediaControllerEventTargetInterfaceType; } + ScriptExecutionContext* scriptExecutionContext() const final { return &m_scriptExecutionContext; }; + + void addMediaElement(HTMLMediaElement&); + void removeMediaElement(HTMLMediaElement&); + bool containsMediaElement(HTMLMediaElement&) const; + + const String& mediaGroup() const { return m_mediaGroup; } + + bool supportsFullscreen(HTMLMediaElementEnums::VideoFullscreenMode) const final { return false; } + bool isFullscreen() const final { return false; } + void enterFullscreen() final { } + + bool hasAudio() const final; + bool hasVideo() const final; + bool hasClosedCaptions() const final; + void setClosedCaptionsVisible(bool) final; + bool closedCaptionsVisible() const final { return m_closedCaptionsVisible; } + + bool supportsScanning() const final; + void beginScrubbing() final; + void endScrubbing() final; + void beginScanning(ScanDirection) final; + void endScanning() final; + + bool canPlay() const final; + bool isLiveStream() const final; + bool hasCurrentSrc() const final; + bool isBlocked() const; + + void returnToRealtime() final; + + ReadyState readyState() const final { return m_readyState; } + + enum PlaybackState { WAITING, PLAYING, ENDED }; friend class HTMLMediaElement; friend class MediaControllerEventListener; + Vector<HTMLMediaElement*> m_mediaElements; bool m_paused; double m_defaultPlaybackRate; @@ -144,18 +137,18 @@ private: bool m_muted; ReadyState m_readyState; PlaybackState m_playbackState; - Vector<RefPtr<Event>> m_pendingEvents; - Timer<MediaController> m_asyncEventTimer; - mutable Timer<MediaController> m_clearPositionTimer; + Vector<Ref<Event>> m_pendingEvents; + Timer m_asyncEventTimer; + mutable Timer m_clearPositionTimer; String m_mediaGroup; bool m_closedCaptionsVisible; std::unique_ptr<Clock> m_clock; ScriptExecutionContext& m_scriptExecutionContext; - Timer<MediaController> m_timeupdateTimer; + Timer m_timeupdateTimer; double m_previousTimeupdateTime; + bool m_resetCurrentTimeInNextPlay { false }; }; } // namespace WebCore #endif -#endif |