diff options
| author | 2020-10-28 15:22:44 +0800 | |
|---|---|---|
| committer | 2020-10-28 15:30:57 +0800 | |
| commit | 737f6f7acfa61f67d2c3de8af6b755d91a87c58c (patch) | |
| tree | afbf5ab1af26cb6ea79914d7b2743eb2f62cc3e4 | |
| parent | d00e7d7ce550966c03ed544464d0456f030f4094 (diff) | |
Restore the isModule check when enabling rollback for apps
This is effectively a revert of ag/12874515.
Bug: 171852511
Test: atest RollbackTest StagedRollbackTest
Change-Id: I566ffe0417ed460006917e1f2e08981a7943c63b
| -rw-r--r-- | services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java index 1e89e06617d3..811ac4dc101b 100644 --- a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java +++ b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java @@ -28,6 +28,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.IntentSender; import android.content.pm.ApplicationInfo; +import android.content.pm.ModuleInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageInstaller; import android.content.pm.PackageManager; @@ -1088,8 +1089,8 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub implements Rollba Manifest.permission.TEST_MANAGE_ROLLBACKS, installerPackageName) == PackageManager.PERMISSION_GRANTED; - // For now only allow rollbacks for allowlisted packages or for testing. - return (isRollbackAllowlisted(packageName) && manageRollbacksGranted) + // For now only allow rollbacks for modules, allowlisted packages, or for testing. + return (isRollbackAllowed(packageName) && manageRollbacksGranted) || testManageRollbacksGranted; } @@ -1097,8 +1098,24 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub implements Rollba * Returns true is this package is eligible for enabling rollback. */ @AnyThread - private boolean isRollbackAllowlisted(String packageName) { - return SystemConfig.getInstance().getRollbackWhitelistedPackages().contains(packageName); + private boolean isRollbackAllowed(String packageName) { + return SystemConfig.getInstance().getRollbackWhitelistedPackages().contains(packageName) + || isModule(packageName); + } + /** + * Returns true if the package name is the name of a module. + */ + @AnyThread + private boolean isModule(String packageName) { + PackageManager pm = mContext.getPackageManager(); + final ModuleInfo moduleInfo; + try { + moduleInfo = pm.getModuleInfo(packageName, 0); + } catch (PackageManager.NameNotFoundException e) { + return false; + } + + return moduleInfo != null; } /** |