diff options
author | 2024-05-07 21:01:16 +0000 | |
---|---|---|
committer | 2024-05-07 21:01:16 +0000 | |
commit | 4c3b51ffe7d111df24e4538fa87c030901158a45 (patch) | |
tree | 633f490dfb0c5ad0faeca295eed8638b8bb06a41 | |
parent | 02438edd9b7851de89d0fe97a9436d908fb38575 (diff) |
Revert "Fix incorrect password attempts messaging on headless"
Revert submission 27002999-wipeMessage
Reason for revert: Code Review Issues
Reverted changes: /q/submissionid:27002999-wipeMessage
There are several idiomatic issues with this CL that need to be addressed. It is causing breakages in SysUI-Studio and we should fix the issues in this CL instead of fixing studio.
Change-Id: Ic1235af5bd0f4b057cdd62cf56e5c749527f2656
11 files changed, 29 insertions, 208 deletions
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index 8d7556568015..e2af6313fc97 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -149,7 +149,6 @@ android_library { "device_state_flags_lib", "kotlinx_coroutines_android", "kotlinx_coroutines", - "kotlinx_coroutines_guava", "//frameworks/libs/systemui:iconloader_base", "SystemUI-tags", "SystemUI-proto", @@ -170,7 +169,6 @@ android_library { "androidx.compose.material_material-icons-extended", "androidx.activity_activity-compose", "androidx.compose.animation_animation-graphics", - "device_policy_aconfig_flags_lib", ], libs: [ "keepanno-annotations", @@ -330,7 +328,6 @@ android_library { "androidx.activity_activity-compose", "androidx.compose.animation_animation-graphics", "TraceurCommon", - "kotlinx_coroutines_guava", ], } @@ -412,7 +409,6 @@ android_app { "//frameworks/libs/systemui:compilelib", "SystemUI-tests-base", "androidx.compose.runtime_runtime", - "SystemUI-core", ], libs: [ "keepanno-annotations", diff --git a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt index 0b5a019b499a..aa70c45d3ff3 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt @@ -17,8 +17,6 @@ package com.android.keyguard -import android.app.admin.DevicePolicyManager -import android.app.admin.flags.Flags as DevicePolicyFlags import android.content.res.Configuration import android.media.AudioManager import android.telephony.TelephonyManager @@ -150,7 +148,6 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { @Mock private lateinit var faceAuthAccessibilityDelegate: FaceAuthAccessibilityDelegate @Mock private lateinit var deviceProvisionedController: DeviceProvisionedController @Mock private lateinit var postureController: DevicePostureController - @Mock private lateinit var devicePolicyManager: DevicePolicyManager @Captor private lateinit var swipeListenerArgumentCaptor: @@ -277,7 +274,6 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { mSelectedUserInteractor, deviceProvisionedController, faceAuthAccessibilityDelegate, - devicePolicyManager, keyguardTransitionInteractor, { primaryBouncerInteractor }, ) { @@ -933,45 +929,6 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { verify(viewFlipperController).asynchronouslyInflateView(any(), any(), any()) } - @Test - fun showAlmostAtWipeDialog_calledOnMainUser_setsCorrectUserType() { - mSetFlagsRule.enableFlags(DevicePolicyFlags.FLAG_HEADLESS_SINGLE_USER_FIXES) - val mainUserId = 10 - - underTest.showMessageForFailedUnlockAttempt( - /* userId = */ mainUserId, - /* expiringUserId = */ mainUserId, - /* mainUserId = */ mainUserId, - /* remainingBeforeWipe = */ 1, - /* failedAttempts = */ 1 - ) - - verify(view) - .showAlmostAtWipeDialog(any(), any(), eq(KeyguardSecurityContainer.USER_TYPE_PRIMARY)) - } - - @Test - fun showAlmostAtWipeDialog_calledOnNonMainUser_setsCorrectUserType() { - mSetFlagsRule.enableFlags(DevicePolicyFlags.FLAG_HEADLESS_SINGLE_USER_FIXES) - val secondaryUserId = 10 - val mainUserId = 0 - - underTest.showMessageForFailedUnlockAttempt( - /* userId = */ secondaryUserId, - /* expiringUserId = */ secondaryUserId, - /* mainUserId = */ mainUserId, - /* remainingBeforeWipe = */ 1, - /* failedAttempts = */ 1 - ) - - verify(view) - .showAlmostAtWipeDialog( - any(), - any(), - eq(KeyguardSecurityContainer.USER_TYPE_SECONDARY_USER) - ) - } - private val registeredSwipeListener: KeyguardSecurityContainer.SwipeListener get() { underTest.onViewAttached() diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractorTest.kt index 0c5e726e17aa..81878aaf4a18 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractorTest.kt @@ -17,8 +17,6 @@ package com.android.systemui.authentication.domain.interactor import android.app.admin.DevicePolicyManager -import android.app.admin.flags.Flags as DevicePolicyFlags -import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.internal.widget.LockPatternUtils @@ -34,8 +32,6 @@ import com.android.systemui.authentication.shared.model.AuthenticationWipeModel import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos -import com.android.systemui.user.data.repository.FakeUserRepository -import com.android.systemui.user.data.repository.fakeUserRepository import com.google.common.truth.Truth.assertThat import kotlin.time.Duration.Companion.seconds import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -414,16 +410,12 @@ class AuthenticationInteractorTest : SysuiTestCase() { } @Test - @EnableFlags(DevicePolicyFlags.FLAG_HEADLESS_SINGLE_USER_FIXES) fun upcomingWipe() = testScope.runTest { val upcomingWipe by collectLastValue(underTest.upcomingWipe) kosmos.fakeAuthenticationRepository.setAuthenticationMethod(Pin) val correctPin = FakeAuthenticationRepository.DEFAULT_PIN val wrongPin = FakeAuthenticationRepository.DEFAULT_PIN.map { it + 1 } - kosmos.fakeUserRepository.asMainUser() - kosmos.fakeAuthenticationRepository.profileWithMinFailedUnlockAttemptsForWipe = - FakeUserRepository.MAIN_USER_ID underTest.authenticate(correctPin) assertThat(upcomingWipe).isNull() diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java index b93eba655596..b916fc297ed8 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java @@ -35,14 +35,12 @@ import static com.android.systemui.flags.Flags.LOCKSCREEN_ENABLE_LANDSCAPE; import android.app.ActivityManager; import android.app.admin.DevicePolicyManager; -import android.app.admin.flags.Flags; import android.content.Intent; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Resources; import android.media.AudioManager; import android.metrics.LogMaker; -import android.os.Looper; import android.os.SystemClock; import android.os.UserHandle; import android.telephony.TelephonyManager; @@ -99,15 +97,12 @@ import com.android.systemui.util.ViewController; import com.android.systemui.util.kotlin.JavaAdapter; import com.android.systemui.util.settings.GlobalSettings; -import com.google.common.util.concurrent.ListenableFuture; - import dagger.Lazy; import kotlinx.coroutines.Job; import java.io.File; import java.util.Arrays; -import java.util.concurrent.ExecutionException; import javax.inject.Inject; import javax.inject.Provider; @@ -140,7 +135,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private final BouncerMessageInteractor mBouncerMessageInteractor; private int mTranslationY; private final KeyguardTransitionInteractor mKeyguardTransitionInteractor; - private final DevicePolicyManager mDevicePolicyManager; // Whether the volume keys should be handled by keyguard. If true, then // they will be handled here for specific media types such as music, otherwise // the audio service will bring up the volume dialog. @@ -467,7 +461,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard SelectedUserInteractor selectedUserInteractor, DeviceProvisionedController deviceProvisionedController, FaceAuthAccessibilityDelegate faceAuthAccessibilityDelegate, - DevicePolicyManager devicePolicyManager, KeyguardTransitionInteractor keyguardTransitionInteractor, Lazy<PrimaryBouncerInteractor> primaryBouncerInteractor, Provider<DeviceEntryInteractor> deviceEntryInteractor @@ -503,7 +496,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mKeyguardTransitionInteractor = keyguardTransitionInteractor; mDeviceProvisionedController = deviceProvisionedController; mPrimaryBouncerInteractor = primaryBouncerInteractor; - mDevicePolicyManager = devicePolicyManager; } @Override @@ -1114,36 +1106,35 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard if (DEBUG) Log.d(TAG, "reportFailedPatternAttempt: #" + failedAttempts); + final DevicePolicyManager dpm = mLockPatternUtils.getDevicePolicyManager(); final int failedAttemptsBeforeWipe = - mDevicePolicyManager.getMaximumFailedPasswordsForWipe(null, userId); + dpm.getMaximumFailedPasswordsForWipe(null, userId); final int remainingBeforeWipe = failedAttemptsBeforeWipe > 0 ? (failedAttemptsBeforeWipe - failedAttempts) : Integer.MAX_VALUE; // because DPM returns 0 if no restriction if (remainingBeforeWipe < LockPatternUtils.FAILED_ATTEMPTS_BEFORE_WIPE_GRACE) { - // The user has installed a DevicePolicyManager that requests a - // user/profile to be wiped N attempts. Once we get below the grace period, - // we post this dialog every time as a clear warning until the deletion - // fires. Check which profile has the strictest policy for failed password - // attempts. - final int expiringUser = - mDevicePolicyManager.getProfileWithMinimumFailedPasswordsForWipe(userId); - ListenableFuture<Integer> getMainUserIdFuture = - mSelectedUserInteractor.getMainUserIdAsync(); - getMainUserIdFuture.addListener(() -> { - Looper.prepare(); - Integer mainUser; - try { - mainUser = getMainUserIdFuture.get(); - } catch (InterruptedException | ExecutionException e) { - // Nothing we can, keep using the system user as the primary - // user. - mainUser = null; + // The user has installed a DevicePolicyManager that requests a user/profile to be wiped + // N attempts. Once we get below the grace period, we post this dialog every time as a + // clear warning until the deletion fires. + // Check which profile has the strictest policy for failed password attempts + final int expiringUser = dpm.getProfileWithMinimumFailedPasswordsForWipe(userId); + int userType = USER_TYPE_PRIMARY; + if (expiringUser == userId) { + // TODO: http://b/23522538 + if (expiringUser != UserHandle.USER_SYSTEM) { + userType = USER_TYPE_SECONDARY_USER; } - showMessageForFailedUnlockAttempt( - userId, expiringUser, mainUser, remainingBeforeWipe, failedAttempts); - Looper.loop(); - }, ThreadUtils.getBackgroundExecutor()); + } else if (expiringUser != UserHandle.USER_NULL) { + userType = USER_TYPE_WORK_PROFILE; + } // If USER_NULL, which shouldn't happen, leave it as USER_TYPE_PRIMARY + if (remainingBeforeWipe > 0) { + mView.showAlmostAtWipeDialog(failedAttempts, remainingBeforeWipe, userType); + } else { + // Too many attempts. The device will be wiped shortly. + Slog.i(TAG, "Too many unlock attempts; user " + expiringUser + " will be wiped!"); + mView.showWipeDialog(failedAttempts, userType); + } } mLockPatternUtils.reportFailedPasswordAttempt(userId); if (timeoutMs > 0) { @@ -1155,35 +1146,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard } } - @VisibleForTesting - void showMessageForFailedUnlockAttempt(int userId, int expiringUserId, Integer mainUserId, - int remainingBeforeWipe, int failedAttempts) { - int userType = USER_TYPE_PRIMARY; - if (expiringUserId == userId) { - int primaryUser = UserHandle.USER_SYSTEM; - if (Flags.headlessSingleUserFixes()) { - if (mainUserId != null) { - primaryUser = mainUserId; - } - } - // TODO: http://b/23522538 - if (expiringUserId != primaryUser) { - userType = USER_TYPE_SECONDARY_USER; - } - } else if (expiringUserId != UserHandle.USER_NULL) { - userType = USER_TYPE_WORK_PROFILE; - } // If USER_NULL, which shouldn't happen, leave it as USER_TYPE_PRIMARY - if (remainingBeforeWipe > 0) { - mView.showAlmostAtWipeDialog(failedAttempts, remainingBeforeWipe, - userType); - } else { - // Too many attempts. The device will be wiped shortly. - Slog.i(TAG, "Too many unlock attempts; user " + expiringUserId - + " will be wiped!"); - mView.showWipeDialog(failedAttempts, userType); - } - } - private void getCurrentSecurityController( KeyguardSecurityViewFlipperController.OnViewInflatedCallback onViewInflatedCallback) { mSecurityViewFlipperController diff --git a/packages/SystemUI/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractor.kt b/packages/SystemUI/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractor.kt index fcba425f0956..5df7fc9865ff 100644 --- a/packages/SystemUI/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/authentication/domain/interactor/AuthenticationInteractor.kt @@ -16,7 +16,6 @@ package com.android.systemui.authentication.domain.interactor -import android.app.admin.flags.Flags import android.os.UserHandle import com.android.internal.widget.LockPatternUtils import com.android.internal.widget.LockPatternView @@ -289,15 +288,9 @@ constructor( private suspend fun getWipeTarget(): WipeTarget { // Check which profile has the strictest policy for failed authentication attempts. val userToBeWiped = repository.getProfileWithMinFailedUnlockAttemptsForWipe() - val primaryUser = - if (Flags.headlessSingleUserFixes()) { - selectedUserInteractor.getMainUserId() ?: UserHandle.USER_SYSTEM - } else { - UserHandle.USER_SYSTEM - } return when (userToBeWiped) { selectedUserInteractor.getSelectedUserId() -> - if (userToBeWiped == primaryUser) { + if (userToBeWiped == UserHandle.USER_SYSTEM) { WipeTarget.WholeDevice } else { WipeTarget.User diff --git a/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt b/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt index a817b31070a1..37be1c6aa73d 100644 --- a/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/user/data/repository/UserRepository.kt @@ -18,7 +18,6 @@ package com.android.systemui.user.data.repository import android.annotation.SuppressLint -import android.annotation.UserIdInt import android.content.Context import android.content.pm.UserInfo import android.os.UserHandle @@ -108,22 +107,6 @@ interface UserRepository { fun isSimpleUserSwitcher(): Boolean fun isUserSwitcherEnabled(): Boolean - - /** - * Returns the user ID of the "main user" of the device. This user may have access to certain - * features which are limited to at most one user. There will never be more than one main user - * on a device. - * - * <p>Currently, on most form factors the first human user on the device will be the main user; - * in the future, the concept may be transferable, so a different user (or even no user at all) - * may be designated the main user instead. On other form factors there might not be a main - * user. - * - * <p> When the device doesn't have a main user, this will return {@code null}. - * - * @see [UserManager.getMainUser] - */ - @UserIdInt suspend fun getMainUserId(): Int? } @SysUISingleton @@ -256,10 +239,6 @@ constructor( return _userSwitcherSettings.value.isUserSwitcherEnabled } - override suspend fun getMainUserId(): Int? { - return withContext(backgroundDispatcher) { manager.mainUser?.identifier } - } - private suspend fun getSettings(): UserSwitcherSettingsModel { return withContext(backgroundDispatcher) { val isSimpleUserSwitcher = diff --git a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/SelectedUserInteractor.kt b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/SelectedUserInteractor.kt index a5728d061d48..38b381ac543e 100644 --- a/packages/SystemUI/src/com/android/systemui/user/domain/interactor/SelectedUserInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/user/domain/interactor/SelectedUserInteractor.kt @@ -2,27 +2,17 @@ package com.android.systemui.user.domain.interactor import android.annotation.UserIdInt import android.content.pm.UserInfo -import android.os.UserManager import com.android.keyguard.KeyguardUpdateMonitor import com.android.systemui.Flags.refactorGetCurrentUser import com.android.systemui.dagger.SysUISingleton -import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.user.data.repository.UserRepository -import com.google.common.util.concurrent.ListenableFuture import javax.inject.Inject -import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map -import kotlinx.coroutines.guava.future /** Encapsulates business logic to interact the selected user */ @SysUISingleton -class SelectedUserInteractor -@Inject -constructor( - @Application private val applicationScope: CoroutineScope, - private val repository: UserRepository -) { +class SelectedUserInteractor @Inject constructor(private val repository: UserRepository) { /** Flow providing the ID of the currently selected user. */ val selectedUser = repository.selectedUserInfo.map { it.id }.distinctUntilChanged() @@ -48,41 +38,4 @@ constructor( KeyguardUpdateMonitor.getCurrentUser() } } - - /** - * Returns the user ID of the "main user" of the device. This user may have access to certain - * features which are limited to at most one user. There will never be more than one main user - * on a device. - * - * <p>Currently, on most form factors the first human user on the device will be the main user; - * in the future, the concept may be transferable, so a different user (or even no user at all) - * may be designated the main user instead. On other form factors there might not be a main - * user. - * - * <p> When the device doesn't have a main user, this will return {@code null}. - * - * @see [UserManager.getMainUser] - */ - @UserIdInt - suspend fun getMainUserId(): Int? { - return repository.getMainUserId() - } - - /** - * Returns a [ListenableFuture] for the user ID of the "main user" of the device. This user may - * have access to certain features which are limited to at most one user. There will never be - * more than one main user on a device. - * - * <p>Currently, on most form factors the first human user on the device will be the main user; - * in the future, the concept may be transferable, so a different user (or even no user at all) - * may be designated the main user instead. On other form factors there might not be a main - * user. - * - * <p> When the device doesn't have a main user, this will return {@code null}. - * - * @see [UserManager.getMainUser] - */ - fun getMainUserIdAsync(): ListenableFuture<Int?> { - return applicationScope.future { getMainUserId() } - } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/SelectedUserInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/SelectedUserInteractorTest.kt index 78d4f02e74a9..140e919d613f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/SelectedUserInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/user/domain/interactor/SelectedUserInteractorTest.kt @@ -7,7 +7,6 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.user.data.repository.FakeUserRepository import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.runBlocking -import kotlinx.coroutines.test.TestCoroutineScope import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -24,7 +23,7 @@ class SelectedUserInteractorTest : SysuiTestCase() { @Before fun setUp() { userRepository.setUserInfos(USER_INFOS) - underTest = SelectedUserInteractor(TestCoroutineScope(), userRepository) + underTest = SelectedUserInteractor(userRepository) } @Test diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorFactory.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorFactory.kt index c7b06b6bcd8f..7eef704c1622 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorFactory.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissInteractorFactory.kt @@ -58,7 +58,7 @@ object KeyguardDismissInteractorFactory { bouncerRepository: FakeKeyguardBouncerRepository = FakeKeyguardBouncerRepository(), keyguardUpdateMonitor: KeyguardUpdateMonitor = mock(KeyguardUpdateMonitor::class.java), powerRepository: FakePowerRepository = FakePowerRepository(), - userRepository: FakeUserRepository = FakeUserRepository() + userRepository: FakeUserRepository = FakeUserRepository(), ): WithDependencies { val primaryBouncerInteractor = PrimaryBouncerInteractor( @@ -95,11 +95,7 @@ object KeyguardDismissInteractorFactory { PowerInteractorFactory.create( repository = powerRepository, ) - val selectedUserInteractor = - SelectedUserInteractor( - applicationScope = testScope.backgroundScope, - repository = userRepository - ) + val selectedUserInteractor = SelectedUserInteractor(repository = userRepository) return WithDependencies( trustRepository = trustRepository, keyguardRepository = keyguardRepository, diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/user/data/repository/FakeUserRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/user/data/repository/FakeUserRepository.kt index 1f2ecb7d172d..3e9ae4d2e354 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/user/data/repository/FakeUserRepository.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/user/data/repository/FakeUserRepository.kt @@ -37,7 +37,7 @@ import kotlinx.coroutines.yield class FakeUserRepository @Inject constructor() : UserRepository { companion object { // User id to represent a non system (human) user id. We presume this is the main user. - const val MAIN_USER_ID = 10 + private const val MAIN_USER_ID = 10 private const val DEFAULT_SELECTED_USER = 0 private val DEFAULT_SELECTED_USER_INFO = @@ -84,10 +84,6 @@ class FakeUserRepository @Inject constructor() : UserRepository { override var isRefreshUsersPaused: Boolean = false - override suspend fun getMainUserId(): Int? { - return MAIN_USER_ID - } - var refreshUsersCallCount: Int = 0 private set diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/user/domain/interactor/SelectedUserInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/user/domain/interactor/SelectedUserInteractorKosmos.kt index 9dddfcdddc8c..89672f109657 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/user/domain/interactor/SelectedUserInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/user/domain/interactor/SelectedUserInteractorKosmos.kt @@ -17,8 +17,6 @@ package com.android.systemui.user.domain.interactor import com.android.systemui.kosmos.Kosmos -import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.user.data.repository.userRepository -val Kosmos.selectedUserInteractor by - Kosmos.Fixture { SelectedUserInteractor(applicationCoroutineScope, userRepository) } +val Kosmos.selectedUserInteractor by Kosmos.Fixture { SelectedUserInteractor(userRepository) } |