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

Commit f845c4f7 authored by Hawkwood Glazier's avatar Hawkwood Glazier Committed by Android (Google) Code Review
Browse files

Merge "Update ClockRegistry to use injection pattern for assertions" into main

parents fed62d90 74414a5b
Loading
Loading
Loading
Loading
+8 −17
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ import com.android.systemui.plugins.clocks.ClockMetadata
import com.android.systemui.plugins.clocks.ClockProvider
import com.android.systemui.plugins.clocks.ClockProviderPlugin
import com.android.systemui.plugins.clocks.ClockSettings
import com.android.systemui.util.Assert
import com.android.systemui.util.ThreadAssert
import java.io.PrintWriter
import java.util.concurrent.ConcurrentHashMap
import java.util.concurrent.atomic.AtomicBoolean
@@ -89,6 +89,7 @@ open class ClockRegistry(
    val keepAllLoaded: Boolean,
    subTag: String,
    var isTransitClockEnabled: Boolean = false,
    val assert: ThreadAssert = ThreadAssert(),
) {
    private val TAG = "${ClockRegistry::class.simpleName} ($subTag)"
    private val logger: Logger =
@@ -286,7 +287,7 @@ open class ClockRegistry(

    @OpenForTesting
    open fun querySettings() {
        assertNotMainThread()
        assert.isNotMainThread()
        val result =
            try {
                val json =
@@ -313,7 +314,7 @@ open class ClockRegistry(

    @OpenForTesting
    open fun applySettings(value: ClockSettings?) {
        assertNotMainThread()
        assert.isNotMainThread()

        try {
            value?.metadata?.put(KEY_TIMESTAMP, System.currentTimeMillis())
@@ -339,16 +340,6 @@ open class ClockRegistry(
        settings = value
    }

    @OpenForTesting
    protected open fun assertMainThread() {
        Assert.isMainThread()
    }

    @OpenForTesting
    protected open fun assertNotMainThread() {
        Assert.isNotMainThread()
    }

    private var isClockChanged = AtomicBoolean(false)
    private fun triggerOnCurrentClockChanged() {
        val shouldSchedule = isClockChanged.compareAndSet(false, true)
@@ -357,7 +348,7 @@ open class ClockRegistry(
        }

        scope.launch(mainDispatcher) {
            assertMainThread()
            assert.isMainThread()
            isClockChanged.set(false)
            clockChangeListeners.forEach { it.onCurrentClockChanged() }
        }
@@ -371,7 +362,7 @@ open class ClockRegistry(
        }

        scope.launch(mainDispatcher) {
            assertMainThread()
            assert.isMainThread()
            isClockListChanged.set(false)
            clockChangeListeners.forEach { it.onAvailableClocksChanged() }
        }
@@ -585,7 +576,7 @@ open class ClockRegistry(
     * Calling from main thread to make sure the access is thread safe.
     */
    fun registerClockChangeListener(listener: ClockChangeListener) {
        assertMainThread()
        assert.isMainThread()
        clockChangeListeners.add(listener)
    }

@@ -595,7 +586,7 @@ open class ClockRegistry(
     * Calling from main thread to make sure the access is thread safe.
     */
    fun unregisterClockChangeListener(listener: ClockChangeListener) {
        assertMainThread()
        assert.isMainThread()
        clockChangeListeners.remove(listener)
    }

+3 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import com.android.systemui.plugins.clocks.ClockMessageBuffers;
import com.android.systemui.res.R;
import com.android.systemui.shared.clocks.ClockRegistry;
import com.android.systemui.shared.clocks.DefaultClockProvider;
import com.android.systemui.util.ThreadAssert;

import dagger.Module;
import dagger.Provides;
@@ -74,7 +75,8 @@ public abstract class ClockRegistryModule {
                clockBuffers,
                /* keepAllLoaded = */ false,
                /* subTag = */ "System",
                /* isTransitClockEnabled = */ featureFlags.isEnabled(Flags.TRANSIT_CLOCK));
                /* isTransitClockEnabled = */ featureFlags.isEnabled(Flags.TRANSIT_CLOCK),
                new ThreadAssert());
        registry.registerListeners();
        return registry;
    }
+3 −3
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import com.android.systemui.plugins.PluginListener
import com.android.systemui.plugins.PluginManager
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.eq
import com.android.systemui.util.ThreadAssert
import java.util.function.BiConsumer
import junit.framework.Assert.assertEquals
import junit.framework.Assert.fail
@@ -69,6 +70,7 @@ class ClockRegistryTest : SysuiTestCase() {
    @Mock private lateinit var mockDefaultClock: ClockController
    @Mock private lateinit var mockThumbnail: Drawable
    @Mock private lateinit var mockContentResolver: ContentResolver
    @Mock private lateinit var mockThreadAssert: ThreadAssert
    private lateinit var fakeDefaultProvider: FakeClockPlugin
    private lateinit var pluginListener: PluginListener<ClockProviderPlugin>
    private lateinit var registry: ClockRegistry
@@ -163,14 +165,12 @@ class ClockRegistryTest : SysuiTestCase() {
            defaultClockProvider = fakeDefaultProvider,
            keepAllLoaded = false,
            subTag = "Test",
            assert = mockThreadAssert,
        ) {
            override fun querySettings() { }
            override fun applySettings(value: ClockSettings?) {
                settings = value
            }
            // Unit Test does not validate threading
            override fun assertMainThread() {}
            override fun assertNotMainThread() {}
        }
        registry.registerListeners()