diff --git a/services/core/java/com/android/server/PermissionThread.java b/services/core/java/com/android/server/PermissionThread.java deleted file mode 100644 index cf444fac4d035..0000000000000 --- a/services/core/java/com/android/server/PermissionThread.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2021 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; - -import android.os.Handler; -import android.os.HandlerExecutor; -import android.os.Looper; -import android.os.Trace; - -import com.android.internal.annotations.GuardedBy; -import com.android.server.ServiceThread; - -import java.util.concurrent.Executor; - -/** - * Shared singleton thread for the system. This is a thread for handling - * calls to and from the PermissionController and handling synchronization - * between permissions and appops states. - */ -public final class PermissionThread extends ServiceThread { - private static final long SLOW_DISPATCH_THRESHOLD_MS = 100; - private static final long SLOW_DELIVERY_THRESHOLD_MS = 200; - - private static final Object sLock = new Object(); - - @GuardedBy("sLock") - private static PermissionThread sInstance; - private static Handler sHandler; - private static HandlerExecutor sHandlerExecutor; - - private PermissionThread() { - super("android.perm", android.os.Process.THREAD_PRIORITY_DEFAULT, /* allowIo= */ true); - } - - private static void ensureThreadLocked() { - if (sInstance != null) { - return; - } - - sInstance = new PermissionThread(); - sInstance.start(); - final Looper looper = sInstance.getLooper(); - looper.setTraceTag(Trace.TRACE_TAG_SYSTEM_SERVER); - looper.setSlowLogThresholdMs( - SLOW_DISPATCH_THRESHOLD_MS, SLOW_DELIVERY_THRESHOLD_MS); - sHandler = new Handler(sInstance.getLooper()); - sHandlerExecutor = new HandlerExecutor(sHandler); - } - - public static PermissionThread get() { - synchronized (sLock) { - ensureThreadLocked(); - return sInstance; - } - } - - public static Handler getHandler() { - synchronized (sLock) { - ensureThreadLocked(); - return sHandler; - } - } - - public static Executor getExecutor() { - synchronized (sLock) { - ensureThreadLocked(); - return sHandlerExecutor; - } - } -} \ No newline at end of file diff --git a/services/core/java/com/android/server/pm/permission/OneTimePermissionUserManager.java b/services/core/java/com/android/server/pm/permission/OneTimePermissionUserManager.java index dd50b0c099919..4bbe3733719e5 100644 --- a/services/core/java/com/android/server/pm/permission/OneTimePermissionUserManager.java +++ b/services/core/java/com/android/server/pm/permission/OneTimePermissionUserManager.java @@ -33,7 +33,6 @@ import android.util.Log; import android.util.SparseArray; import com.android.internal.annotations.GuardedBy; -import com.android.server.PermissionThread; /** * Class that handles one-time permissions for a user @@ -80,8 +79,7 @@ public class OneTimePermissionUserManager { mContext = context; mActivityManager = context.getSystemService(ActivityManager.class); mAlarmManager = context.getSystemService(AlarmManager.class); - mPermissionControllerManager = new PermissionControllerManager( - mContext, PermissionThread.getHandler()); + mPermissionControllerManager = context.getSystemService(PermissionControllerManager.class); mHandler = context.getMainThreadHandler(); } diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index b619a9d914717..fbe14ce5b9657 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -145,7 +145,6 @@ import com.android.internal.util.function.TriFunction; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.FgThread; import com.android.server.LocalServices; -import com.android.server.PermissionThread; import com.android.server.ServiceThread; import com.android.server.SystemConfig; import com.android.server.Watchdog; @@ -2057,7 +2056,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { private byte[] backupRuntimePermissions(@UserIdInt int userId) { CompletableFuture backup = new CompletableFuture<>(); mPermissionControllerManager.getRuntimePermissionBackup(UserHandle.of(userId), - PermissionThread.getExecutor(), backup::complete); + mContext.getMainExecutor(), backup::complete); try { return backup.get(BACKUP_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); @@ -2102,7 +2101,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } mPermissionControllerManager.applyStagedRuntimePermissionBackup(packageName, - UserHandle.of(userId), PermissionThread.getExecutor(), (hasMoreBackup) -> { + UserHandle.of(userId), mContext.getMainExecutor(), (hasMoreBackup) -> { if (hasMoreBackup) { return; } @@ -4549,8 +4548,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } - mPermissionControllerManager = new PermissionControllerManager( - mContext, PermissionThread.getHandler()); + mPermissionControllerManager = mContext.getSystemService(PermissionControllerManager.class); mPermissionPolicyInternal = LocalServices.getService(PermissionPolicyInternal.class); } diff --git a/services/core/java/com/android/server/policy/PermissionPolicyService.java b/services/core/java/com/android/server/policy/PermissionPolicyService.java index 2709d4fe13009..ad435146f5795 100644 --- a/services/core/java/com/android/server/policy/PermissionPolicyService.java +++ b/services/core/java/com/android/server/policy/PermissionPolicyService.java @@ -64,8 +64,8 @@ import com.android.internal.app.IAppOpsService; import com.android.internal.infra.AndroidFuture; import com.android.internal.util.IntPair; import com.android.internal.util.function.pooled.PooledLambda; +import com.android.server.FgThread; import com.android.server.LocalServices; -import com.android.server.PermissionThread; import com.android.server.SystemService; import com.android.server.pm.UserManagerInternal; import com.android.server.pm.parsing.pkg.AndroidPackage; @@ -279,7 +279,7 @@ public final class PermissionPolicyService extends SystemService { PermissionControllerManager manager = mPermControllerManagers.get(user); if (manager == null) { manager = new PermissionControllerManager( - getUserContext(getContext(), user), PermissionThread.getHandler()); + getUserContext(getContext(), user), FgThread.getHandler()); mPermControllerManagers.put(user, manager); } manager.updateUserSensitiveForApp(uid); @@ -287,9 +287,8 @@ public final class PermissionPolicyService extends SystemService { }, UserHandle.ALL, intentFilter, null, null); PermissionControllerManager manager = new PermissionControllerManager( - getUserContext(getContext(), Process.myUserHandle()), - PermissionThread.getHandler()); - PermissionThread.getHandler().postDelayed(manager::updateUserSensitive, + getUserContext(getContext(), Process.myUserHandle()), FgThread.getHandler()); + FgThread.getHandler().postDelayed(manager::updateUserSensitive, USER_SENSITIVE_UPDATE_DELAY_MS); } @@ -316,7 +315,7 @@ public final class PermissionPolicyService extends SystemService { if (isStarted(changedUserId)) { synchronized (mLock) { if (mIsPackageSyncsScheduled.add(new Pair<>(packageName, changedUserId))) { - PermissionThread.getHandler().sendMessage(PooledLambda.obtainMessage( + FgThread.getHandler().sendMessage(PooledLambda.obtainMessage( PermissionPolicyService ::synchronizePackagePermissionsAndAppOpsForUser, this, packageName, changedUserId)); @@ -422,9 +421,9 @@ public final class PermissionPolicyService extends SystemService { final PermissionControllerManager permissionControllerManager = new PermissionControllerManager( getUserContext(getContext(), UserHandle.of(userId)), - PermissionThread.getHandler()); + FgThread.getHandler()); permissionControllerManager.grantOrUpgradeDefaultRuntimePermissions( - PermissionThread.getExecutor(), successful -> { + FgThread.getExecutor(), successful -> { if (successful) { future.complete(null); } else { @@ -528,7 +527,7 @@ public final class PermissionPolicyService extends SystemService { synchronized (mLock) { if (!mIsUidSyncScheduled.get(uid)) { mIsUidSyncScheduled.put(uid, true); - PermissionThread.getHandler().sendMessage(PooledLambda.obtainMessage( + FgThread.getHandler().sendMessage(PooledLambda.obtainMessage( PermissionPolicyService::resetAppOpPermissionsIfNotRequestedForUid, this, uid)); }