Loading core/java/android/app/SystemServiceRegistry.java +10 −3 Original line number Original line Diff line number Diff line Loading @@ -63,7 +63,6 @@ import android.content.pm.CrossProfileApps; import android.content.pm.DataLoaderManager; import android.content.pm.DataLoaderManager; import android.content.pm.ICrossProfileApps; import android.content.pm.ICrossProfileApps; import android.content.pm.IDataLoaderManager; import android.content.pm.IDataLoaderManager; import android.content.pm.IPackageManager; import android.content.pm.IShortcutService; import android.content.pm.IShortcutService; import android.content.pm.LauncherApps; import android.content.pm.LauncherApps; import android.content.pm.PackageManager; import android.content.pm.PackageManager; Loading Loading @@ -176,6 +175,7 @@ import android.os.image.IDynamicSystemService; import android.os.incremental.IIncrementalService; import android.os.incremental.IIncrementalService; import android.os.incremental.IncrementalManager; import android.os.incremental.IncrementalManager; import android.os.storage.StorageManager; import android.os.storage.StorageManager; import android.permission.LegacyPermissionManager; import android.permission.PermissionControllerManager; import android.permission.PermissionControllerManager; import android.permission.PermissionManager; import android.permission.PermissionManager; import android.print.IPrintManager; import android.print.IPrintManager; Loading Loading @@ -1264,8 +1264,15 @@ public final class SystemServiceRegistry { @Override @Override public PermissionManager createService(ContextImpl ctx) public PermissionManager createService(ContextImpl ctx) throws ServiceNotFoundException { throws ServiceNotFoundException { IPackageManager packageManager = AppGlobals.getPackageManager(); return new PermissionManager(ctx.getOuterContext()); return new PermissionManager(ctx.getOuterContext(), packageManager); }}); registerService(Context.LEGACY_PERMISSION_SERVICE, LegacyPermissionManager.class, new CachedServiceFetcher<LegacyPermissionManager>() { @Override public LegacyPermissionManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new LegacyPermissionManager(); }}); }}); registerService(Context.PERMISSION_CONTROLLER_SERVICE, PermissionControllerManager.class, registerService(Context.PERMISSION_CONTROLLER_SERVICE, PermissionControllerManager.class, Loading core/java/android/content/Context.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -4563,6 +4563,15 @@ public abstract class Context { @SystemApi @SystemApi public static final String PERMISSION_SERVICE = "permission"; public static final String PERMISSION_SERVICE = "permission"; /** * Official published name of the legacy (internal) permission service. * * @see #getSystemService(String) * @hide */ //@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final String LEGACY_PERMISSION_SERVICE = "legacy_permission"; /** /** * Official published name of the (internal) permission controller service. * Official published name of the (internal) permission controller service. * * Loading core/java/android/content/pm/PackageParser.java +5 −9 Original line number Original line Diff line number Diff line Loading @@ -53,7 +53,6 @@ import android.compat.annotation.UnsupportedAppUsage; import android.content.ComponentName; import android.content.ComponentName; import android.content.Intent; import android.content.Intent; import android.content.IntentFilter; import android.content.IntentFilter; import android.content.pm.permission.SplitPermissionInfoParcelable; import android.content.pm.split.DefaultSplitAssetLoader; import android.content.pm.split.DefaultSplitAssetLoader; import android.content.pm.split.SplitAssetDependencyLoader; import android.content.pm.split.SplitAssetDependencyLoader; import android.content.pm.split.SplitAssetLoader; import android.content.pm.split.SplitAssetLoader; Loading @@ -74,6 +73,7 @@ import android.os.SystemProperties; import android.os.Trace; import android.os.Trace; import android.os.UserHandle; import android.os.UserHandle; import android.os.storage.StorageManager; import android.os.storage.StorageManager; import android.permission.PermissionManager; import android.text.TextUtils; import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArrayMap; import android.util.ArraySet; import android.util.ArraySet; Loading Loading @@ -2394,17 +2394,13 @@ public class PackageParser { Slog.i(TAG, newPermsMsg.toString()); Slog.i(TAG, newPermsMsg.toString()); } } List<SplitPermissionInfoParcelable> splitPermissions; final List<PermissionManager.SplitPermissionInfo> splitPermissions = ActivityThread.currentApplication().getSystemService(PermissionManager.class) try { .getSplitPermissions(); splitPermissions = ActivityThread.getPermissionManager().getSplitPermissions(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } final int listSize = splitPermissions.size(); final int listSize = splitPermissions.size(); for (int is = 0; is < listSize; is++) { for (int is = 0; is < listSize; is++) { final SplitPermissionInfoParcelable spi = splitPermissions.get(is); final PermissionManager.SplitPermissionInfo spi = splitPermissions.get(is); if (pkg.applicationInfo.targetSdkVersion >= spi.getTargetSdk() if (pkg.applicationInfo.targetSdkVersion >= spi.getTargetSdk() || !pkg.requestedPermissions.contains(spi.getSplitPermission())) { || !pkg.requestedPermissions.contains(spi.getSplitPermission())) { continue; continue; Loading core/java/android/content/pm/parsing/ParsingPackageUtils.java +5 −10 Original line number Original line Diff line number Diff line Loading @@ -71,7 +71,6 @@ import android.content.pm.parsing.result.ParseInput; import android.content.pm.parsing.result.ParseInput.DeferredError; import android.content.pm.parsing.result.ParseInput.DeferredError; import android.content.pm.parsing.result.ParseResult; import android.content.pm.parsing.result.ParseResult; import android.content.pm.parsing.result.ParseTypeImpl; import android.content.pm.parsing.result.ParseTypeImpl; import android.content.pm.permission.SplitPermissionInfoParcelable; import android.content.pm.split.DefaultSplitAssetLoader; import android.content.pm.split.DefaultSplitAssetLoader; import android.content.pm.split.SplitAssetDependencyLoader; import android.content.pm.split.SplitAssetDependencyLoader; import android.content.pm.split.SplitAssetLoader; import android.content.pm.split.SplitAssetLoader; Loading @@ -85,9 +84,9 @@ import android.net.Uri; import android.os.Build; import android.os.Build; import android.os.Bundle; import android.os.Bundle; import android.os.FileUtils; import android.os.FileUtils; import android.os.RemoteException; import android.os.Trace; import android.os.Trace; import android.os.ext.SdkExtensions; import android.os.ext.SdkExtensions; import android.permission.PermissionManager; import android.text.TextUtils; import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArrayMap; import android.util.ArraySet; import android.util.ArraySet; Loading Loading @@ -2664,17 +2663,13 @@ public class ParsingPackageUtils { } } private static void convertSplitPermissions(ParsingPackage pkg) { private static void convertSplitPermissions(ParsingPackage pkg) { List<SplitPermissionInfoParcelable> splitPermissions; final List<PermissionManager.SplitPermissionInfo> splitPermissions = ActivityThread.currentApplication().getSystemService(PermissionManager.class) try { .getSplitPermissions(); splitPermissions = ActivityThread.getPermissionManager().getSplitPermissions(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } final int listSize = splitPermissions.size(); final int listSize = splitPermissions.size(); for (int is = 0; is < listSize; is++) { for (int is = 0; is < listSize; is++) { final SplitPermissionInfoParcelable spi = splitPermissions.get(is); final PermissionManager.SplitPermissionInfo spi = splitPermissions.get(is); List<String> requestedPermissions = pkg.getRequestedPermissions(); List<String> requestedPermissions = pkg.getRequestedPermissions(); if (pkg.getTargetSdkVersion() >= spi.getTargetSdk() if (pkg.getTargetSdkVersion() >= spi.getTargetSdk() || !requestedPermissions.contains(spi.getSplitPermission())) { || !requestedPermissions.contains(spi.getSplitPermission())) { Loading core/java/android/permission/ILegacyPermissionManager.aidl 0 → 100644 +48 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2019 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 android.permission; import android.content.pm.ParceledListSlice; import android.content.pm.PermissionGroupInfo; import android.content.pm.PermissionInfo; import android.content.pm.permission.SplitPermissionInfoParcelable; import android.os.UserHandle; import android.permission.IOnPermissionsChangeListener; /** * Interface to communicate directly with the legacy permission manager service. * * @see PermissionManager * @hide */ interface ILegacyPermissionManager { int checkDeviceIdentifierAccess(String packageName, String callingFeatureId, String message, int pid, int uid); void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); void grantDefaultPermissionsToEnabledImsServices(in String[] packageNames, int userId); void grantDefaultPermissionsToEnabledTelephonyDataServices( in String[] packageNames, int userId); void revokeDefaultPermissionsFromDisabledTelephonyDataServices( in String[] packageNames, int userId); void grantDefaultPermissionsToActiveLuiApp(in String packageName, int userId); void revokeDefaultPermissionsFromLuiApps(in String[] packageNames, int userId); } Loading
core/java/android/app/SystemServiceRegistry.java +10 −3 Original line number Original line Diff line number Diff line Loading @@ -63,7 +63,6 @@ import android.content.pm.CrossProfileApps; import android.content.pm.DataLoaderManager; import android.content.pm.DataLoaderManager; import android.content.pm.ICrossProfileApps; import android.content.pm.ICrossProfileApps; import android.content.pm.IDataLoaderManager; import android.content.pm.IDataLoaderManager; import android.content.pm.IPackageManager; import android.content.pm.IShortcutService; import android.content.pm.IShortcutService; import android.content.pm.LauncherApps; import android.content.pm.LauncherApps; import android.content.pm.PackageManager; import android.content.pm.PackageManager; Loading Loading @@ -176,6 +175,7 @@ import android.os.image.IDynamicSystemService; import android.os.incremental.IIncrementalService; import android.os.incremental.IIncrementalService; import android.os.incremental.IncrementalManager; import android.os.incremental.IncrementalManager; import android.os.storage.StorageManager; import android.os.storage.StorageManager; import android.permission.LegacyPermissionManager; import android.permission.PermissionControllerManager; import android.permission.PermissionControllerManager; import android.permission.PermissionManager; import android.permission.PermissionManager; import android.print.IPrintManager; import android.print.IPrintManager; Loading Loading @@ -1264,8 +1264,15 @@ public final class SystemServiceRegistry { @Override @Override public PermissionManager createService(ContextImpl ctx) public PermissionManager createService(ContextImpl ctx) throws ServiceNotFoundException { throws ServiceNotFoundException { IPackageManager packageManager = AppGlobals.getPackageManager(); return new PermissionManager(ctx.getOuterContext()); return new PermissionManager(ctx.getOuterContext(), packageManager); }}); registerService(Context.LEGACY_PERMISSION_SERVICE, LegacyPermissionManager.class, new CachedServiceFetcher<LegacyPermissionManager>() { @Override public LegacyPermissionManager createService(ContextImpl ctx) throws ServiceNotFoundException { return new LegacyPermissionManager(); }}); }}); registerService(Context.PERMISSION_CONTROLLER_SERVICE, PermissionControllerManager.class, registerService(Context.PERMISSION_CONTROLLER_SERVICE, PermissionControllerManager.class, Loading
core/java/android/content/Context.java +9 −0 Original line number Original line Diff line number Diff line Loading @@ -4563,6 +4563,15 @@ public abstract class Context { @SystemApi @SystemApi public static final String PERMISSION_SERVICE = "permission"; public static final String PERMISSION_SERVICE = "permission"; /** * Official published name of the legacy (internal) permission service. * * @see #getSystemService(String) * @hide */ //@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final String LEGACY_PERMISSION_SERVICE = "legacy_permission"; /** /** * Official published name of the (internal) permission controller service. * Official published name of the (internal) permission controller service. * * Loading
core/java/android/content/pm/PackageParser.java +5 −9 Original line number Original line Diff line number Diff line Loading @@ -53,7 +53,6 @@ import android.compat.annotation.UnsupportedAppUsage; import android.content.ComponentName; import android.content.ComponentName; import android.content.Intent; import android.content.Intent; import android.content.IntentFilter; import android.content.IntentFilter; import android.content.pm.permission.SplitPermissionInfoParcelable; import android.content.pm.split.DefaultSplitAssetLoader; import android.content.pm.split.DefaultSplitAssetLoader; import android.content.pm.split.SplitAssetDependencyLoader; import android.content.pm.split.SplitAssetDependencyLoader; import android.content.pm.split.SplitAssetLoader; import android.content.pm.split.SplitAssetLoader; Loading @@ -74,6 +73,7 @@ import android.os.SystemProperties; import android.os.Trace; import android.os.Trace; import android.os.UserHandle; import android.os.UserHandle; import android.os.storage.StorageManager; import android.os.storage.StorageManager; import android.permission.PermissionManager; import android.text.TextUtils; import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArrayMap; import android.util.ArraySet; import android.util.ArraySet; Loading Loading @@ -2394,17 +2394,13 @@ public class PackageParser { Slog.i(TAG, newPermsMsg.toString()); Slog.i(TAG, newPermsMsg.toString()); } } List<SplitPermissionInfoParcelable> splitPermissions; final List<PermissionManager.SplitPermissionInfo> splitPermissions = ActivityThread.currentApplication().getSystemService(PermissionManager.class) try { .getSplitPermissions(); splitPermissions = ActivityThread.getPermissionManager().getSplitPermissions(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } final int listSize = splitPermissions.size(); final int listSize = splitPermissions.size(); for (int is = 0; is < listSize; is++) { for (int is = 0; is < listSize; is++) { final SplitPermissionInfoParcelable spi = splitPermissions.get(is); final PermissionManager.SplitPermissionInfo spi = splitPermissions.get(is); if (pkg.applicationInfo.targetSdkVersion >= spi.getTargetSdk() if (pkg.applicationInfo.targetSdkVersion >= spi.getTargetSdk() || !pkg.requestedPermissions.contains(spi.getSplitPermission())) { || !pkg.requestedPermissions.contains(spi.getSplitPermission())) { continue; continue; Loading
core/java/android/content/pm/parsing/ParsingPackageUtils.java +5 −10 Original line number Original line Diff line number Diff line Loading @@ -71,7 +71,6 @@ import android.content.pm.parsing.result.ParseInput; import android.content.pm.parsing.result.ParseInput.DeferredError; import android.content.pm.parsing.result.ParseInput.DeferredError; import android.content.pm.parsing.result.ParseResult; import android.content.pm.parsing.result.ParseResult; import android.content.pm.parsing.result.ParseTypeImpl; import android.content.pm.parsing.result.ParseTypeImpl; import android.content.pm.permission.SplitPermissionInfoParcelable; import android.content.pm.split.DefaultSplitAssetLoader; import android.content.pm.split.DefaultSplitAssetLoader; import android.content.pm.split.SplitAssetDependencyLoader; import android.content.pm.split.SplitAssetDependencyLoader; import android.content.pm.split.SplitAssetLoader; import android.content.pm.split.SplitAssetLoader; Loading @@ -85,9 +84,9 @@ import android.net.Uri; import android.os.Build; import android.os.Build; import android.os.Bundle; import android.os.Bundle; import android.os.FileUtils; import android.os.FileUtils; import android.os.RemoteException; import android.os.Trace; import android.os.Trace; import android.os.ext.SdkExtensions; import android.os.ext.SdkExtensions; import android.permission.PermissionManager; import android.text.TextUtils; import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArrayMap; import android.util.ArraySet; import android.util.ArraySet; Loading Loading @@ -2664,17 +2663,13 @@ public class ParsingPackageUtils { } } private static void convertSplitPermissions(ParsingPackage pkg) { private static void convertSplitPermissions(ParsingPackage pkg) { List<SplitPermissionInfoParcelable> splitPermissions; final List<PermissionManager.SplitPermissionInfo> splitPermissions = ActivityThread.currentApplication().getSystemService(PermissionManager.class) try { .getSplitPermissions(); splitPermissions = ActivityThread.getPermissionManager().getSplitPermissions(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } final int listSize = splitPermissions.size(); final int listSize = splitPermissions.size(); for (int is = 0; is < listSize; is++) { for (int is = 0; is < listSize; is++) { final SplitPermissionInfoParcelable spi = splitPermissions.get(is); final PermissionManager.SplitPermissionInfo spi = splitPermissions.get(is); List<String> requestedPermissions = pkg.getRequestedPermissions(); List<String> requestedPermissions = pkg.getRequestedPermissions(); if (pkg.getTargetSdkVersion() >= spi.getTargetSdk() if (pkg.getTargetSdkVersion() >= spi.getTargetSdk() || !requestedPermissions.contains(spi.getSplitPermission())) { || !requestedPermissions.contains(spi.getSplitPermission())) { Loading
core/java/android/permission/ILegacyPermissionManager.aidl 0 → 100644 +48 −0 Original line number Original line Diff line number Diff line /* * Copyright (C) 2019 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 android.permission; import android.content.pm.ParceledListSlice; import android.content.pm.PermissionGroupInfo; import android.content.pm.PermissionInfo; import android.content.pm.permission.SplitPermissionInfoParcelable; import android.os.UserHandle; import android.permission.IOnPermissionsChangeListener; /** * Interface to communicate directly with the legacy permission manager service. * * @see PermissionManager * @hide */ interface ILegacyPermissionManager { int checkDeviceIdentifierAccess(String packageName, String callingFeatureId, String message, int pid, int uid); void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); void grantDefaultPermissionsToEnabledImsServices(in String[] packageNames, int userId); void grantDefaultPermissionsToEnabledTelephonyDataServices( in String[] packageNames, int userId); void revokeDefaultPermissionsFromDisabledTelephonyDataServices( in String[] packageNames, int userId); void grantDefaultPermissionsToActiveLuiApp(in String packageName, int userId); void revokeDefaultPermissionsFromLuiApps(in String[] packageNames, int userId); }