Index: Source/core/html/HTMLMediaElement.h |
diff --git a/Source/core/html/HTMLMediaElement.h b/Source/core/html/HTMLMediaElement.h |
index 8508fc2d52de60904aa3943c0ad6c87c40492652..4e2806f4fd64311b13b25f0adbeed0c84423dfc2 100644 |
--- a/Source/core/html/HTMLMediaElement.h |
+++ b/Source/core/html/HTMLMediaElement.h |
@@ -41,6 +41,7 @@ namespace blink { |
class WebContentDecryptionModule; |
class WebInbandTextTrack; |
class WebLayer; |
+class WebMediaPlayer; |
} |
namespace WebCore { |
@@ -49,6 +50,7 @@ namespace WebCore { |
class AudioSourceProvider; |
class MediaElementAudioSourceNode; |
#endif |
+class AudioTrackList; |
class ContentType; |
class Event; |
class ExceptionState; |
@@ -63,6 +65,7 @@ class HTMLMediaSource; |
class TextTrackList; |
class TimeRanges; |
class URLRegistry; |
+class VideoTrackList; |
typedef PODIntervalTree<double, TextTrackCue*> CueIntervalTree; |
typedef CueIntervalTree::IntervalType CueInterval; |
@@ -82,6 +85,7 @@ public: |
static bool isMediaStreamURL(const String& url); |
MediaPlayer* player() const { return m_player.get(); } |
+ blink::WebMediaPlayer* webMediaPlayer() const { return m_player ? m_player->webMediaPlayer() : 0; } |
virtual bool isVideo() const = 0; |
virtual bool hasVideo() const OVERRIDE { return false; } |
@@ -179,6 +183,12 @@ public: |
virtual bool canPlay() const OVERRIDE FINAL; |
+ AudioTrackList* audioTracks(); |
+ void didEnabledAudioTrackChange(const AtomicString& audioTrackID, bool enabled); |
+ |
+ VideoTrackList* videoTracks(); |
+ void didSelectedVideoTrackChange(const AtomicString& unselectedTrackID, const AtomicString& selectedTrackID); |
+ |
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); } |
@@ -186,17 +196,21 @@ public: |
TextTrackList* textTracks(); |
CueList currentlyActiveCues() const { return m_currentlyActiveCues; } |
- void addTrack(TextTrack*); |
- void removeTrack(TextTrack*); |
- void removeAllInbandTracks(); |
+ void addTextTrack(TextTrack*); |
+ void removeTextTrack(TextTrack*, bool fireRemoveTrackEvent); |
+ void forgetResourceSpecificTracks(); |
void closeCaptionTracksChanged(); |
void notifyMediaPlayerOfTextTrackChanges(); |
void didAddTrack(HTMLTrackElement*); |
void didRemoveTrack(HTMLTrackElement*); |
- virtual void mediaPlayerDidAddTrack(blink::WebInbandTextTrack*) OVERRIDE FINAL; |
- virtual void mediaPlayerDidRemoveTrack(blink::WebInbandTextTrack*) OVERRIDE FINAL; |
+ virtual void mediaPlayerDidAddVideoTrack(const AtomicString& id, const AtomicString& kind, const AtomicString& label, const AtomicString& language, bool selected) OVERRIDE FINAL; |
+ virtual void mediaPlayerDidRemoveVideoTrack(const AtomicString& id) OVERRIDE FINAL; |
+ virtual void mediaPlayerDidAddAudioTrack(const AtomicString& id, const AtomicString& kind, const AtomicString& label, const AtomicString& language, bool enabled) OVERRIDE FINAL; |
+ virtual void mediaPlayerDidRemoveAudioTrack(const AtomicString& id) OVERRIDE FINAL; |
+ virtual void mediaPlayerDidAddTextTrack(blink::WebInbandTextTrack*) OVERRIDE FINAL; |
+ virtual void mediaPlayerDidRemoveTextTrack(blink::WebInbandTextTrack*) OVERRIDE FINAL; |
// FIXME: Remove this when WebMediaPlayerClientImpl::loadInternal does not depend on it. |
virtual KURL mediaPlayerPosterURL() OVERRIDE { return KURL(); } |
@@ -461,6 +475,16 @@ private: |
blink::WebContentDecryptionModule* contentDecryptionModule(); |
void setMediaKeysInternal(MediaKeys*); |
+ // Creates placeholder AudioTrack and/or VideoTrack objects when WebMemediaPlayer objects |
+ // advertise they have audio and/or video, but don't explicity signal them via |
+ // mediaPlayerDidAddAudioTrack() and mediaPlayerDidAddVideoTrack(). |
+ // FIXME: Remove this once all WebMediaPlayer implementations properly report their track info. |
+ void createPlaceholderTracksIfNecessary(); |
+ |
+ // Sets the selected/enabled tracks if they aren't set before we initially |
+ // transition to HAVE_METADATA. |
+ void selectInitialTracksIfNecessary(); |
+ |
Timer<HTMLMediaElement> m_loadTimer; |
Timer<HTMLMediaElement> m_progressEventTimer; |
Timer<HTMLMediaElement> m_playbackProgressTimer; |
@@ -546,6 +570,8 @@ private: |
bool m_processingPreferenceChange : 1; |
double m_lastTextTrackUpdateTime; |
+ RefPtr<AudioTrackList> m_audioTracks; |
+ RefPtr<VideoTrackList> m_videoTracks; |
RefPtr<TextTrackList> m_textTracks; |
Vector<RefPtr<TextTrack> > m_textTracksWhenResourceSelectionBegan; |