diff options
9 files changed, 103 insertions, 122 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java index 15ddf5bfd281..34d323d66349 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java @@ -103,6 +103,7 @@ import com.android.systemui.screenrecord.ScreenRecordModule; import com.android.systemui.screenshot.dagger.ScreenshotModule; import com.android.systemui.security.data.repository.SecurityRepositoryModule; import com.android.systemui.settings.DisplayTracker; +import com.android.systemui.settings.UserTracker; import com.android.systemui.shade.ShadeController; import com.android.systemui.shade.transition.LargeScreenShadeInterpolator; import com.android.systemui.shade.transition.LargeScreenShadeInterpolatorImpl; @@ -153,6 +154,7 @@ import com.android.systemui.util.dagger.UtilModule; import com.android.systemui.util.kotlin.SysUICoroutinesModule; import com.android.systemui.util.reference.ReferenceModule; import com.android.systemui.util.sensors.SensorModule; +import com.android.systemui.util.settings.SettingsProxy; import com.android.systemui.util.settings.SettingsUtilModule; import com.android.systemui.util.time.SystemClock; import com.android.systemui.util.time.SystemClockImpl; @@ -266,15 +268,15 @@ import javax.inject.Named; NoteTaskModule.class, WalletModule.class, ContextualEducationModule.class - }, +}, subcomponents = { - ComplicationComponent.class, - DozeComponent.class, - ExpandableNotificationRowComponent.class, - KeyguardBouncerComponent.class, - NavigationBarComponent.class, - NotificationRowComponent.class, - WindowRootViewComponent.class, + ComplicationComponent.class, + DozeComponent.class, + ExpandableNotificationRowComponent.class, + KeyguardBouncerComponent.class, + NavigationBarComponent.class, + NotificationRowComponent.class, + WindowRootViewComponent.class, }) public abstract class SystemUIModule { @@ -441,4 +443,9 @@ public abstract class SystemUIModule { @Binds abstract SceneDataSource bindSceneDataSource(SceneDataSourceDelegator delegator); + + @Provides + static SettingsProxy.CurrentUserIdProvider provideCurrentUserId(UserTracker userTracker) { + return userTracker::getUserId; + } } diff --git a/packages/SystemUI/src/com/android/systemui/util/settings/SecureSettingsImpl.java b/packages/SystemUI/src/com/android/systemui/util/settings/SecureSettingsImpl.java index 9c98f43e2501..f1da27f9cce9 100644 --- a/packages/SystemUI/src/com/android/systemui/util/settings/SecureSettingsImpl.java +++ b/packages/SystemUI/src/com/android/systemui/util/settings/SecureSettingsImpl.java @@ -22,23 +22,24 @@ import android.provider.Settings; import androidx.annotation.NonNull; -import com.android.systemui.settings.UserTracker; import com.android.systemui.util.kotlin.SettingsSingleThreadBackground; -import javax.inject.Inject; - import kotlinx.coroutines.CoroutineDispatcher; +import javax.inject.Inject; + class SecureSettingsImpl implements SecureSettings { private final ContentResolver mContentResolver; - private final UserTracker mUserTracker; + private final CurrentUserIdProvider mCurrentUserProvider; private final CoroutineDispatcher mBgDispatcher; @Inject - SecureSettingsImpl(ContentResolver contentResolver, UserTracker userTracker, + SecureSettingsImpl( + ContentResolver contentResolver, + CurrentUserIdProvider currentUserProvider, @SettingsSingleThreadBackground CoroutineDispatcher bgDispatcher) { mContentResolver = contentResolver; - mUserTracker = userTracker; + mCurrentUserProvider = currentUserProvider; mBgDispatcher = bgDispatcher; } @@ -48,8 +49,8 @@ class SecureSettingsImpl implements SecureSettings { } @Override - public UserTracker getUserTracker() { - return mUserTracker; + public CurrentUserIdProvider getCurrentUserProvider() { + return mCurrentUserProvider; } @Override diff --git a/packages/SystemUI/src/com/android/systemui/util/settings/SettingsProxy.kt b/packages/SystemUI/src/com/android/systemui/util/settings/SettingsProxy.kt index 9125a915b2a3..0ee997e4549d 100644 --- a/packages/SystemUI/src/com/android/systemui/util/settings/SettingsProxy.kt +++ b/packages/SystemUI/src/com/android/systemui/util/settings/SettingsProxy.kt @@ -15,6 +15,7 @@ */ package com.android.systemui.util.settings +import android.annotation.UserIdInt import android.content.ContentResolver import android.database.ContentObserver import android.net.Uri @@ -629,4 +630,8 @@ interface SettingsProxy { } } } + + fun interface CurrentUserIdProvider { + @UserIdInt fun getUserId(): Int + } } diff --git a/packages/SystemUI/src/com/android/systemui/util/settings/SystemSettingsImpl.java b/packages/SystemUI/src/com/android/systemui/util/settings/SystemSettingsImpl.java index 406d95bd8fd1..1e8035734a36 100644 --- a/packages/SystemUI/src/com/android/systemui/util/settings/SystemSettingsImpl.java +++ b/packages/SystemUI/src/com/android/systemui/util/settings/SystemSettingsImpl.java @@ -22,23 +22,23 @@ import android.provider.Settings; import androidx.annotation.NonNull; -import com.android.systemui.settings.UserTracker; import com.android.systemui.util.kotlin.SettingsSingleThreadBackground; -import javax.inject.Inject; - import kotlinx.coroutines.CoroutineDispatcher; +import javax.inject.Inject; + class SystemSettingsImpl implements SystemSettings { private final ContentResolver mContentResolver; - private final UserTracker mUserTracker; + private final CurrentUserIdProvider mCurrentUserProvider; private final CoroutineDispatcher mBgCoroutineDispatcher; @Inject - SystemSettingsImpl(ContentResolver contentResolver, UserTracker userTracker, + SystemSettingsImpl(ContentResolver contentResolver, + CurrentUserIdProvider currentUserProvider, @SettingsSingleThreadBackground CoroutineDispatcher bgDispatcher) { mContentResolver = contentResolver; - mUserTracker = userTracker; + mCurrentUserProvider = currentUserProvider; mBgCoroutineDispatcher = bgDispatcher; } @@ -48,8 +48,8 @@ class SystemSettingsImpl implements SystemSettings { } @Override - public UserTracker getUserTracker() { - return mUserTracker; + public CurrentUserIdProvider getCurrentUserProvider() { + return mCurrentUserProvider; } @Override diff --git a/packages/SystemUI/src/com/android/systemui/util/settings/UserSettingsProxy.kt b/packages/SystemUI/src/com/android/systemui/util/settings/UserSettingsProxy.kt index ac7c1ce77c9e..9ae8f03479cf 100644 --- a/packages/SystemUI/src/com/android/systemui/util/settings/UserSettingsProxy.kt +++ b/packages/SystemUI/src/com/android/systemui/util/settings/UserSettingsProxy.kt @@ -23,7 +23,6 @@ import android.net.Uri import android.os.UserHandle import android.provider.Settings.SettingNotFoundException import com.android.app.tracing.TraceUtils.trace -import com.android.systemui.settings.UserTracker import com.android.systemui.util.settings.SettingsProxy.Companion.parseFloat import com.android.systemui.util.settings.SettingsProxy.Companion.parseFloatOrThrow import com.android.systemui.util.settings.SettingsProxy.Companion.parseLongOrThrow @@ -46,8 +45,8 @@ import kotlinx.coroutines.withContext * instances, unifying setting related actions in one place. */ interface UserSettingsProxy : SettingsProxy { - /** Returns that [UserTracker] this instance was constructed with. */ - val userTracker: UserTracker + val currentUserProvider: SettingsProxy.CurrentUserIdProvider + /** Returns the user id for the associated [ContentResolver]. */ var userId: Int get() = getContentResolver().userId @@ -64,7 +63,7 @@ interface UserSettingsProxy : SettingsProxy { fun getRealUserHandle(userHandle: Int): Int { return if (userHandle != UserHandle.USER_CURRENT) { userHandle - } else userTracker.userId + } else currentUserProvider.getUserId() } @WorkerThread diff --git a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt index 0196f95e29be..80a9e4ce991b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/notetask/NoteTaskControllerTest.kt @@ -62,9 +62,8 @@ import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.capture import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock -import com.android.systemui.util.mockito.whenever import com.android.systemui.util.mockito.withArgCaptor -import com.android.systemui.util.settings.SecureSettings +import com.android.systemui.util.settings.FakeSettings import com.android.wm.shell.bubbles.Bubble import com.android.wm.shell.bubbles.Bubbles import com.google.common.truth.Truth.assertThat @@ -86,6 +85,7 @@ import org.mockito.Mockito.spy import org.mockito.Mockito.verify import org.mockito.Mockito.verifyZeroInteractions import org.mockito.MockitoAnnotations +import org.mockito.kotlin.whenever /** atest SystemUITests:NoteTaskControllerTest */ @OptIn(ExperimentalCoroutinesApi::class) @@ -106,10 +106,10 @@ internal class NoteTaskControllerTest : SysuiTestCase() { @Mock private lateinit var shortcutManager: ShortcutManager @Mock private lateinit var activityManager: ActivityManager @Mock private lateinit var devicePolicyManager: DevicePolicyManager - @Mock private lateinit var secureSettings: SecureSettings private val userTracker = FakeUserTracker() private val testDispatcher = UnconfinedTestDispatcher() private val testScope = TestScope(testDispatcher) + private val secureSettings = FakeSettings(testDispatcher) { userTracker.userId } @Before fun setUp() { @@ -139,7 +139,6 @@ internal class NoteTaskControllerTest : SysuiTestCase() { whenever(activityManager.getRunningTasks(anyInt())).thenReturn(emptyList()) whenever(userManager.isManagedProfile(workUserInfo.id)).thenReturn(true) whenever(context.resources).thenReturn(getContext().resources) - whenever(secureSettings.userTracker).thenReturn(userTracker) } private fun createNoteTaskController( @@ -245,6 +244,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() { verifyZeroInteractions(bubbles, keyguardManager, userManager, eventLogger) } + // endregion // region showNoteTask @@ -357,14 +357,11 @@ internal class NoteTaskControllerTest : SysuiTestCase() { @Test fun showNoteTask_defaultUserSet_shouldStartActivityWithExpectedUserAndLogUiEvent() { - whenever( - secureSettings.getIntForUser( - /* name= */ eq(Settings.Secure.DEFAULT_NOTE_TASK_PROFILE), - /* def= */ any(), - /* userHandle= */ any() - ) - ) - .thenReturn(10) + secureSettings.putIntForUser( + /* name= */ Settings.Secure.DEFAULT_NOTE_TASK_PROFILE, + /* value= */ 10, + /* userHandle= */ userTracker.userId + ) val user10 = UserHandle.of(/* userId= */ 10) val expectedInfo = @@ -458,6 +455,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() { verify(eventLogger).logNoteTaskOpened(expectedInfo) verifyZeroInteractions(bubbles) } + // endregion // region setNoteTaskShortcutEnabled @@ -535,6 +533,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() { assertThat(argument.value.className) .isEqualTo(CreateNoteTaskShortcutActivity::class.java.name) } + // endregion // region keyguard policy @@ -601,6 +600,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() { verifyNoteTaskOpenInBubbleInUser(userTracker.userHandle) } + // endregion // region showNoteTask, COPE devices @@ -626,14 +626,11 @@ internal class NoteTaskControllerTest : SysuiTestCase() { @Test fun showNoteTask_copeDevices_tailButtonEntryPoint_shouldStartBubbleInTheUserSelectedUser() { - whenever( - secureSettings.getIntForUser( - /* name= */ eq(Settings.Secure.DEFAULT_NOTE_TASK_PROFILE), - /* def= */ any(), - /* userHandle= */ any() - ) - ) - .thenReturn(mainUserInfo.id) + secureSettings.putIntForUser( + /* name= */ Settings.Secure.DEFAULT_NOTE_TASK_PROFILE, + /* value= */ mainUserInfo.id, + /* userHandle= */ userTracker.userId + ) whenever(devicePolicyManager.isOrganizationOwnedDeviceWithManagedProfile).thenReturn(true) userTracker.set(mainAndWorkProfileUsers, mainAndWorkProfileUsers.indexOf(mainUserInfo)) @@ -661,6 +658,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() { verifyNoteTaskOpenInBubbleInUser(mainUserInfo.userHandle) } + // endregion private fun verifyNoteTaskOpenInBubbleInUser(userHandle: UserHandle) { @@ -700,6 +698,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() { verify(controller).updateNoteTaskAsUser(user) } + // endregion // region updateNoteTaskAsUser @@ -729,6 +728,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() { val intent = withArgCaptor { verify(context).startServiceAsUser(capture(), eq(user)) } assertThat(intent).hasComponentClass(NoteTaskControllerUpdateService::class.java) } + // endregion // region internalUpdateNoteTaskAsUser @@ -807,6 +807,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() { verify(shortcutManager, never()).enableShortcuts(any()) verify(shortcutManager, never()).updateShortcuts(any()) } + // endregion // startregion updateNoteTaskForAllUsers @@ -821,6 +822,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() { verify(controller).updateNoteTaskAsUser(mainUserInfo.userHandle) verify(controller).updateNoteTaskAsUser(workUserInfo.userHandle) } + // endregion // region getUserForHandlingNotesTaking @@ -836,14 +838,11 @@ internal class NoteTaskControllerTest : SysuiTestCase() { @Test fun getUserForHandlingNotesTaking_cope_userSelectedWorkProfile_tailButton_shouldReturnWorkProfileUser() { // ktlint-disable max-line-length - whenever( - secureSettings.getIntForUser( - /* name= */ eq(Settings.Secure.DEFAULT_NOTE_TASK_PROFILE), - /* def= */ any(), - /* userHandle= */ any() - ) - ) - .thenReturn(workUserInfo.id) + secureSettings.putIntForUser( + /* name= */ Settings.Secure.DEFAULT_NOTE_TASK_PROFILE, + /* value= */ workUserInfo.id, + /* userHandle= */ userTracker.userId + ) whenever(devicePolicyManager.isOrganizationOwnedDeviceWithManagedProfile).thenReturn(true) userTracker.set(mainAndWorkProfileUsers, mainAndWorkProfileUsers.indexOf(mainUserInfo)) @@ -854,14 +853,11 @@ internal class NoteTaskControllerTest : SysuiTestCase() { @Test fun getUserForHandlingNotesTaking_cope_userSelectedMainProfile_tailButton_shouldReturnMainProfileUser() { // ktlint-disable max-line-length - whenever( - secureSettings.getIntForUser( - /* name= */ eq(Settings.Secure.DEFAULT_NOTE_TASK_PROFILE), - /* def= */ any(), - /* userHandle= */ any() - ) - ) - .thenReturn(mainUserInfo.id) + secureSettings.putIntForUser( + /* name= */ Settings.Secure.DEFAULT_NOTE_TASK_PROFILE, + /* value= */ mainUserInfo.id, + /* userHandle= */ userTracker.userId + ) whenever(devicePolicyManager.isOrganizationOwnedDeviceWithManagedProfile).thenReturn(true) userTracker.set(mainAndWorkProfileUsers, mainAndWorkProfileUsers.indexOf(mainUserInfo)) @@ -906,6 +902,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() { assertThat(user).isEqualTo(UserHandle.of(mainUserInfo.id)) } + // endregion // startregion startNotesRoleSetting @@ -962,6 +959,7 @@ internal class NoteTaskControllerTest : SysuiTestCase() { assertThat(intentCaptor.value).hasAction(ACTION_MANAGE_DEFAULT_APP) assertThat(userCaptor.value).isEqualTo(UserHandle.of(mainUserInfo.id)) } + // endregion private companion object { diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt b/packages/SystemUI/tests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt index ead9939c1dd7..eaeece9c293e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/util/settings/UserSettingsProxyTest.kt @@ -17,7 +17,6 @@ package com.android.systemui.util.settings import android.content.ContentResolver -import android.content.pm.UserInfo import android.database.ContentObserver import android.net.Uri import android.os.Handler @@ -28,8 +27,6 @@ import android.testing.TestableLooper import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase -import com.android.systemui.settings.FakeUserTracker -import com.android.systemui.settings.UserTracker import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -52,29 +49,21 @@ import org.mockito.kotlin.eq @TestableLooper.RunWithLooper class UserSettingsProxyTest : SysuiTestCase() { - private var mUserTracker = FakeUserTracker() + private var userId = MAIN_USER_ID private val testDispatcher = StandardTestDispatcher() - private var mSettings: UserSettingsProxy = FakeUserSettingsProxy(mUserTracker, testDispatcher) + private var mSettings: UserSettingsProxy = FakeUserSettingsProxy({ userId }, testDispatcher) private var mContentObserver = object : ContentObserver(Handler(Looper.getMainLooper())) {} private lateinit var testScope: TestScope @Before fun setUp() { - mUserTracker.set( - listOf(UserInfo(MAIN_USER_ID, "main", UserInfo.FLAG_MAIN)), - selectedUserIndex = 0 - ) testScope = TestScope(testDispatcher) } @Test fun registerContentObserverForUser_inputString_success() = testScope.runTest { - mSettings.registerContentObserverForUserSync( - TEST_SETTING, - mContentObserver, - mUserTracker.userId - ) + mSettings.registerContentObserverForUserSync(TEST_SETTING, mContentObserver, userId) verify(mSettings.getContentResolver()) .registerContentObserver( eq(TEST_SETTING_URI), @@ -87,11 +76,7 @@ class UserSettingsProxyTest : SysuiTestCase() { @Test fun registerContentObserverForUserSuspend_inputString_success() = testScope.runTest { - mSettings.registerContentObserverForUser( - TEST_SETTING, - mContentObserver, - mUserTracker.userId - ) + mSettings.registerContentObserverForUser(TEST_SETTING, mContentObserver, userId) verify(mSettings.getContentResolver()) .registerContentObserver( eq(TEST_SETTING_URI), @@ -104,11 +89,7 @@ class UserSettingsProxyTest : SysuiTestCase() { @Test fun registerContentObserverForUserAsync_inputString_success() = testScope.runTest { - mSettings.registerContentObserverForUserAsync( - TEST_SETTING, - mContentObserver, - mUserTracker.userId - ) + mSettings.registerContentObserverForUserAsync(TEST_SETTING, mContentObserver, userId) testScope.advanceUntilIdle() verify(mSettings.getContentResolver()) .registerContentObserver( @@ -126,7 +107,7 @@ class UserSettingsProxyTest : SysuiTestCase() { TEST_SETTING, notifyForDescendants = true, mContentObserver, - mUserTracker.userId + userId ) verify(mSettings.getContentResolver()) .registerContentObserver( @@ -144,7 +125,7 @@ class UserSettingsProxyTest : SysuiTestCase() { TEST_SETTING, notifyForDescendants = true, mContentObserver, - mUserTracker.userId + userId ) verify(mSettings.getContentResolver()) .registerContentObserver( @@ -164,7 +145,7 @@ class UserSettingsProxyTest : SysuiTestCase() { TEST_SETTING, notifyForDescendants = true, mContentObserver, - mUserTracker.userId + userId ) testScope.advanceUntilIdle() verify(mSettings.getContentResolver()) @@ -179,11 +160,7 @@ class UserSettingsProxyTest : SysuiTestCase() { @Test fun registerContentObserverForUser_inputUri_success() = testScope.runTest { - mSettings.registerContentObserverForUserSync( - TEST_SETTING_URI, - mContentObserver, - mUserTracker.userId - ) + mSettings.registerContentObserverForUserSync(TEST_SETTING_URI, mContentObserver, userId) verify(mSettings.getContentResolver()) .registerContentObserver( eq(TEST_SETTING_URI), @@ -196,11 +173,7 @@ class UserSettingsProxyTest : SysuiTestCase() { @Test fun registerContentObserverForUserSuspend_inputUri_success() = testScope.runTest { - mSettings.registerContentObserverForUser( - TEST_SETTING_URI, - mContentObserver, - mUserTracker.userId - ) + mSettings.registerContentObserverForUser(TEST_SETTING_URI, mContentObserver, userId) verify(mSettings.getContentResolver()) .registerContentObserver( eq(TEST_SETTING_URI), @@ -216,7 +189,7 @@ class UserSettingsProxyTest : SysuiTestCase() { mSettings.registerContentObserverForUserAsync( TEST_SETTING_URI, mContentObserver, - mUserTracker.userId + userId ) testScope.advanceUntilIdle() @@ -239,7 +212,7 @@ class UserSettingsProxyTest : SysuiTestCase() { mSettings.registerContentObserverForUserAsync( TEST_SETTING_URI, mContentObserver, - mUserTracker.userId, + userId, runnable ) testScope.advanceUntilIdle() @@ -253,7 +226,7 @@ class UserSettingsProxyTest : SysuiTestCase() { TEST_SETTING_URI, notifyForDescendants = true, mContentObserver, - mUserTracker.userId + userId ) verify(mSettings.getContentResolver()) .registerContentObserver( @@ -271,14 +244,12 @@ class UserSettingsProxyTest : SysuiTestCase() { TEST_SETTING_URI, notifyForDescendants = true, mContentObserver, - mUserTracker.userId + userId ) verify(mSettings.getContentResolver()) .registerContentObserver( eq(TEST_SETTING_URI), - eq( - true, - ), + eq(true), eq(mContentObserver), eq(MAIN_USER_ID) ) @@ -291,7 +262,7 @@ class UserSettingsProxyTest : SysuiTestCase() { TEST_SETTING_URI, notifyForDescendants = true, mContentObserver, - mUserTracker.userId + userId ) testScope.advanceUntilIdle() verify(mSettings.getContentResolver()) @@ -585,7 +556,7 @@ class UserSettingsProxyTest : SysuiTestCase() { * This class uses a mock of [ContentResolver] to test the [ContentObserver] registration APIs. */ private class FakeUserSettingsProxy( - override val userTracker: UserTracker, + override val currentUserProvider: SettingsProxy.CurrentUserIdProvider, val testDispatcher: CoroutineDispatcher ) : UserSettingsProxy { diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettings.java b/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettings.java index 3f0318b71f8b..d1174667648c 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettings.java +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettings.java @@ -28,9 +28,6 @@ import android.util.Pair; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; -import com.android.systemui.settings.FakeUserTracker; -import com.android.systemui.settings.UserTracker; - import kotlinx.coroutines.CoroutineDispatcher; import java.util.ArrayList; @@ -44,12 +41,13 @@ public class FakeSettings implements SecureSettings, SystemSettings { new HashMap<>(); private final Map<String, List<ContentObserver>> mContentObserversAllUsers = new HashMap<>(); private final CoroutineDispatcher mDispatcher; - private final UserTracker mUserTracker; public static final Uri CONTENT_URI = Uri.parse("content://settings/fake"); @UserIdInt private int mUserId = UserHandle.USER_CURRENT; + private final CurrentUserIdProvider mCurrentUserProvider; + /** * @deprecated Please use FakeSettings(testDispatcher) to provide the same dispatcher used * by main test scope. @@ -57,17 +55,17 @@ public class FakeSettings implements SecureSettings, SystemSettings { @Deprecated public FakeSettings() { mDispatcher = StandardTestDispatcher(/* scheduler = */ null, /* name = */ null); - mUserTracker = new FakeUserTracker(); + mCurrentUserProvider = () -> mUserId; } public FakeSettings(CoroutineDispatcher dispatcher) { mDispatcher = dispatcher; - mUserTracker = new FakeUserTracker(); + mCurrentUserProvider = () -> mUserId; } - public FakeSettings(CoroutineDispatcher dispatcher, UserTracker userTracker) { + public FakeSettings(CoroutineDispatcher dispatcher, CurrentUserIdProvider currentUserProvider) { mDispatcher = dispatcher; - mUserTracker = userTracker; + mCurrentUserProvider = currentUserProvider; } @VisibleForTesting @@ -93,8 +91,8 @@ public class FakeSettings implements SecureSettings, SystemSettings { @NonNull @Override - public UserTracker getUserTracker() { - return mUserTracker; + public CurrentUserIdProvider getCurrentUserProvider() { + return mCurrentUserProvider; } @NonNull diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettingsKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettingsKosmos.kt index 55044bf3650b..76ef20253078 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettingsKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/util/settings/FakeSettingsKosmos.kt @@ -19,6 +19,8 @@ package com.android.systemui.util.settings import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture import com.android.systemui.kosmos.testDispatcher -import com.android.systemui.settings.fakeUserTracker +import com.android.systemui.settings.userTracker -val Kosmos.fakeSettings: FakeSettings by Fixture { FakeSettings(testDispatcher, fakeUserTracker) } +val Kosmos.fakeSettings: FakeSettings by Fixture { + FakeSettings(testDispatcher) { userTracker.userId } +} |