Merge "Apply restriction at startForegroundService() call."

This commit is contained in:
TreeHugger Robot
2020-08-12 19:57:39 +00:00
committed by Android (Google) Code Review

View File

@@ -494,6 +494,13 @@ public final class ActiveServices {
ServiceRecord r = res.record;
if (allowBackgroundActivityStarts) {
r.allowBgActivityStartsOnServiceStart();
}
setFgsRestrictionLocked(callingPackage, callingPid, callingUid, service, r,
allowBackgroundActivityStarts);
if (!mAm.mUserController.exists(r.userId)) {
Slog.w(TAG, "Trying to start service with non-existent user! " + r.userId);
return null;
@@ -516,6 +523,21 @@ public final class ActiveServices {
forcedStandby = true;
}
if (fgRequired) {
if (!r.mAllowStartForeground) {
if (!r.mLoggedInfoAllowStartForeground) {
Slog.wtf(TAG, "Background started FGS " + r.mInfoAllowStartForeground);
r.mLoggedInfoAllowStartForeground = true;
}
if (mAm.mConstants.mFlagFgsStartRestrictionEnabled) {
Slog.w(TAG, "startForegroundService() not allowed due to "
+ " mAllowStartForeground false: service "
+ r.shortInstanceName);
forcedStandby = true;
}
}
}
// If this is a direct-to-foreground start, make sure it is allowed as per the app op.
boolean forceSilentAbort = false;
if (fgRequired) {
@@ -688,14 +710,7 @@ public final class ActiveServices {
"Not potential delay (user " + r.userId + " not started): " + r);
}
}
if (allowBackgroundActivityStarts) {
r.allowBgActivityStartsOnServiceStart();
}
ComponentName cmp = startServiceInnerLocked(smap, service, r, callerFg, addToStarting);
setFgsRestrictionLocked(callingPackage, callingPid,
callingUid, service, r, allowBackgroundActivityStarts);
return cmp;
}
@@ -1422,8 +1437,8 @@ public final class ActiveServices {
if (mAm.mConstants.mFlagFgsStartRestrictionEnabled) {
Slog.w(TAG,
"Service.startForeground() not allowed due to "
+ " mAllowStartForeground false: service "
+ r.shortInstanceName);
+ "mAllowStartForeground false: service "
+ r.shortInstanceName);
updateServiceForegroundLocked(r.app, true);
ignoreForeground = true;
}