Fallback to including track language name if display name is not found

Issue: androidx/media#988
PiperOrigin-RevId: 606193299
This commit is contained in:
michaelkatz 2024-02-12 03:04:32 -08:00 committed by Copybara-Service
parent adc23e8e8b
commit 0b0c419c73
4 changed files with 46 additions and 2 deletions

View File

@ -22,6 +22,9 @@
* IMA extension:
* Session:
* UI:
* Fallback to include audio track language name if `Locale` cannot
identify a display name
([#988](https://github.com/androidx/media/issues/988)).
* Downloads:
* OkHttp Extension:
* Cronet Extension:

View File

@ -56,7 +56,13 @@ public class DefaultTrackNameProvider implements TrackNameProvider {
} else {
trackName = buildLanguageOrLabelString(format);
}
return trackName.length() == 0 ? resources.getString(R.string.exo_track_unknown) : trackName;
if (trackName.length() != 0) {
return trackName;
}
@Nullable String language = format.language;
return (language == null || language.trim().isEmpty())
? resources.getString(R.string.exo_track_unknown)
: resources.getString(R.string.exo_track_unknown_name, language);
}
private String buildResolutionString(Format format) {

View File

@ -100,6 +100,8 @@
<string name="exo_track_selection_auto">Auto</string>
<!-- Name of a media track about which nothing is known. Shown in a list view that allows the user to choose between multiple media tracks. [CHAR LIMIT=20] -->
<string name="exo_track_unknown">Unknown</string>
<!-- Name of a media track of which the language name could not be identified. Shown in a list view that allows the user to choose between multiple media tracks. [CHAR LIMIT=20] -->
<string name="exo_track_unknown_name">Unknown (<xliff:g id="name" example="Frengligian">%1$s</xliff:g>)</string>
<!-- Resolution of a video track. [CHAR LIMIT=20] -->
<string name="exo_track_resolution"><xliff:g id="width" example="1024">%1$d</xliff:g> × <xliff:g id="height" example="768">%2$d</xliff:g></string>
<!-- Describes an audio track with one channel. Shown in a list view that allows the user to choose between multiple audio tracks. [CHAR LIMIT=20] -->

View File

@ -29,13 +29,46 @@ import org.junit.runner.RunWith;
public class DefaultTrackNameProviderTest {
@Test
public void getTrackName_handlesInvalidLanguage() {
public void getTrackName_withInvalidLanguage_returnsUnknownWithLanguage() {
Resources resources = ApplicationProvider.getApplicationContext().getResources();
DefaultTrackNameProvider provider = new DefaultTrackNameProvider(resources);
Format format = new Format.Builder().setLanguage("```").build();
String name = provider.getTrackName(format);
assertThat(name).isEqualTo(resources.getString(R.string.exo_track_unknown_name, "```"));
}
@Test
public void getTrackName_withLanguageEmptyString_returnsUnknown() {
Resources resources = ApplicationProvider.getApplicationContext().getResources();
DefaultTrackNameProvider provider = new DefaultTrackNameProvider(resources);
Format format = new Format.Builder().setLanguage("").build();
String name = provider.getTrackName(format);
assertThat(name).isEqualTo(resources.getString(R.string.exo_track_unknown));
}
@Test
public void getTrackName_withLanguageSpacesNewLine_returnsUnknown() {
Resources resources = ApplicationProvider.getApplicationContext().getResources();
DefaultTrackNameProvider provider = new DefaultTrackNameProvider(resources);
Format format = new Format.Builder().setLanguage(" \n ").build();
String name = provider.getTrackName(format);
assertThat(name).isEqualTo(resources.getString(R.string.exo_track_unknown));
}
@Test
public void getTrackName_withLanguageEmptyStringAndLabel_returnsLabel() {
Resources resources = ApplicationProvider.getApplicationContext().getResources();
DefaultTrackNameProvider provider = new DefaultTrackNameProvider(resources);
Format format = new Format.Builder().setLanguage("").setLabel("Main").build();
String name = provider.getTrackName(format);
assertThat(name).isEqualTo("Main");
}
}