Make sure top activity is stopped on sleep if paused.

Currently we have logic in place to handle moving a top resumed
activity to paused and eventually stopped if entering sleep. However,
we do not handle the case when the top activity is already paused.

This changelist addresses this issue by identifying this condition
and moving the activity to the stopped state.

Change-Id: Ib9fff1efeb33719d008508cf21a17b95fc17efd0
Fixes: 65457314
Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test CtsServicesHostTestCases android.server.cts.ActivityManagerDisplayTests#testExternalDisplayActivityTurnPrimaryOff
(cherry picked from commit 5b21f521ff58fabf5323e5defc66bd251b613fcf)
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 791b2c0..09541f6 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -1214,6 +1214,11 @@
             // Still waiting for something to pause; can't sleep yet.
             if (DEBUG_PAUSE) Slog.v(TAG_PAUSE, "Sleep still waiting to pause " + mPausingActivity);
             shouldSleep = false;
+        } else if (topActivity() != null && topActivity().state == ActivityState.PAUSED) {
+            // Our top activity is currently paused, we need to ensure we move it to the stopped
+            // state.
+            stopActivityLocked(mLastPausedActivity);
+            shouldSleep = false;
         }
 
         if (!shuttingDown) {