summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java5
-rw-r--r--apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java3
-rw-r--r--services/core/java/com/android/server/am/ActiveServices.java90
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/am/ActiveServicesTest.java95
4 files changed, 0 insertions, 193 deletions
diff --git a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java
index d459c0502189..44e87c370fc1 100644
--- a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java
+++ b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java
@@ -176,8 +176,6 @@ public class PowerExemptionManager {
/** @hide */
public static final int REASON_DEVICE_DEMO_MODE = 63;
/** @hide */
- public static final int REASON_EXEMPTED_PACKAGE = 64;
- /** @hide */
public static final int REASON_ALLOWLISTED_PACKAGE = 65;
/** @hide */
public static final int REASON_APPOP = 66;
@@ -344,7 +342,6 @@ public class PowerExemptionManager {
REASON_INSTR_BACKGROUND_FGS_PERMISSION,
REASON_SYSTEM_ALERT_WINDOW_PERMISSION,
REASON_DEVICE_DEMO_MODE,
- REASON_EXEMPTED_PACKAGE,
REASON_ALLOWLISTED_PACKAGE,
REASON_APPOP,
REASON_ACTIVITY_VISIBILITY_GRACE_PERIOD,
@@ -601,8 +598,6 @@ public class PowerExemptionManager {
return "SYSTEM_ALERT_WINDOW_PERMISSION";
case REASON_DEVICE_DEMO_MODE:
return "DEVICE_DEMO_MODE";
- case REASON_EXEMPTED_PACKAGE:
- return "EXEMPTED_PACKAGE";
case REASON_ALLOWLISTED_PACKAGE:
return "ALLOWLISTED_PACKAGE";
case REASON_APPOP:
diff --git a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
index 07231b099815..29a5dee0be26 100644
--- a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
+++ b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
@@ -176,8 +176,6 @@ public class PowerWhitelistManager {
/** @hide */
public static final int REASON_DEVICE_DEMO_MODE = PowerExemptionManager.REASON_DEVICE_DEMO_MODE;
/** @hide */
- public static final int REASON_EXEMPTED_PACKAGE = PowerExemptionManager.REASON_EXEMPTED_PACKAGE;
- /** @hide */
public static final int REASON_ALLOWLISTED_PACKAGE =
PowerExemptionManager.REASON_ALLOWLISTED_PACKAGE;
/** @hide */
@@ -341,7 +339,6 @@ public class PowerWhitelistManager {
REASON_INSTR_BACKGROUND_FGS_PERMISSION,
REASON_SYSTEM_ALERT_WINDOW_PERMISSION,
REASON_DEVICE_DEMO_MODE,
- REASON_EXEMPTED_PACKAGE,
REASON_ALLOWLISTED_PACKAGE,
REASON_APPOP,
// temp and system allowlist reasons.
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index c7f2f43db131..50040e2dad5f 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -34,7 +34,6 @@ import static android.os.PowerWhitelistManager.REASON_COMPANION_DEVICE_MANAGER;
import static android.os.PowerWhitelistManager.REASON_DENIED;
import static android.os.PowerWhitelistManager.REASON_DEVICE_DEMO_MODE;
import static android.os.PowerWhitelistManager.REASON_DEVICE_OWNER;
-import static android.os.PowerWhitelistManager.REASON_EXEMPTED_PACKAGE;
import static android.os.PowerWhitelistManager.REASON_FGS_BINDING;
import static android.os.PowerWhitelistManager.REASON_INSTR_BACKGROUND_ACTIVITY_PERMISSION;
import static android.os.PowerWhitelistManager.REASON_INSTR_BACKGROUND_FGS_PERMISSION;
@@ -289,13 +288,6 @@ public final class ActiveServices {
static final long FGS_BG_START_RESTRICTION_CHANGE_ID = 170668199L;
/**
- * If set to false for a package, the system will *not* exempt it from FGS-BG-start,
- * even if it's in {#code ActiveServices.sFgsBgStartExemptedPackages}.
- */
- @ChangeId
- static final long FGS_BG_START_USE_EXEMPTION_LIST_CHANGE_ID = 175801883;
-
- /**
* If a service can not become foreground service due to BG-FGS-launch restriction or other
* reasons, throws an IllegalStateException.
*/
@@ -303,56 +295,6 @@ public final class ActiveServices {
@EnabledSince(targetSdkVersion = android.os.Build.VERSION_CODES.S)
static final long FGS_START_EXCEPTION_CHANGE_ID = 174041399L;
- /**
- * Special allowlist that contains packages that are allowed to start FGS even if they target S,
- * without using START_FOREGROUND_SERVICES_FROM_BACKGROUND.
- *
- * Note: we exempt FGS starts if either the "callee" or "caller" match any of the emempted
- * packages. This means:
- * - Exempted apps could call Context.startForegroundService() for services owned by any other
- * apps.
- * - Any apps could call Context.startForegroundService() for services owned by any exempted
- * apps.
- * And the call would succeed.
- */
- private static final ArraySet<String> sFgsBgStartExemptedPackages = new ArraySet<>();
-
- private static final ArrayList<String> sFgsBgStartExemptedPackagePrefixes = new ArrayList<>();
-
- /**
- * List of packages that are exempted from the FGS restriction *for now*.
- *
- * STOPSHIP(/b/176844961) Remove it. Also update ActiveServicesTest.java.
- */
- private static final String[] FGS_BG_START_EXEMPTED_PACKAGES = {
- "com.google.pixel.exo.bootstrapping",
- };
-
- /**
- * List of packages that are exempted from the FGS restriction *for now*. We also allow
- * any packages that
- *
- * STOPSHIP(/b/176844961) Remove it. Also update ActiveServicesTest.java.
- */
- private static final String[] FGS_BG_START_EXEMPTED_PACKAGES_PREFIXED_ALLOWED = {
- "com.android.webview",
- "com.google.android.webview",
- "com.android.chrome",
- "com.google.android.apps.chrome",
- "com.chrome",
- };
-
- static {
- for (String s : FGS_BG_START_EXEMPTED_PACKAGES) {
- sFgsBgStartExemptedPackages.add(s);
- }
-
- for (String s : FGS_BG_START_EXEMPTED_PACKAGES_PREFIXED_ALLOWED) {
- sFgsBgStartExemptedPackages.add(s); // Add it for an exact match.
- sFgsBgStartExemptedPackagePrefixes.add(s + "."); // Add it for an prefix match.
- }
- }
-
final Runnable mLastAnrDumpClearer = new Runnable() {
@Override public void run() {
synchronized (mAm) {
@@ -5857,16 +5799,6 @@ public final class ActiveServices {
}
}
- // NOTE this should always be the last check.
- if (ret == REASON_DENIED) {
- if (isPackageExemptedFromFgsRestriction(callingPackage, callingUid)) {
- ret = REASON_EXEMPTED_PACKAGE;
- } else if (targetService != null && isPackageExemptedFromFgsRestriction(
- targetService.appInfo.packageName, targetService.appInfo.uid)) {
- ret = REASON_EXEMPTED_PACKAGE;
- }
- }
-
if (ret == REASON_DENIED) {
final boolean isCompanionApp = mAm.mInternal.isAssociatedCompanionApp(
UserHandle.getUserId(callingUid), callingUid);
@@ -5889,28 +5821,6 @@ public final class ActiveServices {
return ret;
}
- @VisibleForTesting
- static boolean isPackageExemptedFromFgsRestriction(String packageName, int uid) {
- boolean exempted = false;
- if (sFgsBgStartExemptedPackages.contains(packageName)) {
- exempted = true;
- } else {
- for (String pkg : sFgsBgStartExemptedPackagePrefixes) {
- if (packageName.startsWith(pkg)) {
- exempted = true;
- break;
- }
- }
- }
- if (!exempted) {
- return false; // Package isn't exempted.
- }
- // Allow exempted packages to be subject to the restriction using this compat ID.
- // (so that, for example, the webview developer will be able to test the restriction
- // locally.)
- return CompatChanges.isChangeEnabled(FGS_BG_START_USE_EXEMPTION_LIST_CHANGE_ID, uid);
- }
-
private static boolean isFgsBgStart(@ReasonCode int code) {
return code != REASON_PROC_STATE_PERSISTENT
&& code != REASON_PROC_STATE_PERSISTENT_UI
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/ActiveServicesTest.java b/services/tests/mockingservicestests/src/com/android/server/am/ActiveServicesTest.java
deleted file mode 100644
index 0633ab92acf8..000000000000
--- a/services/tests/mockingservicestests/src/com/android/server/am/ActiveServicesTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.server.am;
-
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
-import static com.android.server.am.ActiveServices.FGS_BG_START_USE_EXEMPTION_LIST_CHANGE_ID;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyLong;
-
-import android.app.compat.CompatChanges;
-
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.MockitoSession;
-import org.mockito.quality.Strictness;
-
-
-
-@RunWith(AndroidJUnit4.class)
-public class ActiveServicesTest {
-
- private MockitoSession mMockingSession;
-
- @Before
- public void setUp() {
- mMockingSession = mockitoSession()
- .initMocks(this)
- .strictness(Strictness.LENIENT)
- .mockStatic(CompatChanges.class)
- .startMocking();
- }
-
- @After
- public void tearDown() {
- if (mMockingSession != null) {
- mMockingSession.finishMocking();
- }
- }
-
- private void checkPackageExempted(String pkg, int uid, boolean expected) {
- assertEquals("Package=" + pkg + " uid=" + uid,
- expected, ActiveServices.isPackageExemptedFromFgsRestriction(pkg, uid));
- }
-
- @Test
- public void isPackageExemptedFromFgsRestriction() {
- // Compat changes are enabled by default.
- when(CompatChanges.isChangeEnabled(anyLong(), anyInt())).thenReturn(true);
-
- checkPackageExempted("", 1, false);
- checkPackageExempted("abc", 1, false);
- checkPackageExempted("com.random", 1, false);
-
- // This package is exempted but not its subpackages.
- checkPackageExempted("com.google.pixel.exo.bootstrapping", 1, true);
- checkPackageExempted("com.google.pixel.exo.bootstrapping.subpackage", 1, false);
-
- // Subpackages are also exempted.
- checkPackageExempted("com.android.webview", 1, true);
- checkPackageExempted("com.android.webview.beta", 1, true);
- checkPackageExempted("com.chrome", 1, true);
- checkPackageExempted("com.chrome.canary", 1, true);
-
- checkPackageExempted("com.android.webviewx", 1, false);
-
- // Now toggle the compat ID for a specific UID.
- when(CompatChanges.isChangeEnabled(FGS_BG_START_USE_EXEMPTION_LIST_CHANGE_ID, 10))
- .thenReturn(false);
- // Exempted package, but compat id is disabled for the UID.
- checkPackageExempted("com.android.webview", 10, false);
-
- // Exempted package, but compat id is still enabled for the UID.
- checkPackageExempted("com.android.webview", 11, true);
- }
-}