Merge "Update USER_SET flag when user toggles FSI permission" into udc-dev
This commit is contained in:
@@ -18,5 +18,6 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.android.settingslib.spaprivileged">
|
package="com.android.settingslib.spaprivileged">
|
||||||
<uses-permission android:name="android.permission.MANAGE_USERS" />
|
<uses-permission android:name="android.permission.MANAGE_USERS" />
|
||||||
|
<uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS" />
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
||||||
|
|||||||
@@ -16,11 +16,14 @@
|
|||||||
|
|
||||||
package com.android.settingslib.spaprivileged.model.app
|
package com.android.settingslib.spaprivileged.model.app
|
||||||
|
|
||||||
|
import android.app.AppOpsManager;
|
||||||
import android.app.AppOpsManager.MODE_ALLOWED
|
import android.app.AppOpsManager.MODE_ALLOWED
|
||||||
import android.app.AppOpsManager.MODE_ERRORED
|
import android.app.AppOpsManager.MODE_ERRORED
|
||||||
import android.app.AppOpsManager.Mode
|
import android.app.AppOpsManager.Mode
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.ApplicationInfo
|
import android.content.pm.ApplicationInfo
|
||||||
|
import android.content.pm.PackageManager
|
||||||
|
import android.os.UserHandle
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.map
|
import androidx.lifecycle.map
|
||||||
@@ -44,17 +47,25 @@ class AppOpsController(
|
|||||||
private val setModeByUid: Boolean = false,
|
private val setModeByUid: Boolean = false,
|
||||||
) : IAppOpsController {
|
) : IAppOpsController {
|
||||||
private val appOpsManager = context.appOpsManager
|
private val appOpsManager = context.appOpsManager
|
||||||
|
private val packageManager = context.packageManager
|
||||||
|
|
||||||
override val mode: LiveData<Int>
|
override val mode: LiveData<Int>
|
||||||
get() = _mode
|
get() = _mode
|
||||||
|
|
||||||
override fun setAllowed(allowed: Boolean) {
|
override fun setAllowed(allowed: Boolean) {
|
||||||
val mode = if (allowed) MODE_ALLOWED else modeForNotAllowed
|
val mode = if (allowed) MODE_ALLOWED else modeForNotAllowed
|
||||||
|
|
||||||
if (setModeByUid) {
|
if (setModeByUid) {
|
||||||
appOpsManager.setUidMode(op, app.uid, mode)
|
appOpsManager.setUidMode(op, app.uid, mode)
|
||||||
} else {
|
} else {
|
||||||
appOpsManager.setMode(op, app.uid, app.packageName, mode)
|
appOpsManager.setMode(op, app.uid, app.packageName, mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val permission = AppOpsManager.opToPermission(op)
|
||||||
|
packageManager.updatePermissionFlags(permission, app.packageName,
|
||||||
|
PackageManager.FLAG_PERMISSION_USER_SET, PackageManager.FLAG_PERMISSION_USER_SET,
|
||||||
|
UserHandle.getUserHandleForUid(app.uid))
|
||||||
|
|
||||||
_mode.postValue(mode)
|
_mode.postValue(mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import android.app.AppOpsManager.MODE_ERRORED
|
|||||||
import android.app.AppOpsManager.MODE_IGNORED
|
import android.app.AppOpsManager.MODE_IGNORED
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.ApplicationInfo
|
import android.content.pm.ApplicationInfo
|
||||||
|
import android.content.pm.PackageManager
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import com.android.settingslib.spaprivileged.framework.common.appOpsManager
|
import com.android.settingslib.spaprivileged.framework.common.appOpsManager
|
||||||
@@ -31,6 +32,10 @@ import org.junit.Rule
|
|||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.mockito.Mock
|
import org.mockito.Mock
|
||||||
|
import org.mockito.Mockito.any
|
||||||
|
import org.mockito.Mockito.anyInt
|
||||||
|
import org.mockito.Mockito.anyString
|
||||||
|
import org.mockito.Mockito.doNothing
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.Mockito.`when` as whenever
|
import org.mockito.Mockito.`when` as whenever
|
||||||
import org.mockito.Spy
|
import org.mockito.Spy
|
||||||
@@ -45,9 +50,13 @@ class AppOpsControllerTest {
|
|||||||
|
|
||||||
@Mock private lateinit var appOpsManager: AppOpsManager
|
@Mock private lateinit var appOpsManager: AppOpsManager
|
||||||
|
|
||||||
|
@Mock private lateinit var packageManager: PackageManager
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
whenever(context.appOpsManager).thenReturn(appOpsManager)
|
whenever(context.appOpsManager).thenReturn(appOpsManager)
|
||||||
|
doNothing().`when`(packageManager)
|
||||||
|
.updatePermissionFlags(anyString(), anyString(), anyInt(), anyInt(), any())
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user