Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b48a7cbc authored by Michael Mikhail's avatar Michael Mikhail
Browse files

Recreate media when system language changes

It updates players only if language changes. This change has the same
effect of changing density or font scale on media carousel.

Fixes: 278083017
Test: atest MediaCarouselControllerTest
Change-Id: Ib9439036773801751ae7d122fa7adc91d8029343
parent e155d094
Loading
Loading
Loading
Loading
+13 −0
Original line number Original line Diff line number Diff line
@@ -67,6 +67,7 @@ import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.util.time.SystemClock
import com.android.systemui.util.time.SystemClock
import com.android.systemui.util.traceSection
import com.android.systemui.util.traceSection
import java.io.PrintWriter
import java.io.PrintWriter
import java.util.Locale
import java.util.TreeMap
import java.util.TreeMap
import javax.inject.Inject
import javax.inject.Inject
import javax.inject.Provider
import javax.inject.Provider
@@ -166,6 +167,8 @@ constructor(
            }
            }
        }
        }


    private var carouselLocale: Locale? = null

    /** Whether the media card currently has the "expanded" layout */
    /** Whether the media card currently has the "expanded" layout */
    @VisibleForTesting
    @VisibleForTesting
    var currentlyExpanded = true
    var currentlyExpanded = true
@@ -218,6 +221,15 @@ constructor(
                updatePlayers(recreateMedia = false)
                updatePlayers(recreateMedia = false)
                inflateSettingsButton()
                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 =
    private val keyguardUpdateMonitorCallback =
@@ -262,6 +274,7 @@ constructor(
                this::logSmartspaceImpression,
                this::logSmartspaceImpression,
                logger
                logger
            )
            )
        carouselLocale = context.resources.configuration.locales.get(0)
        isRtl = context.resources.configuration.layoutDirection == View.LAYOUT_DIRECTION_RTL
        isRtl = context.resources.configuration.layoutDirection == View.LAYOUT_DIRECTION_RTL
        inflateSettingsButton()
        inflateSettingsButton()
        mediaContent = mediaCarousel.requireViewById(R.id.media_carousel)
        mediaContent = mediaCarousel.requireViewById(R.id.media_carousel)
+21 −0
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.media.controls.ui
import android.app.PendingIntent
import android.app.PendingIntent
import android.content.res.ColorStateList
import android.content.res.ColorStateList
import android.content.res.Configuration
import android.content.res.Configuration
import android.os.LocaleList
import android.testing.AndroidTestingRunner
import android.testing.AndroidTestingRunner
import android.testing.TestableLooper
import android.testing.TestableLooper
import android.util.MathUtils.abs
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.capture
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.time.FakeSystemClock
import com.android.systemui.util.time.FakeSystemClock
import java.util.Locale
import javax.inject.Provider
import javax.inject.Provider
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertFalse
import junit.framework.Assert.assertFalse
@@ -71,6 +73,7 @@ import org.mockito.Captor
import org.mockito.Mock
import org.mockito.Mock
import org.mockito.Mockito.floatThat
import org.mockito.Mockito.floatThat
import org.mockito.Mockito.mock
import org.mockito.Mockito.mock
import org.mockito.Mockito.never
import org.mockito.Mockito.reset
import org.mockito.Mockito.reset
import org.mockito.Mockito.times
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.Mockito.verify
@@ -123,6 +126,7 @@ class MediaCarouselControllerTest : SysuiTestCase() {
    @Before
    @Before
    fun setup() {
    fun setup() {
        MockitoAnnotations.initMocks(this)
        MockitoAnnotations.initMocks(this)
        context.resources.configuration.locales = LocaleList(Locale.US, Locale.UK)
        transitionRepository = FakeKeyguardTransitionRepository()
        transitionRepository = FakeKeyguardTransitionRepository()
        mediaCarouselController =
        mediaCarouselController =
            MediaCarouselController(
            MediaCarouselController(
@@ -712,6 +716,23 @@ class MediaCarouselControllerTest : SysuiTestCase() {
        verify(pageIndicator, times(2)).setNumPages(any())
        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
    @Test
    fun testRecommendation_persistentEnabled_newSmartspaceLoaded_updatesSort() {
    fun testRecommendation_persistentEnabled_newSmartspaceLoaded_updatesSort() {
        testRecommendation_persistentEnabled_inactiveSmartspaceDataLoaded_isAdded()
        testRecommendation_persistentEnabled_inactiveSmartspaceDataLoaded_isAdded()