Vector<RefPtr<AudioTrack>> CaptionUserPreferences::sortedTrackListForMenu(AudioTrackList* trackList) { ASSERT(trackList); Vector<RefPtr<AudioTrack>> tracksForMenu; for (unsigned i = 0, length = trackList->length(); i < length; ++i) { AudioTrack* track = trackList->item(i); tracksForMenu.append(track); } std::sort(tracksForMenu.begin(), tracksForMenu.end(), [](const RefPtr<AudioTrack>& a, const RefPtr<AudioTrack>& b) { return codePointCompare(trackDisplayName(a.get()), trackDisplayName(b.get())) < 0; }); return tracksForMenu; }
Vector<RefPtr<TextTrack>> CaptionUserPreferences::sortedTrackListForMenu(TextTrackList* trackList) { ASSERT(trackList); Vector<RefPtr<TextTrack>> tracksForMenu; for (unsigned i = 0, length = trackList->length(); i < length; ++i) { TextTrack* track = trackList->item(i); const AtomicString& kind = track->kind(); if (kind == TextTrack::captionsKeyword() || kind == TextTrack::descriptionsKeyword() || kind == TextTrack::subtitlesKeyword()) tracksForMenu.append(track); } std::sort(tracksForMenu.begin(), tracksForMenu.end(), [](const RefPtr<TextTrack>& a, const RefPtr<TextTrack>& b) { return codePointCompare(trackDisplayName(a.get()), trackDisplayName(b.get())) < 0; }); tracksForMenu.insert(0, TextTrack::captionMenuOffItem()); tracksForMenu.insert(1, TextTrack::captionMenuAutomaticItem()); return tracksForMenu; }
static bool textTrackCompare(const RefPtr<TextTrack>& a, const RefPtr<TextTrack>& b) { return codePointCompare(trackDisplayName(a.get()), trackDisplayName(b.get())) < 0; }
String CaptionUserPreferences::displayNameForTrack(TextTrack* track) const { return trackDisplayName(track); }