Loading src/com/android/customization/module/ThemePickerInjector.kt +7 −1 Original line number Diff line number Diff line Loading @@ -285,7 +285,13 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject override fun getClockRegistryProvider(context: Context): ClockRegistryProvider { return clockRegistryProvider ?: ClockRegistryProvider(context).also { clockRegistryProvider = it } ?: ClockRegistryProvider( context = context, coroutineScope = GlobalScope, mainDispatcher = Dispatchers.Main, backgroundDispatcher = Dispatchers.IO, ) .also { clockRegistryProvider = it } } override fun getClockPickerInteractor( Loading src/com/android/customization/picker/clock/data/repository/ClockRegistryProvider.kt +15 −9 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ package com.android.customization.picker.clock.data.repository import android.app.NotificationManager import android.content.ComponentName import android.content.Context import android.os.Handler import android.os.UserHandle import android.view.LayoutInflater import com.android.systemui.plugins.ClockProviderPlugin import com.android.systemui.plugins.Plugin Loading @@ -34,6 +32,8 @@ import com.android.systemui.shared.plugins.PluginManagerImpl import com.android.systemui.shared.plugins.PluginPrefs import com.android.systemui.shared.system.UncaughtExceptionPreHandlerManager_Factory import java.util.concurrent.Executors import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.suspendCancellableCoroutine /** Loading @@ -42,17 +42,23 @@ import kotlinx.coroutines.suspendCancellableCoroutine */ class ClockRegistryProvider( private val context: Context, private val coroutineScope: CoroutineScope, private val mainDispatcher: CoroutineDispatcher, private val backgroundDispatcher: CoroutineDispatcher, ) { private val pluginManager: PluginManager by lazy { createPluginManager(context) } private val clockRegistry: ClockRegistry by lazy { ClockRegistry( context, pluginManager, Handler.getMain(), coroutineScope, mainDispatcher, backgroundDispatcher, isEnabled = true, userHandle = UserHandle.USER_SYSTEM, handleAllUsers = false, DefaultClockProvider(context, LayoutInflater.from(context), context.resources) ) .apply { registerListeners() } } suspend fun get(): ClockRegistry { Loading tests/robotests/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragmentTest.kt +12 −35 Original line number Diff line number Diff line package com.android.customization.picker.clock.ui.fragment import android.os.Handler import android.os.UserHandle import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.android.systemui.plugins.ClockMetadata import com.android.systemui.plugins.ClockProvider import com.android.systemui.plugins.ClockSettings import com.android.systemui.plugins.PluginManager import com.android.systemui.shared.clocks.ClockRegistry Loading @@ -16,7 +13,8 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.MockitoAnnotations import org.robolectric.Robolectric import org.robolectric.RobolectricTestRunner Loading @@ -28,10 +26,8 @@ import org.robolectric.annotation.Config class ClockCustomDemoFragmentTest { private lateinit var mActivity: AppCompatActivity private var mClockCustomDemoFragment: ClockCustomDemoFragment? = null private lateinit var registry: ClockRegistry @Mock private lateinit var registry: ClockRegistry @Mock private lateinit var mockPluginManager: PluginManager @Mock private lateinit var mockHandler: Handler @Mock private lateinit var defaultClockProvider: ClockProvider private var settingValue: ClockSettings? = null Loading @@ -40,33 +36,14 @@ class ClockCustomDemoFragmentTest { MockitoAnnotations.initMocks(this) mActivity = Robolectric.buildActivity(AppCompatActivity::class.java).get() mClockCustomDemoFragment = ClockCustomDemoFragment() Mockito.`when`(defaultClockProvider.getClocks()) .thenReturn(listOf(ClockMetadata("DEFAULT", "Default Clock"))) registry = object : ClockRegistry( mActivity, mockPluginManager, mockHandler, isEnabled = true, userHandle = UserHandle.USER_ALL, defaultClockProvider = defaultClockProvider ) { override var settings: ClockSettings? get() = settingValue set(value) { settingValue = value } override fun getClocks(): List<ClockMetadata> { return defaultClockProvider.getClocks() + whenever(registry.getClocks()) .thenReturn( listOf( ClockMetadata("CLOCK_1", "Clock 1"), ClockMetadata("CLOCK_2", "Clock 2"), ClockMetadata("CLOCK_NOT_IN_USE", "Clock not in use") ) } } ) mClockCustomDemoFragment!!.clockRegistry = registry mClockCustomDemoFragment!!.recyclerView = RecyclerView(mActivity) Loading @@ -91,6 +68,6 @@ class ClockCustomDemoFragmentTest { .findViewHolderForAdapterPosition(testPosition) ?.itemView ?.performClick() Assert.assertEquals("CLOCK_1", settingValue?.clockId) verify(registry).currentClockId = "CLOCK_1" } } tests/src/com/android/customization/testing/TestCustomizationInjector.kt +9 −5 Original line number Diff line number Diff line Loading @@ -30,7 +30,8 @@ import com.android.wallpaper.module.PackageStatusNotifier import com.android.wallpaper.module.UserEventLogger import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer import com.android.wallpaper.testing.TestInjector import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope /** Test implementation of the dependency injector. */ class TestCustomizationInjector : TestInjector(), CustomizationInjector { Loading Loading @@ -98,9 +99,10 @@ class TestCustomizationInjector : TestInjector(), CustomizationInjector { private fun createCustomizationProviderClient( context: Context ): KeyguardQuickAffordancePickerInteractor { val client: CustomizationProviderClient = CustomizationProviderClientImpl(context, IO) val client: CustomizationProviderClient = CustomizationProviderClientImpl(context, Dispatchers.IO) return KeyguardQuickAffordancePickerInteractor( KeyguardQuickAffordancePickerRepository(client, IO), KeyguardQuickAffordancePickerRepository(client, Dispatchers.IO), client ) { getKeyguardQuickAffordanceSnapshotRestorer(context) } } Loading @@ -121,7 +123,7 @@ class TestCustomizationInjector : TestInjector(), CustomizationInjector { context: Context ): CustomizationProviderClient { return customizationProviderClient ?: CustomizationProviderClientImpl(context, IO).also { ?: CustomizationProviderClientImpl(context, Dispatchers.IO).also { customizationProviderClient = it } } Loading @@ -139,7 +141,9 @@ class TestCustomizationInjector : TestInjector(), CustomizationInjector { override fun getClockRegistryProvider(context: Context): ClockRegistryProvider { return clockRegistryProvider ?: ClockRegistryProvider(context).also { clockRegistryProvider = it } ?: ClockRegistryProvider(context, GlobalScope, Dispatchers.Main, Dispatchers.IO).also { clockRegistryProvider = it } } override fun getClockPickerInteractor( Loading Loading
src/com/android/customization/module/ThemePickerInjector.kt +7 −1 Original line number Diff line number Diff line Loading @@ -285,7 +285,13 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject override fun getClockRegistryProvider(context: Context): ClockRegistryProvider { return clockRegistryProvider ?: ClockRegistryProvider(context).also { clockRegistryProvider = it } ?: ClockRegistryProvider( context = context, coroutineScope = GlobalScope, mainDispatcher = Dispatchers.Main, backgroundDispatcher = Dispatchers.IO, ) .also { clockRegistryProvider = it } } override fun getClockPickerInteractor( Loading
src/com/android/customization/picker/clock/data/repository/ClockRegistryProvider.kt +15 −9 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ package com.android.customization.picker.clock.data.repository import android.app.NotificationManager import android.content.ComponentName import android.content.Context import android.os.Handler import android.os.UserHandle import android.view.LayoutInflater import com.android.systemui.plugins.ClockProviderPlugin import com.android.systemui.plugins.Plugin Loading @@ -34,6 +32,8 @@ import com.android.systemui.shared.plugins.PluginManagerImpl import com.android.systemui.shared.plugins.PluginPrefs import com.android.systemui.shared.system.UncaughtExceptionPreHandlerManager_Factory import java.util.concurrent.Executors import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.suspendCancellableCoroutine /** Loading @@ -42,17 +42,23 @@ import kotlinx.coroutines.suspendCancellableCoroutine */ class ClockRegistryProvider( private val context: Context, private val coroutineScope: CoroutineScope, private val mainDispatcher: CoroutineDispatcher, private val backgroundDispatcher: CoroutineDispatcher, ) { private val pluginManager: PluginManager by lazy { createPluginManager(context) } private val clockRegistry: ClockRegistry by lazy { ClockRegistry( context, pluginManager, Handler.getMain(), coroutineScope, mainDispatcher, backgroundDispatcher, isEnabled = true, userHandle = UserHandle.USER_SYSTEM, handleAllUsers = false, DefaultClockProvider(context, LayoutInflater.from(context), context.resources) ) .apply { registerListeners() } } suspend fun get(): ClockRegistry { Loading
tests/robotests/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragmentTest.kt +12 −35 Original line number Diff line number Diff line package com.android.customization.picker.clock.ui.fragment import android.os.Handler import android.os.UserHandle import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.android.systemui.plugins.ClockMetadata import com.android.systemui.plugins.ClockProvider import com.android.systemui.plugins.ClockSettings import com.android.systemui.plugins.PluginManager import com.android.systemui.shared.clocks.ClockRegistry Loading @@ -16,7 +13,8 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.MockitoAnnotations import org.robolectric.Robolectric import org.robolectric.RobolectricTestRunner Loading @@ -28,10 +26,8 @@ import org.robolectric.annotation.Config class ClockCustomDemoFragmentTest { private lateinit var mActivity: AppCompatActivity private var mClockCustomDemoFragment: ClockCustomDemoFragment? = null private lateinit var registry: ClockRegistry @Mock private lateinit var registry: ClockRegistry @Mock private lateinit var mockPluginManager: PluginManager @Mock private lateinit var mockHandler: Handler @Mock private lateinit var defaultClockProvider: ClockProvider private var settingValue: ClockSettings? = null Loading @@ -40,33 +36,14 @@ class ClockCustomDemoFragmentTest { MockitoAnnotations.initMocks(this) mActivity = Robolectric.buildActivity(AppCompatActivity::class.java).get() mClockCustomDemoFragment = ClockCustomDemoFragment() Mockito.`when`(defaultClockProvider.getClocks()) .thenReturn(listOf(ClockMetadata("DEFAULT", "Default Clock"))) registry = object : ClockRegistry( mActivity, mockPluginManager, mockHandler, isEnabled = true, userHandle = UserHandle.USER_ALL, defaultClockProvider = defaultClockProvider ) { override var settings: ClockSettings? get() = settingValue set(value) { settingValue = value } override fun getClocks(): List<ClockMetadata> { return defaultClockProvider.getClocks() + whenever(registry.getClocks()) .thenReturn( listOf( ClockMetadata("CLOCK_1", "Clock 1"), ClockMetadata("CLOCK_2", "Clock 2"), ClockMetadata("CLOCK_NOT_IN_USE", "Clock not in use") ) } } ) mClockCustomDemoFragment!!.clockRegistry = registry mClockCustomDemoFragment!!.recyclerView = RecyclerView(mActivity) Loading @@ -91,6 +68,6 @@ class ClockCustomDemoFragmentTest { .findViewHolderForAdapterPosition(testPosition) ?.itemView ?.performClick() Assert.assertEquals("CLOCK_1", settingValue?.clockId) verify(registry).currentClockId = "CLOCK_1" } }
tests/src/com/android/customization/testing/TestCustomizationInjector.kt +9 −5 Original line number Diff line number Diff line Loading @@ -30,7 +30,8 @@ import com.android.wallpaper.module.PackageStatusNotifier import com.android.wallpaper.module.UserEventLogger import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer import com.android.wallpaper.testing.TestInjector import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope /** Test implementation of the dependency injector. */ class TestCustomizationInjector : TestInjector(), CustomizationInjector { Loading Loading @@ -98,9 +99,10 @@ class TestCustomizationInjector : TestInjector(), CustomizationInjector { private fun createCustomizationProviderClient( context: Context ): KeyguardQuickAffordancePickerInteractor { val client: CustomizationProviderClient = CustomizationProviderClientImpl(context, IO) val client: CustomizationProviderClient = CustomizationProviderClientImpl(context, Dispatchers.IO) return KeyguardQuickAffordancePickerInteractor( KeyguardQuickAffordancePickerRepository(client, IO), KeyguardQuickAffordancePickerRepository(client, Dispatchers.IO), client ) { getKeyguardQuickAffordanceSnapshotRestorer(context) } } Loading @@ -121,7 +123,7 @@ class TestCustomizationInjector : TestInjector(), CustomizationInjector { context: Context ): CustomizationProviderClient { return customizationProviderClient ?: CustomizationProviderClientImpl(context, IO).also { ?: CustomizationProviderClientImpl(context, Dispatchers.IO).also { customizationProviderClient = it } } Loading @@ -139,7 +141,9 @@ class TestCustomizationInjector : TestInjector(), CustomizationInjector { override fun getClockRegistryProvider(context: Context): ClockRegistryProvider { return clockRegistryProvider ?: ClockRegistryProvider(context).also { clockRegistryProvider = it } ?: ClockRegistryProvider(context, GlobalScope, Dispatchers.Main, Dispatchers.IO).also { clockRegistryProvider = it } } override fun getClockPickerInteractor( Loading