summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Robin Lee <rgl@google.com> 2020-11-26 01:53:08 +0100
committer Robin Lee <rgl@google.com> 2020-11-26 01:14:25 +0000
commit2cae9f6275ac331a0a1be32560566e052b7d065c (patch)
treee7174417c61788d17a939824e6ea3bf99893d163
parentad44816045b6f89d57533bbe4650ddd881a6b4da (diff)
shell pm: move context creation to where it's used
If something went wrong with the shell package, it's useful for pm commands to still work so that a developer is still able to put things back the way they were. Test: atest CtsNativeMediaAAudioTestCases --user-type secondary_user Bug: 159157348 Change-Id: I9d3b4f8f93496a5df2055681bd88c61adc435408
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerShellCommand.java21
1 files changed, 12 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index 2996cd13f7b1..9720819a62ab 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -146,7 +146,7 @@ class PackageManagerShellCommand extends ShellCommand {
final IPackageManager mInterface;
final IPermissionManager mPermissionManager;
- final Context mShellPackageContext;
+ final Context mContext;
final private WeakHashMap<String, Resources> mResourceCache =
new WeakHashMap<String, Resources>();
int mTargetUser;
@@ -158,13 +158,7 @@ class PackageManagerShellCommand extends ShellCommand {
PackageManagerService service, IPermissionManager permissionManager, Context context) {
mInterface = service;
mPermissionManager = permissionManager;
- try {
- mShellPackageContext = context.createPackageContextAsUser(
- "com.android.shell", 0, Binder.getCallingUserHandle());
- } catch (NameNotFoundException e) {
- // should not happen
- throw new RuntimeException(e);
- }
+ mContext = context;
}
@Override
@@ -487,8 +481,17 @@ class PackageManagerShellCommand extends ShellCommand {
return 1;
}
+ final Context shellPackageContext;
+ try {
+ shellPackageContext = mContext.createPackageContextAsUser(
+ "com.android.shell", 0, Binder.getCallingUserHandle());
+ } catch (NameNotFoundException e) {
+ // should not happen
+ throw new RuntimeException(e);
+ }
+
final LocalIntentReceiver receiver = new LocalIntentReceiver();
- RollbackManager rm = mShellPackageContext.getSystemService(RollbackManager.class);
+ RollbackManager rm = shellPackageContext.getSystemService(RollbackManager.class);
RollbackInfo rollback = null;
for (RollbackInfo r : rm.getAvailableRollbacks()) {
for (PackageRollbackInfo info : r.getPackages()) {