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 @@ ...@@ -81,6 +81,7 @@
#include "third_party/blink/renderer/core/html/track/cue_timeline.h" #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/html_track_element.h"
#include "third_party/blink/renderer/core/html/track/inband_text_track.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_container.h"
#include "third_party/blink/renderer/core/html/track/text_track_list.h" #include "third_party/blink/renderer/core/html/track/text_track_list.h"
#include "third_party/blink/renderer/core/html/track/video_track.h" #include "third_party/blink/renderer/core/html/track/video_track.h"
...@@ -1459,7 +1460,7 @@ void HTMLMediaElement::TextTrackReadyStateChanged(TextTrack* track) { ...@@ -1459,7 +1460,7 @@ void HTMLMediaElement::TextTrackReadyStateChanged(TextTrack* track) {
void HTMLMediaElement::TextTrackModeChanged(TextTrack* track) { void HTMLMediaElement::TextTrackModeChanged(TextTrack* track) {
// Mark this track as "configured" so configureTextTracks won't change the // Mark this track as "configured" so configureTextTracks won't change the
// mode again. // mode again.
if (track->TrackType() == TextTrack::kTrackElement) if (IsA<LoadableTextTrack>(track))
track->SetHasBeenConfigured(true); track->SetHasBeenConfigured(true);
if (track->IsRendered()) { if (track->IsRendered()) {
......
...@@ -324,9 +324,8 @@ void CueTimeline::UpdateActiveCues(double movie_time) { ...@@ -324,9 +324,8 @@ void CueTimeline::UpdateActiveCues(double movie_time) {
// ... if the text track has a corresponding track element, to then fire a // ... if the text track has a corresponding track element, to then fire a
// simple event named cuechange at the track element as well. // simple event named cuechange at the track element as well.
if (track->TrackType() == TextTrack::kTrackElement) { if (auto* loadable_text_track = DynamicTo<LoadableTextTrack>(track.Get())) {
HTMLTrackElement* track_element = HTMLTrackElement* track_element = loadable_text_track->TrackElement();
ToLoadableTextTrack(track.Get())->TrackElement();
DCHECK(track_element); DCHECK(track_element);
media_element.ScheduleEvent( media_element.ScheduleEvent(
CreateEventWithTarget(event_type_names::kCuechange, track_element)); CreateEventWithTarget(event_type_names::kCuechange, track_element));
......
...@@ -55,11 +55,12 @@ class LoadableTextTrack final : public TextTrack { ...@@ -55,11 +55,12 @@ class LoadableTextTrack final : public TextTrack {
Member<HTMLTrackElement> track_element_; Member<HTMLTrackElement> track_element_;
}; };
DEFINE_TYPE_CASTS(LoadableTextTrack, template <>
TextTrack, struct DowncastTraits<LoadableTextTrack> {
track, static bool AllowFrom(const TextTrack& track) {
track->TrackType() == TextTrack::kTrackElement, return track.TrackType() == TextTrack::kTrackElement;
track.TrackType() == TextTrack::kTrackElement); }
};
} // namespace blink } // namespace blink
......
...@@ -44,8 +44,8 @@ unsigned TextTrackList::length() const { ...@@ -44,8 +44,8 @@ unsigned TextTrackList::length() const {
} }
int TextTrackList::GetTrackIndex(TextTrack* text_track) { int TextTrackList::GetTrackIndex(TextTrack* text_track) {
if (text_track->TrackType() == TextTrack::kTrackElement) if (auto* loadable_text_track = DynamicTo<LoadableTextTrack>(text_track))
return ToLoadableTextTrack(text_track)->TrackElementIndex(); return loadable_text_track->TrackElementIndex();
if (text_track->TrackType() == TextTrack::kAddTrack) if (text_track->TrackType() == TextTrack::kAddTrack)
return element_tracks_.size() + add_track_tracks_.Find(text_track); return element_tracks_.size() + add_track_tracks_.Find(text_track);
...@@ -141,7 +141,7 @@ TextTrack* TextTrackList::getTrackById(const AtomicString& id) { ...@@ -141,7 +141,7 @@ TextTrack* TextTrackList::getTrackById(const AtomicString& id) {
void TextTrackList::InvalidateTrackIndexesAfterTrack(TextTrack* track) { void TextTrackList::InvalidateTrackIndexesAfterTrack(TextTrack* track) {
HeapVector<Member<TextTrack>>* tracks = nullptr; HeapVector<Member<TextTrack>>* tracks = nullptr;
if (track->TrackType() == TextTrack::kTrackElement) { if (IsA<LoadableTextTrack>(track)) {
tracks = &element_tracks_; tracks = &element_tracks_;
for (const auto& add_track : add_track_tracks_) for (const auto& add_track : add_track_tracks_)
add_track->InvalidateTrackIndex(); add_track->InvalidateTrackIndex();
...@@ -168,9 +168,9 @@ void TextTrackList::InvalidateTrackIndexesAfterTrack(TextTrack* track) { ...@@ -168,9 +168,9 @@ void TextTrackList::InvalidateTrackIndexesAfterTrack(TextTrack* track) {
void TextTrackList::Append(TextTrack* track) { void TextTrackList::Append(TextTrack* track) {
if (track->TrackType() == TextTrack::kAddTrack) { if (track->TrackType() == TextTrack::kAddTrack) {
add_track_tracks_.push_back(track); 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. // 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); element_tracks_.insert(index, track);
} else if (track->TrackType() == TextTrack::kInBand) { } else if (track->TrackType() == TextTrack::kInBand) {
inband_tracks_.push_back(track); inband_tracks_.push_back(track);
...@@ -189,7 +189,7 @@ void TextTrackList::Append(TextTrack* track) { ...@@ -189,7 +189,7 @@ void TextTrackList::Append(TextTrack* track) {
void TextTrackList::Remove(TextTrack* track) { void TextTrackList::Remove(TextTrack* track) {
HeapVector<Member<TextTrack>>* tracks = nullptr; HeapVector<Member<TextTrack>>* tracks = nullptr;
if (track->TrackType() == TextTrack::kTrackElement) { if (IsA<LoadableTextTrack>(track)) {
tracks = &element_tracks_; tracks = &element_tracks_;
} else if (track->TrackType() == TextTrack::kAddTrack) { } else if (track->TrackType() == TextTrack::kAddTrack) {
tracks = &add_track_tracks_; tracks = &add_track_tracks_;
...@@ -223,7 +223,7 @@ void TextTrackList::RemoveAllInbandTracks() { ...@@ -223,7 +223,7 @@ void TextTrackList::RemoveAllInbandTracks() {
bool TextTrackList::Contains(TextTrack* track) const { bool TextTrackList::Contains(TextTrack* track) const {
const HeapVector<Member<TextTrack>>* tracks = nullptr; const HeapVector<Member<TextTrack>>* tracks = nullptr;
if (track->TrackType() == TextTrack::kTrackElement) if (IsA<LoadableTextTrack>(track))
tracks = &element_tracks_; tracks = &element_tracks_;
else if (track->TrackType() == TextTrack::kAddTrack) else if (track->TrackType() == TextTrack::kAddTrack)
tracks = &add_track_tracks_; 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