From 2bad176fc2b3f1ba57fbba530d4799298cf75102 Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Thu, 3 Dec 2020 03:33:08 -0800 Subject: [PATCH] Move DefaultPermissionGrantPolicy out of PermissionManagerService. DefaultPermissionGrantPolicy should be migrated to role in the future, however it requires exposing a lot of APIs, including set*PackagesProvider() and grantPermissionsTo*(), which would soon be deprecated once we finish migration to role. On the other hand, the benefits of making DefaultPermissionGrantPolicy updatable is negligible. So we should keep DefaultPermissionGrantPolicy in the platform. Since we are making permission updatable, and package is a different thing from permission, we are creating a new internal service call LegacyPermissionManagerService to host it. We need this new internal service instead of directly exposing DefaultPermissionGrantPolicy, because there are system APIs on the framework PermissionManager class that needs an AIDL interface, and a small amount of the AIDL methods there are not DefaultPermissionGrantPolicy but still should remain in platform. For now, the AIDL methods are delegated to LegacyPermissionManagerInternal via PermissionManagerService, but later we will create its own AIDL for LegacyPermissionManagerService and make the AIDL calls directly, without involving PermissionManagerService. So we are exposing a new LegacyPermissionManagerInternal on LocalServices, and replacing the usages of the previous PermissionManagerServiceInternal. LegacyPermissionManagerInternal is also made available in PackageManagerService to facilitate calling DefaultPermissionGrantPolicy grantDefaultPermissions(). The system browser permission granting is moved into the browser role's behavior, to avoid exposing it to RoleManagerService. Bug: 158736025 Test: presubmit Change-Id: Ic78f7775eaf0b1d7b5b940ccb03f7afc38437ef4 --- .../android/server/NetworkScoreService.java | 6 +- .../server/content/ContentService.java | 7 +- .../location/LocationManagerService.java | 6 +- .../android/server/pm/DefaultAppProvider.java | 14 +- .../server/pm/PackageManagerService.java | 57 ++++-- .../DefaultPermissionGrantPolicy.java | 23 ++- .../LegacyPermissionManagerInternal.java | 172 +++++++++++++++++ .../LegacyPermissionManagerService.java | 181 ++++++++++++++++++ .../permission/PermissionManagerService.java | 126 ++---------- .../PermissionManagerServiceInternal.java | 99 ---------- .../server/role/RoleManagerService.java | 7 - .../server/telecom/TelecomLoaderService.java | 17 +- .../server/NetworkScoreServiceTest.java | 12 +- .../VoiceInteractionManagerService.java | 9 +- 14 files changed, 449 insertions(+), 287 deletions(-) create mode 100644 services/core/java/com/android/server/pm/permission/LegacyPermissionManagerInternal.java create mode 100644 services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java diff --git a/services/core/java/com/android/server/NetworkScoreService.java b/services/core/java/com/android/server/NetworkScoreService.java index 3443918df6aba..fc3a7c855466f 100644 --- a/services/core/java/com/android/server/NetworkScoreService.java +++ b/services/core/java/com/android/server/NetworkScoreService.java @@ -59,7 +59,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.content.PackageMonitor; import com.android.internal.util.DumpUtils; -import com.android.server.pm.permission.PermissionManagerServiceInternal; +import com.android.server.pm.permission.LegacyPermissionManagerInternal; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -290,7 +290,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { String useOpenWifiPackage = Global.getString(mContext.getContentResolver(), Global.USE_OPEN_WIFI_PACKAGE); if (!TextUtils.isEmpty(useOpenWifiPackage)) { - LocalServices.getService(PermissionManagerServiceInternal.class) + LocalServices.getService(LegacyPermissionManagerInternal.class) .grantDefaultPermissionsToDefaultUseOpenWifiApp(useOpenWifiPackage, userId); } @@ -302,7 +302,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { false /*notifyForDescendants*/, mUseOpenWifiPackageObserver); // Set a callback for the package manager to query the use open wifi app. - LocalServices.getService(PermissionManagerServiceInternal.class) + LocalServices.getService(LegacyPermissionManagerInternal.class) .setUseOpenWifiAppPackagesProvider((userId) -> { String useOpenWifiPackage = Global.getString(mContext.getContentResolver(), Global.USE_OPEN_WIFI_PACKAGE); diff --git a/services/core/java/com/android/server/content/ContentService.java b/services/core/java/com/android/server/content/ContentService.java index a2c427b8036a2..027b9afba392c 100644 --- a/services/core/java/com/android/server/content/ContentService.java +++ b/services/core/java/com/android/server/content/ContentService.java @@ -76,8 +76,7 @@ import com.android.internal.util.DumpUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalServices; import com.android.server.SystemService; -import com.android.server.SystemService.TargetUser; -import com.android.server.pm.permission.PermissionManagerServiceInternal; +import com.android.server.pm.permission.LegacyPermissionManagerInternal; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -296,8 +295,8 @@ public final class ContentService extends IContentService.Stub { // Let the package manager query for the sync adapters for a given authority // as we grant default permissions to sync adapters for specific authorities. - final PermissionManagerServiceInternal permissionManagerInternal = - LocalServices.getService(PermissionManagerServiceInternal.class); + final LegacyPermissionManagerInternal permissionManagerInternal = + LocalServices.getService(LegacyPermissionManagerInternal.class); permissionManagerInternal.setSyncAdapterPackagesProvider((authority, userId) -> { return getSyncAdapterPackagesForAuthorityAsUser(authority, userId); }); diff --git a/services/core/java/com/android/server/location/LocationManagerService.java b/services/core/java/com/android/server/location/LocationManagerService.java index e5c198646fb6e..c3a10c7a4f8ac 100644 --- a/services/core/java/com/android/server/location/LocationManagerService.java +++ b/services/core/java/com/android/server/location/LocationManagerService.java @@ -113,7 +113,7 @@ import com.android.server.location.provider.MockLocationProvider; import com.android.server.location.provider.PassiveLocationProvider; import com.android.server.location.provider.PassiveLocationProviderManager; import com.android.server.location.provider.proxy.ProxyLocationProvider; -import com.android.server.pm.permission.PermissionManagerServiceInternal; +import com.android.server.pm.permission.LegacyPermissionManagerInternal; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -261,8 +261,8 @@ public class LocationManagerService extends ILocationManager.Stub { // Let the package manager query which are the default location // providers as they get certain permissions granted by default. - PermissionManagerServiceInternal permissionManagerInternal = LocalServices.getService( - PermissionManagerServiceInternal.class); + LegacyPermissionManagerInternal permissionManagerInternal = LocalServices.getService( + LegacyPermissionManagerInternal.class); permissionManagerInternal.setLocationPackagesProvider( userId -> mContext.getResources().getStringArray( com.android.internal.R.array.config_locationProviderPackageNames)); diff --git a/services/core/java/com/android/server/pm/DefaultAppProvider.java b/services/core/java/com/android/server/pm/DefaultAppProvider.java index cc11fb2c00bd9..a17967fcc76e0 100644 --- a/services/core/java/com/android/server/pm/DefaultAppProvider.java +++ b/services/core/java/com/android/server/pm/DefaultAppProvider.java @@ -27,7 +27,6 @@ import android.util.Slog; import com.android.internal.infra.AndroidFuture; import com.android.internal.util.CollectionUtils; import com.android.server.FgThread; -import com.android.server.pm.permission.PermissionManagerServiceInternal; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; @@ -42,19 +41,14 @@ import java.util.function.Supplier; public class DefaultAppProvider { @NonNull private final Supplier mRoleManagerSupplier; - @NonNull - private final PermissionManagerServiceInternal mPermissionManager; /** * Create a new instance of this class * * @param roleManagerSupplier the supplier for {@link RoleManager} - * @param permissionManager the {@link PermissionManagerServiceInternal} */ - public DefaultAppProvider(@NonNull Supplier roleManagerSupplier, @NonNull - PermissionManagerServiceInternal permissionManager) { + public DefaultAppProvider(@NonNull Supplier roleManagerSupplier) { mRoleManagerSupplier = roleManagerSupplier; - mPermissionManager = permissionManager; } /** @@ -73,11 +67,10 @@ public class DefaultAppProvider { * * @param packageName package name of the default browser, or {@code null} to unset * @param async whether the operation should be asynchronous - * @param doGrant whether to grant default permissions * @param userId the user ID * @return whether the default browser was successfully set. */ - public boolean setDefaultBrowser(@Nullable String packageName, boolean async, boolean doGrant, + public boolean setDefaultBrowser(@Nullable String packageName, boolean async, @UserIdInt int userId) { if (userId == UserHandle.USER_ALL) { return false; @@ -114,9 +107,6 @@ public class DefaultAppProvider { return false; } } - if (doGrant && packageName != null) { - mPermissionManager.grantDefaultPermissionsToDefaultBrowser(packageName, userId); - } } finally { Binder.restoreCallingIdentity(identity); } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index b13de35df7f3a..a123f369a9abf 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -380,6 +380,8 @@ import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.pm.parsing.pkg.AndroidPackageUtils; import com.android.server.pm.parsing.pkg.PackageImpl; import com.android.server.pm.parsing.pkg.ParsedPackage; +import com.android.server.pm.permission.LegacyPermissionManagerInternal; +import com.android.server.pm.permission.LegacyPermissionManagerService; import com.android.server.pm.permission.Permission; import com.android.server.pm.permission.PermissionManagerService; import com.android.server.pm.permission.PermissionManagerServiceInternal; @@ -961,6 +963,8 @@ public class PackageManagerService extends IPackageManager.Stub private final Singleton mPackageInstallerServiceProducer; private final ProducerWithArgument mInstantAppResolverConnectionProducer; + private final Singleton + mLegacyPermissionManagerInternalProducer; private final SystemWrapper mSystemWrapper; private final ServiceProducer mGetLocalServiceProducer; private final ServiceProducer mGetSystemServiceProducer; @@ -993,6 +997,7 @@ public class PackageManagerService extends IPackageManager.Stub ProducerWithArgument instantAppResolverConnectionProducer, Producer moduleInfoProviderProducer, + Producer legacyPermissionManagerInternalProducer, SystemWrapper systemWrapper, ServiceProducer getLocalServiceProducer, ServiceProducer getSystemServiceProducer) { @@ -1026,6 +1031,8 @@ public class PackageManagerService extends IPackageManager.Stub mPackageInstallerServiceProducer = new Singleton<>(packageInstallerServiceProducer); mInstantAppResolverConnectionProducer = instantAppResolverConnectionProducer; mModuleInfoProviderProducer = new Singleton<>(moduleInfoProviderProducer); + mLegacyPermissionManagerInternalProducer = new Singleton<>( + legacyPermissionManagerInternalProducer); mSystemWrapper = systemWrapper; mGetLocalServiceProducer = getLocalServiceProducer; mGetSystemServiceProducer = getSystemServiceProducer; @@ -1174,6 +1181,10 @@ public class PackageManagerService extends IPackageManager.Stub public ModuleInfoProvider getModuleInfoProvider() { return mModuleInfoProviderProducer.get(this, mPackageManager); } + + public LegacyPermissionManagerInternal getLegacyPermissionManagerInternal() { + return mLegacyPermissionManagerInternalProducer.get(this, mPackageManager); + } } /** Provides an abstraction to static access to system state. */ @@ -1232,6 +1243,7 @@ public class PackageManagerService extends IPackageManager.Stub public boolean isPreNupgrade; public boolean isPreQupgrade; public boolean isUpgrade; + public LegacyPermissionManagerInternal legacyPermissionManagerInternal; public DisplayMetrics Metrics; public ModuleInfoProvider moduleInfoProvider; public MoveCallbacks moveCallbacks; @@ -1375,6 +1387,8 @@ public class PackageManagerService extends IPackageManager.Stub private final DefaultAppProvider mDefaultAppProvider; + private final LegacyPermissionManagerInternal mLegacyPermissionManager; + private final PackageProperty mPackageProperty = new PackageProperty(); private static class IFVerificationParams { @@ -2838,8 +2852,8 @@ public class PackageManagerService extends IPackageManager.Stub (i, pm) -> new ViewCompiler(i.getInstallLock(), i.getInstaller()), (i, pm) -> (IncrementalManager) i.getContext().getSystemService(Context.INCREMENTAL_SERVICE), - (i, pm) -> new DefaultAppProvider(() -> context.getSystemService(RoleManager.class), - i.getPermissionManagerServiceInternal()), + (i, pm) -> new DefaultAppProvider(() -> context.getSystemService( + RoleManager.class)), (i, pm) -> new DisplayMetrics(), (i, pm) -> new PackageParser2(pm.mSeparateProcesses, pm.mOnlyCore, i.getDisplayMetrics(), pm.mCacheDir, @@ -2856,6 +2870,7 @@ public class PackageManagerService extends IPackageManager.Stub (i, pm, cn) -> new InstantAppResolverConnection( i.getContext(), cn, Intent.ACTION_RESOLVE_INSTANT_APP_PACKAGE), (i, pm) -> new ModuleInfoProvider(i.getContext(), pm), + (i, pm) -> LegacyPermissionManagerService.create(i.getContext()), new DefaultSystemWrapper(), LocalServices::getService, context::getSystemService); @@ -3032,6 +3047,7 @@ public class PackageManagerService extends IPackageManager.Stub mAvailableFeatures = testParams.availableFeatures; mDefParseFlags = testParams.defParseFlags; mDefaultAppProvider = testParams.defaultAppProvider; + mLegacyPermissionManager = testParams.legacyPermissionManagerInternal; mDexManager = testParams.dexManager; mDirsToScanAsSystem = testParams.dirsToScanAsSystem; mFactoryTest = testParams.factoryTest; @@ -3136,6 +3152,7 @@ public class PackageManagerService extends IPackageManager.Stub mPermissionManagerService = injector.getPermissionManagerService(); mIncrementalManager = mInjector.getIncrementalManager(); mDefaultAppProvider = mInjector.getDefaultAppProvider(); + mLegacyPermissionManager = mInjector.getLegacyPermissionManagerInternal(); PlatformCompat platformCompat = mInjector.getCompatibility(); mPackageParserCallback = new PackageParser2.Callback() { @Override @@ -20702,7 +20719,7 @@ public class PackageManagerService extends IPackageManager.Stub final String defaultBrowserPackageName = mDefaultAppProvider.getDefaultBrowser(userId); if (!TextUtils.isEmpty(defaultBrowserPackageName)) { if (packageName.equals(defaultBrowserPackageName)) { - mDefaultAppProvider.setDefaultBrowser(null, true, true, userId); + mDefaultAppProvider.setDefaultBrowser(null, true, userId); } } } @@ -20717,7 +20734,7 @@ public class PackageManagerService extends IPackageManager.Stub // If this browser is restored from user's backup, do not clear // default-browser state for this user if (installReason != PackageManager.INSTALL_REASON_DEVICE_RESTORE) { - mDefaultAppProvider.setDefaultBrowser(null, true, true, userId); + mDefaultAppProvider.setDefaultBrowser(null, true, userId); } } @@ -20755,7 +20772,7 @@ public class PackageManagerService extends IPackageManager.Stub // significant refactoring to keep all default apps in the package // manager (cleaner but more work) or have the services provide // callbacks to the package manager to request a default app reset. - mDefaultAppProvider.setDefaultBrowser(null, true, true, userId); + mDefaultAppProvider.setDefaultBrowser(null, true, userId); resetNetworkPolicies(userId); synchronized (mLock) { scheduleWritePackageRestrictionsLocked(userId); @@ -20989,8 +21006,7 @@ public class PackageManagerService extends IPackageManager.Stub defaultBrowser = mSettings.removeDefaultBrowserPackageNameLPw(userId1); } if (defaultBrowser != null) { - mDefaultAppProvider.setDefaultBrowser(defaultBrowser, false, false, - userId1); + mDefaultAppProvider.setDefaultBrowser(defaultBrowser, false, userId1); } }); } catch (Exception e) { @@ -22250,6 +22266,24 @@ public class PackageManagerService extends IPackageManager.Stub mPermissionManager.systemReady(); + int[] grantPermissionsUserIds = EMPTY_INT_ARRAY; + for (int userId : UserManagerService.getInstance().getUserIds()) { + if (mPmInternal.isPermissionUpgradeNeeded(userId)) { + grantPermissionsUserIds = ArrayUtils.appendInt( + grantPermissionsUserIds, userId); + } + } + // If we upgraded grant all default permissions before kicking off. + for (int userId : grantPermissionsUserIds) { + mLegacyPermissionManager.grantDefaultPermissions(userId); + } + if (grantPermissionsUserIds == EMPTY_INT_ARRAY) { + // If we did not grant default permissions, we preload from this the + // default permission exceptions lazily to ensure we don't hit the + // disk on a new user creation. + mLegacyPermissionManager.scheduleReadDefaultPermissionExceptions(); + } + if (mInstantAppResolverConnection != null) { mContext.registerReceiver(new BroadcastReceiver() { @Override @@ -24331,14 +24365,9 @@ public class PackageManagerService extends IPackageManager.Stub Slog.d(TAG, "onNewUserCreated(id=" + userId + ", convertedFromPreCreated=" + convertedFromPreCreated + ")"); } - if (!convertedFromPreCreated) { - mPermissionManager.onUserCreated(userId); - return; - } - if (!readPermissionStateForUser(userId)) { - // Could not read the existing permissions, re-grant them. - Slog.i(TAG, "re-granting permissions for pre-created user " + userId); + if (!convertedFromPreCreated || !readPermissionStateForUser(userId)) { mPermissionManager.onUserCreated(userId); + mLegacyPermissionManager.grantDefaultPermissions(userId); } } diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java index 165647205a982..44a2187aed8ea 100644 --- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java +++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java @@ -41,8 +41,9 @@ import android.net.Uri; import android.os.Build; import android.os.Environment; import android.os.Handler; -import android.os.Looper; +import android.os.HandlerThread; import android.os.Message; +import android.os.Process; import android.os.UserHandle; import android.os.storage.StorageManager; import android.permission.PermissionManager; @@ -67,8 +68,9 @@ import com.android.internal.R; import com.android.internal.util.ArrayUtils; import com.android.internal.util.XmlUtils; import com.android.server.LocalServices; -import com.android.server.pm.permission.PermissionManagerServiceInternal.PackagesProvider; -import com.android.server.pm.permission.PermissionManagerServiceInternal.SyncAdapterPackagesProvider; +import com.android.server.ServiceThread; +import com.android.server.pm.permission.LegacyPermissionManagerInternal.PackagesProvider; +import com.android.server.pm.permission.LegacyPermissionManagerInternal.SyncAdapterPackagesProvider; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -96,7 +98,7 @@ import java.util.Set; * to have an interface defined in the package manager but have the impl next to other * policy stuff like PhoneWindowManager */ -public final class DefaultPermissionGrantPolicy { +final class DefaultPermissionGrantPolicy { private static final String TAG = "DefaultPermGrantPolicy"; // must be <= 23 chars private static final boolean DEBUG = false; @@ -291,9 +293,12 @@ public final class DefaultPermissionGrantPolicy { } }; - DefaultPermissionGrantPolicy(Context context, Looper looper) { + DefaultPermissionGrantPolicy(@NonNull Context context) { mContext = context; - mHandler = new Handler(looper) { + HandlerThread handlerThread = new ServiceThread(TAG, + Process.THREAD_PRIORITY_BACKGROUND, true /*allowIo*/); + handlerThread.start(); + mHandler = new Handler(handlerThread.getLooper()) { @Override public void handleMessage(Message msg) { if (msg.what == MSG_READ_DEFAULT_PERMISSION_EXCEPTIONS) { @@ -998,12 +1003,6 @@ public final class DefaultPermissionGrantPolicy { } } - public void grantDefaultPermissionsToDefaultBrowser(String packageName, int userId) { - Log.i(TAG, "Granting permissions to default browser for user:" + userId); - grantPermissionsToSystemPackage(NO_PM_CACHE, packageName, userId, - FOREGROUND_LOCATION_PERMISSIONS); - } - private String getDefaultSystemHandlerActivityPackage(PackageManagerWrapper pm, String intentAction, int userId) { return getDefaultSystemHandlerActivityPackage(pm, new Intent(intentAction), userId); diff --git a/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerInternal.java b/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerInternal.java new file mode 100644 index 0000000000000..a098484b803b4 --- /dev/null +++ b/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerInternal.java @@ -0,0 +1,172 @@ +/* + * 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.pm.permission; + +import android.annotation.NonNull; +import android.annotation.UserIdInt; + +/** + * The internal interface for {@link LegacyPermissionManagerService}. + */ +public interface LegacyPermissionManagerInternal { + /** + * Sets the dialer application packages provider. + * @param provider The provider. + */ + void setDialerAppPackagesProvider(PackagesProvider provider); + + /** + * Set the location extra packages provider. + * @param provider The packages provider. + */ + void setLocationExtraPackagesProvider(PackagesProvider provider); + + /** + * Sets the location provider packages provider. + * @param provider The packages provider. + */ + void setLocationPackagesProvider(PackagesProvider provider); + + /** + * Sets the SIM call manager packages provider. + * @param provider The provider. + */ + void setSimCallManagerPackagesProvider(PackagesProvider provider); + + /** + * Sets the SMS application packages provider. + * @param provider The provider. + */ + void setSmsAppPackagesProvider(PackagesProvider provider); + + /** + * Sets the sync adapter packages provider. + * @param provider The provider. + */ + void setSyncAdapterPackagesProvider(SyncAdapterPackagesProvider provider); + + /** + * Sets the Use Open Wifi packages provider. + * @param provider The packages provider. + */ + void setUseOpenWifiAppPackagesProvider(PackagesProvider provider); + + /** + * Sets the voice interaction packages provider. + * @param provider The packages provider. + */ + void setVoiceInteractionPackagesProvider(PackagesProvider provider); + + /** + * Requests granting of the default permissions to the current default Use Open Wifi app. + * @param packageName The default use open wifi package name. + * @param userId The user for which to grant the permissions. + */ + void grantDefaultPermissionsToDefaultSimCallManager(@NonNull String packageName, + @UserIdInt int userId); + + /** + * Requests granting of the default permissions to the current default Use Open Wifi app. + * @param packageName The default use open wifi package name. + * @param userId The user for which to grant the permissions. + */ + void grantDefaultPermissionsToDefaultUseOpenWifiApp(@NonNull String packageName, + @UserIdInt int userId); + + /** + * Grant the default permissions for a user. + * + * @param userId the user ID + */ + void grantDefaultPermissions(@UserIdInt int userId); + + /** + * Schedule reading the default permission exceptions file. + */ + void scheduleReadDefaultPermissionExceptions(); + + // TODO(zhanghai): The following methods should be moved to a new AIDL to support + // the legacy PermissionManager directly in a later CL. + + /** + * Grant default permissions to currently active LUI app + * @param packageName The package name for the LUI app + * @param userId The user ID + */ + void grantDefaultPermissionsToActiveLuiApp(String packageName, int userId); + + /** + * Revoke default permissions to currently active LUI app + * @param packageNames The package names for the LUI apps + * @param userId The user ID + */ + void revokeDefaultPermissionsFromLuiApps(String[] packageNames, int userId); + + /** + * Grant default permissions to currently active Ims services + * @param packageNames The package names for the Ims services + * @param userId The user ID + */ + void grantDefaultPermissionsToEnabledImsServices(String[] packageNames, int userId); + + /** + * Grant default permissions to currently enabled telephony data services + * @param packageNames The package name for the services + * @param userId The user ID + */ + void grantDefaultPermissionsToEnabledTelephonyDataServices(String[] packageNames, int userId); + + /** + * Revoke default permissions to currently active telephony data services + * @param packageNames The package name for the services + * @param userId The IDhandle + */ + void revokeDefaultPermissionsFromDisabledTelephonyDataServices(String[] packageNames, + int userId); + + /** + * Grant default permissions to currently enabled carrier apps + * @param packageNames Package names of the apps to be granted permissions + * @param userId The user ID + */ + void grantDefaultPermissionsToEnabledCarrierApps(String[] packageNames, int userId); + + /** + * Provider for package names. + */ + interface PackagesProvider { + /** + * Gets the packages for a given user. + * @param userId The user id. + * @return The package names. + */ + String[] getPackages(int userId); + } + + /** + * Provider for package names. + */ + interface SyncAdapterPackagesProvider { + /** + * Gets the sync adapter packages for given authority and user. + * @param authority The authority. + * @param userId The user id. + * @return The package names. + */ + String[] getPackages(String authority, int userId); + } +} diff --git a/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java b/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java new file mode 100644 index 0000000000000..0c0a8dfeaaec5 --- /dev/null +++ b/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java @@ -0,0 +1,181 @@ +/* + * 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.pm.permission; + +import android.annotation.NonNull; +import android.content.Context; +import android.os.Binder; + +import com.android.server.LocalServices; +import com.android.server.pm.PackageManagerServiceUtils; + +/** + * Legacy permission manager service. + */ +public class LegacyPermissionManagerService { + @NonNull + private final DefaultPermissionGrantPolicy mDefaultPermissionGrantPolicy; + + /** + * Get or create an instance of this class for use by other components. + *

+ * This method is not thread-safe. + * + * @param context the {@link Context} + * @return the internal instance + */ + @NonNull + public static LegacyPermissionManagerInternal create(@NonNull Context context) { + LegacyPermissionManagerInternal legacyPermissionManagerInternal = LocalServices.getService( + LegacyPermissionManagerInternal.class); + if (legacyPermissionManagerInternal == null) { + new LegacyPermissionManagerService(context); + legacyPermissionManagerInternal = LocalServices.getService( + LegacyPermissionManagerInternal.class); + } + return legacyPermissionManagerInternal; + } + + private LegacyPermissionManagerService(@NonNull Context context) { + mDefaultPermissionGrantPolicy = new DefaultPermissionGrantPolicy(context); + LocalServices.addService(LegacyPermissionManagerInternal.class, new Internal()); + } + + private class Internal implements LegacyPermissionManagerInternal { + @Override + public void setDialerAppPackagesProvider(PackagesProvider provider) { + mDefaultPermissionGrantPolicy.setDialerAppPackagesProvider(provider); + } + + @Override + public void setLocationExtraPackagesProvider(PackagesProvider provider) { + mDefaultPermissionGrantPolicy.setLocationExtraPackagesProvider(provider); + } + + @Override + public void setLocationPackagesProvider(PackagesProvider provider) { + mDefaultPermissionGrantPolicy.setLocationPackagesProvider(provider); + } + + @Override + public void setSimCallManagerPackagesProvider(PackagesProvider provider) { + mDefaultPermissionGrantPolicy.setSimCallManagerPackagesProvider(provider); + } + + @Override + public void setSmsAppPackagesProvider(PackagesProvider provider) { + mDefaultPermissionGrantPolicy.setSmsAppPackagesProvider(provider); + } + + @Override + public void setSyncAdapterPackagesProvider(SyncAdapterPackagesProvider provider) { + mDefaultPermissionGrantPolicy.setSyncAdapterPackagesProvider(provider); + } + + @Override + public void setUseOpenWifiAppPackagesProvider(PackagesProvider provider) { + mDefaultPermissionGrantPolicy.setUseOpenWifiAppPackagesProvider(provider); + } + + @Override + public void setVoiceInteractionPackagesProvider(PackagesProvider provider) { + mDefaultPermissionGrantPolicy.setVoiceInteractionPackagesProvider(provider); + } + + @Override + public void grantDefaultPermissionsToDefaultSimCallManager(String packageName, int userId) { + mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultSimCallManager( + packageName, userId); + } + + @Override + public void grantDefaultPermissionsToDefaultUseOpenWifiApp(String packageName, int userId) { + mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultUseOpenWifiApp( + packageName, userId); + } + + @Override + public void grantDefaultPermissions(int userId) { + mDefaultPermissionGrantPolicy.grantDefaultPermissions(userId); + } + + @Override + public void scheduleReadDefaultPermissionExceptions() { + mDefaultPermissionGrantPolicy.scheduleReadDefaultPermissionExceptions(); + } + + // TODO(zhanghai): The following methods should be moved to a new AIDL to support + // the legacy PermissionManager directly in a later CL. + + @Override + public void grantDefaultPermissionsToActiveLuiApp(String packageName, int userId) { + final int callingUid = Binder.getCallingUid(); + PackageManagerServiceUtils.enforceSystemOrPhoneCaller( + "grantDefaultPermissionsToActiveLuiApp", callingUid); + Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy + .grantDefaultPermissionsToActiveLuiApp(packageName, userId)); + } + + @Override + public void revokeDefaultPermissionsFromLuiApps(String[] packageNames, int userId) { + final int callingUid = Binder.getCallingUid(); + PackageManagerServiceUtils.enforceSystemOrPhoneCaller( + "revokeDefaultPermissionsFromLuiApps", callingUid); + Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy + .revokeDefaultPermissionsFromLuiApps(packageNames, userId)); + } + + @Override + public void grantDefaultPermissionsToEnabledImsServices(String[] packageNames, int userId) { + final int callingUid = Binder.getCallingUid(); + PackageManagerServiceUtils.enforceSystemOrPhoneCaller( + "grantDefaultPermissionsToEnabledImsServices", callingUid); + Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy + .grantDefaultPermissionsToEnabledImsServices(packageNames, userId)); + } + + @Override + public void grantDefaultPermissionsToEnabledTelephonyDataServices( + String[] packageNames, int userId) { + final int callingUid = Binder.getCallingUid(); + PackageManagerServiceUtils.enforceSystemOrPhoneCaller( + "grantDefaultPermissionsToEnabledTelephonyDataServices", callingUid); + Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy + .grantDefaultPermissionsToEnabledTelephonyDataServices(packageNames, userId)); + } + + @Override + public void revokeDefaultPermissionsFromDisabledTelephonyDataServices( + String[] packageNames, int userId) { + final int callingUid = Binder.getCallingUid(); + PackageManagerServiceUtils.enforceSystemOrPhoneCaller( + "revokeDefaultPermissionsFromDisabledTelephonyDataServices", callingUid); + Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy + .revokeDefaultPermissionsFromDisabledTelephonyDataServices(packageNames, + userId)); + } + + @Override + public void grantDefaultPermissionsToEnabledCarrierApps(String[] packageNames, int userId) { + final int callingUid = Binder.getCallingUid(); + PackageManagerServiceUtils.enforceSystemOrPhoneCaller( + "grantPermissionsToEnabledCarrierApps", callingUid); + Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy + .grantDefaultPermissionsToEnabledCarrierApps(packageNames, userId)); + } + } +} 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 fe461b2147a55..791efd022fe9b 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -144,7 +144,6 @@ import com.android.server.ServiceThread; import com.android.server.SystemConfig; import com.android.server.Watchdog; import com.android.server.pm.ApexManager; -import com.android.server.pm.PackageManagerServiceUtils; import com.android.server.pm.PackageSetting; import com.android.server.pm.UserManagerInternal; import com.android.server.pm.UserManagerService; @@ -239,9 +238,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { private final SparseArray mOneTimePermissionUserManagers = new SparseArray<>(); - /** Default permission policy to provide proper behaviour out-of-the-box */ - private final DefaultPermissionGrantPolicy mDefaultPermissionGrantPolicy; - /** App ops manager */ private final AppOpsManager mAppOpsManager; @@ -390,8 +386,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { mHandler = new Handler(mHandlerThread.getLooper()); Watchdog.getInstance().addThread(mHandler); - mDefaultPermissionGrantPolicy = new DefaultPermissionGrantPolicy( - context, mHandlerThread.getLooper()); SystemConfig systemConfig = SystemConfig.getInstance(); mSystemPermissions = systemConfig.getSystemPermissions(); mGlobalGids = systemConfig.getGlobalGids(); @@ -2007,58 +2001,40 @@ public class PermissionManagerService extends IPermissionManager.Stub { @Override public void grantDefaultPermissionsToEnabledCarrierApps(String[] packageNames, int userId) { - final int callingUid = Binder.getCallingUid(); - PackageManagerServiceUtils - .enforceSystemOrPhoneCaller("grantPermissionsToEnabledCarrierApps", callingUid); - Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy - .grantDefaultPermissionsToEnabledCarrierApps(packageNames, userId)); + LocalServices.getService(LegacyPermissionManagerInternal.class) + .grantDefaultPermissionsToEnabledCarrierApps(packageNames, userId); } @Override public void grantDefaultPermissionsToEnabledImsServices(String[] packageNames, int userId) { - final int callingUid = Binder.getCallingUid(); - PackageManagerServiceUtils.enforceSystemOrPhoneCaller( - "grantDefaultPermissionsToEnabledImsServices", callingUid); - Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy - .grantDefaultPermissionsToEnabledImsServices(packageNames, userId)); + LocalServices.getService(LegacyPermissionManagerInternal.class) + .grantDefaultPermissionsToEnabledImsServices(packageNames, userId); } @Override public void grantDefaultPermissionsToEnabledTelephonyDataServices( String[] packageNames, int userId) { - final int callingUid = Binder.getCallingUid(); - PackageManagerServiceUtils.enforceSystemOrPhoneCaller( - "grantDefaultPermissionsToEnabledTelephonyDataServices", callingUid); - Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy - .grantDefaultPermissionsToEnabledTelephonyDataServices(packageNames, userId)); + LocalServices.getService(LegacyPermissionManagerInternal.class) + .grantDefaultPermissionsToEnabledTelephonyDataServices(packageNames, userId); } @Override public void revokeDefaultPermissionsFromDisabledTelephonyDataServices( String[] packageNames, int userId) { - final int callingUid = Binder.getCallingUid(); - PackageManagerServiceUtils.enforceSystemOrPhoneCaller( - "revokeDefaultPermissionsFromDisabledTelephonyDataServices", callingUid); - Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy - .revokeDefaultPermissionsFromDisabledTelephonyDataServices(packageNames, userId)); + LocalServices.getService(LegacyPermissionManagerInternal.class) + .revokeDefaultPermissionsFromDisabledTelephonyDataServices(packageNames, userId); } @Override public void grantDefaultPermissionsToActiveLuiApp(String packageName, int userId) { - final int callingUid = Binder.getCallingUid(); - PackageManagerServiceUtils - .enforceSystemOrPhoneCaller("grantDefaultPermissionsToActiveLuiApp", callingUid); - Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy - .grantDefaultPermissionsToActiveLuiApp(packageName, userId)); + LocalServices.getService(LegacyPermissionManagerInternal.class) + .grantDefaultPermissionsToActiveLuiApp(packageName, userId); } @Override public void revokeDefaultPermissionsFromLuiApps(String[] packageNames, int userId) { - final int callingUid = Binder.getCallingUid(); - PackageManagerServiceUtils - .enforceSystemOrPhoneCaller("revokeDefaultPermissionsFromLuiApps", callingUid); - Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy - .revokeDefaultPermissionsFromLuiApps(packageNames, userId)); + LocalServices.getService(LegacyPermissionManagerInternal.class) + .revokeDefaultPermissionsFromLuiApps(packageNames, userId); } /** @@ -4551,24 +4527,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { mPermissionControllerManager = mContext.getSystemService(PermissionControllerManager.class); mPermissionPolicyInternal = LocalServices.getService(PermissionPolicyInternal.class); - - int[] grantPermissionsUserIds = EMPTY_INT_ARRAY; - for (int userId : UserManagerService.getInstance().getUserIds()) { - if (mPackageManagerInt.isPermissionUpgradeNeeded(userId)) { - grantPermissionsUserIds = ArrayUtils.appendInt( - grantPermissionsUserIds, userId); - } - } - // If we upgraded grant all default permissions before kicking off. - for (int userId : grantPermissionsUserIds) { - mDefaultPermissionGrantPolicy.grantDefaultPermissions(userId); - } - if (grantPermissionsUserIds == EMPTY_INT_ARRAY) { - // If we did not grant default permissions, we preload from this the - // default permission exceptions lazily to ensure we don't hit the - // disk on a new user creation. - mDefaultPermissionGrantPolicy.scheduleReadDefaultPermissionExceptions(); - } } private static String getVolumeUuidForPackage(AndroidPackage pkg) { @@ -5181,72 +5139,12 @@ public class PermissionManagerService extends IPermissionManager.Stub { stopShellPermissionIdentityDelegationInternal(); } - @Override - public void setDialerAppPackagesProvider(PackagesProvider provider) { - mDefaultPermissionGrantPolicy.setDialerAppPackagesProvider(provider); - } - - @Override - public void setLocationExtraPackagesProvider(PackagesProvider provider) { - mDefaultPermissionGrantPolicy.setLocationExtraPackagesProvider(provider); - } - - @Override - public void setLocationPackagesProvider(PackagesProvider provider) { - mDefaultPermissionGrantPolicy.setLocationPackagesProvider(provider); - } - - @Override - public void setSimCallManagerPackagesProvider(PackagesProvider provider) { - mDefaultPermissionGrantPolicy.setSimCallManagerPackagesProvider(provider); - } - - @Override - public void setSmsAppPackagesProvider(PackagesProvider provider) { - mDefaultPermissionGrantPolicy.setSmsAppPackagesProvider(provider); - } - - @Override - public void setSyncAdapterPackagesProvider(SyncAdapterPackagesProvider provider) { - mDefaultPermissionGrantPolicy.setSyncAdapterPackagesProvider(provider); - } - - @Override - public void setUseOpenWifiAppPackagesProvider(PackagesProvider provider) { - mDefaultPermissionGrantPolicy.setUseOpenWifiAppPackagesProvider(provider); - } - - @Override - public void setVoiceInteractionPackagesProvider(PackagesProvider provider) { - mDefaultPermissionGrantPolicy.setVoiceInteractionPackagesProvider(provider); - } - - @Override - public void grantDefaultPermissionsToDefaultBrowser(@NonNull String packageName, - @UserIdInt int userId) { - mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultBrowser(packageName, - userId); - } - - @Override - public void grantDefaultPermissionsToDefaultSimCallManager(String packageName, int userId) { - mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultSimCallManager( - packageName, userId); - } - - @Override - public void grantDefaultPermissionsToDefaultUseOpenWifiApp(String packageName, int userId) { - mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultUseOpenWifiApp( - packageName, userId); - } - @Override public void onUserCreated(@UserIdInt int userId) { Preconditions.checkArgumentNonNegative(userId, "userId"); // NOTE: This adds UPDATE_PERMISSIONS_REPLACE_PKG PermissionManagerService.this.updateAllPermissions(StorageManager.UUID_PRIVATE_INTERNAL, true, mDefaultPermissionCallback); - mDefaultPermissionGrantPolicy.grantDefaultPermissions(userId); } @Override diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java index 1163ce0ac9178..66e692db2154e 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInternal.java @@ -38,33 +38,6 @@ import java.util.Set; */ public interface PermissionManagerServiceInternal extends PermissionManagerInternal, LegacyPermissionDataProvider { - /** - * Provider for package names. - */ - interface PackagesProvider { - - /** - * Gets the packages for a given user. - * @param userId The user id. - * @return The package names. - */ - String[] getPackages(int userId); - } - - /** - * Provider for package names. - */ - interface SyncAdapterPackagesProvider { - - /** - * Gets the sync adapter packages for given authority and user. - * @param authority The authority. - * @param userId The user id. - * @return The package names. - */ - String[] getPackages(String authority, int userId); - } - /** * Adds a listener for runtime permission state (permissions or flags) changes. * @@ -210,78 +183,6 @@ public interface PermissionManagerServiceInternal extends PermissionManagerInter //@SystemApi(client = SystemApi.Client.SYSTEM_SERVER) void stopShellPermissionIdentityDelegation(); - /** - * Sets the dialer application packages provider. - * @param provider The provider. - */ - void setDialerAppPackagesProvider(PackagesProvider provider); - - /** - * Set the location extra packages provider. - * @param provider The packages provider. - */ - void setLocationExtraPackagesProvider(PackagesProvider provider); - - /** - * Sets the location provider packages provider. - * @param provider The packages provider. - */ - void setLocationPackagesProvider(PackagesProvider provider); - - /** - * Sets the SIM call manager packages provider. - * @param provider The provider. - */ - void setSimCallManagerPackagesProvider(PackagesProvider provider); - - /** - * Sets the SMS application packages provider. - * @param provider The provider. - */ - void setSmsAppPackagesProvider(PackagesProvider provider); - - /** - * Sets the sync adapter packages provider. - * @param provider The provider. - */ - void setSyncAdapterPackagesProvider(SyncAdapterPackagesProvider provider); - - /** - * Sets the Use Open Wifi packages provider. - * @param provider The packages provider. - */ - void setUseOpenWifiAppPackagesProvider(PackagesProvider provider); - - /** - * Sets the voice interaction packages provider. - * @param provider The packages provider. - */ - void setVoiceInteractionPackagesProvider(PackagesProvider provider); - - /** - * Requests granting of the default permissions to the current default browser. - * @param packageName The default browser package name. - * @param userId The user for which to grant the permissions. - */ - void grantDefaultPermissionsToDefaultBrowser(@NonNull String packageName, - @UserIdInt int userId); - - /** - * Requests granting of the default permissions to the current default Use Open Wifi app. - * @param packageName The default use open wifi package name. - * @param userId The user for which to grant the permissions. - */ - void grantDefaultPermissionsToDefaultSimCallManager(@NonNull String packageName, - @UserIdInt int userId); - - /** - * Requests granting of the default permissions to the current default Use Open Wifi app. - * @param packageName The default use open wifi package name. - * @param userId The user for which to grant the permissions. - */ - void grantDefaultPermissionsToDefaultUseOpenWifiApp(@NonNull String packageName, - @UserIdInt int userId); - /** * Removes invalid permissions which are not {@link PermissionInfo#FLAG_HARD_RESTRICTED} or * {@link PermissionInfo#FLAG_SOFT_RESTRICTED} from the input. diff --git a/services/core/java/com/android/server/role/RoleManagerService.java b/services/core/java/com/android/server/role/RoleManagerService.java index 3d91a85020974..eb15c808f512e 100644 --- a/services/core/java/com/android/server/role/RoleManagerService.java +++ b/services/core/java/com/android/server/role/RoleManagerService.java @@ -71,7 +71,6 @@ import com.android.server.FgThread; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.pm.UserManagerInternal; -import com.android.server.pm.permission.PermissionManagerServiceInternal; import java.io.ByteArrayOutputStream; import java.io.FileDescriptor; @@ -709,12 +708,6 @@ public class RoleManagerService extends SystemService implements RoleUserState.C Slog.e(LOG_TAG, "Exception while setting default browser: " + packageName, e); return false; } - - if (packageName != null) { - final PermissionManagerServiceInternal permissionManager = - LocalServices.getService(PermissionManagerServiceInternal.class); - permissionManager.grantDefaultPermissionsToDefaultBrowser(packageName, userId); - } } finally { Binder.restoreCallingIdentity(identity); } diff --git a/services/core/java/com/android/server/telecom/TelecomLoaderService.java b/services/core/java/com/android/server/telecom/TelecomLoaderService.java index 52ad893a9acee..f0c96e18930ab 100644 --- a/services/core/java/com/android/server/telecom/TelecomLoaderService.java +++ b/services/core/java/com/android/server/telecom/TelecomLoaderService.java @@ -42,7 +42,7 @@ import com.android.server.DeviceIdleInternal; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.pm.UserManagerService; -import com.android.server.pm.permission.PermissionManagerServiceInternal; +import com.android.server.pm.permission.LegacyPermissionManagerInternal; /** * Starts the telecom component by binding to its ITelecomService implementation. Telecom is setup @@ -65,8 +65,8 @@ public class TelecomLoaderService extends SystemService { ServiceManager.addService(Context.TELECOM_SERVICE, telecomService.asBinder()); synchronized (mLock) { - final PermissionManagerServiceInternal permissionManager = - LocalServices.getService(PermissionManagerServiceInternal.class); + final LegacyPermissionManagerInternal permissionManager = + LocalServices.getService(LegacyPermissionManagerInternal.class); if (mDefaultSimCallManagerRequests != null) { if (mDefaultSimCallManagerRequests != null) { TelecomManager telecomManager = @@ -165,8 +165,8 @@ public class TelecomLoaderService extends SystemService { private void registerDefaultAppProviders() { - final PermissionManagerServiceInternal permissionManager = - LocalServices.getService(PermissionManagerServiceInternal.class); + final LegacyPermissionManagerInternal permissionManager = + LocalServices.getService(LegacyPermissionManagerInternal.class); // Set a callback for the permission grant policy to query the default sms app. permissionManager.setSmsAppPackagesProvider(userId -> { @@ -244,15 +244,16 @@ public class TelecomLoaderService extends SystemService { } private void updateSimCallManagerPermissions(int userId) { - final PermissionManagerServiceInternal permissionManager = - LocalServices.getService(PermissionManagerServiceInternal.class); + final LegacyPermissionManagerInternal permissionManager = + LocalServices.getService(LegacyPermissionManagerInternal.class); TelecomManager telecomManager = (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE); PhoneAccountHandle phoneAccount = telecomManager.getSimCallManager(userId); if (phoneAccount != null) { Slog.i(TAG, "updating sim call manager permissions for userId:" + userId); String packageName = phoneAccount.getComponentName().getPackageName(); - permissionManager.grantDefaultPermissionsToDefaultSimCallManager(packageName, userId); + permissionManager.grantDefaultPermissionsToDefaultSimCallManager(packageName, + userId); } } } diff --git a/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java b/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java index e609adc2a0675..ce3751abfed70 100644 --- a/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/NetworkScoreServiceTest.java @@ -72,7 +72,7 @@ import androidx.test.filters.MediumTest; import androidx.test.runner.AndroidJUnit4; import com.android.server.devicepolicy.MockUtils; -import com.android.server.pm.permission.PermissionManagerServiceInternal; +import com.android.server.pm.permission.LegacyPermissionManagerInternal; import com.google.android.collect.Lists; @@ -133,10 +133,10 @@ public class NetworkScoreServiceTest { @Mock private UnaryOperator> mScanResultsFilter; @Mock private WifiInfo mWifiInfo; @Mock private NetworkScoreService.ScoringServiceConnection mServiceConnection; - @Mock private PermissionManagerServiceInternal mPermissionManagerInternal; + @Mock private LegacyPermissionManagerInternal mPermissionManagerInternal; @Captor private ArgumentCaptor> mScoredNetworkCaptor; - @Captor private - ArgumentCaptor mPackagesProviderCaptor; + @Captor private ArgumentCaptor + mPackagesProviderCaptor; private ContentResolver mContentResolver; private NetworkScoreService mNetworkScoreService; @@ -165,7 +165,7 @@ public class NetworkScoreServiceTest { mHandlerThread = new HandlerThread("NetworkScoreServiceTest"); mHandlerThread.start(); LocalServices.addService( - PermissionManagerServiceInternal.class, mPermissionManagerInternal); + LegacyPermissionManagerInternal.class, mPermissionManagerInternal); mNetworkScoreService = new NetworkScoreService(mContext, mNetworkScorerAppManager, networkScorerAppData -> mServiceConnection, mHandlerThread.getLooper()); WifiConfiguration configuration = new WifiConfiguration(); @@ -191,7 +191,7 @@ public class NetworkScoreServiceTest { @After public void tearDown() throws Exception { mHandlerThread.quitSafely(); - LocalServices.removeServiceForTest(PermissionManagerServiceInternal.class); + LocalServices.removeServiceForTest(LegacyPermissionManagerInternal.class); } @Test diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index 06c23de84ac32..b5bb2a81a1cd3 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -49,7 +49,6 @@ import android.hardware.soundtrigger.SoundTrigger.ModelParamRange; import android.hardware.soundtrigger.SoundTrigger.ModuleProperties; import android.hardware.soundtrigger.SoundTrigger.RecognitionConfig; import android.media.permission.Identity; -import android.media.permission.IdentityContext; import android.media.permission.PermissionUtil; import android.media.permission.SafeCloseable; import android.os.Binder; @@ -92,7 +91,7 @@ import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.UiThread; import com.android.server.pm.UserManagerInternal; -import com.android.server.pm.permission.PermissionManagerServiceInternal; +import com.android.server.pm.permission.LegacyPermissionManagerInternal; import com.android.server.soundtrigger.SoundTriggerInternal; import com.android.server.utils.TimingsTraceAndSlog; import com.android.server.wm.ActivityTaskManagerInternal; @@ -141,10 +140,10 @@ public class VoiceInteractionManagerService extends SystemService { mUserManagerInternal = Objects.requireNonNull( LocalServices.getService(UserManagerInternal.class)); - PermissionManagerServiceInternal permissionManagerInternal = LocalServices.getService( - PermissionManagerServiceInternal.class); + LegacyPermissionManagerInternal permissionManagerInternal = LocalServices.getService( + LegacyPermissionManagerInternal.class); permissionManagerInternal.setVoiceInteractionPackagesProvider( - new PermissionManagerServiceInternal.PackagesProvider() { + new LegacyPermissionManagerInternal.PackagesProvider() { @Override public String[] getPackages(int userId) { mServiceStub.initForUser(userId);