Commit 9e3beaee authored by acolwell@chromium.org's avatar acolwell@chromium.org

Remove VideoTrack runtime feature since we always support TextTracks.

We haven't built Chrome without TextTrack support for a long
time so I'm removing the VideoTrack feature flag and removing
all conditional code that depended on it. It is part of the
HTML5 spec and should be on by default for any compliant
implementation that supports media.

Review URL: https://codereview.chromium.org/205583009

git-svn-id: svn://svn.chromium.org/blink/trunk@170680 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 6f433b5b
...@@ -427,9 +427,6 @@ void HTMLMediaElement::finishParsingChildren() ...@@ -427,9 +427,6 @@ void HTMLMediaElement::finishParsingChildren()
{ {
HTMLElement::finishParsingChildren(); HTMLElement::finishParsingChildren();
if (!RuntimeEnabledFeatures::videoTrackEnabled())
return;
if (Traversal<HTMLTrackElement>::firstChild(*this)) if (Traversal<HTMLTrackElement>::firstChild(*this))
scheduleDelayedAction(LoadTextTrackResource); scheduleDelayedAction(LoadTextTrackResource);
} }
...@@ -497,7 +494,7 @@ void HTMLMediaElement::scheduleDelayedAction(DelayedActionType actionType) ...@@ -497,7 +494,7 @@ void HTMLMediaElement::scheduleDelayedAction(DelayedActionType actionType)
m_pendingActionFlags |= LoadMediaResource; m_pendingActionFlags |= LoadMediaResource;
} }
if (RuntimeEnabledFeatures::videoTrackEnabled() && (actionType & LoadTextTrackResource)) if (actionType & LoadTextTrackResource)
m_pendingActionFlags |= LoadTextTrackResource; m_pendingActionFlags |= LoadTextTrackResource;
if (!m_loadTimer.isActive()) if (!m_loadTimer.isActive())
...@@ -526,7 +523,7 @@ void HTMLMediaElement::scheduleEvent(PassRefPtr<Event> event) ...@@ -526,7 +523,7 @@ void HTMLMediaElement::scheduleEvent(PassRefPtr<Event> event)
void HTMLMediaElement::loadTimerFired(Timer<HTMLMediaElement>*) void HTMLMediaElement::loadTimerFired(Timer<HTMLMediaElement>*)
{ {
if (RuntimeEnabledFeatures::videoTrackEnabled() && (m_pendingActionFlags & LoadTextTrackResource)) if (m_pendingActionFlags & LoadTextTrackResource)
configureTextTracks(); configureTextTracks();
if (m_pendingActionFlags & LoadMediaResource) { if (m_pendingActionFlags & LoadMediaResource) {
...@@ -663,8 +660,7 @@ void HTMLMediaElement::prepareForLoad() ...@@ -663,8 +660,7 @@ void HTMLMediaElement::prepareForLoad()
updateMediaController(); updateMediaController();
if (RuntimeEnabledFeatures::videoTrackEnabled()) updateActiveTextTrackCues(0);
updateActiveTextTrackCues(0);
} }
// 5 - Set the playbackRate attribute to the value of the defaultPlaybackRate attribute. // 5 - Set the playbackRate attribute to the value of the defaultPlaybackRate attribute.
...@@ -703,14 +699,12 @@ void HTMLMediaElement::loadInternal() ...@@ -703,14 +699,12 @@ void HTMLMediaElement::loadInternal()
{ {
// HTMLMediaElement::textTracksAreReady will need "... the text tracks whose mode was not in the // HTMLMediaElement::textTracksAreReady will need "... the text tracks whose mode was not in the
// disabled state when the element's resource selection algorithm last started". // disabled state when the element's resource selection algorithm last started".
if (RuntimeEnabledFeatures::videoTrackEnabled()) { m_textTracksWhenResourceSelectionBegan.clear();
m_textTracksWhenResourceSelectionBegan.clear(); if (m_textTracks) {
if (m_textTracks) { for (unsigned i = 0; i < m_textTracks->length(); ++i) {
for (unsigned i = 0; i < m_textTracks->length(); ++i) { TextTrack* track = m_textTracks->item(i);
TextTrack* track = m_textTracks->item(i); if (track->mode() != TextTrack::disabledKeyword())
if (track->mode() != TextTrack::disabledKeyword()) m_textTracksWhenResourceSelectionBegan.append(track);
m_textTracksWhenResourceSelectionBegan.append(track);
}
} }
} }
...@@ -1545,7 +1539,7 @@ void HTMLMediaElement::setReadyState(MediaPlayer::ReadyState state) ...@@ -1545,7 +1539,7 @@ void HTMLMediaElement::setReadyState(MediaPlayer::ReadyState state)
ReadyState oldState = m_readyState; ReadyState oldState = m_readyState;
ReadyState newState = static_cast<ReadyState>(state); ReadyState newState = static_cast<ReadyState>(state);
bool tracksAreReady = !RuntimeEnabledFeatures::videoTrackEnabled() || textTracksAreReady(); bool tracksAreReady = textTracksAreReady();
if (newState == oldState && m_tracksAreReady == tracksAreReady) if (newState == oldState && m_tracksAreReady == tracksAreReady)
return; return;
...@@ -1644,8 +1638,7 @@ void HTMLMediaElement::setReadyState(MediaPlayer::ReadyState state) ...@@ -1644,8 +1638,7 @@ void HTMLMediaElement::setReadyState(MediaPlayer::ReadyState state)
updatePlayState(); updatePlayState();
updateMediaController(); updateMediaController();
if (RuntimeEnabledFeatures::videoTrackEnabled()) updateActiveTextTrackCues(currentTime());
updateActiveTextTrackCues(currentTime());
} }
void HTMLMediaElement::progressEventTimerFired(Timer<HTMLMediaElement>*) void HTMLMediaElement::progressEventTimerFired(Timer<HTMLMediaElement>*)
...@@ -2177,8 +2170,7 @@ void HTMLMediaElement::playbackProgressTimerFired(Timer<HTMLMediaElement>*) ...@@ -2177,8 +2170,7 @@ void HTMLMediaElement::playbackProgressTimerFired(Timer<HTMLMediaElement>*)
if (!m_paused && hasMediaControls()) if (!m_paused && hasMediaControls())
mediaControls()->playbackProgressed(); mediaControls()->playbackProgressed();
if (RuntimeEnabledFeatures::videoTrackEnabled()) updateActiveTextTrackCues(currentTime());
updateActiveTextTrackCues(currentTime());
} }
void HTMLMediaElement::scheduleTimeupdateEvent(bool periodicEvent) void HTMLMediaElement::scheduleTimeupdateEvent(bool periodicEvent)
...@@ -2227,9 +2219,6 @@ void HTMLMediaElement::togglePlayState() ...@@ -2227,9 +2219,6 @@ void HTMLMediaElement::togglePlayState()
void HTMLMediaElement::mediaPlayerDidAddTextTrack(WebInbandTextTrack* webTrack) void HTMLMediaElement::mediaPlayerDidAddTextTrack(WebInbandTextTrack* webTrack)
{ {
if (!RuntimeEnabledFeatures::videoTrackEnabled())
return;
// 4.8.10.12.2 Sourcing in-band text tracks // 4.8.10.12.2 Sourcing in-band text tracks
// 1. Associate the relevant data with a new text track and its corresponding new TextTrack object. // 1. Associate the relevant data with a new text track and its corresponding new TextTrack object.
RefPtr<InbandTextTrack> textTrack = InbandTextTrack::create(document(), webTrack); RefPtr<InbandTextTrack> textTrack = InbandTextTrack::create(document(), webTrack);
...@@ -2262,9 +2251,6 @@ void HTMLMediaElement::mediaPlayerDidAddTextTrack(WebInbandTextTrack* webTrack) ...@@ -2262,9 +2251,6 @@ void HTMLMediaElement::mediaPlayerDidAddTextTrack(WebInbandTextTrack* webTrack)
void HTMLMediaElement::mediaPlayerDidRemoveTextTrack(WebInbandTextTrack* webTrack) void HTMLMediaElement::mediaPlayerDidRemoveTextTrack(WebInbandTextTrack* webTrack)
{ {
if (!RuntimeEnabledFeatures::videoTrackEnabled())
return;
if (!m_textTracks) if (!m_textTracks)
return; return;
...@@ -2309,8 +2295,6 @@ void HTMLMediaElement::forgetResourceSpecificTracks() ...@@ -2309,8 +2295,6 @@ void HTMLMediaElement::forgetResourceSpecificTracks()
PassRefPtr<TextTrack> HTMLMediaElement::addTextTrack(const AtomicString& kind, const AtomicString& label, const AtomicString& language, ExceptionState& exceptionState) PassRefPtr<TextTrack> HTMLMediaElement::addTextTrack(const AtomicString& kind, const AtomicString& label, const AtomicString& language, ExceptionState& exceptionState)
{ {
ASSERT(RuntimeEnabledFeatures::videoTrackEnabled());
// 4.8.10.12.4 Text track API // 4.8.10.12.4 Text track API
// The addTextTrack(kind, label, language) method of media elements, when invoked, must run the following steps: // The addTextTrack(kind, label, language) method of media elements, when invoked, must run the following steps:
...@@ -2345,8 +2329,6 @@ PassRefPtr<TextTrack> HTMLMediaElement::addTextTrack(const AtomicString& kind, c ...@@ -2345,8 +2329,6 @@ PassRefPtr<TextTrack> HTMLMediaElement::addTextTrack(const AtomicString& kind, c
TextTrackList* HTMLMediaElement::textTracks() TextTrackList* HTMLMediaElement::textTracks()
{ {
ASSERT(RuntimeEnabledFeatures::videoTrackEnabled());
if (!m_textTracks) if (!m_textTracks)
m_textTracks = TextTrackList::create(this); m_textTracks = TextTrackList::create(this);
...@@ -2355,9 +2337,6 @@ TextTrackList* HTMLMediaElement::textTracks() ...@@ -2355,9 +2337,6 @@ TextTrackList* HTMLMediaElement::textTracks()
void HTMLMediaElement::didAddTrackElement(HTMLTrackElement* trackElement) void HTMLMediaElement::didAddTrackElement(HTMLTrackElement* trackElement)
{ {
if (!RuntimeEnabledFeatures::videoTrackEnabled())
return;
// 4.8.10.12.3 Sourcing out-of-band text tracks // 4.8.10.12.3 Sourcing out-of-band text tracks
// When a track element's parent element changes and the new parent is a media element, // When a track element's parent element changes and the new parent is a media element,
// then the user agent must add the track element's corresponding text track to the // then the user agent must add the track element's corresponding text track to the
...@@ -2379,9 +2358,6 @@ void HTMLMediaElement::didAddTrackElement(HTMLTrackElement* trackElement) ...@@ -2379,9 +2358,6 @@ void HTMLMediaElement::didAddTrackElement(HTMLTrackElement* trackElement)
void HTMLMediaElement::didRemoveTrackElement(HTMLTrackElement* trackElement) void HTMLMediaElement::didRemoveTrackElement(HTMLTrackElement* trackElement)
{ {
if (!RuntimeEnabledFeatures::videoTrackEnabled())
return;
#if !LOG_DISABLED #if !LOG_DISABLED
KURL url = trackElement->getNonEmptyURLAttribute(srcAttr); KURL url = trackElement->getNonEmptyURLAttribute(srcAttr);
WTF_LOG(Media, "HTMLMediaElement::didRemoveTrackElement - 'src' is %s", urlForLoggingMedia(url).utf8().data()); WTF_LOG(Media, "HTMLMediaElement::didRemoveTrackElement - 'src' is %s", urlForLoggingMedia(url).utf8().data());
...@@ -2758,8 +2734,7 @@ void HTMLMediaElement::mediaPlayerTimeChanged() ...@@ -2758,8 +2734,7 @@ void HTMLMediaElement::mediaPlayerTimeChanged()
{ {
WTF_LOG(Media, "HTMLMediaElement::mediaPlayerTimeChanged"); WTF_LOG(Media, "HTMLMediaElement::mediaPlayerTimeChanged");
if (RuntimeEnabledFeatures::videoTrackEnabled()) updateActiveTextTrackCues(currentTime());
updateActiveTextTrackCues(currentTime());
invalidateCachedTime(); invalidateCachedTime();
...@@ -3122,8 +3097,7 @@ void HTMLMediaElement::userCancelledLoad() ...@@ -3122,8 +3097,7 @@ void HTMLMediaElement::userCancelledLoad()
// Reset m_readyState since m_player is gone. // Reset m_readyState since m_player is gone.
m_readyState = HAVE_NOTHING; m_readyState = HAVE_NOTHING;
updateMediaController(); updateMediaController();
if (RuntimeEnabledFeatures::videoTrackEnabled()) updateActiveTextTrackCues(0);
updateActiveTextTrackCues(0);
} }
void HTMLMediaElement::clearMediaPlayerAndAudioSourceProviderClient() void HTMLMediaElement::clearMediaPlayerAndAudioSourceProviderClient()
...@@ -3238,7 +3212,7 @@ blink::WebLayer* HTMLMediaElement::platformLayer() const ...@@ -3238,7 +3212,7 @@ blink::WebLayer* HTMLMediaElement::platformLayer() const
bool HTMLMediaElement::hasClosedCaptions() const bool HTMLMediaElement::hasClosedCaptions() const
{ {
if (RuntimeEnabledFeatures::videoTrackEnabled() && m_textTracks) { if (m_textTracks) {
for (unsigned i = 0; i < m_textTracks->length(); ++i) { for (unsigned i = 0; i < m_textTracks->length(); ++i) {
if (m_textTracks->item(i)->readinessState() == TextTrack::FailedToLoad) if (m_textTracks->item(i)->readinessState() == TextTrack::FailedToLoad)
continue; continue;
...@@ -3275,13 +3249,11 @@ void HTMLMediaElement::setClosedCaptionsVisible(bool closedCaptionVisible) ...@@ -3275,13 +3249,11 @@ void HTMLMediaElement::setClosedCaptionsVisible(bool closedCaptionVisible)
m_closedCaptionsVisible = closedCaptionVisible; m_closedCaptionsVisible = closedCaptionVisible;
if (RuntimeEnabledFeatures::videoTrackEnabled()) { m_processingPreferenceChange = true;
m_processingPreferenceChange = true; markCaptionAndSubtitleTracksAsUnconfigured();
markCaptionAndSubtitleTracksAsUnconfigured(); m_processingPreferenceChange = false;
m_processingPreferenceChange = false;
updateTextTrackDisplay(); updateTextTrackDisplay();
}
} }
unsigned HTMLMediaElement::webkitAudioDecodedByteCount() const unsigned HTMLMediaElement::webkitAudioDecodedByteCount() const
...@@ -3401,10 +3373,8 @@ void HTMLMediaElement::configureTextTrackDisplay(VisibilityChangeAssumption assu ...@@ -3401,10 +3373,8 @@ void HTMLMediaElement::configureTextTrackDisplay(VisibilityChangeAssumption assu
mediaControls()->changedClosedCaptionsVisibility(); mediaControls()->changedClosedCaptionsVisibility();
if (RuntimeEnabledFeatures::videoTrackEnabled()) { updateActiveTextTrackCues(currentTime());
updateActiveTextTrackCues(currentTime()); updateTextTrackDisplay();
updateTextTrackDisplay();
}
} }
void HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured() void HTMLMediaElement::markCaptionAndSubtitleTracksAsUnconfigured()
......
...@@ -82,8 +82,8 @@ ...@@ -82,8 +82,8 @@
[Reflect=muted] attribute boolean defaultMuted; [Reflect=muted] attribute boolean defaultMuted;
// tracks // tracks
[RuntimeEnabled=VideoTrack] readonly attribute TextTrackList textTracks; readonly attribute TextTrackList textTracks;
[RuntimeEnabled=VideoTrack, RaisesException] TextTrack addTextTrack(DOMString kind, optional DOMString label, optional DOMString language); [RaisesException] TextTrack addTextTrack(DOMString kind, optional DOMString label, optional DOMString language);
// WebKit extensions // WebKit extensions
......
...@@ -128,7 +128,7 @@ th interfaceName=HTMLTableCellElement ...@@ -128,7 +128,7 @@ th interfaceName=HTMLTableCellElement
thead interfaceName=HTMLTableSectionElement thead interfaceName=HTMLTableSectionElement
title title
tr interfaceName=HTMLTableRowElement tr interfaceName=HTMLTableRowElement
track runtimeEnabled=videoTrack track
tt interfaceName=HTMLElement tt interfaceName=HTMLElement
u interfaceName=HTMLElement u interfaceName=HTMLElement
ul interfaceName=HTMLUListElement ul interfaceName=HTMLUListElement
......
...@@ -23,9 +23,7 @@ ...@@ -23,9 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
[ interface HTMLTrackElement : HTMLElement {
RuntimeEnabled=VideoTrack
] interface HTMLTrackElement : HTMLElement {
attribute DOMString kind; attribute DOMString kind;
[Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src; [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
[Reflect] attribute DOMString srclang; [Reflect] attribute DOMString srclang;
......
...@@ -26,9 +26,7 @@ ...@@ -26,9 +26,7 @@
enum TextTrackMode { "disabled", "hidden", "showing" }; enum TextTrackMode { "disabled", "hidden", "showing" };
enum TextTrackKind { "subtitles", "captions", "descriptions", "chapters", "metadata" }; enum TextTrackKind { "subtitles", "captions", "descriptions", "chapters", "metadata" };
[ interface TextTrack : EventTarget {
RuntimeEnabled=VideoTrack
] interface TextTrack : EventTarget {
readonly attribute TextTrackKind kind; readonly attribute TextTrackKind kind;
readonly attribute DOMString label; readonly attribute DOMString label;
readonly attribute DOMString language; readonly attribute DOMString language;
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
[ [
Custom=ToV8, Custom=ToV8,
RuntimeEnabled=VideoTrack,
] interface TextTrackCue : EventTarget { ] interface TextTrackCue : EventTarget {
readonly attribute TextTrack track; readonly attribute TextTrack track;
......
...@@ -23,9 +23,7 @@ ...@@ -23,9 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
[ interface TextTrackCueList {
RuntimeEnabled=VideoTrack
] interface TextTrackCueList {
readonly attribute unsigned long length; readonly attribute unsigned long length;
getter TextTrackCue item(unsigned long index); getter TextTrackCue item(unsigned long index);
TextTrackCue getCueById(DOMString id); TextTrackCue getCueById(DOMString id);
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
[ [
SetWrapperReferenceFrom=owner, SetWrapperReferenceFrom=owner,
RuntimeEnabled=VideoTrack,
] interface TextTrackList : EventTarget { ] interface TextTrackList : EventTarget {
readonly attribute unsigned long length; readonly attribute unsigned long length;
getter TextTrack item(unsigned long index); getter TextTrack item(unsigned long index);
......
...@@ -24,9 +24,7 @@ ...@@ -24,9 +24,7 @@
*/ */
[ [
RuntimeEnabled=VideoTrack,
EventConstructor, EventConstructor,
] interface TrackEvent : Event { ] interface TrackEvent : Event {
[InitializedByEventConstructor, Custom=Getter] readonly attribute object track; [InitializedByEventConstructor, Custom=Getter] readonly attribute object track;
}; };
\ No newline at end of file
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
[ [
Constructor(double startTime, double endTime, DOMString text), Constructor(double startTime, double endTime, DOMString text),
ConstructorCallWith=Document, ConstructorCallWith=Document,
RuntimeEnabled=VideoTrack,
] interface VTTCue : TextTrackCue { ] interface VTTCue : TextTrackCue {
[RuntimeEnabled=WebVTTRegions] attribute DOMString regionId; [RuntimeEnabled=WebVTTRegions] attribute DOMString regionId;
[RaisesException=Setter] attribute DOMString vertical; [RaisesException=Setter] attribute DOMString vertical;
......
...@@ -125,13 +125,12 @@ Touch status=stable ...@@ -125,13 +125,12 @@ Touch status=stable
TouchIconLoading TouchIconLoading
UserSelectAll status=experimental UserSelectAll status=experimental
ScriptPromiseOnV8Promise ScriptPromiseOnV8Promise
VideoTrack depends_on=Media, status=stable
WebAnimationsSVG WebAnimationsSVG
WebAnimationsAPI status=experimental WebAnimationsAPI status=experimental
WebAudio condition=WEB_AUDIO, status=stable WebAudio condition=WEB_AUDIO, status=stable
WebGLDraftExtensions status=experimental WebGLDraftExtensions status=experimental
WebMIDI status=test WebMIDI status=test
WebKitMediaSource status=stable WebKitMediaSource status=stable
WebVTTRegions depends_on=VideoTrack, status=experimental WebVTTRegions depends_on=Media, status=experimental
WOFF2 status=stable WOFF2 status=stable
XSLT status=stable XSLT status=stable
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment