Only launch an activity in an existing task if activity types match

Activities with FLAG_ACTIVITY_NEW_TASK and FLAG_ACTIVITY_CLEAR_TASK
flags, when sharing the home activity's task, could cause the home
activity to be cleared. Later when home is launched again, a reset
of the task will be triggered each time.

Don't put an activity into a task unless the activity types match.
(This covers both home and recents activities.)

bug: 21880868
Change-Id: Ida26d187a6552914826bf45e537a731b3a15ea70
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index e6c8d43..4ac290c 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -542,6 +542,10 @@
                 if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": mismatch root " + r);
                 continue;
             }
+            if (r.mActivityType != target.mActivityType) {
+                if (DEBUG_TASKS) Slog.d(TAG_TASKS, "Skipping " + task + ": mismatch activity type");
+                continue;
+            }
 
             final Intent taskIntent = task.intent;
             final Intent affinityIntent = task.affinityIntent;