Loading services/core/java/com/android/server/wm/ActivityStarter.java +22 −17 Original line number Diff line number Diff line Loading @@ -74,6 +74,8 @@ import static com.android.server.wm.ActivityTaskManagerService.ANIMATE; import static com.android.server.wm.ActivityTaskSupervisor.DEFER_RESUME; import static com.android.server.wm.ActivityTaskSupervisor.ON_TOP; import static com.android.server.wm.ActivityTaskSupervisor.PRESERVE_WINDOWS; import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_DEFAULT; import static com.android.server.wm.BackgroundActivityStartController.BAL_BLOCK; import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.PHASE_BOUNDS; import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.PHASE_DISPLAY; import static com.android.server.wm.Task.REPARENT_MOVE_ROOT_TASK_TO_FRONT; Loading Loading @@ -130,6 +132,7 @@ import com.android.server.power.ShutdownCheckPoints; import com.android.server.statusbar.StatusBarManagerInternal; import com.android.server.uri.NeededUriGrants; import com.android.server.wm.ActivityMetricsLogger.LaunchingState; import com.android.server.wm.BackgroundActivityStartController.BalCode; import com.android.server.wm.LaunchParamsController.LaunchParams; import com.android.server.wm.TaskFragment.EmbeddingCheckResult; Loading Loading @@ -171,9 +174,10 @@ class ActivityStarter { private int mCallingUid; private ActivityOptions mOptions; // If it is true, background activity can only be started in an existing task that contains // If it is BAL_BLOCK, background activity can only be started in an existing task that contains // an activity with same uid, or if activity starts are enabled in developer options. private boolean mRestrictedBgActivity; @BalCode private int mBalCode; private int mLaunchMode; private boolean mLaunchTaskBehind; Loading Loading @@ -590,7 +594,7 @@ class ActivityStarter { mIntent = starter.mIntent; mCallingUid = starter.mCallingUid; mOptions = starter.mOptions; mRestrictedBgActivity = starter.mRestrictedBgActivity; mBalCode = starter.mBalCode; mLaunchTaskBehind = starter.mLaunchTaskBehind; mLaunchFlags = starter.mLaunchFlags; Loading Loading @@ -1024,15 +1028,15 @@ class ActivityStarter { ActivityOptions checkedOptions = options != null ? options.getOptions(intent, aInfo, callerApp, mSupervisor) : null; boolean restrictedBgActivity = false; @BalCode int balCode = BAL_ALLOW_DEFAULT; if (!abort) { try { Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "shouldAbortBackgroundActivityStart"); BackgroundActivityStartController balController = mController.getBackgroundActivityLaunchController(); restrictedBgActivity = balController.shouldAbortBackgroundActivityStart( balCode = balController.checkBackgroundActivityStart( callingUid, callingPid, callingPackage, Loading Loading @@ -1221,13 +1225,13 @@ class ActivityStarter { WindowProcessController homeProcess = mService.mHomeProcess; boolean isHomeProcess = homeProcess != null && aInfo.applicationInfo.uid == homeProcess.mUid; if (!restrictedBgActivity && !isHomeProcess) { if (balCode != BAL_BLOCK && !isHomeProcess) { mService.resumeAppSwitches(); } mLastStartActivityResult = startActivityUnchecked(r, sourceRecord, voiceSession, request.voiceInteractor, startFlags, checkedOptions, inTask, inTaskFragment, restrictedBgActivity, intentGrants); inTask, inTaskFragment, balCode, intentGrants); if (request.outActivity != null) { request.outActivity[0] = mLastStartActivityRecord; Loading Loading @@ -1377,7 +1381,7 @@ class ActivityStarter { private int startActivityUnchecked(final ActivityRecord r, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, int startFlags, ActivityOptions options, Task inTask, TaskFragment inTaskFragment, boolean restrictedBgActivity, TaskFragment inTaskFragment, @BalCode int balCode, NeededUriGrants intentGrants) { int result = START_CANCELED; final Task startedActivityRootTask; Loading @@ -1397,7 +1401,7 @@ class ActivityStarter { try { Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "startActivityInner"); result = startActivityInner(r, sourceRecord, voiceSession, voiceInteractor, startFlags, options, inTask, inTaskFragment, restrictedBgActivity, startFlags, options, inTask, inTaskFragment, balCode, intentGrants); } finally { Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); Loading Loading @@ -1544,10 +1548,10 @@ class ActivityStarter { int startActivityInner(final ActivityRecord r, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, int startFlags, ActivityOptions options, Task inTask, TaskFragment inTaskFragment, boolean restrictedBgActivity, TaskFragment inTaskFragment, @BalCode int balCode, NeededUriGrants intentGrants) { setInitialState(r, options, inTask, inTaskFragment, startFlags, sourceRecord, voiceSession, voiceInteractor, restrictedBgActivity); voiceSession, voiceInteractor, balCode); computeLaunchingTaskFlags(); mIntent.setFlags(mLaunchFlags); Loading Loading @@ -1800,7 +1804,8 @@ class ActivityStarter { || !targetTask.isUidPresent(mCallingUid) || (LAUNCH_SINGLE_INSTANCE == mLaunchMode && targetTask.inPinnedWindowingMode())); if (mRestrictedBgActivity && blockBalInTask && handleBackgroundActivityAbort(r)) { if (mBalCode == BAL_BLOCK && blockBalInTask && handleBackgroundActivityAbort(r)) { Slog.e(TAG, "Abort background activity starts from " + mCallingUid); return START_ABORTED; } Loading Loading @@ -2209,7 +2214,7 @@ class ActivityStarter { mIntent = null; mCallingUid = -1; mOptions = null; mRestrictedBgActivity = false; mBalCode = BAL_ALLOW_DEFAULT; mLaunchTaskBehind = false; mLaunchFlags = 0; Loading Loading @@ -2254,7 +2259,7 @@ class ActivityStarter { private void setInitialState(ActivityRecord r, ActivityOptions options, Task inTask, TaskFragment inTaskFragment, int startFlags, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, boolean restrictedBgActivity) { IVoiceInteractor voiceInteractor, @BalCode int balCode) { reset(false /* clearRequest */); mStartActivity = r; Loading @@ -2265,7 +2270,7 @@ class ActivityStarter { mSourceRootTask = mSourceRecord != null ? mSourceRecord.getRootTask() : null; mVoiceSession = voiceSession; mVoiceInteractor = voiceInteractor; mRestrictedBgActivity = restrictedBgActivity; mBalCode = balCode; mLaunchParams.reset(); Loading Loading @@ -2418,7 +2423,7 @@ class ActivityStarter { mNoAnimation = (mLaunchFlags & FLAG_ACTIVITY_NO_ANIMATION) != 0; if (mRestrictedBgActivity && !mService.isBackgroundActivityStartsEnabled()) { if (mBalCode == BAL_BLOCK && !mService.isBackgroundActivityStartsEnabled()) { mAvoidMoveToFront = true; mDoResume = false; } Loading services/core/java/com/android/server/wm/BackgroundActivityStartController.java +160 −124 File changed.Preview size limit exceeded, changes collapsed. Show changes services/core/java/com/android/server/wm/BackgroundLaunchProcessController.java +12 −7 Original line number Diff line number Diff line Loading @@ -22,6 +22,10 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLAS import static com.android.server.wm.ActivityTaskManagerService.ACTIVITY_BG_START_GRACE_PERIOD_MS; import static com.android.server.wm.ActivityTaskManagerService.APP_SWITCH_ALLOW; import static com.android.server.wm.ActivityTaskManagerService.APP_SWITCH_FG_ONLY; import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_BAL_PERMISSION; import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_FOREGROUND; import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_GRACE_PERIOD; import static com.android.server.wm.BackgroundActivityStartController.BAL_BLOCK; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -71,7 +75,8 @@ class BackgroundLaunchProcessController { mBackgroundActivityStartCallback = callback; } boolean areBackgroundActivityStartsAllowed(int pid, int uid, String packageName, @BackgroundActivityStartController.BalCode int areBackgroundActivityStartsAllowed(int pid, int uid, String packageName, int appSwitchState, boolean isCheckingForFgsStart, boolean hasActivityInVisibleTask, boolean hasBackgroundActivityStartPrivileges, long lastStopAppSwitchesTime, long lastActivityLaunchTime, Loading @@ -93,7 +98,7 @@ class BackgroundLaunchProcessController { + ")] Activity start allowed: within " + ACTIVITY_BG_START_GRACE_PERIOD_MS + "ms grace period"); } return true; return BAL_ALLOW_GRACE_PERIOD; } if (DEBUG_ACTIVITY_STARTS) { Slog.d(TAG, "[Process(" + pid + ")] Activity start within " Loading @@ -110,7 +115,7 @@ class BackgroundLaunchProcessController { + ")] Activity start allowed: process instrumenting with background " + "activity starts privileges"); } return true; return BAL_ALLOW_BAL_PERMISSION; } // Allow if the caller has an activity in any foreground task. if (hasActivityInVisibleTask Loading @@ -119,7 +124,7 @@ class BackgroundLaunchProcessController { Slog.d(TAG, "[Process(" + pid + ")] Activity start allowed: process has activity in foreground task"); } return true; return BAL_ALLOW_FOREGROUND; } // Allow if the caller is bound by a UID that's currently foreground. if (isBoundByForegroundUid()) { Loading @@ -127,7 +132,7 @@ class BackgroundLaunchProcessController { Slog.d(TAG, "[Process(" + pid + ")] Activity start allowed: process bound by foreground uid"); } return true; return BAL_ALLOW_FOREGROUND; } // Allow if the flag was explicitly set. if (isBackgroundStartAllowedByToken(uid, packageName, isCheckingForFgsStart)) { Loading @@ -135,9 +140,9 @@ class BackgroundLaunchProcessController { Slog.d(TAG, "[Process(" + pid + ")] Activity start allowed: process allowed by token"); } return true; return BAL_ALLOW_BAL_PERMISSION; } return false; return BAL_BLOCK; } /** Loading services/core/java/com/android/server/wm/WindowProcessController.java +6 −3 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.ActivityTaskManagerService.INSTRUMENTATION_KEY_DISPATCHING_TIMEOUT_MILLIS; import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_NONE; import static com.android.server.wm.BackgroundActivityStartController.BAL_BLOCK; import static com.android.server.wm.WindowManagerService.MY_PID; import android.Manifest; Loading Loading @@ -561,15 +562,17 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio @HotPath(caller = HotPath.START_SERVICE) public boolean areBackgroundFgsStartsAllowed() { return areBackgroundActivityStartsAllowed(mAtm.getBalAppSwitchesState(), true /* isCheckingForFgsStart */); true /* isCheckingForFgsStart */) != BAL_BLOCK; } boolean areBackgroundActivityStartsAllowed(int appSwitchState) { @BackgroundActivityStartController.BalCode int areBackgroundActivityStartsAllowed(int appSwitchState) { return areBackgroundActivityStartsAllowed(appSwitchState, false /* isCheckingForFgsStart */); } private boolean areBackgroundActivityStartsAllowed(int appSwitchState, @BackgroundActivityStartController.BalCode private int areBackgroundActivityStartsAllowed(int appSwitchState, boolean isCheckingForFgsStart) { return mBgLaunchController.areBackgroundActivityStartsAllowed(mPid, mUid, mInfo.packageName, appSwitchState, isCheckingForFgsStart, hasActivityInVisibleTask(), Loading services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +2 −2 Original line number Diff line number Diff line Loading @@ -1748,7 +1748,7 @@ public class ActivityStarterTests extends WindowTestsBase { TaskFragment inTaskFragment) { starter.startActivityInner(target, source, null /* voiceSession */, null /* voiceInteractor */, 0 /* startFlags */, options, inTask, inTaskFragment, false /* restrictedBgActivity */, null /* intentGrants */); options, inTask, inTaskFragment, BackgroundActivityStartController.BAL_ALLOW_DEFAULT, null /* intentGrants */); } } Loading
services/core/java/com/android/server/wm/ActivityStarter.java +22 −17 Original line number Diff line number Diff line Loading @@ -74,6 +74,8 @@ import static com.android.server.wm.ActivityTaskManagerService.ANIMATE; import static com.android.server.wm.ActivityTaskSupervisor.DEFER_RESUME; import static com.android.server.wm.ActivityTaskSupervisor.ON_TOP; import static com.android.server.wm.ActivityTaskSupervisor.PRESERVE_WINDOWS; import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_DEFAULT; import static com.android.server.wm.BackgroundActivityStartController.BAL_BLOCK; import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.PHASE_BOUNDS; import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.PHASE_DISPLAY; import static com.android.server.wm.Task.REPARENT_MOVE_ROOT_TASK_TO_FRONT; Loading Loading @@ -130,6 +132,7 @@ import com.android.server.power.ShutdownCheckPoints; import com.android.server.statusbar.StatusBarManagerInternal; import com.android.server.uri.NeededUriGrants; import com.android.server.wm.ActivityMetricsLogger.LaunchingState; import com.android.server.wm.BackgroundActivityStartController.BalCode; import com.android.server.wm.LaunchParamsController.LaunchParams; import com.android.server.wm.TaskFragment.EmbeddingCheckResult; Loading Loading @@ -171,9 +174,10 @@ class ActivityStarter { private int mCallingUid; private ActivityOptions mOptions; // If it is true, background activity can only be started in an existing task that contains // If it is BAL_BLOCK, background activity can only be started in an existing task that contains // an activity with same uid, or if activity starts are enabled in developer options. private boolean mRestrictedBgActivity; @BalCode private int mBalCode; private int mLaunchMode; private boolean mLaunchTaskBehind; Loading Loading @@ -590,7 +594,7 @@ class ActivityStarter { mIntent = starter.mIntent; mCallingUid = starter.mCallingUid; mOptions = starter.mOptions; mRestrictedBgActivity = starter.mRestrictedBgActivity; mBalCode = starter.mBalCode; mLaunchTaskBehind = starter.mLaunchTaskBehind; mLaunchFlags = starter.mLaunchFlags; Loading Loading @@ -1024,15 +1028,15 @@ class ActivityStarter { ActivityOptions checkedOptions = options != null ? options.getOptions(intent, aInfo, callerApp, mSupervisor) : null; boolean restrictedBgActivity = false; @BalCode int balCode = BAL_ALLOW_DEFAULT; if (!abort) { try { Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "shouldAbortBackgroundActivityStart"); BackgroundActivityStartController balController = mController.getBackgroundActivityLaunchController(); restrictedBgActivity = balController.shouldAbortBackgroundActivityStart( balCode = balController.checkBackgroundActivityStart( callingUid, callingPid, callingPackage, Loading Loading @@ -1221,13 +1225,13 @@ class ActivityStarter { WindowProcessController homeProcess = mService.mHomeProcess; boolean isHomeProcess = homeProcess != null && aInfo.applicationInfo.uid == homeProcess.mUid; if (!restrictedBgActivity && !isHomeProcess) { if (balCode != BAL_BLOCK && !isHomeProcess) { mService.resumeAppSwitches(); } mLastStartActivityResult = startActivityUnchecked(r, sourceRecord, voiceSession, request.voiceInteractor, startFlags, checkedOptions, inTask, inTaskFragment, restrictedBgActivity, intentGrants); inTask, inTaskFragment, balCode, intentGrants); if (request.outActivity != null) { request.outActivity[0] = mLastStartActivityRecord; Loading Loading @@ -1377,7 +1381,7 @@ class ActivityStarter { private int startActivityUnchecked(final ActivityRecord r, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, int startFlags, ActivityOptions options, Task inTask, TaskFragment inTaskFragment, boolean restrictedBgActivity, TaskFragment inTaskFragment, @BalCode int balCode, NeededUriGrants intentGrants) { int result = START_CANCELED; final Task startedActivityRootTask; Loading @@ -1397,7 +1401,7 @@ class ActivityStarter { try { Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "startActivityInner"); result = startActivityInner(r, sourceRecord, voiceSession, voiceInteractor, startFlags, options, inTask, inTaskFragment, restrictedBgActivity, startFlags, options, inTask, inTaskFragment, balCode, intentGrants); } finally { Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER); Loading Loading @@ -1544,10 +1548,10 @@ class ActivityStarter { int startActivityInner(final ActivityRecord r, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, int startFlags, ActivityOptions options, Task inTask, TaskFragment inTaskFragment, boolean restrictedBgActivity, TaskFragment inTaskFragment, @BalCode int balCode, NeededUriGrants intentGrants) { setInitialState(r, options, inTask, inTaskFragment, startFlags, sourceRecord, voiceSession, voiceInteractor, restrictedBgActivity); voiceSession, voiceInteractor, balCode); computeLaunchingTaskFlags(); mIntent.setFlags(mLaunchFlags); Loading Loading @@ -1800,7 +1804,8 @@ class ActivityStarter { || !targetTask.isUidPresent(mCallingUid) || (LAUNCH_SINGLE_INSTANCE == mLaunchMode && targetTask.inPinnedWindowingMode())); if (mRestrictedBgActivity && blockBalInTask && handleBackgroundActivityAbort(r)) { if (mBalCode == BAL_BLOCK && blockBalInTask && handleBackgroundActivityAbort(r)) { Slog.e(TAG, "Abort background activity starts from " + mCallingUid); return START_ABORTED; } Loading Loading @@ -2209,7 +2214,7 @@ class ActivityStarter { mIntent = null; mCallingUid = -1; mOptions = null; mRestrictedBgActivity = false; mBalCode = BAL_ALLOW_DEFAULT; mLaunchTaskBehind = false; mLaunchFlags = 0; Loading Loading @@ -2254,7 +2259,7 @@ class ActivityStarter { private void setInitialState(ActivityRecord r, ActivityOptions options, Task inTask, TaskFragment inTaskFragment, int startFlags, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, boolean restrictedBgActivity) { IVoiceInteractor voiceInteractor, @BalCode int balCode) { reset(false /* clearRequest */); mStartActivity = r; Loading @@ -2265,7 +2270,7 @@ class ActivityStarter { mSourceRootTask = mSourceRecord != null ? mSourceRecord.getRootTask() : null; mVoiceSession = voiceSession; mVoiceInteractor = voiceInteractor; mRestrictedBgActivity = restrictedBgActivity; mBalCode = balCode; mLaunchParams.reset(); Loading Loading @@ -2418,7 +2423,7 @@ class ActivityStarter { mNoAnimation = (mLaunchFlags & FLAG_ACTIVITY_NO_ANIMATION) != 0; if (mRestrictedBgActivity && !mService.isBackgroundActivityStartsEnabled()) { if (mBalCode == BAL_BLOCK && !mService.isBackgroundActivityStartsEnabled()) { mAvoidMoveToFront = true; mDoResume = false; } Loading
services/core/java/com/android/server/wm/BackgroundActivityStartController.java +160 −124 File changed.Preview size limit exceeded, changes collapsed. Show changes
services/core/java/com/android/server/wm/BackgroundLaunchProcessController.java +12 −7 Original line number Diff line number Diff line Loading @@ -22,6 +22,10 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLAS import static com.android.server.wm.ActivityTaskManagerService.ACTIVITY_BG_START_GRACE_PERIOD_MS; import static com.android.server.wm.ActivityTaskManagerService.APP_SWITCH_ALLOW; import static com.android.server.wm.ActivityTaskManagerService.APP_SWITCH_FG_ONLY; import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_BAL_PERMISSION; import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_FOREGROUND; import static com.android.server.wm.BackgroundActivityStartController.BAL_ALLOW_GRACE_PERIOD; import static com.android.server.wm.BackgroundActivityStartController.BAL_BLOCK; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -71,7 +75,8 @@ class BackgroundLaunchProcessController { mBackgroundActivityStartCallback = callback; } boolean areBackgroundActivityStartsAllowed(int pid, int uid, String packageName, @BackgroundActivityStartController.BalCode int areBackgroundActivityStartsAllowed(int pid, int uid, String packageName, int appSwitchState, boolean isCheckingForFgsStart, boolean hasActivityInVisibleTask, boolean hasBackgroundActivityStartPrivileges, long lastStopAppSwitchesTime, long lastActivityLaunchTime, Loading @@ -93,7 +98,7 @@ class BackgroundLaunchProcessController { + ")] Activity start allowed: within " + ACTIVITY_BG_START_GRACE_PERIOD_MS + "ms grace period"); } return true; return BAL_ALLOW_GRACE_PERIOD; } if (DEBUG_ACTIVITY_STARTS) { Slog.d(TAG, "[Process(" + pid + ")] Activity start within " Loading @@ -110,7 +115,7 @@ class BackgroundLaunchProcessController { + ")] Activity start allowed: process instrumenting with background " + "activity starts privileges"); } return true; return BAL_ALLOW_BAL_PERMISSION; } // Allow if the caller has an activity in any foreground task. if (hasActivityInVisibleTask Loading @@ -119,7 +124,7 @@ class BackgroundLaunchProcessController { Slog.d(TAG, "[Process(" + pid + ")] Activity start allowed: process has activity in foreground task"); } return true; return BAL_ALLOW_FOREGROUND; } // Allow if the caller is bound by a UID that's currently foreground. if (isBoundByForegroundUid()) { Loading @@ -127,7 +132,7 @@ class BackgroundLaunchProcessController { Slog.d(TAG, "[Process(" + pid + ")] Activity start allowed: process bound by foreground uid"); } return true; return BAL_ALLOW_FOREGROUND; } // Allow if the flag was explicitly set. if (isBackgroundStartAllowedByToken(uid, packageName, isCheckingForFgsStart)) { Loading @@ -135,9 +140,9 @@ class BackgroundLaunchProcessController { Slog.d(TAG, "[Process(" + pid + ")] Activity start allowed: process allowed by token"); } return true; return BAL_ALLOW_BAL_PERMISSION; } return false; return BAL_BLOCK; } /** Loading
services/core/java/com/android/server/wm/WindowProcessController.java +6 −3 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM; import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.wm.ActivityTaskManagerService.INSTRUMENTATION_KEY_DISPATCHING_TIMEOUT_MILLIS; import static com.android.server.wm.ActivityTaskManagerService.RELAUNCH_REASON_NONE; import static com.android.server.wm.BackgroundActivityStartController.BAL_BLOCK; import static com.android.server.wm.WindowManagerService.MY_PID; import android.Manifest; Loading Loading @@ -561,15 +562,17 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio @HotPath(caller = HotPath.START_SERVICE) public boolean areBackgroundFgsStartsAllowed() { return areBackgroundActivityStartsAllowed(mAtm.getBalAppSwitchesState(), true /* isCheckingForFgsStart */); true /* isCheckingForFgsStart */) != BAL_BLOCK; } boolean areBackgroundActivityStartsAllowed(int appSwitchState) { @BackgroundActivityStartController.BalCode int areBackgroundActivityStartsAllowed(int appSwitchState) { return areBackgroundActivityStartsAllowed(appSwitchState, false /* isCheckingForFgsStart */); } private boolean areBackgroundActivityStartsAllowed(int appSwitchState, @BackgroundActivityStartController.BalCode private int areBackgroundActivityStartsAllowed(int appSwitchState, boolean isCheckingForFgsStart) { return mBgLaunchController.areBackgroundActivityStartsAllowed(mPid, mUid, mInfo.packageName, appSwitchState, isCheckingForFgsStart, hasActivityInVisibleTask(), Loading
services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +2 −2 Original line number Diff line number Diff line Loading @@ -1748,7 +1748,7 @@ public class ActivityStarterTests extends WindowTestsBase { TaskFragment inTaskFragment) { starter.startActivityInner(target, source, null /* voiceSession */, null /* voiceInteractor */, 0 /* startFlags */, options, inTask, inTaskFragment, false /* restrictedBgActivity */, null /* intentGrants */); options, inTask, inTaskFragment, BackgroundActivityStartController.BAL_ALLOW_DEFAULT, null /* intentGrants */); } }