Merge "Move or refactor PermissionManagerInternal APIs."
This commit is contained in:
@@ -19,7 +19,6 @@ package android.permission;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.UserIdInt;
|
||||
import android.os.UserHandle;
|
||||
|
||||
/**
|
||||
* Internal interfaces to be used by other components within the system server.
|
||||
@@ -28,69 +27,39 @@ import android.os.UserHandle;
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public abstract class PermissionManagerInternal {
|
||||
|
||||
public interface PermissionManagerInternal {
|
||||
/**
|
||||
* Listener for package permission state (permissions or flags) changes.
|
||||
*/
|
||||
public interface OnRuntimePermissionStateChangedListener {
|
||||
|
||||
/**
|
||||
* Called when the runtime permission state (permissions or flags) changed.
|
||||
*
|
||||
* @param packageName The package for which the change happened.
|
||||
* @param userId the user id for which the change happened.
|
||||
*/
|
||||
@Nullable
|
||||
void onRuntimePermissionStateChanged(@NonNull String packageName,
|
||||
@UserIdInt int userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the state of the runtime permissions as xml file.
|
||||
* Get the state of the runtime permissions as a blob.
|
||||
*
|
||||
* @param user The user the data should be extracted for
|
||||
* @param userId The user ID the data should be extracted for
|
||||
*
|
||||
* @return The state as a xml file
|
||||
* @return the state as a blob
|
||||
*/
|
||||
public abstract @Nullable byte[] backupRuntimePermissions(@NonNull UserHandle user);
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
@Nullable
|
||||
byte[] backupRuntimePermissions(@UserIdInt int userId);
|
||||
|
||||
/**
|
||||
* Restore a permission state previously backed up via {@link #backupRuntimePermissions}.
|
||||
* <p>
|
||||
* If not all state can be restored, the un-restorable state will be delayed and can be
|
||||
* retried via {@link #restoreDelayedRuntimePermissions}.
|
||||
*
|
||||
* <p>If not all state can be restored, the un-restoreable state will be delayed and can be
|
||||
* re-tried via {@link #restoreDelayedRuntimePermissions}.
|
||||
*
|
||||
* @param backup The state as an xml file
|
||||
* @param user The user the data should be restored for
|
||||
* @param backup the state as a blob
|
||||
* @param userId the user ID the data should be restored for
|
||||
*/
|
||||
public abstract void restoreRuntimePermissions(@NonNull byte[] backup,
|
||||
@NonNull UserHandle user);
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
void restoreRuntimePermissions(@NonNull byte[] backup, @UserIdInt int userId);
|
||||
|
||||
/**
|
||||
* Try to apply permission backup of a package that was previously not applied.
|
||||
*
|
||||
* @param packageName The package that is newly installed
|
||||
* @param user The user the package is installed for
|
||||
* @param packageName the package that is newly installed
|
||||
* @param userId the user ID the package is installed for
|
||||
*
|
||||
* @see #restoreRuntimePermissions
|
||||
*/
|
||||
public abstract void restoreDelayedRuntimePermissions(@NonNull String packageName,
|
||||
@NonNull UserHandle user);
|
||||
|
||||
/**
|
||||
* Adds a listener for runtime permission state (permissions or flags) changes.
|
||||
*
|
||||
* @param listener The listener.
|
||||
*/
|
||||
public abstract void addOnRuntimePermissionStateChangedListener(
|
||||
@NonNull OnRuntimePermissionStateChangedListener listener);
|
||||
|
||||
/**
|
||||
* Removes a listener for runtime permission state (permissions or flags) changes.
|
||||
*
|
||||
* @param listener The listener.
|
||||
*/
|
||||
public abstract void removeOnRuntimePermissionStateChangedListener(
|
||||
@NonNull OnRuntimePermissionStateChangedListener listener);
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
void restoreDelayedRuntimePermissions(@NonNull String packageName,
|
||||
@UserIdInt int userId);
|
||||
}
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
package com.android.server.backup;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.UserIdInt;
|
||||
import android.app.backup.BlobBackupHelper;
|
||||
import android.os.UserHandle;
|
||||
import android.permission.PermissionManagerInternal;
|
||||
import android.util.Slog;
|
||||
|
||||
@@ -34,14 +34,14 @@ public class PermissionBackupHelper extends BlobBackupHelper {
|
||||
// key under which the permission-grant state blob is committed to backup
|
||||
private static final String KEY_PERMISSIONS = "permissions";
|
||||
|
||||
private final @NonNull UserHandle mUser;
|
||||
private final @UserIdInt int mUserId;
|
||||
|
||||
private final @NonNull PermissionManagerInternal mPermissionManager;
|
||||
|
||||
public PermissionBackupHelper(int userId) {
|
||||
super(STATE_VERSION, KEY_PERMISSIONS);
|
||||
|
||||
mUser = UserHandle.of(userId);
|
||||
mUserId = userId;
|
||||
mPermissionManager = LocalServices.getService(PermissionManagerInternal.class);
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ public class PermissionBackupHelper extends BlobBackupHelper {
|
||||
try {
|
||||
switch (key) {
|
||||
case KEY_PERMISSIONS:
|
||||
return mPermissionManager.backupRuntimePermissions(mUser);
|
||||
return mPermissionManager.backupRuntimePermissions(mUserId);
|
||||
|
||||
default:
|
||||
Slog.w(TAG, "Unexpected backup key " + key);
|
||||
@@ -72,7 +72,7 @@ public class PermissionBackupHelper extends BlobBackupHelper {
|
||||
try {
|
||||
switch (key) {
|
||||
case KEY_PERMISSIONS:
|
||||
mPermissionManager.restoreRuntimePermissions(payload, mUser);
|
||||
mPermissionManager.restoreRuntimePermissions(payload, mUserId);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -20723,8 +20723,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
|
||||
// We may also need to apply pending (restored) runtime permission grants
|
||||
// within these users.
|
||||
mPermissionManager.restoreDelayedRuntimePermissions(packageName,
|
||||
UserHandle.of(userId));
|
||||
mPermissionManager.restoreDelayedRuntimePermissions(packageName, userId);
|
||||
|
||||
// Persistent preferred activity might have came into effect due to this
|
||||
// install.
|
||||
@@ -24333,13 +24332,13 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
+ ", convertedFromPreCreated=" + convertedFromPreCreated + ")");
|
||||
}
|
||||
if (!convertedFromPreCreated) {
|
||||
mPermissionManager.onNewUserCreated(userId);
|
||||
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);
|
||||
mPermissionManager.onNewUserCreated(userId);
|
||||
mPermissionManager.onUserCreated(userId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -114,7 +114,6 @@ import android.permission.IPermissionManager;
|
||||
import android.permission.PermissionControllerManager;
|
||||
import android.permission.PermissionManager;
|
||||
import android.permission.PermissionManagerInternal;
|
||||
import android.permission.PermissionManagerInternal.OnRuntimePermissionStateChangedListener;
|
||||
import android.text.TextUtils;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.ArraySet;
|
||||
@@ -151,6 +150,7 @@ import com.android.server.pm.UserManagerInternal;
|
||||
import com.android.server.pm.UserManagerService;
|
||||
import com.android.server.pm.parsing.PackageInfoUtils;
|
||||
import com.android.server.pm.parsing.pkg.AndroidPackage;
|
||||
import com.android.server.pm.permission.PermissionManagerServiceInternal.OnRuntimePermissionStateChangedListener;
|
||||
import com.android.server.policy.PermissionPolicyInternal;
|
||||
import com.android.server.policy.SoftRestrictedPermissionPolicy;
|
||||
|
||||
@@ -2197,19 +2197,20 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
||||
*
|
||||
* <p>Can not be called on main thread.
|
||||
*
|
||||
* @param user The user the data should be extracted for
|
||||
* @param userId The user ID the data should be extracted for
|
||||
*
|
||||
* @return The state as a xml file
|
||||
*/
|
||||
private @Nullable byte[] backupRuntimePermissions(@NonNull UserHandle user) {
|
||||
@Nullable
|
||||
private byte[] backupRuntimePermissions(@UserIdInt int userId) {
|
||||
CompletableFuture<byte[]> backup = new CompletableFuture<>();
|
||||
mPermissionControllerManager.getRuntimePermissionBackup(user, mContext.getMainExecutor(),
|
||||
backup::complete);
|
||||
mPermissionControllerManager.getRuntimePermissionBackup(UserHandle.of(userId),
|
||||
mContext.getMainExecutor(), backup::complete);
|
||||
|
||||
try {
|
||||
return backup.get(BACKUP_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
|
||||
} catch (InterruptedException | ExecutionException | TimeoutException e) {
|
||||
Slog.e(TAG, "Cannot create permission backup for " + user, e);
|
||||
Slog.e(TAG, "Cannot create permission backup for user " + userId, e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -2221,13 +2222,14 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
||||
* applied via {@link #restoreDelayedRuntimePermissions}.
|
||||
*
|
||||
* @param backup The state as an xml file
|
||||
* @param user The user the data should be restored for
|
||||
* @param userId The user ID the data should be restored for
|
||||
*/
|
||||
private void restoreRuntimePermissions(@NonNull byte[] backup, @NonNull UserHandle user) {
|
||||
private void restoreRuntimePermissions(@NonNull byte[] backup, @UserIdInt int userId) {
|
||||
synchronized (mLock) {
|
||||
mHasNoDelayedPermBackup.delete(user.getIdentifier());
|
||||
mHasNoDelayedPermBackup.delete(userId);
|
||||
}
|
||||
mPermissionControllerManager.stageAndApplyRuntimePermissionsBackup(backup, user);
|
||||
mPermissionControllerManager.stageAndApplyRuntimePermissionsBackup(backup,
|
||||
UserHandle.of(userId));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2236,24 +2238,24 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
||||
* <p>Can not be called on main thread.
|
||||
*
|
||||
* @param packageName The package that is newly installed
|
||||
* @param user The user the package is installed for
|
||||
* @param userId The user ID the package is installed for
|
||||
*
|
||||
* @see #restoreRuntimePermissions
|
||||
*/
|
||||
private void restoreDelayedRuntimePermissions(@NonNull String packageName,
|
||||
@NonNull UserHandle user) {
|
||||
@UserIdInt int userId) {
|
||||
synchronized (mLock) {
|
||||
if (mHasNoDelayedPermBackup.get(user.getIdentifier(), false)) {
|
||||
if (mHasNoDelayedPermBackup.get(userId, false)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
mPermissionControllerManager.applyStagedRuntimePermissionBackup(packageName, user,
|
||||
mContext.getMainExecutor(), (hasMoreBackup) -> {
|
||||
mPermissionControllerManager.applyStagedRuntimePermissionBackup(packageName,
|
||||
UserHandle.of(userId), mContext.getMainExecutor(), (hasMoreBackup) -> {
|
||||
if (hasMoreBackup) {
|
||||
return;
|
||||
}
|
||||
synchronized (mLock) {
|
||||
mHasNoDelayedPermBackup.put(user.getIdentifier(), true);
|
||||
mHasNoDelayedPermBackup.put(userId, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -5058,7 +5060,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
||||
}
|
||||
}
|
||||
|
||||
private class PermissionManagerServiceInternalImpl extends PermissionManagerServiceInternal {
|
||||
private class PermissionManagerServiceInternalImpl implements PermissionManagerServiceInternal {
|
||||
@Override
|
||||
public void systemReady() {
|
||||
PermissionManagerService.this.systemReady();
|
||||
@@ -5083,6 +5085,7 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
||||
}
|
||||
@Override
|
||||
public void onUserRemoved(@UserIdInt int userId) {
|
||||
Preconditions.checkArgumentNonNegative(userId, "userId");
|
||||
PermissionManagerService.this.onUserRemoved(userId);
|
||||
}
|
||||
@NonNull
|
||||
@@ -5162,20 +5165,26 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
||||
return matchingPermissions;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public @Nullable byte[] backupRuntimePermissions(@NonNull UserHandle user) {
|
||||
return PermissionManagerService.this.backupRuntimePermissions(user);
|
||||
public byte[] backupRuntimePermissions(@UserIdInt int userId) {
|
||||
Preconditions.checkArgumentNonNegative(userId, "userId");
|
||||
return PermissionManagerService.this.backupRuntimePermissions(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restoreRuntimePermissions(@NonNull byte[] backup, @NonNull UserHandle user) {
|
||||
PermissionManagerService.this.restoreRuntimePermissions(backup, user);
|
||||
public void restoreRuntimePermissions(@NonNull byte[] backup, @UserIdInt int userId) {
|
||||
Objects.requireNonNull(backup, "backup");
|
||||
Preconditions.checkArgumentNonNegative(userId, "userId");
|
||||
PermissionManagerService.this.restoreRuntimePermissions(backup, userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restoreDelayedRuntimePermissions(@NonNull String packageName,
|
||||
@NonNull UserHandle user) {
|
||||
PermissionManagerService.this.restoreDelayedRuntimePermissions(packageName, user);
|
||||
@UserIdInt int userId) {
|
||||
Objects.requireNonNull(packageName, "packageName");
|
||||
Preconditions.checkArgumentNonNegative(userId, "userId");
|
||||
PermissionManagerService.this.restoreDelayedRuntimePermissions(packageName, userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -5264,7 +5273,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewUserCreated(int userId) {
|
||||
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);
|
||||
|
||||
@@ -34,14 +34,14 @@ import java.util.Set;
|
||||
/**
|
||||
* Internal interfaces services.
|
||||
*
|
||||
* TODO: Should be merged into PermissionManagerInternal, but currently uses internal classes.
|
||||
* TODO: Move into module.
|
||||
*/
|
||||
public abstract class PermissionManagerServiceInternal extends PermissionManagerInternal
|
||||
implements LegacyPermissionDataProvider {
|
||||
public interface PermissionManagerServiceInternal extends PermissionManagerInternal,
|
||||
LegacyPermissionDataProvider {
|
||||
/**
|
||||
* Provider for package names.
|
||||
*/
|
||||
public interface PackagesProvider {
|
||||
interface PackagesProvider {
|
||||
|
||||
/**
|
||||
* Gets the packages for a given user.
|
||||
@@ -54,7 +54,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
/**
|
||||
* Provider for package names.
|
||||
*/
|
||||
public interface SyncAdapterPackagesProvider {
|
||||
interface SyncAdapterPackagesProvider {
|
||||
|
||||
/**
|
||||
* Gets the sync adapter packages for given authority and user.
|
||||
@@ -65,7 +65,23 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
String[] getPackages(String authority, int userId);
|
||||
}
|
||||
|
||||
public abstract void systemReady();
|
||||
/**
|
||||
* Adds a listener for runtime permission state (permissions or flags) changes.
|
||||
*
|
||||
* @param listener The listener.
|
||||
*/
|
||||
void addOnRuntimePermissionStateChangedListener(
|
||||
@NonNull OnRuntimePermissionStateChangedListener listener);
|
||||
|
||||
/**
|
||||
* Removes a listener for runtime permission state (permissions or flags) changes.
|
||||
*
|
||||
* @param listener The listener.
|
||||
*/
|
||||
void removeOnRuntimePermissionStateChangedListener(
|
||||
@NonNull OnRuntimePermissionStateChangedListener listener);
|
||||
|
||||
void systemReady();
|
||||
|
||||
/**
|
||||
* Get whether permission review is required for a package.
|
||||
@@ -75,7 +91,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* @return whether permission review is required
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
public abstract boolean isPermissionsReviewRequired(@NonNull String packageName,
|
||||
boolean isPermissionsReviewRequired(@NonNull String packageName,
|
||||
@UserIdInt int userId);
|
||||
|
||||
/**
|
||||
@@ -90,7 +106,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* @param allPackages All currently known packages
|
||||
* @param callback Callback to call after permission changes
|
||||
*/
|
||||
public abstract void updateAllPermissions(@Nullable String volumeUuid, boolean sdkUpdate);
|
||||
void updateAllPermissions(@Nullable String volumeUuid, boolean sdkUpdate);
|
||||
|
||||
/**
|
||||
* Reset the runtime permission state changes for a package.
|
||||
@@ -101,7 +117,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* @param userId the user ID
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
public abstract void resetRuntimePermissions(@NonNull AndroidPackage pkg,
|
||||
void resetRuntimePermissions(@NonNull AndroidPackage pkg,
|
||||
@UserIdInt int userId);
|
||||
|
||||
/**
|
||||
@@ -110,7 +126,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* @param userId the user ID
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
public abstract void resetAllRuntimePermissions(@UserIdInt int userId);
|
||||
void resetAllRuntimePermissions(@UserIdInt int userId);
|
||||
|
||||
/**
|
||||
* Read legacy permission state from package settings.
|
||||
@@ -119,7 +135,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* {@code PackageSetting} which is a implementation detail that permission should not know.
|
||||
* Instead, it should retrieve the legacy state via a defined API.
|
||||
*/
|
||||
public abstract void readLegacyPermissionStateTEMP();
|
||||
void readLegacyPermissionStateTEMP();
|
||||
|
||||
/**
|
||||
* Write legacy permission state to package settings.
|
||||
@@ -127,12 +143,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* TODO(zhanghai): This is a temporary method and should be removed once we migrated persistence
|
||||
* for permission.
|
||||
*/
|
||||
public abstract void writeLegacyPermissionStateTEMP();
|
||||
|
||||
/**
|
||||
* Notify that a user has been removed and its permission state should be removed as well.
|
||||
*/
|
||||
public abstract void onUserRemoved(@UserIdInt int userId);
|
||||
void writeLegacyPermissionStateTEMP();
|
||||
|
||||
/**
|
||||
* Get all the permissions granted to a package.
|
||||
@@ -143,8 +154,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
@NonNull
|
||||
public abstract Set<String> getGrantedPermissions(@NonNull String packageName,
|
||||
@UserIdInt int userId);
|
||||
Set<String> getGrantedPermissions(@NonNull String packageName, @UserIdInt int userId);
|
||||
|
||||
/**
|
||||
* Get the GIDs of a permission.
|
||||
@@ -155,7 +165,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
@NonNull
|
||||
public abstract int[] getPermissionGids(@NonNull String permissionName, @UserIdInt int userId);
|
||||
int[] getPermissionGids(@NonNull String permissionName, @UserIdInt int userId);
|
||||
|
||||
/**
|
||||
* Get the packages that have requested an app op permission.
|
||||
@@ -165,18 +175,19 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
@NonNull
|
||||
public abstract String[] getAppOpPermissionPackages(@NonNull String permissionName);
|
||||
String[] getAppOpPermissionPackages(@NonNull String permissionName);
|
||||
|
||||
/** HACK HACK methods to allow for partial migration of data to the PermissionManager class */
|
||||
@Nullable
|
||||
public abstract Permission getPermissionTEMP(@NonNull String permName);
|
||||
Permission getPermissionTEMP(@NonNull String permName);
|
||||
|
||||
/** Get all permissions that have a certain protection */
|
||||
public abstract @NonNull ArrayList<PermissionInfo> getAllPermissionsWithProtection(
|
||||
@NonNull
|
||||
ArrayList<PermissionInfo> getAllPermissionsWithProtection(
|
||||
@PermissionInfo.Protection int protection);
|
||||
|
||||
/** Get all permissions that have certain protection flags */
|
||||
public abstract @NonNull ArrayList<PermissionInfo> getAllPermissionsWithProtectionFlags(
|
||||
@NonNull ArrayList<PermissionInfo> getAllPermissionsWithProtectionFlags(
|
||||
@PermissionInfo.ProtectionFlags int protectionFlags);
|
||||
|
||||
/**
|
||||
@@ -188,7 +199,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* for, or {@code null} for all permissions
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
public abstract void startShellPermissionIdentityDelegation(int uid,
|
||||
void startShellPermissionIdentityDelegation(int uid,
|
||||
@NonNull String packageName, @Nullable List<String> permissionNames);
|
||||
|
||||
/**
|
||||
@@ -197,89 +208,85 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* @see #startShellPermissionIdentityDelegation(int, String, List)
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
public abstract void stopShellPermissionIdentityDelegation();
|
||||
void stopShellPermissionIdentityDelegation();
|
||||
|
||||
/**
|
||||
* Sets the dialer application packages provider.
|
||||
* @param provider The provider.
|
||||
*/
|
||||
public abstract void setDialerAppPackagesProvider(PackagesProvider provider);
|
||||
void setDialerAppPackagesProvider(PackagesProvider provider);
|
||||
|
||||
/**
|
||||
* Set the location extra packages provider.
|
||||
* @param provider The packages provider.
|
||||
*/
|
||||
public abstract void setLocationExtraPackagesProvider(PackagesProvider provider);
|
||||
void setLocationExtraPackagesProvider(PackagesProvider provider);
|
||||
|
||||
/**
|
||||
* Sets the location provider packages provider.
|
||||
* @param provider The packages provider.
|
||||
*/
|
||||
public abstract void setLocationPackagesProvider(PackagesProvider provider);
|
||||
void setLocationPackagesProvider(PackagesProvider provider);
|
||||
|
||||
/**
|
||||
* Sets the SIM call manager packages provider.
|
||||
* @param provider The provider.
|
||||
*/
|
||||
public abstract void setSimCallManagerPackagesProvider(PackagesProvider provider);
|
||||
void setSimCallManagerPackagesProvider(PackagesProvider provider);
|
||||
|
||||
/**
|
||||
* Sets the SMS application packages provider.
|
||||
* @param provider The provider.
|
||||
*/
|
||||
public abstract void setSmsAppPackagesProvider(PackagesProvider provider);
|
||||
void setSmsAppPackagesProvider(PackagesProvider provider);
|
||||
|
||||
/**
|
||||
* Sets the sync adapter packages provider.
|
||||
* @param provider The provider.
|
||||
*/
|
||||
public abstract void setSyncAdapterPackagesProvider(SyncAdapterPackagesProvider provider);
|
||||
void setSyncAdapterPackagesProvider(SyncAdapterPackagesProvider provider);
|
||||
|
||||
/**
|
||||
* Sets the Use Open Wifi packages provider.
|
||||
* @param provider The packages provider.
|
||||
*/
|
||||
public abstract void setUseOpenWifiAppPackagesProvider(PackagesProvider provider);
|
||||
void setUseOpenWifiAppPackagesProvider(PackagesProvider provider);
|
||||
|
||||
/**
|
||||
* Sets the voice interaction packages provider.
|
||||
* @param provider The packages provider.
|
||||
*/
|
||||
public abstract void setVoiceInteractionPackagesProvider(PackagesProvider 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.
|
||||
*/
|
||||
public abstract void grantDefaultPermissionsToDefaultBrowser(
|
||||
@NonNull String packageName, @UserIdInt int userId);
|
||||
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.
|
||||
*/
|
||||
public abstract void grantDefaultPermissionsToDefaultSimCallManager(
|
||||
@NonNull String packageName, @UserIdInt int userId);
|
||||
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.
|
||||
*/
|
||||
public abstract void grantDefaultPermissionsToDefaultUseOpenWifiApp(
|
||||
@NonNull String packageName, @UserIdInt int userId);
|
||||
|
||||
/** Called when a new user has been created. */
|
||||
public abstract void onNewUserCreated(@UserIdInt int userId);
|
||||
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.
|
||||
*/
|
||||
public abstract void retainHardAndSoftRestrictedPermissions(
|
||||
@NonNull List<String> permissionNames);
|
||||
void retainHardAndSoftRestrictedPermissions(@NonNull List<String> permissionNames);
|
||||
|
||||
/**
|
||||
* Read legacy permissions from legacy permission settings.
|
||||
@@ -288,8 +295,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* {@code LegacyPermissionSettings} which is a implementation detail that permission should not
|
||||
* know. Instead, it should retrieve the legacy permissions via a defined API.
|
||||
*/
|
||||
public abstract void readLegacyPermissionsTEMP(
|
||||
@NonNull LegacyPermissionSettings legacyPermissionSettings);
|
||||
void readLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings);
|
||||
|
||||
/**
|
||||
* Write legacy permissions to legacy permission settings.
|
||||
@@ -297,8 +303,23 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* TODO(zhanghai): This is a temporary method and should be removed once we migrated persistence
|
||||
* for permission.
|
||||
*/
|
||||
public abstract void writeLegacyPermissionsTEMP(
|
||||
@NonNull LegacyPermissionSettings legacyPermissionSettings);
|
||||
void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings);
|
||||
|
||||
/**
|
||||
* Callback when a user has been created.
|
||||
*
|
||||
* @param userId the created user ID
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
void onUserCreated(@UserIdInt int userId);
|
||||
|
||||
/**
|
||||
* Callback when a user has been removed.
|
||||
*
|
||||
* @param userId the removed user ID
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
void onUserRemoved(@UserIdInt int userId);
|
||||
|
||||
/**
|
||||
* Callback when a package has been added.
|
||||
@@ -308,7 +329,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* @param oldPkg the old package, or {@code null} if none
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
public abstract void onPackageAdded(@NonNull AndroidPackage pkg, boolean isInstantApp,
|
||||
void onPackageAdded(@NonNull AndroidPackage pkg, boolean isInstantApp,
|
||||
@Nullable AndroidPackage oldPkg);
|
||||
|
||||
/**
|
||||
@@ -319,8 +340,8 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* @param userId the user ID this package is installed for
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
public abstract void onPackageInstalled(@NonNull AndroidPackage pkg,
|
||||
@NonNull PackageInstalledParams params, @UserIdInt int userId);
|
||||
void onPackageInstalled(@NonNull AndroidPackage pkg, @NonNull PackageInstalledParams params,
|
||||
@UserIdInt int userId);
|
||||
|
||||
/**
|
||||
* Callback when a package has been removed.
|
||||
@@ -328,7 +349,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* @param pkg the removed package
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
public abstract void onPackageRemoved(@NonNull AndroidPackage pkg);
|
||||
void onPackageRemoved(@NonNull AndroidPackage pkg);
|
||||
|
||||
/**
|
||||
* Callback when a package has been uninstalled.
|
||||
@@ -345,9 +366,8 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* @param userId the user ID the package is uninstalled for
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
public abstract void onPackageUninstalled(@NonNull String packageName, int appId,
|
||||
@Nullable AndroidPackage pkg, @NonNull List<AndroidPackage> sharedUserPkgs,
|
||||
@UserIdInt int userId);
|
||||
void onPackageUninstalled(@NonNull String packageName, int appId, @Nullable AndroidPackage pkg,
|
||||
@NonNull List<AndroidPackage> sharedUserPkgs, @UserIdInt int userId);
|
||||
|
||||
/**
|
||||
* Check whether a permission can be propagated to instant app.
|
||||
@@ -355,7 +375,23 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* @param permissionName the name of the permission
|
||||
* @return whether the permission can be propagated
|
||||
*/
|
||||
public abstract boolean canPropagatePermissionToInstantApp(@NonNull String permissionName);
|
||||
boolean canPropagatePermissionToInstantApp(@NonNull String permissionName);
|
||||
|
||||
/**
|
||||
* Listener for package permission state (permissions or flags) changes.
|
||||
*/
|
||||
interface OnRuntimePermissionStateChangedListener {
|
||||
|
||||
/**
|
||||
* Called when the runtime permission state (permissions or flags) changed.
|
||||
*
|
||||
* @param packageName The package for which the change happened.
|
||||
* @param userId the user id for which the change happened.
|
||||
*/
|
||||
@Nullable
|
||||
void onRuntimePermissionStateChanged(@NonNull String packageName,
|
||||
@UserIdInt int userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* The permission-related parameters passed in for package installation.
|
||||
@@ -363,7 +399,7 @@ public abstract class PermissionManagerServiceInternal extends PermissionManager
|
||||
* @see android.content.pm.PackageInstaller.SessionParams
|
||||
*/
|
||||
//@SystemApi(client = SystemApi.Client.SYSTEM_SERVER)
|
||||
public static final class PackageInstalledParams {
|
||||
final class PackageInstalledParams {
|
||||
/**
|
||||
* A static instance whose parameters are all in their default state.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user