summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author JW Wang <wangchun@google.com> 2020-10-28 15:22:44 +0800
committer JW Wang <wangchun@google.com> 2020-10-28 15:30:57 +0800
commit737f6f7acfa61f67d2c3de8af6b755d91a87c58c (patch)
treeafbf5ab1af26cb6ea79914d7b2743eb2f62cc3e4
parentd00e7d7ce550966c03ed544464d0456f030f4094 (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.java25
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;
}
/**