Loading services/core/java/com/android/server/am/ActiveServices.java +12 −12 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.am; import static android.Manifest.permission.START_ACTIVITIES_FROM_BACKGROUND; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_LOCATION; import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST; Loading Loading @@ -692,8 +693,8 @@ public final class ActiveServices { if (!r.mAllowWhileInUsePermissionInFgs) { r.mAllowWhileInUsePermissionInFgs = shouldAllowWhileInUsePermissionInFgsLocked(callingPackage, callingUid, service, r, allowBackgroundActivityStarts); shouldAllowWhileInUsePermissionInFgsLocked(callingPackage, callingPid, callingUid, service, r, allowBackgroundActivityStarts); } return cmp; Loading Loading @@ -2077,9 +2078,9 @@ public final class ActiveServices { } if (!s.mAllowWhileInUsePermissionInFgs) { final int callingUid = Binder.getCallingUid(); s.mAllowWhileInUsePermissionInFgs = shouldAllowWhileInUsePermissionInFgsLocked(callingPackage, callingUid, shouldAllowWhileInUsePermissionInFgsLocked(callingPackage, Binder.getCallingPid(), Binder.getCallingUid(), service, s, false); } Loading Loading @@ -4839,7 +4840,8 @@ public final class ActiveServices { * @return true if allow, false otherwise. */ private boolean shouldAllowWhileInUsePermissionInFgsLocked(String callingPackage, int callingUid, Intent intent, ServiceRecord r, boolean allowBackgroundActivityStarts) { int callingPid, int callingUid, Intent intent, ServiceRecord r, boolean allowBackgroundActivityStarts) { // Is the background FGS start restriction turned on? if (!mAm.mConstants.mFlagBackgroundFgsStartRestrictionEnabled) { return true; Loading @@ -4849,13 +4851,6 @@ public final class ActiveServices { return true; } // Is the service in a whitelist? final boolean hasAllowBackgroundActivityStartsToken = r.app != null ? r.app.mAllowBackgroundActivityStartsTokens.contains(r) : false; if (hasAllowBackgroundActivityStartsToken) { return true; } boolean isCallerSystem = false; final int callingAppId = UserHandle.getAppId(callingUid); switch (callingAppId) { Loading @@ -4874,6 +4869,11 @@ public final class ActiveServices { return true; } if (mAm.checkPermission(START_ACTIVITIES_FROM_BACKGROUND, callingPid, callingUid) == PERMISSION_GRANTED) { return true; } // Is the calling UID at PROCESS_STATE_TOP or above? final boolean isCallingUidTopApp = appIsTopLocked(callingUid); if (isCallingUidTopApp) { Loading Loading
services/core/java/com/android/server/am/ActiveServices.java +12 −12 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.am; import static android.Manifest.permission.START_ACTIVITIES_FROM_BACKGROUND; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_LOCATION; import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST; Loading Loading @@ -692,8 +693,8 @@ public final class ActiveServices { if (!r.mAllowWhileInUsePermissionInFgs) { r.mAllowWhileInUsePermissionInFgs = shouldAllowWhileInUsePermissionInFgsLocked(callingPackage, callingUid, service, r, allowBackgroundActivityStarts); shouldAllowWhileInUsePermissionInFgsLocked(callingPackage, callingPid, callingUid, service, r, allowBackgroundActivityStarts); } return cmp; Loading Loading @@ -2077,9 +2078,9 @@ public final class ActiveServices { } if (!s.mAllowWhileInUsePermissionInFgs) { final int callingUid = Binder.getCallingUid(); s.mAllowWhileInUsePermissionInFgs = shouldAllowWhileInUsePermissionInFgsLocked(callingPackage, callingUid, shouldAllowWhileInUsePermissionInFgsLocked(callingPackage, Binder.getCallingPid(), Binder.getCallingUid(), service, s, false); } Loading Loading @@ -4839,7 +4840,8 @@ public final class ActiveServices { * @return true if allow, false otherwise. */ private boolean shouldAllowWhileInUsePermissionInFgsLocked(String callingPackage, int callingUid, Intent intent, ServiceRecord r, boolean allowBackgroundActivityStarts) { int callingPid, int callingUid, Intent intent, ServiceRecord r, boolean allowBackgroundActivityStarts) { // Is the background FGS start restriction turned on? if (!mAm.mConstants.mFlagBackgroundFgsStartRestrictionEnabled) { return true; Loading @@ -4849,13 +4851,6 @@ public final class ActiveServices { return true; } // Is the service in a whitelist? final boolean hasAllowBackgroundActivityStartsToken = r.app != null ? r.app.mAllowBackgroundActivityStartsTokens.contains(r) : false; if (hasAllowBackgroundActivityStartsToken) { return true; } boolean isCallerSystem = false; final int callingAppId = UserHandle.getAppId(callingUid); switch (callingAppId) { Loading @@ -4874,6 +4869,11 @@ public final class ActiveServices { return true; } if (mAm.checkPermission(START_ACTIVITIES_FROM_BACKGROUND, callingPid, callingUid) == PERMISSION_GRANTED) { return true; } // Is the calling UID at PROCESS_STATE_TOP or above? final boolean isCallingUidTopApp = appIsTopLocked(callingUid); if (isCallingUidTopApp) { Loading