diff options
2 files changed, 34 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaCarouselController.kt index 0aa434976ce7..1e9a466ccdce 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaCarouselController.kt +++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaCarouselController.kt @@ -67,6 +67,7 @@ import com.android.systemui.util.concurrency.DelayableExecutor import com.android.systemui.util.time.SystemClock import com.android.systemui.util.traceSection import java.io.PrintWriter +import java.util.Locale import java.util.TreeMap import javax.inject.Inject import javax.inject.Provider @@ -166,6 +167,8 @@ constructor( } } + private var carouselLocale: Locale? = null + /** Whether the media card currently has the "expanded" layout */ @VisibleForTesting var currentlyExpanded = true @@ -218,6 +221,15 @@ constructor( updatePlayers(recreateMedia = false) inflateSettingsButton() } + + override fun onLocaleListChanged() { + // Update players only if system primary language changes. + if (carouselLocale != context.resources.configuration.locales.get(0)) { + carouselLocale = context.resources.configuration.locales.get(0) + updatePlayers(recreateMedia = true) + inflateSettingsButton() + } + } } private val keyguardUpdateMonitorCallback = @@ -262,6 +274,7 @@ constructor( this::logSmartspaceImpression, logger ) + carouselLocale = context.resources.configuration.locales.get(0) isRtl = context.resources.configuration.layoutDirection == View.LAYOUT_DIRECTION_RTL inflateSettingsButton() mediaContent = mediaCarousel.requireViewById(R.id.media_carousel) diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaCarouselControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaCarouselControllerTest.kt index 745f094220f2..07f7c158fc4d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaCarouselControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaCarouselControllerTest.kt @@ -19,6 +19,7 @@ package com.android.systemui.media.controls.ui import android.app.PendingIntent import android.content.res.ColorStateList import android.content.res.Configuration +import android.os.LocaleList import android.testing.AndroidTestingRunner import android.testing.TestableLooper import android.util.MathUtils.abs @@ -56,6 +57,7 @@ import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.capture import com.android.systemui.util.mockito.eq import com.android.systemui.util.time.FakeSystemClock +import java.util.Locale import javax.inject.Provider import junit.framework.Assert.assertEquals import junit.framework.Assert.assertFalse @@ -71,6 +73,7 @@ import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito.floatThat import org.mockito.Mockito.mock +import org.mockito.Mockito.never import org.mockito.Mockito.reset import org.mockito.Mockito.times import org.mockito.Mockito.verify @@ -123,6 +126,7 @@ class MediaCarouselControllerTest : SysuiTestCase() { @Before fun setup() { MockitoAnnotations.initMocks(this) + context.resources.configuration.locales = LocaleList(Locale.US, Locale.UK) transitionRepository = FakeKeyguardTransitionRepository() mediaCarouselController = MediaCarouselController( @@ -713,6 +717,23 @@ class MediaCarouselControllerTest : SysuiTestCase() { } @Test + fun testOnLocaleListChanged_playersAreAddedBack() { + context.resources.configuration.locales = LocaleList(Locale.US, Locale.UK, Locale.CANADA) + testConfigurationChange(configListener.value::onLocaleListChanged) + + verify(pageIndicator, never()).tintList = + ColorStateList.valueOf(context.getColor(R.color.media_paging_indicator)) + + context.resources.configuration.locales = LocaleList(Locale.UK, Locale.US, Locale.CANADA) + testConfigurationChange(configListener.value::onLocaleListChanged) + + verify(pageIndicator).tintList = + ColorStateList.valueOf(context.getColor(R.color.media_paging_indicator)) + // When recreateMedia is set to true, page indicator is updated on removal and addition. + verify(pageIndicator, times(4)).setNumPages(any()) + } + + @Test fun testRecommendation_persistentEnabled_newSmartspaceLoaded_updatesSort() { testRecommendation_persistentEnabled_inactiveSmartspaceDataLoaded_isAdded() |