Do not block transition by non-resumed relayouted activity

When keyguard is showing or screen is off, only top activity can
apply show-when-lock or turn-screen-on. The non-top visible activity
(e.g. the top activity is translucent style) shouldn't be tracked as
unknown visibility, because its visibility should rely on if the top
can be real visible.

Especially UnknownAppVisibilityController assumes that the tracked
activities will perform relayout after completing resume, but non-top
visible activity won't report competed resume, which causes the
opening transition to wait until timeout.

Bug: 349022462
Flag: EXEMPT bugfix
Test: Assume A,B,C are activities in the same task with
        android:turnScreenOn="true" android:showWhenLocked="true"
      1. Enter lock screen.
      2. Launch A (test main).
      3. Press A's button to call startActivity for B and C.
        (B won't be launched because C occludes it)
      4. C's onCreate calls Activity#setTranslucent(true) which
         makes B start with andResume=false
      5. The transition should run immediately from A to C.
Change-Id: I6f6662cf6cc3d760684ba589c62f32a66b86317f
diff --git a/services/core/java/com/android/server/wm/UnknownAppVisibilityController.java b/services/core/java/com/android/server/wm/UnknownAppVisibilityController.java
index c071396..3947d02 100644
--- a/services/core/java/com/android/server/wm/UnknownAppVisibilityController.java
+++ b/services/core/java/com/android/server/wm/UnknownAppVisibilityController.java
@@ -153,6 +153,10 @@
             mUnknownApps.put(activity, UNKNOWN_STATE_WAITING_VISIBILITY_UPDATE);
             mDisplayContent.notifyKeyguardFlagsChanged();
             notifyVisibilitiesUpdated();
+        } else if (state == UNKNOWN_STATE_WAITING_RESUME
+                && !activity.isState(ActivityRecord.State.RESUMED)) {
+            Slog.d(TAG, "UAVC: skip waiting for non-resumed relayouted " + activity);
+            mUnknownApps.remove(activity);
         }
     }