diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTrackNameProvider.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTrackNameProvider.java index f765902f842..6683b48bd72 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTrackNameProvider.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTrackNameProvider.java @@ -62,7 +62,13 @@ public String getTrackName(Format format) { } 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) { diff --git a/library/ui/src/main/res/values/strings.xml b/library/ui/src/main/res/values/strings.xml index 6049b017674..3754f50abd8 100644 --- a/library/ui/src/main/res/values/strings.xml +++ b/library/ui/src/main/res/values/strings.xml @@ -100,6 +100,8 @@ Auto Unknown + + Unknown (%1$s) %1$d × %2$d diff --git a/library/ui/src/test/java/com/google/android/exoplayer2/ui/DefaultTrackNameProviderTest.java b/library/ui/src/test/java/com/google/android/exoplayer2/ui/DefaultTrackNameProviderTest.java index a5ea81f2597..8c87406b290 100644 --- a/library/ui/src/test/java/com/google/android/exoplayer2/ui/DefaultTrackNameProviderTest.java +++ b/library/ui/src/test/java/com/google/android/exoplayer2/ui/DefaultTrackNameProviderTest.java @@ -29,13 +29,46 @@ 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"); + } }