Merge "[Home Controls] Update home controls file usage." into tm-qpr-dev
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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(
|
||||
@@ -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)
|
||||
@@ -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 }
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -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>
|
||||
@@ -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,
|
||||
@@ -161,6 +171,7 @@ class ControlsControllerImplTest : SysuiTestCase() {
|
||||
bindingController,
|
||||
listingController,
|
||||
broadcastDispatcher,
|
||||
userFileManager,
|
||||
Optional.of(persistenceWrapper),
|
||||
mock(DumpManager::class.java),
|
||||
userTracker
|
||||
@@ -217,6 +228,7 @@ class ControlsControllerImplTest : SysuiTestCase() {
|
||||
bindingController,
|
||||
listingController,
|
||||
broadcastDispatcher,
|
||||
userFileManager,
|
||||
Optional.of(persistenceWrapper),
|
||||
mock(DumpManager::class.java),
|
||||
userTracker
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user