Loading services/core/java/com/android/server/appop/AppOpMigrationHelper.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -43,4 +43,9 @@ public interface AppOpMigrationHelper { * @return AppOps file version, the version is same for all the user. * @return AppOps file version, the version is same for all the user. */ */ int getLegacyAppOpVersion(); int getLegacyAppOpVersion(); /** * @return Whether app-op state exists or not. */ boolean hasLegacyAppOpState(); } } services/core/java/com/android/server/appop/AppOpMigrationHelperImpl.java +18 −1 Original line number Original line Diff line number Diff line Loading @@ -77,7 +77,19 @@ public class AppOpMigrationHelperImpl implements AppOpMigrationHelper { new SparseArray<>(); new SparseArray<>(); LegacyAppOpStateParser parser = new LegacyAppOpStateParser(); LegacyAppOpStateParser parser = new LegacyAppOpStateParser(); mVersionAtBoot = parser.readState(appOpFile, uidAppOpModes, packageAppOpModes); final int version = parser.readState(appOpFile, uidAppOpModes, packageAppOpModes); // -1 No app ops data available // 0 appops.xml exist w/o any version switch (version) { case -2: mVersionAtBoot = -1; break; case -1: mVersionAtBoot = 0; break; default: mVersionAtBoot = version; } mAppIdAppOpModes = getAppIdAppOpModes(uidAppOpModes); mAppIdAppOpModes = getAppIdAppOpModes(uidAppOpModes); mPackageAppOpModes = getPackageAppOpModes(packageAppOpModes); mPackageAppOpModes = getPackageAppOpModes(packageAppOpModes); } } Loading Loading @@ -152,4 +164,9 @@ public class AppOpMigrationHelperImpl implements AppOpMigrationHelper { } } return mVersionAtBoot; return mVersionAtBoot; } } @Override public boolean hasLegacyAppOpState() { return getLegacyAppOpVersion() > -1; } } } services/core/java/com/android/server/pm/permission/PermissionMigrationHelper.java +11 −1 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,11 @@ import java.util.Map; * @hide * @hide */ */ public interface PermissionMigrationHelper { public interface PermissionMigrationHelper { /** * Whether legacy permission definitions/trees exist or not. */ boolean hasLegacyPermission(); /** /** * @return legacy permission definitions. * @return legacy permission definitions. */ */ Loading @@ -48,7 +53,12 @@ public interface PermissionMigrationHelper { /** /** * @return permissions file version for the given user. * @return permissions file version for the given user. */ */ int getLegacyPermissionsVersion(int userId); int getLegacyPermissionStateVersion(int userId); /** * @return true if permissions state exists or not. */ boolean hasLegacyPermissionState(int userId); /** /** * Legacy permission definition. * Legacy permission definition. Loading services/core/java/com/android/server/pm/permission/PermissionMigrationHelperImpl.java +26 −2 Original line number Original line Diff line number Diff line Loading @@ -39,6 +39,15 @@ import java.util.Map; public class PermissionMigrationHelperImpl implements PermissionMigrationHelper { public class PermissionMigrationHelperImpl implements PermissionMigrationHelper { private static final String LOG_TAG = PermissionMigrationHelperImpl.class.getSimpleName(); private static final String LOG_TAG = PermissionMigrationHelperImpl.class.getSimpleName(); @Override public boolean hasLegacyPermission() { PackageManagerInternal packageManagerInternal = LocalServices.getService(PackageManagerInternal.class); LegacyPermissionSettings legacySettings = packageManagerInternal.getLegacyPermissions(); return !(legacySettings.getPermissions().isEmpty() && legacySettings.getPermissionTrees().isEmpty()); } /** /** * @return legacy permission definitions. * @return legacy permission definitions. */ */ Loading Loading @@ -122,10 +131,25 @@ public class PermissionMigrationHelperImpl implements PermissionMigrationHelper } } @Override @Override public int getLegacyPermissionsVersion(int userId) { public int getLegacyPermissionStateVersion(int userId) { PackageManagerInternal packageManagerInternal = PackageManagerInternal packageManagerInternal = LocalServices.getService(PackageManagerInternal.class); LocalServices.getService(PackageManagerInternal.class); return packageManagerInternal.getLegacyPermissionsVersion(userId); int version = packageManagerInternal.getLegacyPermissionsVersion(userId); // -1 No permission data available // 0 runtime-permissions.xml exist w/o any version switch (version) { case -1: return 0; case 0: return -1; default: return version; } } @Override public boolean hasLegacyPermissionState(int userId) { return getLegacyPermissionStateVersion(userId) > -1; } } @NonNull @NonNull Loading services/permission/java/com/android/server/permission/access/appop/AppIdAppOpMigration.kt +4 −0 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,10 @@ import com.android.server.permission.access.util.PackageVersionMigration class AppIdAppOpMigration { class AppIdAppOpMigration { fun migrateUserState(state: MutableAccessState, userId: Int) { fun migrateUserState(state: MutableAccessState, userId: Int) { val legacyAppOpsManager = LocalServices.getService(AppOpMigrationHelper::class.java)!! val legacyAppOpsManager = LocalServices.getService(AppOpMigrationHelper::class.java)!! if (!legacyAppOpsManager.hasLegacyAppOpState()) { return } val legacyAppIdAppOpModes = legacyAppOpsManager.getLegacyAppIdAppOpModes(userId) val legacyAppIdAppOpModes = legacyAppOpsManager.getLegacyAppIdAppOpModes(userId) val version = PackageVersionMigration.getVersion(userId) val version = PackageVersionMigration.getVersion(userId) Loading Loading
services/core/java/com/android/server/appop/AppOpMigrationHelper.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -43,4 +43,9 @@ public interface AppOpMigrationHelper { * @return AppOps file version, the version is same for all the user. * @return AppOps file version, the version is same for all the user. */ */ int getLegacyAppOpVersion(); int getLegacyAppOpVersion(); /** * @return Whether app-op state exists or not. */ boolean hasLegacyAppOpState(); } }
services/core/java/com/android/server/appop/AppOpMigrationHelperImpl.java +18 −1 Original line number Original line Diff line number Diff line Loading @@ -77,7 +77,19 @@ public class AppOpMigrationHelperImpl implements AppOpMigrationHelper { new SparseArray<>(); new SparseArray<>(); LegacyAppOpStateParser parser = new LegacyAppOpStateParser(); LegacyAppOpStateParser parser = new LegacyAppOpStateParser(); mVersionAtBoot = parser.readState(appOpFile, uidAppOpModes, packageAppOpModes); final int version = parser.readState(appOpFile, uidAppOpModes, packageAppOpModes); // -1 No app ops data available // 0 appops.xml exist w/o any version switch (version) { case -2: mVersionAtBoot = -1; break; case -1: mVersionAtBoot = 0; break; default: mVersionAtBoot = version; } mAppIdAppOpModes = getAppIdAppOpModes(uidAppOpModes); mAppIdAppOpModes = getAppIdAppOpModes(uidAppOpModes); mPackageAppOpModes = getPackageAppOpModes(packageAppOpModes); mPackageAppOpModes = getPackageAppOpModes(packageAppOpModes); } } Loading Loading @@ -152,4 +164,9 @@ public class AppOpMigrationHelperImpl implements AppOpMigrationHelper { } } return mVersionAtBoot; return mVersionAtBoot; } } @Override public boolean hasLegacyAppOpState() { return getLegacyAppOpVersion() > -1; } } }
services/core/java/com/android/server/pm/permission/PermissionMigrationHelper.java +11 −1 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,11 @@ import java.util.Map; * @hide * @hide */ */ public interface PermissionMigrationHelper { public interface PermissionMigrationHelper { /** * Whether legacy permission definitions/trees exist or not. */ boolean hasLegacyPermission(); /** /** * @return legacy permission definitions. * @return legacy permission definitions. */ */ Loading @@ -48,7 +53,12 @@ public interface PermissionMigrationHelper { /** /** * @return permissions file version for the given user. * @return permissions file version for the given user. */ */ int getLegacyPermissionsVersion(int userId); int getLegacyPermissionStateVersion(int userId); /** * @return true if permissions state exists or not. */ boolean hasLegacyPermissionState(int userId); /** /** * Legacy permission definition. * Legacy permission definition. Loading
services/core/java/com/android/server/pm/permission/PermissionMigrationHelperImpl.java +26 −2 Original line number Original line Diff line number Diff line Loading @@ -39,6 +39,15 @@ import java.util.Map; public class PermissionMigrationHelperImpl implements PermissionMigrationHelper { public class PermissionMigrationHelperImpl implements PermissionMigrationHelper { private static final String LOG_TAG = PermissionMigrationHelperImpl.class.getSimpleName(); private static final String LOG_TAG = PermissionMigrationHelperImpl.class.getSimpleName(); @Override public boolean hasLegacyPermission() { PackageManagerInternal packageManagerInternal = LocalServices.getService(PackageManagerInternal.class); LegacyPermissionSettings legacySettings = packageManagerInternal.getLegacyPermissions(); return !(legacySettings.getPermissions().isEmpty() && legacySettings.getPermissionTrees().isEmpty()); } /** /** * @return legacy permission definitions. * @return legacy permission definitions. */ */ Loading Loading @@ -122,10 +131,25 @@ public class PermissionMigrationHelperImpl implements PermissionMigrationHelper } } @Override @Override public int getLegacyPermissionsVersion(int userId) { public int getLegacyPermissionStateVersion(int userId) { PackageManagerInternal packageManagerInternal = PackageManagerInternal packageManagerInternal = LocalServices.getService(PackageManagerInternal.class); LocalServices.getService(PackageManagerInternal.class); return packageManagerInternal.getLegacyPermissionsVersion(userId); int version = packageManagerInternal.getLegacyPermissionsVersion(userId); // -1 No permission data available // 0 runtime-permissions.xml exist w/o any version switch (version) { case -1: return 0; case 0: return -1; default: return version; } } @Override public boolean hasLegacyPermissionState(int userId) { return getLegacyPermissionStateVersion(userId) > -1; } } @NonNull @NonNull Loading
services/permission/java/com/android/server/permission/access/appop/AppIdAppOpMigration.kt +4 −0 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,10 @@ import com.android.server.permission.access.util.PackageVersionMigration class AppIdAppOpMigration { class AppIdAppOpMigration { fun migrateUserState(state: MutableAccessState, userId: Int) { fun migrateUserState(state: MutableAccessState, userId: Int) { val legacyAppOpsManager = LocalServices.getService(AppOpMigrationHelper::class.java)!! val legacyAppOpsManager = LocalServices.getService(AppOpMigrationHelper::class.java)!! if (!legacyAppOpsManager.hasLegacyAppOpState()) { return } val legacyAppIdAppOpModes = legacyAppOpsManager.getLegacyAppIdAppOpModes(userId) val legacyAppIdAppOpModes = legacyAppOpsManager.getLegacyAppIdAppOpModes(userId) val version = PackageVersionMigration.getVersion(userId) val version = PackageVersionMigration.getVersion(userId) Loading