Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3270f179 authored by Wale Ogunwale's avatar Wale Ogunwale
Browse files

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
parent 0f876448
Loading
Loading
Loading
Loading
+4 −8
Original line number Diff line number Diff line
@@ -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() {