From 6054148ef9a0a8ea5f14aa302c679952937cb911 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Fri, 9 Jul 2021 14:19:47 -0700 Subject: [PATCH] Remove isAppStartModeDisabled binder entry point Obsolete: the use cases for which it was introduced now have a clean internal API layer to use instead, and this reduces informational exposure about package presence & states. Bug: 185513355 Test: atest SyncManagerTest Test: atest CtsSyncManagerTest Change-Id: I4aa1848950061dce3a1378f7d0117364e62ba59f --- core/java/android/app/IActivityManager.aidl | 1 - .../android/server/content/SyncManager.java | 19 +++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl index 313a34067cd07..b90b9a11611e9 100644 --- a/core/java/android/app/IActivityManager.aidl +++ b/core/java/android/app/IActivityManager.aidl @@ -508,7 +508,6 @@ interface IActivityManager { boolean stopBinderTrackingAndDump(in ParcelFileDescriptor fd); @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) void suppressResizeConfigChanges(boolean suppress); - boolean isAppStartModeDisabled(int uid, in String packageName); @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) boolean unlockUser(int userid, in byte[] token, in byte[] secret, in IProgressListener listener); diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java index fb919fbe0a3df..53c13c7a12689 100644 --- a/services/core/java/com/android/server/content/SyncManager.java +++ b/services/core/java/com/android/server/content/SyncManager.java @@ -28,7 +28,7 @@ import android.accounts.AccountManagerInternal; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; -import android.app.ActivityManager; +import android.app.ActivityManagerInternal; import android.app.AppGlobals; import android.app.Notification; import android.app.NotificationManager; @@ -323,6 +323,8 @@ public class SyncManager { private final PackageManagerInternal mPackageManagerInternal; + private final ActivityManagerInternal mAmi; + private List getAllUsers() { return mUserManager.getUsers(); } @@ -643,6 +645,7 @@ public class SyncManager { mAccountManager = (AccountManager) mContext.getSystemService(Context.ACCOUNT_SERVICE); mAccountManagerInternal = LocalServices.getService(AccountManagerInternal.class); mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class); + mAmi = LocalServices.getService(ActivityManagerInternal.class); mAccountManagerInternal.addOnAppPermissionChangeListener((Account account, int uid) -> { // If the UID gained access to the account kick-off syncs lacking account access @@ -1115,15 +1118,11 @@ public class SyncManager { } final int owningUid = syncAdapterInfo.uid; final String owningPackage = syncAdapterInfo.componentName.getPackageName(); - try { - if (ActivityManager.getService().isAppStartModeDisabled(owningUid, owningPackage)) { - Slog.w(TAG, "Not scheduling job " + syncAdapterInfo.uid + ":" - + syncAdapterInfo.componentName - + " -- package not allowed to start"); - return AuthorityInfo.NOT_SYNCABLE; - } - } catch (RemoteException e) { - /* ignore - local call */ + if (mAmi.isAppStartModeDisabled(owningUid, owningPackage)) { + Slog.w(TAG, "Not scheduling job " + syncAdapterInfo.uid + ":" + + syncAdapterInfo.componentName + + " -- package not allowed to start"); + return AuthorityInfo.NOT_SYNCABLE; } if (checkAccountAccess && !canAccessAccount(account, owningPackage, owningUid)) { Log.w(TAG, "Access to " + logSafe(account) + " denied for package "