class HTMLMediaSource;
class TextTrackList;
class TimeRanges;
+class URLRegistry;
typedef PODIntervalTree<double, TextTrackCue*> CueIntervalTree;
typedef CueIntervalTree::IntervalType CueInterval;
public:
static blink::WebMimeRegistry::SupportsType supportsType(const ContentType&, const String& keySystem = String());
+ static void setMediaStreamRegistry(URLRegistry*);
+ static bool isMediaStreamURL(const String& url);
+
MediaPlayer* player() const { return m_player.get(); }
virtual bool isVideo() const = 0;
String preload() const;
void setPreload(const AtomicString&);
- virtual PassRefPtr<TimeRanges> buffered() const OVERRIDE FINAL;
+ PassRefPtr<TimeRanges> buffered() const;
void load();
String canPlayType(const String& mimeType, const String& keySystem = String()) const;
// ready state
- virtual ReadyState readyState() const OVERRIDE FINAL;
+ enum ReadyState { HAVE_NOTHING, HAVE_METADATA, HAVE_CURRENT_DATA, HAVE_FUTURE_DATA, HAVE_ENOUGH_DATA };
+ ReadyState readyState() const;
bool seeking() const;
// playback state
virtual void setCurrentTime(double, ExceptionState&) OVERRIDE FINAL;
virtual double duration() const OVERRIDE FINAL;
virtual bool paused() const OVERRIDE FINAL;
- virtual double defaultPlaybackRate() const OVERRIDE FINAL;
- virtual void setDefaultPlaybackRate(double) OVERRIDE FINAL;
- virtual double playbackRate() const OVERRIDE FINAL;
- virtual void setPlaybackRate(double) OVERRIDE FINAL;
+ double defaultPlaybackRate() const;
+ void setDefaultPlaybackRate(double);
+ double playbackRate() const;
+ void setPlaybackRate(double);
void updatePlaybackRate();
- virtual PassRefPtr<TimeRanges> played() OVERRIDE FINAL;
- virtual PassRefPtr<TimeRanges> seekable() const OVERRIDE FINAL;
+ PassRefPtr<TimeRanges> played();
+ PassRefPtr<TimeRanges> seekable() const;
bool ended() const;
bool autoplay() const;
bool loop() const;
virtual bool muted() const OVERRIDE FINAL;
virtual void setMuted(bool) OVERRIDE FINAL;
- void togglePlayState();
virtual void beginScrubbing() OVERRIDE FINAL;
virtual void endScrubbing() OVERRIDE FINAL;
virtual bool canPlay() const OVERRIDE FINAL;
- double percentLoaded() const;
-
PassRefPtr<TextTrack> addTextTrack(const AtomicString& kind, const AtomicString& label, const AtomicString& language, ExceptionState&);
PassRefPtr<TextTrack> addTextTrack(const AtomicString& kind, const AtomicString& label, ExceptionState& exceptionState) { return addTextTrack(kind, label, emptyAtom, exceptionState); }
PassRefPtr<TextTrack> addTextTrack(const AtomicString& kind, ExceptionState& exceptionState) { return addTextTrack(kind, emptyAtom, emptyAtom, exceptionState); }
virtual void mediaPlayerDidAddTrack(blink::WebInbandTextTrack*) OVERRIDE FINAL;
virtual void mediaPlayerDidRemoveTrack(blink::WebInbandTextTrack*) OVERRIDE FINAL;
+ // FIXME: Remove this when WebMediaPlayerClientImpl::loadInternal does not depend on it.
+ virtual KURL mediaPlayerPosterURL() OVERRIDE { return KURL(); }
struct TrackGroup {
enum GroupKind { CaptionsAndSubtitles, Description, Chapter, Metadata, Other };
bool hasSingleSecurityOrigin() const { return !m_player || m_player->hasSingleSecurityOrigin(); }
- virtual bool isFullscreen() const OVERRIDE FINAL;
+ bool isFullscreen() const;
virtual void enterFullscreen() OVERRIDE FINAL;
void exitFullscreen();
void setController(PassRefPtr<MediaController>); // Resets the MediaGroup and sets the MediaController.
protected:
- HTMLMediaElement(const QualifiedName&, Document&, bool);
+ HTMLMediaElement(const QualifiedName&, Document&);
virtual ~HTMLMediaElement();
virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
virtual void didMoveToNewDocument(Document& oldDocument) OVERRIDE;
- enum DisplayMode { Unknown, None, Poster, PosterWaitingForVideo, Video };
+ enum DisplayMode { Unknown, Poster, PosterWaitingForVideo, Video };
DisplayMode displayMode() const { return m_displayMode; }
virtual void setDisplayMode(DisplayMode mode) { m_displayMode = mode; }
// Restrictions to change default behaviors.
enum BehaviorRestrictionFlags {
NoRestrictions = 0,
- RequireUserGestureForLoadRestriction = 1 << 0,
- RequireUserGestureForRateChangeRestriction = 1 << 1,
- RequireUserGestureForFullscreenRestriction = 1 << 2,
- RequirePageConsentToLoadMediaRestriction = 1 << 3,
+ RequireUserGestureForPlayRestriction = 1 << 0,
+ RequireUserGestureForFullscreenRestriction = 1 << 1,
};
typedef unsigned BehaviorRestrictions;
- bool userGestureRequiredForLoad() const { return m_restrictions & RequireUserGestureForLoadRestriction; }
- bool userGestureRequiredForRateChange() const { return m_restrictions & RequireUserGestureForRateChangeRestriction; }
+ bool userGestureRequiredForPlay() const { return m_restrictions & RequireUserGestureForPlayRestriction; }
bool userGestureRequiredForFullscreen() const { return m_restrictions & RequireUserGestureForFullscreenRestriction; }
- bool pageConsentRequiredForLoad() const { return m_restrictions & RequirePageConsentToLoadMediaRestriction; }
void addBehaviorRestriction(BehaviorRestrictions restriction) { m_restrictions |= restriction; }
void removeBehaviorRestriction(BehaviorRestrictions restriction) { m_restrictions &= ~restriction; }
void scheduleEvent(const AtomicString& eventName);
// loading
+ void prepareForLoad();
+ void loadInternal();
void selectMediaResource();
void loadResource(const KURL&, ContentType&, const String& keySystem);
void scheduleNextSourceChild();
void markCaptionAndSubtitleTracksAsUnconfigured();
- // These "internal" functions do not check user gesture restrictions.
- void loadInternal();
+ // This does not check user gesture restrictions.
void playInternal();
- void pauseInternal();
- void prepareForLoad();
void allowVideoRendering();
void updateVolume();
void updateMediaController();
bool isBlocked() const;
bool isBlockedOnMediaController() const;
- virtual bool hasCurrentSrc() const OVERRIDE FINAL { return !m_currentSrc.isEmpty(); }
bool isAutoplaying() const { return m_autoplaying; }
// Currently we have both EME v0.1b and EME WD implemented in media element.
bool m_closedCaptionsVisible : 1;
- bool m_loadInitiatedByUserGesture : 1;
bool m_completelyLoaded : 1;
bool m_havePreparedToPlay : 1;
- bool m_parsingInProgress : 1;
bool m_tracksAreReady : 1;
bool m_haveVisibleTextTrack : 1;
EmeMode m_emeMode;
- RefPtr<MediaKeys> m_mediaKeys;
+ RefPtrWillBePersistent<MediaKeys> m_mediaKeys;
+
+ static URLRegistry* s_mediaStreamRegistry;
};
#ifndef NDEBUG