Do activity blocking only on the display associated with the window
change event

Bug: 241589812
Test: manual on gcar_md emulator
Test: atest CarPackageManagerServiceTest
Change-Id: I55045e32961067073ab8897a28d3b8eb7e526b48
diff --git a/service/src/com/android/car/pm/CarPackageManagerService.java b/service/src/com/android/car/pm/CarPackageManagerService.java
index 3511a49..e2b0c4a 100644
--- a/service/src/com/android/car/pm/CarPackageManagerService.java
+++ b/service/src/com/android/car/pm/CarPackageManagerService.java
@@ -1901,7 +1901,18 @@
                         && mActivityBlockingActivity.getClassName().contentEquals(
                         event.getClassName());
         if (!receivedFromActivityBlockingActivity) {
-            mHandler.post(() -> blockTopActivitiesOnAllDisplaysIfNecessary());
+            int displayId = event.getDisplayId();
+            if (isUxRestrictedOnDisplay(displayId)) {
+                if (DEBUG) {
+                    Slogf.d(TAG, "onWindowChange event from package %s on Ux restricted display %d,"
+                            + " checking activity blocking", event.getPackageName(), displayId);
+                }
+                // Schedule activity blocking with mHandler to ensure there is no concurrent
+                // activity blocking.
+                mHandler.post(() ->
+                        blockTopActivitiesOnDisplayIfNecessary(
+                            mActivityService.getVisibleTasks(), displayId));
+            }
         } else {
             Slogf.d(TAG, "Discarded onWindowChangeEvent received from "
                     + "ActivityBlockingActivity");