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

Commit 3750d8d7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Check preferred display for matching existing activity"

parents 7102a0df b70b36d8
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -126,11 +126,6 @@ class ActivityDisplay extends ConfigurationContainer<ActivityStack>

    private final FindTaskResult mTmpFindTaskResult = new FindTaskResult();

    @VisibleForTesting
    ActivityDisplay(ActivityStackSupervisor supervisor, int displayId) {
        this(supervisor, supervisor.mDisplayManager.getDisplay(displayId));
    }

    ActivityDisplay(ActivityStackSupervisor supervisor, Display display) {
        mSupervisor = supervisor;
        mDisplayId = display.getDisplayId();
+15 −8
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_TASK;
import static android.content.pm.ActivityInfo.LAUNCH_SINGLE_TOP;
import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.Display.INVALID_DISPLAY;

import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_CONFIGURATION;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_FOCUS;
import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_PERMISSIONS_REVIEW;
@@ -1901,14 +1902,20 @@ class ActivityStarter {
        // except...  well, with SINGLE_TASK_LAUNCH it's not entirely clear. We'd like to have
        // the same behavior as if a new instance was being started, which means not bringing it
        // to the front if the caller is not itself in the front.
        final ActivityStack focusStack = mSupervisor.getTopDisplayFocusedStack();
        ActivityRecord curTop = (focusStack == null)
        final boolean differentTopTask;
        if (mPreferredDisplayId == mTargetStack.mDisplayId) {
            final ActivityStack focusStack = mTargetStack.getDisplay().getFocusedStack();
            final ActivityRecord curTop = (focusStack == null)
                    ? null : focusStack.topRunningNonDelayedActivityLocked(mNotTop);

            final TaskRecord topTask = curTop != null ? curTop.getTask() : null;
        if (topTask != null
                && (topTask != intentActivity.getTask() || topTask != focusStack.topTask())
                && !mAvoidMoveToFront) {
            differentTopTask = topTask != null
                    && (topTask != intentActivity.getTask() || topTask != focusStack.topTask());
        } else {
            // The existing task should always be different from those in other displays.
            differentTopTask = true;
        }

        if (differentTopTask && !mAvoidMoveToFront) {
            mStartActivity.intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
            if (mSourceRecord == null || (mSourceStack.getTopActivity() != null &&
                    mSourceStack.getTopActivity().getTask() == mSourceRecord.getTask())) {
+3 −4
Original line number Diff line number Diff line
@@ -69,7 +69,6 @@ import org.mockito.invocation.InvocationOnMock;
@Presubmit
@RunWith(AndroidJUnit4.class)
public class ActivityRecordTests extends ActivityTestsBase {
    private ActivityTaskManagerService mService;
    private TestActivityStack mStack;
    private TaskRecord mTask;
    private ActivityRecord mActivity;
@@ -79,10 +78,10 @@ public class ActivityRecordTests extends ActivityTestsBase {
    public void setUp() throws Exception {
        super.setUp();

        mService = createActivityTaskManagerService();
        mStack = mService.mStackSupervisor.getDefaultDisplay().createStack(
        setupActivityTaskManagerService();
        mStack = mSupervisor.getDefaultDisplay().createStack(
                WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */);
        mTask = new TaskBuilder(mService.mStackSupervisor).setStack(mStack).build();
        mTask = new TaskBuilder(mSupervisor).setStack(mStack).build();
        mActivity = new ActivityBuilder(mService).setTask(mTask).build();
    }

+1 −4
Original line number Diff line number Diff line
@@ -64,8 +64,6 @@ import java.util.ArrayList;
@Presubmit
@RunWith(AndroidJUnit4.class)
public class ActivityStackSupervisorTests extends ActivityTestsBase {
    private ActivityTaskManagerService mService;
    private ActivityStackSupervisor mSupervisor;
    private ActivityStack mFullscreenStack;

    @Before
@@ -73,8 +71,7 @@ public class ActivityStackSupervisorTests extends ActivityTestsBase {
    public void setUp() throws Exception {
        super.setUp();

        mService = createActivityTaskManagerService();
        mSupervisor = mService.mStackSupervisor;
        setupActivityTaskManagerService();
        mFullscreenStack = mService.mStackSupervisor.getDefaultDisplay().createStack(
                WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, true /* onTop */);
    }
+2 −5
Original line number Diff line number Diff line
@@ -60,8 +60,6 @@ import org.junit.runner.RunWith;
@Presubmit
@RunWith(AndroidJUnit4.class)
public class ActivityStackTests extends ActivityTestsBase {
    private ActivityTaskManagerService mService;
    private ActivityStackSupervisor mSupervisor;
    private ActivityDisplay mDefaultDisplay;
    private ActivityStack mStack;
    private TaskRecord mTask;
@@ -71,9 +69,8 @@ public class ActivityStackTests extends ActivityTestsBase {
    public void setUp() throws Exception {
        super.setUp();

        mService = createActivityTaskManagerService();
        mSupervisor = mService.mStackSupervisor;
        mDefaultDisplay = mService.mStackSupervisor.getDefaultDisplay();
        setupActivityTaskManagerService();
        mDefaultDisplay = mSupervisor.getDefaultDisplay();
        mStack = mDefaultDisplay.createStack(WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD,
                true /* onTop */);
        mTask = new TaskBuilder(mSupervisor).setStack(mStack).build();
Loading