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

Commit 02702cc2 authored by Sherry Zhou's avatar Sherry Zhou Committed by Android (Google) Code Review
Browse files

Merge changes from topic "transit_clock_flag" into udc-qpr-dev

* changes:
  Add transit clock flag
  Add flag for transit clock in Flags.kt
parents 2e6eaf0a 35f76965
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@ open class ClockRegistry(
    val logBuffer: LogBuffer? = null,
    val keepAllLoaded: Boolean,
    subTag: String,
    var isTransitClockEnabled: Boolean = false,
) {
    private val TAG = "${ClockRegistry::class.simpleName} ($subTag)"
    interface ClockChangeListener {
@@ -204,6 +205,10 @@ open class ClockRegistry(
                var isClockListChanged = false
                for (clock in plugin.getClocks()) {
                    val id = clock.clockId
                    if (!isTransitClockEnabled && id == "DIGITAL_CLOCK_METRO") {
                        continue
                    }

                    val info =
                        availableClocks.concurrentGetOrPut(id, ClockInfo(clock, plugin, manager)) {
                            isClockListChanged = true
+3 −0
Original line number Diff line number Diff line
@@ -184,6 +184,9 @@ object CustomizationProviderContract {
        /** Flag denoting AI Wallpapers are enabled in wallpaper picker. */
        const val FLAG_NAME_WALLPAPER_PICKER_UI_FOR_AIWP = "wallpaper_picker_ui_for_aiwp"

        /** Flag denoting transit clock are enabled in wallpaper picker. */
        const val FLAG_NAME_TRANSIT_CLOCK = "lockscreen_custom_transit_clock"

        object Columns {
            /** String. Unique ID for the flag. */
            const val NAME = "name"
+2 −1
Original line number Diff line number Diff line
@@ -71,7 +71,8 @@ public abstract class ClockRegistryModule {
                context.getString(R.string.lockscreen_clock_id_fallback),
                logBuffer,
                /* keepAllLoaded = */ false,
                /* subTag = */ "System");
                /* subTag = */ "System",
                /* isTransitClockEnabled = */ featureFlags.isEnabled(Flags.TRANSIT_CLOCK));
        registry.registerListeners();
        return registry;
    }
+4 −0
Original line number Diff line number Diff line
@@ -264,6 +264,10 @@ object Flags {
    @JvmField
    val KEYGUARD_TALKBACK_FIX = releasedFlag(238, "keyguard_talkback_fix")

    // TODO(b/287268101): Tracking bug.
    @JvmField
    val TRANSIT_CLOCK = unreleasedFlag(239, "lockscreen_custom_transit_clock")

    // 300 - power menu
    // TODO(b/254512600): Tracking Bug
    @JvmField val POWER_MENU_LITE = releasedFlag(300, "power_menu_lite")
+43 −0
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import android.graphics.drawable.Drawable
import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.flags.FakeFeatureFlags
import com.android.systemui.flags.Flags.TRANSIT_CLOCK
import com.android.systemui.plugins.ClockController
import com.android.systemui.plugins.ClockId
import com.android.systemui.plugins.ClockMetadata
@@ -68,6 +70,7 @@ class ClockRegistryTest : SysuiTestCase() {
    private lateinit var fakeDefaultProvider: FakeClockPlugin
    private lateinit var pluginListener: PluginListener<ClockProviderPlugin>
    private lateinit var registry: ClockRegistry
    private val featureFlags = FakeFeatureFlags()

    companion object {
        private fun failFactory(clockId: ClockId): ClockController {
@@ -448,4 +451,44 @@ class ClockRegistryTest : SysuiTestCase() {
        val actual = ClockSettings.serialize(ClockSettings("ID", null))
        assertEquals(expected, actual)
    }

    @Test
    fun testTransitClockEnabled_hasTransitClock() {
        testTransitClockFlag(true)
    }

    @Test
    fun testTransitClockDisabled_noTransitClock() {
        testTransitClockFlag(false)
    }

    private fun testTransitClockFlag(flag: Boolean) {
        featureFlags.set(TRANSIT_CLOCK, flag)
        registry.isTransitClockEnabled = featureFlags.isEnabled(TRANSIT_CLOCK)
        val mockPluginLifecycle = mock<PluginLifecycleManager<ClockProviderPlugin>>()
        val plugin = FakeClockPlugin()
                .addClock("clock_1", "clock 1")
                .addClock("DIGITAL_CLOCK_METRO", "metro clock")
        pluginListener.onPluginLoaded(plugin, mockContext, mockPluginLifecycle)

        val list = registry.getClocks()
        if (flag) {
            assertEquals(
                    setOf(
                            ClockMetadata(DEFAULT_CLOCK_ID, DEFAULT_CLOCK_NAME),
                            ClockMetadata("clock_1", "clock 1"),
                            ClockMetadata("DIGITAL_CLOCK_METRO", "metro clock")
                    ),
                    list.toSet()
            )
        } else {
            assertEquals(
                    setOf(
                            ClockMetadata(DEFAULT_CLOCK_ID, DEFAULT_CLOCK_NAME),
                            ClockMetadata("clock_1", "clock 1")
                    ),
                    list.toSet()
            )
        }
    }
}