diff options
author | Eugene Susla <eugenesusla@google.com> | 2020-11-12 12:11:50 -0800 |
---|---|---|
committer | Eugene Susla <eugenesusla@google.com> | 2020-11-16 23:46:02 +0000 |
commit | 3a45464a8bfce70390ce773d2747990734e69d96 (patch) | |
tree | d271ce5ae1d69b59b01158a541e33d9cda3a2c51 | |
parent | 8ef96a21e2e31396c4154f58569315de1ac9f5c5 (diff) | |
download | PackageInstaller-3a45464a8bfce70390ce773d2747990734e69d96.tar.gz |
Make auto revoke toggle disabled(instead of invisible) for exempted services
We need to support a use case of app sending the user to the auto revoke
exemption flow even in the case when the app is already exempted due to one
of the exempted service category.
For this we need to make sure the user isn't confused when asked to flip a toggle
that isn't present.
Making it disabled instead, will inform the user that it's already exempted without
allowing t user to unexempt it.
Test: manual
Bug: 172886604
Change-Id: I2ec0ea30bab1a8bae0937fa3226c011c7cf465bd
(cherry picked from commit c88faed3aaa7f697b7bf1426fed8883f042ddc9b)
4 files changed, 6 insertions, 7 deletions
diff --git a/src/com/android/permissioncontroller/permission/model/livedatatypes/AutoRevokeState.kt b/src/com/android/permissioncontroller/permission/model/livedatatypes/AutoRevokeState.kt index b0422f748..3ed6d3cfc 100644 --- a/src/com/android/permissioncontroller/permission/model/livedatatypes/AutoRevokeState.kt +++ b/src/com/android/permissioncontroller/permission/model/livedatatypes/AutoRevokeState.kt @@ -33,7 +33,7 @@ class AutoRevokeState( ) { /** - * If the auto revoke switch should be shown. + * If the auto revoke switch should be provided for the user to control. */ - val shouldShowSwitch = revocableGroupNames.isNotEmpty() + val shouldAllowUserToggle = revocableGroupNames.isNotEmpty() } diff --git a/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt b/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt index e03d18d2d..eb117c2e3 100644 --- a/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt +++ b/src/com/android/permissioncontroller/permission/service/AutoRevokePermissions.kt @@ -506,7 +506,6 @@ suspend fun isPackageAutoRevokeExempt( .getInitializedValue() if (whitelistAppOpMode == MODE_DEFAULT) { // Initial state - whitelist not explicitly overridden by either user or installer - if (DEBUG_OVERRIDE_THRESHOLDS) { // Suppress exemptions to allow debugging return false diff --git a/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java b/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java index cd8c27f5c..9c526d7df 100644 --- a/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java +++ b/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java @@ -348,7 +348,7 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader { AUTO_REVOKE_SWITCH_KEY); Preference autoRevokeSummary = autoRevokeCategory.findPreference(AUTO_REVOKE_SUMMARY_KEY); - if (!state.isEnabledGlobal() || !state.getShouldShowSwitch()) { + if (!state.isEnabledGlobal()) { autoRevokeCategory.setVisible(false); autoRevokeSwitch.setVisible(false); autoRevokeSummary.setVisible(false); @@ -357,6 +357,7 @@ public final class AppPermissionGroupsFragment extends SettingsWithLargeHeader { autoRevokeCategory.setVisible(true); autoRevokeSwitch.setVisible(true); autoRevokeSummary.setVisible(true); + autoRevokeSwitch.setEnabled(state.getShouldAllowUserToggle()); autoRevokeSwitch.setChecked(state.isEnabledForApp()); List<String> groupLabels = new ArrayList<>(); diff --git a/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java b/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java index 6de804109..9b143bf7b 100644 --- a/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java +++ b/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java @@ -23,7 +23,6 @@ import android.app.Activity; import android.app.Application; import android.content.Context; import android.content.Intent; -import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; @@ -54,7 +53,6 @@ import com.android.permissioncontroller.permission.model.livedatatypes.AutoRevok import com.android.permissioncontroller.permission.ui.ReviewPermissionsActivity; import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModel; import com.android.permissioncontroller.permission.ui.model.AppPermissionGroupsViewModelFactory; -import com.android.permissioncontroller.permission.ui.ReviewPermissionsActivity; import com.android.permissioncontroller.permission.utils.KotlinUtils; import com.android.permissioncontroller.permission.utils.LocationUtils; import com.android.permissioncontroller.permission.utils.SafetyNetLogger; @@ -420,11 +418,12 @@ public final class AppPermissionsFragment extends SettingsWithHeader if (state == null || autoRevokeSwitch == null) { return; } - if (!state.isEnabledGlobal() || !state.getShouldShowSwitch()) { + if (!state.isEnabledGlobal()) { autoRevokeSwitch.setVisible(false); return; } autoRevokeSwitch.setVisible(true); + autoRevokeSwitch.setEnabled(state.getShouldAllowUserToggle()); autoRevokeSwitch.setChecked(state.isEnabledForApp()); } |