Merge "Fix IsolatedUidAllocator for non-primary users." into qt-qpr1-dev

This commit is contained in:
Martijn Coenen
2020-01-17 14:39:49 +00:00
committed by Android (Google) Code Review
2 changed files with 13 additions and 4 deletions

View File

@@ -422,9 +422,7 @@ public final class ProcessList {
@GuardedBy("ProcessList.this.mService")
void freeIsolatedUidLocked(int uid) {
// Strip out userId
final int appId = UserHandle.getAppId(uid);
mUidUsed.delete(appId);
mUidUsed.delete(uid);
}
};

View File

@@ -346,10 +346,21 @@ public class ActivityManagerServiceTest {
verifyUidRangesNoOverlap(range, range2);
verifyIsolatedUidAllocator(range2);
// Free both, then try to allocate the maximum number of UID ranges
// Free both
allocator.freeUidRangeLocked(appInfo);
allocator.freeUidRangeLocked(appInfo2);
// Verify for a secondary user
ApplicationInfo appInfo3 = new ApplicationInfo();
appInfo3.processName = "com.android.test.app";
appInfo3.uid = 1010000;
final IsolatedUidRange range3 = allocator.getOrCreateIsolatedUidRangeLocked(
appInfo3.processName, appInfo3.uid);
validateAppZygoteIsolatedUidRange(range3);
verifyIsolatedUidAllocator(range3);
allocator.freeUidRangeLocked(appInfo3);
// Try to allocate the maximum number of UID ranges
int maxNumUidRanges = (Process.LAST_APP_ZYGOTE_ISOLATED_UID
- Process.FIRST_APP_ZYGOTE_ISOLATED_UID + 1) / Process.NUM_UIDS_PER_APP_ZYGOTE;
for (int i = 0; i < maxNumUidRanges; i++) {