Merge "Introduce AttributionLabelledGroupUsage" into sc-dev
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/data/HibernationSettingStateLiveData.kt b/PermissionController/src/com/android/permissioncontroller/permission/data/HibernationSettingStateLiveData.kt
index bb49e15..1868687 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/data/HibernationSettingStateLiveData.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/data/HibernationSettingStateLiveData.kt
@@ -27,7 +27,6 @@
import com.android.permissioncontroller.permission.model.livedatatypes.HibernationSettingState
import com.android.permissioncontroller.hibernation.ExemptServicesLiveData
import com.android.permissioncontroller.hibernation.HibernationEnabledLiveData
-import com.android.permissioncontroller.hibernation.isHibernationEnabled
import com.android.permissioncontroller.hibernation.isHibernationJobEnabled
import com.android.permissioncontroller.hibernation.isPackageHibernationExemptByUser
import com.android.permissioncontroller.hibernation.isPackageHibernationExemptBySystem
@@ -102,8 +101,7 @@
}
}
- postValue(HibernationSettingState(isHibernationJobEnabled(), canHibernate, revocableGroups,
- isHibernationEnabled() || revocableGroups.isNotEmpty()))
+ postValue(HibernationSettingState(isHibernationJobEnabled(), canHibernate, revocableGroups))
}
override fun onOpChanged(op: String?, packageName: String?) {
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/HibernationSettingState.kt b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/HibernationSettingState.kt
index 636f199..69bbdce 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/HibernationSettingState.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/HibernationSettingState.kt
@@ -25,12 +25,9 @@
* @param revocableGroupNames A list of which permission groups of this package are eligible for
* auto-revoke. A permission group is auto-revocable if it does not contain a default granted
* permission.
- * @param shouldAllowUserToggle If the hibernation/auto-revoke switch should be provided for the
- * user to control.
*/
data class HibernationSettingState(
val isEnabledGlobal: Boolean,
val isEnabledForApp: Boolean,
- val revocableGroupNames: List<String>,
- val shouldAllowUserToggle: Boolean
+ val revocableGroupNames: List<String>
)
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
index f2466a4..dfcb39c 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionGroupsFragment.java
@@ -551,7 +551,7 @@
Preference autoRevokeSummary = autoRevokeCategory.findPreference(
AUTO_REVOKE_SUMMARY_KEY);
- if (!state.isEnabledGlobal()) {
+ if (!state.isEnabledGlobal() || state.getRevocableGroupNames().isEmpty()) {
autoRevokeCategory.setVisible(false);
autoRevokeSwitch.setVisible(false);
autoRevokeSummary.setVisible(false);
@@ -560,7 +560,6 @@
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/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java
index 92f595e..2cd2773 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/television/AppPermissionsFragment.java
@@ -418,12 +418,11 @@
if (state == null || autoRevokeSwitch == null) {
return;
}
- if (!state.isEnabledGlobal()) {
+ if (!state.isEnabledGlobal() || state.getRevocableGroupNames().isEmpty()) {
autoRevokeSwitch.setVisible(false);
return;
}
autoRevokeSwitch.setVisible(true);
- autoRevokeSwitch.setEnabled(state.getShouldAllowUserToggle());
autoRevokeSwitch.setChecked(state.isEnabledForApp());
}
diff --git a/service/java/com/android/role/RoleService.java b/service/java/com/android/role/RoleService.java
index 5df76c4..802e38b 100644
--- a/service/java/com/android/role/RoleService.java
+++ b/service/java/com/android/role/RoleService.java
@@ -704,6 +704,12 @@
@Override
public String getSmsRoleHolder(int userId) {
+ enforceCrossUserPermission(userId, false, "getSmsRoleHolder");
+ if (!isUserExistent(userId)) {
+ Log.e(LOG_TAG, "user " + userId + " does not exist");
+ return null;
+ }
+
final long identity = Binder.clearCallingIdentity();
try {
return CollectionUtils.firstOrNull(getRoleHoldersAsUser(RoleManager.ROLE_SMS,