diff options
| author | 2017-08-29 17:13:58 +0000 | |
|---|---|---|
| committer | 2017-08-29 17:13:58 +0000 | |
| commit | 02584a23b36f10f14dc1d3d188c0be942cd7e3dd (patch) | |
| tree | 862ee62ae6ff27d0ed1d74dc644aa7391d049f06 | |
| parent | a7e34096af429a6eb22b970c607273763a117e82 (diff) | |
| parent | 29a649da5f8097efdb28d6982edbe43091eda44f (diff) | |
Merge "Remove activity from stopping activities once resumed." into oc-mr1-dev
3 files changed, 25 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index d2fa538f7bdc..54bb526b745b 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -3302,6 +3302,9 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D      }      boolean reportResumedActivityLocked(ActivityRecord r) { +        // A resumed activity cannot be stopping. remove from list +        mStoppingActivities.remove(r); +          final ActivityStack stack = r.getStack();          if (isFocusedStack(stack)) {              mService.updateUsageStats(r, true); diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java b/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java index fc9ab9635c57..661dd4fc828c 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityStackSupervisorTests.java @@ -21,6 +21,7 @@ import static android.app.ActivityManager.StackId.PINNED_STACK_ID;  import static org.junit.Assert.assertEquals;  import static org.junit.Assert.assertNull;  import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse;  import android.content.ComponentName;  import android.graphics.Rect; @@ -117,4 +118,21 @@ public class ActivityStackSupervisorTests extends ActivityTestsBase {              assertTrue(stackTasks.contains(task));          }      } + +    /** +     * Ensures that an activity is removed from the stopping activities list once it is resumed. +     */ +    @Test +    public void testStoppingActivityRemovedWhenResumed() throws Exception { +        final ActivityManagerService service = createActivityManagerService(); +        final TaskRecord firstTask = createTask(service, testActivityComponent, +            FULLSCREEN_WORKSPACE_STACK_ID); +        final ActivityRecord firstActivity = createActivity(service, testActivityComponent, +            firstTask); +        service.mStackSupervisor.mStoppingActivities.add(firstActivity); + +        firstActivity.completeResumeLocked(); + +        assertFalse(service.mStackSupervisor.mStoppingActivities.contains(firstActivity)); +    }  } diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java index 4ad92c7ec14e..c03a95789be4 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityTestsBase.java @@ -145,6 +145,10 @@ public class ActivityTestsBase {          protected ActivityStackSupervisor createStackSupervisor() {              return new TestActivityStackSupervisor(this, mHandlerThread.getLooper());          } + +        @Override +        void updateUsageStats(ActivityRecord component, boolean resumed) { +        }      }      /**  |