Commit 0b063634 authored by Abhijeet Kandalkar's avatar Abhijeet Kandalkar Committed by Commit Bot

Use new downcast helper for blink::LoadableTextTrack

This CL has two goals,
  1. Use To<LoadableTextTrack> and DynamicTo<LoadableTextTrack> as new
     downcast helper
  2. Use IsA<LoadableTextTrack>(element) in place of
     IsLoadableTextTrack(element)

Bug: 891908
Change-Id: I1b96f72a9904c8a64813f14d085f42e16c2e8628
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2018352Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Abhijeet Kandalkar <abhijeet@igalia.com>
Cr-Commit-Position: refs/heads/master@{#746234}
parent ac74713f
......@@ -81,6 +81,7 @@
#include "third_party/blink/renderer/core/html/track/cue_timeline.h"
#include "third_party/blink/renderer/core/html/track/html_track_element.h"
#include "third_party/blink/renderer/core/html/track/inband_text_track.h"
#include "third_party/blink/renderer/core/html/track/loadable_text_track.h"
#include "third_party/blink/renderer/core/html/track/text_track_container.h"
#include "third_party/blink/renderer/core/html/track/text_track_list.h"
#include "third_party/blink/renderer/core/html/track/video_track.h"
......@@ -1459,7 +1460,7 @@ void HTMLMediaElement::TextTrackReadyStateChanged(TextTrack* track) {
void HTMLMediaElement::TextTrackModeChanged(TextTrack* track) {
// Mark this track as "configured" so configureTextTracks won't change the
// mode again.
if (track->TrackType() == TextTrack::kTrackElement)
if (IsA<LoadableTextTrack>(track))
track->SetHasBeenConfigured(true);
if (track->IsRendered()) {
......
......@@ -324,9 +324,8 @@ void CueTimeline::UpdateActiveCues(double movie_time) {
// ... if the text track has a corresponding track element, to then fire a
// simple event named cuechange at the track element as well.
if (track->TrackType() == TextTrack::kTrackElement) {
HTMLTrackElement* track_element =
ToLoadableTextTrack(track.Get())->TrackElement();
if (auto* loadable_text_track = DynamicTo<LoadableTextTrack>(track.Get())) {
HTMLTrackElement* track_element = loadable_text_track->TrackElement();
DCHECK(track_element);
media_element.ScheduleEvent(
CreateEventWithTarget(event_type_names::kCuechange, track_element));
......
......@@ -55,11 +55,12 @@ class LoadableTextTrack final : public TextTrack {
Member<HTMLTrackElement> track_element_;
};
DEFINE_TYPE_CASTS(LoadableTextTrack,
TextTrack,
track,
track->TrackType() == TextTrack::kTrackElement,
track.TrackType() == TextTrack::kTrackElement);
template <>
struct DowncastTraits<LoadableTextTrack> {
static bool AllowFrom(const TextTrack& track) {
return track.TrackType() == TextTrack::kTrackElement;
}
};
} // namespace blink
......
......@@ -44,8 +44,8 @@ unsigned TextTrackList::length() const {
}
int TextTrackList::GetTrackIndex(TextTrack* text_track) {
if (text_track->TrackType() == TextTrack::kTrackElement)
return ToLoadableTextTrack(text_track)->TrackElementIndex();
if (auto* loadable_text_track = DynamicTo<LoadableTextTrack>(text_track))
return loadable_text_track->TrackElementIndex();
if (text_track->TrackType() == TextTrack::kAddTrack)
return element_tracks_.size() + add_track_tracks_.Find(text_track);
......@@ -141,7 +141,7 @@ TextTrack* TextTrackList::getTrackById(const AtomicString& id) {
void TextTrackList::InvalidateTrackIndexesAfterTrack(TextTrack* track) {
HeapVector<Member<TextTrack>>* tracks = nullptr;
if (track->TrackType() == TextTrack::kTrackElement) {
if (IsA<LoadableTextTrack>(track)) {
tracks = &element_tracks_;
for (const auto& add_track : add_track_tracks_)
add_track->InvalidateTrackIndex();
......@@ -168,9 +168,9 @@ void TextTrackList::InvalidateTrackIndexesAfterTrack(TextTrack* track) {
void TextTrackList::Append(TextTrack* track) {
if (track->TrackType() == TextTrack::kAddTrack) {
add_track_tracks_.push_back(track);
} else if (track->TrackType() == TextTrack::kTrackElement) {
} else if (auto* loadable_text_track = DynamicTo<LoadableTextTrack>(track)) {
// Insert tracks added for <track> element in tree order.
wtf_size_t index = ToLoadableTextTrack(track)->TrackElementIndex();
wtf_size_t index = loadable_text_track->TrackElementIndex();
element_tracks_.insert(index, track);
} else if (track->TrackType() == TextTrack::kInBand) {
inband_tracks_.push_back(track);
......@@ -189,7 +189,7 @@ void TextTrackList::Append(TextTrack* track) {
void TextTrackList::Remove(TextTrack* track) {
HeapVector<Member<TextTrack>>* tracks = nullptr;
if (track->TrackType() == TextTrack::kTrackElement) {
if (IsA<LoadableTextTrack>(track)) {
tracks = &element_tracks_;
} else if (track->TrackType() == TextTrack::kAddTrack) {
tracks = &add_track_tracks_;
......@@ -223,7 +223,7 @@ void TextTrackList::RemoveAllInbandTracks() {
bool TextTrackList::Contains(TextTrack* track) const {
const HeapVector<Member<TextTrack>>* tracks = nullptr;
if (track->TrackType() == TextTrack::kTrackElement)
if (IsA<LoadableTextTrack>(track))
tracks = &element_tracks_;
else if (track->TrackType() == TextTrack::kAddTrack)
tracks = &add_track_tracks_;
......
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