Loading packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt +14 −20 Original line number Diff line number Diff line Loading @@ -20,13 +20,11 @@ import android.app.PendingIntent import android.app.backup.BackupManager import android.content.BroadcastReceiver import android.content.ComponentName import android.content.ContentResolver import android.content.Context import android.content.Intent import android.content.IntentFilter import android.database.ContentObserver import android.net.Uri import android.os.Environment import android.os.UserHandle import android.service.controls.Control import android.service.controls.actions.ControlAction Loading @@ -43,6 +41,7 @@ import com.android.systemui.controls.ui.ControlsUiController import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dump.DumpManager import com.android.systemui.settings.UserFileManager import com.android.systemui.settings.UserTracker import com.android.systemui.statusbar.policy.DeviceControlsControllerImpl.Companion.PREFS_CONTROLS_FILE import com.android.systemui.statusbar.policy.DeviceControlsControllerImpl.Companion.PREFS_CONTROLS_SEEDING_COMPLETED Loading @@ -61,6 +60,7 @@ class ControlsControllerImpl @Inject constructor ( private val bindingController: ControlsBindingController, private val listingController: ControlsListingController, private val broadcastDispatcher: BroadcastDispatcher, private val userFileManager: UserFileManager, optionalWrapper: Optional<ControlsFavoritePersistenceWrapper>, dumpManager: DumpManager, userTracker: UserTracker Loading @@ -84,15 +84,12 @@ class ControlsControllerImpl @Inject constructor ( override val currentUserId get() = currentUser.identifier private val contentResolver: ContentResolver get() = context.contentResolver private val persistenceWrapper: ControlsFavoritePersistenceWrapper @VisibleForTesting internal var auxiliaryPersistenceWrapper: AuxiliaryPersistenceWrapper init { userStructure = UserStructure(context, currentUser) userStructure = UserStructure(context, currentUser, userFileManager) persistenceWrapper = optionalWrapper.orElseGet { ControlsFavoritePersistenceWrapper( Loading @@ -111,7 +108,7 @@ class ControlsControllerImpl @Inject constructor ( private fun setValuesForUser(newUser: UserHandle) { Log.d(TAG, "Changing to user: $newUser") currentUser = newUser userStructure = UserStructure(context, currentUser) userStructure = UserStructure(context, currentUser, userFileManager) persistenceWrapper.changeFileAndBackupManager( userStructure.file, BackupManager(userStructure.userContext) Loading Loading @@ -187,8 +184,11 @@ class ControlsControllerImpl @Inject constructor ( // When a component is uninstalled, allow seeding to happen again if the user // reinstalls the app val prefs = userStructure.userContext.getSharedPreferences( PREFS_CONTROLS_FILE, Context.MODE_PRIVATE) val prefs = userFileManager.getSharedPreferences( PREFS_CONTROLS_FILE, Context.MODE_PRIVATE, userTracker.userId ) val completedSeedingPackageSet = prefs.getStringSet( PREFS_CONTROLS_SEEDING_COMPLETED, mutableSetOf<String>()) val servicePackageSet = serviceInfoSet.map { it.packageName } Loading Loading @@ -575,18 +575,12 @@ class ControlsControllerImpl @Inject constructor ( } } class UserStructure(context: Context, user: UserHandle) { class UserStructure(context: Context, user: UserHandle, userFileManager: UserFileManager) { val userContext = context.createContextAsUser(user, 0) val file = Environment.buildPath( userContext.filesDir, ControlsFavoritePersistenceWrapper.FILE_NAME ) val auxiliaryFile = Environment.buildPath( userContext.filesDir, AuxiliaryPersistenceWrapper.AUXILIARY_FILE_NAME ) val file = userFileManager.getFile(ControlsFavoritePersistenceWrapper.FILE_NAME, user.identifier) val auxiliaryFile = userFileManager.getFile(AuxiliaryPersistenceWrapper.AUXILIARY_FILE_NAME, user.identifier) } /** Loading packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt +23 −3 Original line number Diff line number Diff line Loading @@ -37,9 +37,14 @@ import com.android.systemui.controls.ControlsServiceInfo import com.android.systemui.controls.management.ControlsListingController import com.android.systemui.controls.ui.ControlsUiController import com.android.systemui.dump.DumpManager import com.android.systemui.settings.UserFileManager import com.android.systemui.settings.UserTracker import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.time.FakeSystemClock import com.google.common.truth.Truth.assertThat import java.io.File import java.util.Optional import java.util.function.Consumer import org.junit.After import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse Loading @@ -50,20 +55,20 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentCaptor import org.mockito.ArgumentMatchers import org.mockito.ArgumentMatchers.anyString import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito import org.mockito.Mockito.anyInt import org.mockito.Mockito.`when` import org.mockito.Mockito.inOrder import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.reset import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.verifyNoMoreInteractions import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations import java.util.Optional import java.util.function.Consumer @SmallTest @RunWith(AndroidTestingRunner::class) Loading @@ -85,6 +90,8 @@ class ControlsControllerImplTest : SysuiTestCase() { private lateinit var listingController: ControlsListingController @Mock(stubOnly = true) private lateinit var userTracker: UserTracker @Mock private lateinit var userFileManager: UserFileManager @Captor private lateinit var structureInfoCaptor: ArgumentCaptor<StructureInfo> Loading Loading @@ -153,6 +160,9 @@ class ControlsControllerImplTest : SysuiTestCase() { canceller = DidRunRunnable() `when`(bindingController.bindAndLoad(any(), any())).thenReturn(canceller) `when`(userFileManager.getFile(anyString(), anyInt())).thenReturn(mock(File::class.java)) `when`(userFileManager.getSharedPreferences(anyString(), anyInt(), anyInt())) .thenReturn(context.getSharedPreferences("test", Context.MODE_PRIVATE)) controller = ControlsControllerImpl( wrapper, Loading @@ -161,6 +171,7 @@ class ControlsControllerImplTest : SysuiTestCase() { bindingController, listingController, broadcastDispatcher, userFileManager, Optional.of(persistenceWrapper), mock(DumpManager::class.java), userTracker Loading Loading @@ -217,6 +228,7 @@ class ControlsControllerImplTest : SysuiTestCase() { bindingController, listingController, broadcastDispatcher, userFileManager, Optional.of(persistenceWrapper), mock(DumpManager::class.java), userTracker Loading Loading @@ -911,6 +923,14 @@ class ControlsControllerImplTest : SysuiTestCase() { assertTrue(controller.getFavoritesForStructure(TEST_COMPONENT_2, TEST_STRUCTURE).isEmpty()) } @Test fun testUserStructure() { val userStructure = UserStructure(context, context.user, userFileManager) verify(userFileManager, times(2)) .getFile(ControlsFavoritePersistenceWrapper.FILE_NAME, context.user.identifier) assertThat(userStructure.file).isNotNull() } } private class DidRunRunnable() : Runnable { Loading Loading
packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt +14 −20 Original line number Diff line number Diff line Loading @@ -20,13 +20,11 @@ import android.app.PendingIntent import android.app.backup.BackupManager import android.content.BroadcastReceiver import android.content.ComponentName import android.content.ContentResolver import android.content.Context import android.content.Intent import android.content.IntentFilter import android.database.ContentObserver import android.net.Uri import android.os.Environment import android.os.UserHandle import android.service.controls.Control import android.service.controls.actions.ControlAction Loading @@ -43,6 +41,7 @@ import com.android.systemui.controls.ui.ControlsUiController import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dump.DumpManager import com.android.systemui.settings.UserFileManager import com.android.systemui.settings.UserTracker import com.android.systemui.statusbar.policy.DeviceControlsControllerImpl.Companion.PREFS_CONTROLS_FILE import com.android.systemui.statusbar.policy.DeviceControlsControllerImpl.Companion.PREFS_CONTROLS_SEEDING_COMPLETED Loading @@ -61,6 +60,7 @@ class ControlsControllerImpl @Inject constructor ( private val bindingController: ControlsBindingController, private val listingController: ControlsListingController, private val broadcastDispatcher: BroadcastDispatcher, private val userFileManager: UserFileManager, optionalWrapper: Optional<ControlsFavoritePersistenceWrapper>, dumpManager: DumpManager, userTracker: UserTracker Loading @@ -84,15 +84,12 @@ class ControlsControllerImpl @Inject constructor ( override val currentUserId get() = currentUser.identifier private val contentResolver: ContentResolver get() = context.contentResolver private val persistenceWrapper: ControlsFavoritePersistenceWrapper @VisibleForTesting internal var auxiliaryPersistenceWrapper: AuxiliaryPersistenceWrapper init { userStructure = UserStructure(context, currentUser) userStructure = UserStructure(context, currentUser, userFileManager) persistenceWrapper = optionalWrapper.orElseGet { ControlsFavoritePersistenceWrapper( Loading @@ -111,7 +108,7 @@ class ControlsControllerImpl @Inject constructor ( private fun setValuesForUser(newUser: UserHandle) { Log.d(TAG, "Changing to user: $newUser") currentUser = newUser userStructure = UserStructure(context, currentUser) userStructure = UserStructure(context, currentUser, userFileManager) persistenceWrapper.changeFileAndBackupManager( userStructure.file, BackupManager(userStructure.userContext) Loading Loading @@ -187,8 +184,11 @@ class ControlsControllerImpl @Inject constructor ( // When a component is uninstalled, allow seeding to happen again if the user // reinstalls the app val prefs = userStructure.userContext.getSharedPreferences( PREFS_CONTROLS_FILE, Context.MODE_PRIVATE) val prefs = userFileManager.getSharedPreferences( PREFS_CONTROLS_FILE, Context.MODE_PRIVATE, userTracker.userId ) val completedSeedingPackageSet = prefs.getStringSet( PREFS_CONTROLS_SEEDING_COMPLETED, mutableSetOf<String>()) val servicePackageSet = serviceInfoSet.map { it.packageName } Loading Loading @@ -575,18 +575,12 @@ class ControlsControllerImpl @Inject constructor ( } } class UserStructure(context: Context, user: UserHandle) { class UserStructure(context: Context, user: UserHandle, userFileManager: UserFileManager) { val userContext = context.createContextAsUser(user, 0) val file = Environment.buildPath( userContext.filesDir, ControlsFavoritePersistenceWrapper.FILE_NAME ) val auxiliaryFile = Environment.buildPath( userContext.filesDir, AuxiliaryPersistenceWrapper.AUXILIARY_FILE_NAME ) val file = userFileManager.getFile(ControlsFavoritePersistenceWrapper.FILE_NAME, user.identifier) val auxiliaryFile = userFileManager.getFile(AuxiliaryPersistenceWrapper.AUXILIARY_FILE_NAME, user.identifier) } /** Loading
packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt +23 −3 Original line number Diff line number Diff line Loading @@ -37,9 +37,14 @@ import com.android.systemui.controls.ControlsServiceInfo import com.android.systemui.controls.management.ControlsListingController import com.android.systemui.controls.ui.ControlsUiController import com.android.systemui.dump.DumpManager import com.android.systemui.settings.UserFileManager import com.android.systemui.settings.UserTracker import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.time.FakeSystemClock import com.google.common.truth.Truth.assertThat import java.io.File import java.util.Optional import java.util.function.Consumer import org.junit.After import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse Loading @@ -50,20 +55,20 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentCaptor import org.mockito.ArgumentMatchers import org.mockito.ArgumentMatchers.anyString import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito import org.mockito.Mockito.anyInt import org.mockito.Mockito.`when` import org.mockito.Mockito.inOrder import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.reset import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.verifyNoMoreInteractions import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations import java.util.Optional import java.util.function.Consumer @SmallTest @RunWith(AndroidTestingRunner::class) Loading @@ -85,6 +90,8 @@ class ControlsControllerImplTest : SysuiTestCase() { private lateinit var listingController: ControlsListingController @Mock(stubOnly = true) private lateinit var userTracker: UserTracker @Mock private lateinit var userFileManager: UserFileManager @Captor private lateinit var structureInfoCaptor: ArgumentCaptor<StructureInfo> Loading Loading @@ -153,6 +160,9 @@ class ControlsControllerImplTest : SysuiTestCase() { canceller = DidRunRunnable() `when`(bindingController.bindAndLoad(any(), any())).thenReturn(canceller) `when`(userFileManager.getFile(anyString(), anyInt())).thenReturn(mock(File::class.java)) `when`(userFileManager.getSharedPreferences(anyString(), anyInt(), anyInt())) .thenReturn(context.getSharedPreferences("test", Context.MODE_PRIVATE)) controller = ControlsControllerImpl( wrapper, Loading @@ -161,6 +171,7 @@ class ControlsControllerImplTest : SysuiTestCase() { bindingController, listingController, broadcastDispatcher, userFileManager, Optional.of(persistenceWrapper), mock(DumpManager::class.java), userTracker Loading Loading @@ -217,6 +228,7 @@ class ControlsControllerImplTest : SysuiTestCase() { bindingController, listingController, broadcastDispatcher, userFileManager, Optional.of(persistenceWrapper), mock(DumpManager::class.java), userTracker Loading Loading @@ -911,6 +923,14 @@ class ControlsControllerImplTest : SysuiTestCase() { assertTrue(controller.getFavoritesForStructure(TEST_COMPONENT_2, TEST_STRUCTURE).isEmpty()) } @Test fun testUserStructure() { val userStructure = UserStructure(context, context.user, userFileManager) verify(userFileManager, times(2)) .getFile(ControlsFavoritePersistenceWrapper.FILE_NAME, context.user.identifier) assertThat(userStructure.file).isNotNull() } } private class DidRunRunnable() : Runnable { Loading