From 3270f1798d278ec41b6695915a3e5eb41063299e Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Wed, 26 Apr 2017 07:29:42 -0700 Subject: [PATCH] Use ActivityRecord.realActivity when comparing waiting visible We need to compare against realActivity since that represents the actual activity that is launched since it can and will be different in the case of activity alias. realActivity is also what we set in ActivityStarter when we wait for the activity to be visible. Change-Id: I48636e83172f259ed69fb65937a83f8a7a0ad138 Fixes: 37665516 Test: am start -W -n com.google.android.calculator/com.android.calculator2.Calculator twice --- .../android/server/am/ActivityStackSupervisor.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index bff3ce3a38850..bfb01f2a54bd2 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -110,7 +110,6 @@ import android.app.ActivityManager.StackInfo; import android.app.ActivityOptions; import android.app.AppOpsManager; import android.app.IActivityContainerCallback; -import android.app.ITaskStackListener; import android.app.ProfilerInfo; import android.app.ResultInfo; import android.app.StatusBarManager; @@ -157,7 +156,6 @@ import android.provider.MediaStore; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.service.voice.IVoiceInteractionSession; -import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArraySet; import android.util.EventLog; @@ -1129,7 +1127,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D mActivitiesWaitingForVisibleActivity.remove(r); for (int i = mWaitingForActivityVisible.size() - 1; i >= 0; --i) { - if (mWaitingForActivityVisible.get(i).matches(r)) { + if (mWaitingForActivityVisible.get(i).matches(r.realActivity)) { mWaitingForActivityVisible.remove(i); } } @@ -1143,7 +1141,7 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D boolean changed = false; for (int i = mWaitingForActivityVisible.size() - 1; i >= 0; --i) { final WaitInfo w = mWaitingForActivityVisible.get(i); - if (w.matches(r)) { + if (w.matches(r.realActivity)) { final WaitResult result = w.getResult(); changed = true; result.timeout = false; @@ -5140,10 +5138,8 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D this.mResult = result; } - public boolean matches(ActivityRecord record) { - return mTargetComponent == null || - (TextUtils.equals(mTargetComponent.getPackageName(), record.info.packageName) - && TextUtils.equals(mTargetComponent.getClassName(), record.info.name)); + public boolean matches(ComponentName targetComponent) { + return mTargetComponent == null || mTargetComponent.equals(targetComponent); } public WaitResult getResult() {