summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2016-08-16 16:03:44 -0700
committerJessica Wagantall <jwagantall@cyngn.com>2016-12-12 11:56:48 -0800
commit54bd7b85b2e3c8c43e9d710d4b592921c96c3846 (patch)
tree87e1ba720d40325639fc392d946248ee7306ad59
parent2df190c3a2ed1e339bb34c175fa227f90e7cbb02 (diff)
downloadframeworks_base-54bd7b85b2e3c8c43e9d710d4b592921c96c3846.zip
frameworks_base-54bd7b85b2e3c8c43e9d710d4b592921c96c3846.tar.gz
frameworks_base-54bd7b85b2e3c8c43e9d710d4b592921c96c3846.tar.bz2
DO NOT MERGE Isolated processes don't get precached system service binders
More specifically, they get a PackageManager binder -- necessary for Android process startup and configuration -- but none of the other usual preloaded service binders. CYNGNOS-3312 Bug 30202228 Change-Id: I3810649f504cd631665ece338a83d2e54d41ad05 (cherry picked from commit 2c61c57ac53cbb270b4e76b9d04465f8a3f6eadc) (cherry picked from commit f4d23f30c92bc80808f57677caab0282c8d28dc6) (cherry picked from commit 9357830a380c8174ce5130941a7a53915d680819)
-rwxr-xr-xservices/core/java/com/android/server/am/ActivityManagerService.java25
1 files changed, 16 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 30f35af..23f34e6 100755
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -1030,6 +1030,7 @@ public final class ActivityManagerService extends ActivityManagerNative
* For example, references to the commonly used services.
*/
HashMap<String, IBinder> mAppBindArgs;
+ HashMap<String, IBinder> mIsolatedAppBindArgs;
/**
* Temporary to avoid allocations. Protected by main lock.
@@ -2831,18 +2832,24 @@ public final class ActivityManagerService extends ActivityManagerNative
* lazily setup to make sure the services are running when they're asked for.
*/
private HashMap<String, IBinder> getCommonServicesLocked(boolean isolated) {
+ // Isolated processes won't get this optimization, so that we don't
+ // violate the rules about which services they have access to.
+ if (isolated) {
+ if (mIsolatedAppBindArgs == null) {
+ mIsolatedAppBindArgs = new HashMap<>();
+ mIsolatedAppBindArgs.put("package", ServiceManager.getService("package"));
+ }
+ return mIsolatedAppBindArgs;
+ }
+
if (mAppBindArgs == null) {
mAppBindArgs = new HashMap<>();
- // Isolated processes won't get this optimization, so that we don't
- // violate the rules about which services they have access to.
- if (!isolated) {
- // Setup the application init args
- mAppBindArgs.put("package", ServiceManager.getService("package"));
- mAppBindArgs.put("window", ServiceManager.getService("window"));
- mAppBindArgs.put(Context.ALARM_SERVICE,
- ServiceManager.getService(Context.ALARM_SERVICE));
- }
+ // Setup the application init args
+ mAppBindArgs.put("package", ServiceManager.getService("package"));
+ mAppBindArgs.put("window", ServiceManager.getService("window"));
+ mAppBindArgs.put(Context.ALARM_SERVICE,
+ ServiceManager.getService(Context.ALARM_SERVICE));
}
return mAppBindArgs;
}