Fix for client tracking on bind to service.
We were not correctly updating the bound client UIDs when binding to a
service with an already-running process. This could result in a
background activity start by the app hosting the service being
incorrectly blocked.
(Also includes a drive-by fix of a potential NPE.)
Bug: 131468397
Test: Manually verified YouTube VR problem is fixed.
Test: atest BackgroundActivityLaunchTest
Test: atest RootWindowContainerTests
Test: atest WmTests:ActivityStarterTests
Test: atest CtsWindowManagerDeviceTestCases:ActivityStarterTests
Test: atest CtsAppTestCases:.ServiceTest
Change-Id: I153cf3678f10439075af39a8bd88ff8d492e1ffe
diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java
index e891e6e..563b2f3 100644
--- a/services/core/java/com/android/server/am/ProcessRecord.java
+++ b/services/core/java/com/android/server/am/ProcessRecord.java
@@ -1186,8 +1186,8 @@
!mAllowBackgroundActivityStartsTokens.isEmpty());
}
- void addBoundClientUids(ArraySet<Integer> clientUids) {
- mBoundClientUids.addAll(clientUids);
+ void addBoundClientUid(int clientUid) {
+ mBoundClientUids.add(clientUid);
mWindowProcessController.setBoundClientUids(mBoundClientUids);
}