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

Commit 3d026714 authored by Filip Gruszczynski's avatar Filip Gruszczynski
Browse files

Only add noDisplay activities to freeform source tasks.

We started adding noDisplay activities to source tasks to make the
resolver activity show up within the same task bounds as what caused it
to appear. However, in other cases it might cause to add a noDisplay
activity to a task in which we don't expect anything to appear, e.g.
home task when launching from home.

Bug: 26128908
Bug: 26023670
Change-Id: I2f64e82b3c3754cdbcb4cac3f907674344e67e04
parent 92e432c3
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -5300,8 +5300,7 @@ public class Activity extends ContextThemeWrapper
     */
    public boolean isTaskRoot() {
        try {
            return ActivityManagerNative.getDefault()
                .getTaskForActivity(mToken, true) >= 0;
            return ActivityManagerNative.getDefault().getTaskForActivity(mToken, true) >= 0;
        } catch (RemoteException e) {
            return false;
        }
+28 −15
Original line number Diff line number Diff line
@@ -16,22 +16,21 @@

package com.android.server.am;

import static com.android.server.am.ActivityManagerDebugConfig.*;
import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_CONFIGURATION;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SAVED_STATE;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_SWITCH;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_THUMBNAILS;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_STATES;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_SWITCH;
import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_THUMBNAILS;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.am.TaskRecord.INVALID_TASK_ID;

import android.app.ActivityManager.TaskDescription;
import android.app.PendingIntent;
import android.os.PersistableBundle;
import android.os.Trace;

import com.android.internal.app.ResolverActivity;
import com.android.internal.content.ReferrerIntent;
import com.android.internal.util.XmlUtils;
import com.android.server.AttributeCache;
import com.android.server.am.ActivityStack.ActivityState;
import com.android.server.am.ActivityStackSupervisor.ActivityContainer;

import android.app.ActivityOptions;
import android.app.PendingIntent;
import android.app.ResultInfo;
import android.content.ComponentName;
import android.content.Intent;
@@ -45,9 +44,11 @@ import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Message;
import android.os.PersistableBundle;
import android.os.Process;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.Trace;
import android.os.UserHandle;
import android.util.EventLog;
import android.util.Log;
@@ -57,9 +58,12 @@ import android.view.AppTransitionAnimationSpec;
import android.view.IApplicationToken;
import android.view.WindowManager;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
import com.android.internal.app.ResolverActivity;
import com.android.internal.content.ReferrerIntent;
import com.android.internal.util.XmlUtils;
import com.android.server.AttributeCache;
import com.android.server.am.ActivityStack.ActivityState;
import com.android.server.am.ActivityStackSupervisor.ActivityContainer;

import java.io.File;
import java.io.IOException;
@@ -69,6 +73,10 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.Objects;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;

/**
 * An entry in the history stack, representing an activity.
 */
@@ -398,6 +406,11 @@ final class ActivityRecord {
        }
    }

    boolean isFreeform() {
        return task != null && task.stack != null
                && task.stack.mStackId == FREEFORM_WORKSPACE_STACK_ID;
    }

    static class Token extends IApplicationToken.Stub {
        private final WeakReference<ActivityRecord> weakActivity;
        private final ActivityManagerService mService;
+2 −1
Original line number Diff line number Diff line
@@ -2260,7 +2260,8 @@ public final class ActivityStackSupervisor implements DisplayListener {
            // Also put noDisplay activities in the source task. These by itself can
            // be placed in any task/stack, however it could launch other activities
            // like ResolverActivity, and we want those to stay in the original task.
            if (r.isResolverActivity() || r.noDisplay) {
            if ((r.isResolverActivity() || r.noDisplay) && sourceRecord != null
                    && sourceRecord.isFreeform())  {
                addingToTask = true;
            }
        }