Merge "Move DefaultPermissionGrantPolicy out of PermissionManagerService."
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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<RoleManager> 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<RoleManager> roleManagerSupplier, @NonNull
|
||||
PermissionManagerServiceInternal permissionManager) {
|
||||
public DefaultAppProvider(@NonNull Supplier<RoleManager> 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);
|
||||
}
|
||||
|
||||
@@ -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<PackageInstallerService> mPackageInstallerServiceProducer;
|
||||
private final ProducerWithArgument<InstantAppResolverConnection, ComponentName>
|
||||
mInstantAppResolverConnectionProducer;
|
||||
private final Singleton<LegacyPermissionManagerInternal>
|
||||
mLegacyPermissionManagerInternalProducer;
|
||||
private final SystemWrapper mSystemWrapper;
|
||||
private final ServiceProducer mGetLocalServiceProducer;
|
||||
private final ServiceProducer mGetSystemServiceProducer;
|
||||
@@ -993,6 +997,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
ProducerWithArgument<InstantAppResolverConnection, ComponentName>
|
||||
instantAppResolverConnectionProducer,
|
||||
Producer<ModuleInfoProvider> moduleInfoProviderProducer,
|
||||
Producer<LegacyPermissionManagerInternal> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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.
|
||||
* <p>
|
||||
* 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<OneTimePermissionUserManager> 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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<List<ScoredNetwork>> mScanResultsFilter;
|
||||
@Mock private WifiInfo mWifiInfo;
|
||||
@Mock private NetworkScoreService.ScoringServiceConnection mServiceConnection;
|
||||
@Mock private PermissionManagerServiceInternal mPermissionManagerInternal;
|
||||
@Mock private LegacyPermissionManagerInternal mPermissionManagerInternal;
|
||||
@Captor private ArgumentCaptor<List<ScoredNetwork>> mScoredNetworkCaptor;
|
||||
@Captor private
|
||||
ArgumentCaptor<PermissionManagerServiceInternal.PackagesProvider> mPackagesProviderCaptor;
|
||||
@Captor private ArgumentCaptor<LegacyPermissionManagerInternal.PackagesProvider>
|
||||
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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user