diff options
author | 2020-03-11 05:40:27 +0000 | |
---|---|---|
committer | 2020-03-11 05:40:27 +0000 | |
commit | ac8f14f99f1026131fb9035fd16214cf659c5804 (patch) | |
tree | 99535e05b47731c722f82c2da511dc61095a34c6 | |
parent | 8d21d3e2cf5184e77c5397df7225976a6145f1ae (diff) | |
parent | fa487bd1396951308b91c9861c4f83eeb3b43f42 (diff) |
Merge "DO NOT MERGE Implement suggested changes in API review for permission mainline." into rvc-dev
6 files changed, 148 insertions, 15 deletions
diff --git a/service/java/com/android/permission/persistence/RuntimePermissionsPersistence.java b/service/java/com/android/permission/persistence/RuntimePermissionsPersistence.java index 0d163cf55..aedba290d 100644 --- a/service/java/com/android/permission/persistence/RuntimePermissionsPersistence.java +++ b/service/java/com/android/permission/persistence/RuntimePermissionsPersistence.java @@ -40,7 +40,7 @@ public interface RuntimePermissionsPersistence { * @return the runtime permissions read */ @Nullable - RuntimePermissionsState readAsUser(@NonNull UserHandle user); + RuntimePermissionsState readForUser(@NonNull UserHandle user); /** * Write the runtime permissions to persistence. @@ -50,7 +50,8 @@ public interface RuntimePermissionsPersistence { * @param runtimePermissions the runtime permissions to write * @param user the user to write for */ - void writeAsUser(@NonNull RuntimePermissionsState runtimePermissions, @NonNull UserHandle user); + void writeForUser(@NonNull RuntimePermissionsState runtimePermissions, + @NonNull UserHandle user); /** * Delete the runtime permissions from persistence. @@ -59,7 +60,7 @@ public interface RuntimePermissionsPersistence { * * @param user the user to delete for */ - void deleteAsUser(@NonNull UserHandle user); + void deleteForUser(@NonNull UserHandle user); /** * Create a new instance of {@link RuntimePermissionsPersistence} implementation. diff --git a/service/java/com/android/permission/persistence/RuntimePermissionsPersistenceImpl.java b/service/java/com/android/permission/persistence/RuntimePermissionsPersistenceImpl.java index 0ac0c7309..e43f59a33 100644 --- a/service/java/com/android/permission/persistence/RuntimePermissionsPersistenceImpl.java +++ b/service/java/com/android/permission/persistence/RuntimePermissionsPersistenceImpl.java @@ -67,7 +67,7 @@ public class RuntimePermissionsPersistenceImpl implements RuntimePermissionsPers @Nullable @Override - public RuntimePermissionsState readAsUser(@NonNull UserHandle user) { + public RuntimePermissionsState readForUser(@NonNull UserHandle user) { File file = getFile(user); try (FileInputStream inputStream = new AtomicFile(file).openRead()) { XmlPullParser parser = Xml.newPullParser(); @@ -172,7 +172,7 @@ public class RuntimePermissionsPersistenceImpl implements RuntimePermissionsPers } @Override - public void writeAsUser(@NonNull RuntimePermissionsState runtimePermissions, + public void writeForUser(@NonNull RuntimePermissionsState runtimePermissions, @NonNull UserHandle user) { File file = getFile(user); AtomicFile atomicFile = new AtomicFile(file); @@ -252,7 +252,7 @@ public class RuntimePermissionsPersistenceImpl implements RuntimePermissionsPers } @Override - public void deleteAsUser(@NonNull UserHandle user) { + public void deleteForUser(@NonNull UserHandle user) { getFile(user).delete(); } diff --git a/service/java/com/android/permission/persistence/RuntimePermissionsState.java b/service/java/com/android/permission/persistence/RuntimePermissionsState.java index cd2750a0b..c6bfc6d32 100644 --- a/service/java/com/android/permission/persistence/RuntimePermissionsState.java +++ b/service/java/com/android/permission/persistence/RuntimePermissionsState.java @@ -23,6 +23,7 @@ import android.annotation.SystemApi.Client; import java.util.List; import java.util.Map; +import java.util.Objects; /** * State of all runtime permissions. @@ -61,6 +62,14 @@ public final class RuntimePermissionsState { @NonNull private final Map<String, List<PermissionState>> mSharedUserPermissions; + /** + * Create a new instance of this class. + * + * @param version the version of the runtime permissions + * @param fingerprint the fingerprint of the runtime permissions + * @param packagePermissions the runtime permissions by packages + * @param sharedUserPermissions the runtime permissions by shared users + */ public RuntimePermissionsState(int version, @Nullable String fingerprint, @NonNull Map<String, List<PermissionState>> packagePermissions, @NonNull Map<String, List<PermissionState>> sharedUserPermissions) { @@ -70,32 +79,72 @@ public final class RuntimePermissionsState { mSharedUserPermissions = sharedUserPermissions; } + /** + * Get the version of the runtime permissions. + * + * @return the version of the runtime permissions + */ public int getVersion() { return mVersion; } + /** + * Get the fingerprint of the runtime permissions. + * + * @return the fingerprint of the runtime permissions + */ @Nullable public String getFingerprint() { return mFingerprint; } + /** + * Get the runtime permissions by packages. + * + * @return the runtime permissions by packages + */ @NonNull public Map<String, List<PermissionState>> getPackagePermissions() { return mPackagePermissions; } + /** + * Get the runtime permissions by shared users. + * + * @return the runtime permissions by shared users + */ @NonNull public Map<String, List<PermissionState>> getSharedUserPermissions() { return mSharedUserPermissions; } + @Override + public boolean equals(Object object) { + if (this == object) { + return true; + } + if (object == null || getClass() != object.getClass()) { + return false; + } + RuntimePermissionsState that = (RuntimePermissionsState) object; + return mVersion == that.mVersion + && Objects.equals(mFingerprint, that.mFingerprint) + && Objects.equals(mPackagePermissions, that.mPackagePermissions) + && Objects.equals(mSharedUserPermissions, that.mSharedUserPermissions); + } + + @Override + public int hashCode() { + return Objects.hash(mVersion, mFingerprint, mPackagePermissions, mSharedUserPermissions); + } + /** * State of a single permission. */ - public static class PermissionState { + public static final class PermissionState { /** - * Name of the permission. + * The name of the permission. */ @NonNull private final String mName; @@ -106,27 +155,68 @@ public final class RuntimePermissionsState { private final boolean mGranted; /** - * Flags of the permission. + * The flags of the permission. */ private final int mFlags; + /** + * Create a new instance of this class. + * + * @param name the name of the permission + * @param granted whether the permission is granted + * @param flags the flags of the permission + */ public PermissionState(@NonNull String name, boolean granted, int flags) { mName = name; mGranted = granted; mFlags = flags; } + /** + * Get the name of the permission. + * + * @return the name of the permission + */ @NonNull public String getName() { return mName; } + /** + * Get whether the permission is granted. + * + * @return whether the permission is granted + */ public boolean isGranted() { return mGranted; } + /** + * Get the flags of the permission. + * + * @return the flags of the permission + */ public int getFlags() { return mFlags; } + + @Override + public boolean equals(Object object) { + if (this == object) { + return true; + } + if (object == null || getClass() != object.getClass()) { + return false; + } + PermissionState that = (PermissionState) object; + return mGranted == that.mGranted + && mFlags == that.mFlags + && Objects.equals(mName, that.mName); + } + + @Override + public int hashCode() { + return Objects.hash(mName, mGranted, mFlags); + } } } diff --git a/service/java/com/android/role/persistence/RolesPersistence.java b/service/java/com/android/role/persistence/RolesPersistence.java index 64d6545c8..2e5a28aa1 100644 --- a/service/java/com/android/role/persistence/RolesPersistence.java +++ b/service/java/com/android/role/persistence/RolesPersistence.java @@ -40,7 +40,7 @@ public interface RolesPersistence { * @return the roles read */ @Nullable - RolesState readAsUser(@NonNull UserHandle user); + RolesState readForUser(@NonNull UserHandle user); /** * Write the roles to persistence. @@ -50,7 +50,7 @@ public interface RolesPersistence { * @param roles the roles to write * @param user the user to write for */ - void writeAsUser(@NonNull RolesState roles, @NonNull UserHandle user); + void writeForUser(@NonNull RolesState roles, @NonNull UserHandle user); /** * Delete the roles from persistence. @@ -59,7 +59,7 @@ public interface RolesPersistence { * * @param user the user to delete for */ - void deleteAsUser(@NonNull UserHandle user); + void deleteForUser(@NonNull UserHandle user); /** * Create a new instance of {@link RolesPersistence} implementation. diff --git a/service/java/com/android/role/persistence/RolesPersistenceImpl.java b/service/java/com/android/role/persistence/RolesPersistenceImpl.java index 2346c11e5..f66257f13 100644 --- a/service/java/com/android/role/persistence/RolesPersistenceImpl.java +++ b/service/java/com/android/role/persistence/RolesPersistenceImpl.java @@ -65,7 +65,7 @@ public class RolesPersistenceImpl implements RolesPersistence { @Nullable @Override - public RolesState readAsUser(@NonNull UserHandle user) { + public RolesState readForUser(@NonNull UserHandle user) { File file = getFile(user); try (FileInputStream inputStream = new AtomicFile(file).openRead()) { XmlPullParser parser = Xml.newPullParser(); @@ -146,7 +146,7 @@ public class RolesPersistenceImpl implements RolesPersistence { } @Override - public void writeAsUser(@NonNull RolesState roles, @NonNull UserHandle user) { + public void writeForUser(@NonNull RolesState roles, @NonNull UserHandle user) { File file = getFile(user); AtomicFile atomicFile = new AtomicFile(file); FileOutputStream outputStream = null; @@ -205,7 +205,7 @@ public class RolesPersistenceImpl implements RolesPersistence { } @Override - public void deleteAsUser(@NonNull UserHandle user) { + public void deleteForUser(@NonNull UserHandle user) { getFile(user).delete(); } diff --git a/service/java/com/android/role/persistence/RolesState.java b/service/java/com/android/role/persistence/RolesState.java index 7da9d11f1..f61efa0e8 100644 --- a/service/java/com/android/role/persistence/RolesState.java +++ b/service/java/com/android/role/persistence/RolesState.java @@ -22,6 +22,7 @@ import android.annotation.SystemApi; import android.annotation.SystemApi.Client; import java.util.Map; +import java.util.Objects; import java.util.Set; /** @@ -50,6 +51,13 @@ public final class RolesState { @NonNull private final Map<String, Set<String>> mRoles; + /** + * Create a new instance of this class. + * + * @param version the version of the roles + * @param packagesHash the hash of all packages in the system + * @param roles the roles + */ public RolesState(int version, @Nullable String packagesHash, @NonNull Map<String, Set<String>> roles) { mVersion = version; @@ -57,17 +65,51 @@ public final class RolesState { mRoles = roles; } + /** + * Get the version of the roles. + * + * @return the version of the roles + */ public int getVersion() { return mVersion; } + /** + * Get the hash of all packages in the system. + * + * @return the hash of all packages in the system + */ @Nullable public String getPackagesHash() { return mPackagesHash; } + /** + * Get the roles. + * + * @return the roles + */ @NonNull public Map<String, Set<String>> getRoles() { return mRoles; } + + @Override + public boolean equals(Object object) { + if (this == object) { + return true; + } + if (object == null || getClass() != object.getClass()) { + return false; + } + RolesState that = (RolesState) object; + return mVersion == that.mVersion + && Objects.equals(mPackagesHash, that.mPackagesHash) + && Objects.equals(mRoles, that.mRoles); + } + + @Override + public int hashCode() { + return Objects.hash(mVersion, mPackagesHash, mRoles); + } } |