Loading apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsPersistence.java +4 −3 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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. Loading @@ -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. Loading apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsPersistenceImpl.java +3 −3 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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); Loading Loading @@ -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(); } Loading apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsState.java +93 −3 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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) { Loading @@ -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; Loading @@ -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); } } } apex/permission/service/java/com/android/role/persistence/RolesPersistence.java +3 −3 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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. Loading @@ -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. Loading apex/permission/service/java/com/android/role/persistence/RolesPersistenceImpl.java +3 −3 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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; Loading Loading @@ -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(); } Loading Loading
apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsPersistence.java +4 −3 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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. Loading @@ -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. Loading
apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsPersistenceImpl.java +3 −3 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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); Loading Loading @@ -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(); } Loading
apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsState.java +93 −3 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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) { Loading @@ -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; Loading @@ -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); } } }
apex/permission/service/java/com/android/role/persistence/RolesPersistence.java +3 −3 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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. Loading @@ -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. Loading
apex/permission/service/java/com/android/role/persistence/RolesPersistenceImpl.java +3 −3 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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; Loading Loading @@ -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(); } Loading