Do not depend on task activities decrementing with finish.

It is possible for a task to be cleared when a single activity is
finished. For example, if only task overlays are present after an
activity is removed, the task can be cleared under certain
conditions. As a result, we can not rely on only a single activity
being removed from a task when it is finished.

This changelist addresses this issue by caching the list of actvities
under a task that will not be modified as activities are finished.

Change-Id: Id3b0813deebd0bc31b2ff7ae7f69a2833dcb0a61
Fixes: 64291682
Test: atest FrameworksServicesTests:com.android.server.am.ActivityStackTests#testFinishDisabledPackageActivities
Test: atest FrameworksServicesTests:com.android.server.am.ActivityStackTests#testHandleAppDied
diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java b/services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java
index b58c700..fdabfb4 100644
--- a/services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java
+++ b/services/tests/servicestests/src/com/android/server/am/ActivityStarterTests.java
@@ -197,11 +197,6 @@
         final ActivityInfo aInfo = containsConditions(preconditions, PRECONDITION_NO_ACTIVITY_INFO)
                 ?  null : new ActivityInfo();
 
-        if (aInfo != null) {
-            aInfo.applicationInfo = new ApplicationInfo();
-            aInfo.applicationInfo.packageName = ActivityBuilder.DEFAULT_PACKAGE;
-        }
-
         IVoiceInteractionSession voiceSession =
                 containsConditions(preconditions, PRECONDITION_SOURCE_VOICE_SESSION)
                 ? mock(IVoiceInteractionSession.class) : null;
@@ -210,6 +205,11 @@
         final ActivityBuilder builder = new ActivityBuilder(service).setTask(
                 new TaskBuilder(service.mStackSupervisor).setVoiceSession(voiceSession).build());
 
+        if (aInfo != null) {
+            aInfo.applicationInfo = new ApplicationInfo();
+            aInfo.applicationInfo.packageName = builder.getDefaultComponentPackageName();
+        }
+
         // Offset uid by one from {@link ActivityInfo} to simulate different uids.
         if (containsConditions(preconditions, PRECONDITION_DIFFERENT_UID)) {
             builder.setUid(aInfo.applicationInfo.uid + 1);