Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / html / HTMLMediaElement.h
index 2c2c7d4..05df584 100644 (file)
@@ -62,6 +62,7 @@ class MediaKeys;
 class HTMLMediaSource;
 class TextTrackList;
 class TimeRanges;
+class URLRegistry;
 
 typedef PODIntervalTree<double, TextTrackCue*> CueIntervalTree;
 typedef CueIntervalTree::IntervalType CueInterval;
@@ -77,6 +78,9 @@ class HTMLMediaElement : public HTMLElement, public MediaPlayerClient, public Ac
 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;
@@ -109,12 +113,13 @@ public:
     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
@@ -122,13 +127,13 @@ public:
     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;
@@ -169,14 +174,11 @@ public:
     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); }
@@ -195,6 +197,8 @@ public:
 
     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 };
@@ -244,7 +248,7 @@ public:
 
     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();
 
@@ -277,7 +281,7 @@ public:
     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;
@@ -287,7 +291,7 @@ protected:
 
     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; }
 
@@ -298,17 +302,13 @@ protected:
     // 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; }
@@ -381,6 +381,8 @@ private:
     void scheduleEvent(const AtomicString& eventName);
 
     // loading
+    void prepareForLoad();
+    void loadInternal();
     void selectMediaResource();
     void loadResource(const KURL&, ContentType&, const String& keySystem);
     void scheduleNextSourceChild();
@@ -404,12 +406,9 @@ private:
 
     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();
@@ -447,7 +446,6 @@ private:
     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.
@@ -540,10 +538,8 @@ private:
 
     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;
@@ -572,7 +568,9 @@ private:
 
     EmeMode m_emeMode;
 
-    RefPtr<MediaKeys> m_mediaKeys;
+    RefPtrWillBePersistent<MediaKeys> m_mediaKeys;
+
+    static URLRegistry* s_mediaStreamRegistry;
 };
 
 #ifndef NDEBUG