Merge "Recreate media when system language changes" into udc-dev

This commit is contained in:
Michael Mikhail
2023-04-25 17:31:03 +00:00
committed by Android (Google) Code Review
2 changed files with 34 additions and 0 deletions

View File

@@ -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)

View File

@@ -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(
@@ -712,6 +716,23 @@ class MediaCarouselControllerTest : SysuiTestCase() {
verify(pageIndicator, times(2)).setNumPages(any())
}
@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()