Rollback of 912c47ff6f
*** Original commit ***
Rollback of 8ed6c9fcf5
*** Original commit ***
Fix capitalization of language in track selector
Issue: #9452
***
***
PiperOrigin-RevId: 400942287
This commit is contained in:
parent
ac881be2fc
commit
80d365163d
@ -39,6 +39,8 @@
|
||||
`Player.addListener`.
|
||||
* Fix initial timestamp display in `PlayerControlView`
|
||||
([#9524](https://github.com/google/ExoPlayer/issues/9254)).
|
||||
* Fix capitalization of languages in the track selector
|
||||
([#9452](https://github.com/google/ExoPlayer/issues/9452)).
|
||||
* Extractors:
|
||||
* MP4: Correctly handle HEVC tracks with pixel aspect ratios other than 1.
|
||||
* TS: Correctly handle HEVC tracks with pixel aspect ratios other than 1.
|
||||
|
@ -2243,6 +2243,11 @@ public final class Util {
|
||||
return systemLocales;
|
||||
}
|
||||
|
||||
/** Returns the default {@link Locale.Category#DISPLAY DISPLAY} {@link Locale}. */
|
||||
public static Locale getDefaultDisplayLocale() {
|
||||
return Util.SDK_INT >= 24 ? Locale.getDefault(Locale.Category.DISPLAY) : Locale.getDefault();
|
||||
}
|
||||
|
||||
/**
|
||||
* Uncompresses the data in {@code input}.
|
||||
*
|
||||
|
@ -17,6 +17,7 @@ package com.google.android.exoplayer2.ui;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.text.TextUtils;
|
||||
import androidx.annotation.Nullable;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.Format;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
@ -100,12 +101,26 @@ public class DefaultTrackNameProvider implements TrackNameProvider {
|
||||
}
|
||||
|
||||
private String buildLanguageString(Format format) {
|
||||
String language = format.language;
|
||||
@Nullable String language = format.language;
|
||||
if (TextUtils.isEmpty(language) || C.LANGUAGE_UNDETERMINED.equals(language)) {
|
||||
return "";
|
||||
}
|
||||
Locale locale = Util.SDK_INT >= 21 ? Locale.forLanguageTag(language) : new Locale(language);
|
||||
return locale.getDisplayName();
|
||||
Locale languageLocale =
|
||||
Util.SDK_INT >= 21 ? Locale.forLanguageTag(language) : new Locale(language);
|
||||
Locale displayLocale = Util.getDefaultDisplayLocale();
|
||||
String languageName = languageLocale.getDisplayName(displayLocale);
|
||||
if (TextUtils.isEmpty(languageName)) {
|
||||
return "";
|
||||
}
|
||||
try {
|
||||
// Capitalize the first letter. See: https://github.com/google/ExoPlayer/issues/9452.
|
||||
int firstCodePointLength = languageName.offsetByCodePoints(0, 1);
|
||||
return languageName.substring(0, firstCodePointLength).toUpperCase(displayLocale)
|
||||
+ languageName.substring(firstCodePointLength);
|
||||
} catch (IndexOutOfBoundsException e) {
|
||||
// Should never happen, but return the unmodified language name if it does.
|
||||
return languageName;
|
||||
}
|
||||
}
|
||||
|
||||
private String buildRoleString(Format format) {
|
||||
|
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright 2021 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.google.android.exoplayer2.ui;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import com.google.android.exoplayer2.Format;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
/** Tests for the {@link DefaultMediaDescriptionAdapter}. */
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class DefaultTrackNameProviderTest {
|
||||
|
||||
@Test
|
||||
public void getTrackName_handlesInvalidLanguage() {
|
||||
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));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user