summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/MediaController.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/html/MediaController.h')
-rw-r--r--Source/WebCore/html/MediaController.h153
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