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

Commit e1edaa27 authored by Christophe Pinelli's avatar Christophe Pinelli
Browse files

Restrict activity launch when caller is running in the background

Test: atest BackgroundActivityLaunchTest#testBackgroundActivityBlockedInStartNextMatchingActivity
Bug: 230492947
Merged-In: Ie3bc5bd88bfd3bd4777210c0740ad34ea6d3311e
Change-Id: Ic88dd1e79b867b44cdcd6fc86650f5de6ebcc23d
parent 4f70c066
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -1412,6 +1412,11 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {

            final long origId = Binder.clearCallingIdentity();
            // TODO(b/64750076): Check if calling pid should really be -1.
            try {
                if (options == null) {
                    options = new SafeActivityOptions(ActivityOptions.makeBasic());
                }
                options.getOptions(r).setAvoidMoveToFront();
                final int res = getActivityStartController()
                    .obtainStarter(intent, "startNextMatchingActivity")
                    .setCaller(r.app.getThread())
@@ -1428,13 +1433,11 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
                    .setRealCallingUid(r.launchedFromUid)
                    .setActivityOptions(options)
                    .execute();
            Binder.restoreCallingIdentity(origId);

                r.finishing = wasFinishing;
            if (res != ActivityManager.START_SUCCESS) {
                return false;
                return res == ActivityManager.START_SUCCESS;
            } finally {
                Binder.restoreCallingIdentity(origId);
            }
            return true;
        }
    }