Loading services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +7 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import static com.android.internal.util.function.pooled.PooledLambda.obtainMessa import static com.android.server.companion.utils.PackageUtils.enforceUsesCompanionDeviceFeature; import static com.android.server.companion.utils.PackageUtils.getPackageInfo; import static com.android.server.companion.utils.PackageUtils.isRestrictedSettingsAllowed; import static com.android.server.companion.utils.PermissionsUtils.checkCallerCanManageCompanionDevice; import static com.android.server.companion.utils.PermissionsUtils.enforceCallerCanManageAssociationsForPackage; import static com.android.server.companion.utils.PermissionsUtils.enforceCallerIsSystemOr; import static com.android.server.companion.utils.PermissionsUtils.enforceCallerIsSystemOrCanInteractWithUserId; Loading Loading @@ -334,6 +335,12 @@ public class CompanionDeviceManagerService extends SystemService { enforceCallerCanManageAssociationsForPackage(getContext(), userId, packageName, "get associations"); if (!checkCallerCanManageCompanionDevice(getContext())) { // If the caller neither is system nor holds MANAGE_COMPANION_DEVICES: it needs to // request the feature (also: the caller is the app itself). enforceUsesCompanionDeviceFeature(getContext(), userId, packageName); } return mAssociationStore.getActiveAssociationsByPackage(userId, packageName); } Loading services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java +0 −2 Original line number Diff line number Diff line Loading @@ -347,8 +347,6 @@ public class AssociationRequestsProcessor { * Set association tag. */ public void setAssociationTag(int associationId, String tag) { Slog.i(TAG, "Setting association tag=[" + tag + "] to id=[" + associationId + "]..."); AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks( associationId); association = (new AssociationInfo.Builder(association)).setTag(tag).build(); Loading services/companion/java/com/android/server/companion/association/AssociationStore.java +8 −8 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ package com.android.server.companion.association; import static com.android.server.companion.utils.MetricUtils.logCreateAssociation; import static com.android.server.companion.utils.MetricUtils.logRemoveAssociation; import static com.android.server.companion.utils.PermissionsUtils.enforceCallerCanManageAssociationsForPackage; import static com.android.server.companion.utils.PermissionsUtils.checkCallerCanManageAssociationsForPackage; import android.annotation.IntDef; import android.annotation.NonNull; Loading Loading @@ -457,10 +457,6 @@ public class AssociationStore { /** * Get association by id with caller checks. * * If the association is not found, an IllegalArgumentException would be thrown. * * If the caller can't access the association, a SecurityException would be thrown. */ @NonNull public AssociationInfo getAssociationWithCallerChecks(int associationId) { Loading @@ -470,11 +466,15 @@ public class AssociationStore { "getAssociationWithCallerChecks() Association id=[" + associationId + "] doesn't exist."); } enforceCallerCanManageAssociationsForPackage(mContext, association.getUserId(), association.getPackageName(), null); if (checkCallerCanManageAssociationsForPackage(mContext, association.getUserId(), association.getPackageName())) { return association; } throw new IllegalArgumentException( "The caller can't interact with the association id=[" + associationId + "]."); } /** * Register a local listener for association changes. */ Loading services/companion/java/com/android/server/companion/association/DisassociationProcessor.java +1 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ public class DisassociationProcessor { Slog.i(TAG, "Disassociating id=[" + id + "]..."); final AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks(id); final int userId = association.getUserId(); final String packageName = association.getPackageName(); final String deviceProfile = association.getDeviceProfile(); Loading services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java +9 −15 Original line number Diff line number Diff line Loading @@ -122,6 +122,7 @@ public class SystemDataTransferProcessor { */ public boolean isPermissionTransferUserConsented(int associationId) { mAssociationStore.getAssociationWithCallerChecks(associationId); PermissionSyncRequest request = getPermissionSyncRequest(associationId); if (request == null) { return false; Loading @@ -146,12 +147,12 @@ public class SystemDataTransferProcessor { return null; } Slog.i(LOG_TAG, "Creating permission sync intent for userId [" + userId + "] associationId [" + associationId + "]"); final AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks( associationId); Slog.i(LOG_TAG, "Creating permission sync intent for userId [" + userId + "] associationId [" + associationId + "]"); // Create an internal intent to launch the user consent dialog final Bundle extras = new Bundle(); PermissionSyncRequest request = new PermissionSyncRequest(associationId); Loading Loading @@ -219,9 +220,7 @@ public class SystemDataTransferProcessor { * Enable perm sync for the association */ public void enablePermissionsSync(int associationId) { AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks( associationId); int userId = association.getUserId(); int userId = mAssociationStore.getAssociationWithCallerChecks(associationId).getUserId(); PermissionSyncRequest request = new PermissionSyncRequest(associationId); request.setUserConsented(true); mSystemDataTransferRequestStore.writeRequest(userId, request); Loading @@ -231,9 +230,7 @@ public class SystemDataTransferProcessor { * Disable perm sync for the association */ public void disablePermissionsSync(int associationId) { AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks( associationId); int userId = association.getUserId(); int userId = mAssociationStore.getAssociationWithCallerChecks(associationId).getUserId(); PermissionSyncRequest request = new PermissionSyncRequest(associationId); request.setUserConsented(false); mSystemDataTransferRequestStore.writeRequest(userId, request); Loading @@ -244,9 +241,8 @@ public class SystemDataTransferProcessor { */ @Nullable public PermissionSyncRequest getPermissionSyncRequest(int associationId) { AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks( associationId); int userId = association.getUserId(); int userId = mAssociationStore.getAssociationWithCallerChecks(associationId) .getUserId(); List<SystemDataTransferRequest> requests = mSystemDataTransferRequestStore.readRequestsByAssociationId(userId, associationId); Loading @@ -263,9 +259,7 @@ public class SystemDataTransferProcessor { */ public void removePermissionSyncRequest(int associationId) { Binder.withCleanCallingIdentity(() -> { AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks( associationId); int userId = association.getUserId(); int userId = mAssociationStore.getAssociationById(associationId).getUserId(); mSystemDataTransferRequestStore.removeRequestsByAssociationId(userId, associationId); }); } Loading Loading
services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +7 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import static com.android.internal.util.function.pooled.PooledLambda.obtainMessa import static com.android.server.companion.utils.PackageUtils.enforceUsesCompanionDeviceFeature; import static com.android.server.companion.utils.PackageUtils.getPackageInfo; import static com.android.server.companion.utils.PackageUtils.isRestrictedSettingsAllowed; import static com.android.server.companion.utils.PermissionsUtils.checkCallerCanManageCompanionDevice; import static com.android.server.companion.utils.PermissionsUtils.enforceCallerCanManageAssociationsForPackage; import static com.android.server.companion.utils.PermissionsUtils.enforceCallerIsSystemOr; import static com.android.server.companion.utils.PermissionsUtils.enforceCallerIsSystemOrCanInteractWithUserId; Loading Loading @@ -334,6 +335,12 @@ public class CompanionDeviceManagerService extends SystemService { enforceCallerCanManageAssociationsForPackage(getContext(), userId, packageName, "get associations"); if (!checkCallerCanManageCompanionDevice(getContext())) { // If the caller neither is system nor holds MANAGE_COMPANION_DEVICES: it needs to // request the feature (also: the caller is the app itself). enforceUsesCompanionDeviceFeature(getContext(), userId, packageName); } return mAssociationStore.getActiveAssociationsByPackage(userId, packageName); } Loading
services/companion/java/com/android/server/companion/association/AssociationRequestsProcessor.java +0 −2 Original line number Diff line number Diff line Loading @@ -347,8 +347,6 @@ public class AssociationRequestsProcessor { * Set association tag. */ public void setAssociationTag(int associationId, String tag) { Slog.i(TAG, "Setting association tag=[" + tag + "] to id=[" + associationId + "]..."); AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks( associationId); association = (new AssociationInfo.Builder(association)).setTag(tag).build(); Loading
services/companion/java/com/android/server/companion/association/AssociationStore.java +8 −8 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ package com.android.server.companion.association; import static com.android.server.companion.utils.MetricUtils.logCreateAssociation; import static com.android.server.companion.utils.MetricUtils.logRemoveAssociation; import static com.android.server.companion.utils.PermissionsUtils.enforceCallerCanManageAssociationsForPackage; import static com.android.server.companion.utils.PermissionsUtils.checkCallerCanManageAssociationsForPackage; import android.annotation.IntDef; import android.annotation.NonNull; Loading Loading @@ -457,10 +457,6 @@ public class AssociationStore { /** * Get association by id with caller checks. * * If the association is not found, an IllegalArgumentException would be thrown. * * If the caller can't access the association, a SecurityException would be thrown. */ @NonNull public AssociationInfo getAssociationWithCallerChecks(int associationId) { Loading @@ -470,11 +466,15 @@ public class AssociationStore { "getAssociationWithCallerChecks() Association id=[" + associationId + "] doesn't exist."); } enforceCallerCanManageAssociationsForPackage(mContext, association.getUserId(), association.getPackageName(), null); if (checkCallerCanManageAssociationsForPackage(mContext, association.getUserId(), association.getPackageName())) { return association; } throw new IllegalArgumentException( "The caller can't interact with the association id=[" + associationId + "]."); } /** * Register a local listener for association changes. */ Loading
services/companion/java/com/android/server/companion/association/DisassociationProcessor.java +1 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ public class DisassociationProcessor { Slog.i(TAG, "Disassociating id=[" + id + "]..."); final AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks(id); final int userId = association.getUserId(); final String packageName = association.getPackageName(); final String deviceProfile = association.getDeviceProfile(); Loading
services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java +9 −15 Original line number Diff line number Diff line Loading @@ -122,6 +122,7 @@ public class SystemDataTransferProcessor { */ public boolean isPermissionTransferUserConsented(int associationId) { mAssociationStore.getAssociationWithCallerChecks(associationId); PermissionSyncRequest request = getPermissionSyncRequest(associationId); if (request == null) { return false; Loading @@ -146,12 +147,12 @@ public class SystemDataTransferProcessor { return null; } Slog.i(LOG_TAG, "Creating permission sync intent for userId [" + userId + "] associationId [" + associationId + "]"); final AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks( associationId); Slog.i(LOG_TAG, "Creating permission sync intent for userId [" + userId + "] associationId [" + associationId + "]"); // Create an internal intent to launch the user consent dialog final Bundle extras = new Bundle(); PermissionSyncRequest request = new PermissionSyncRequest(associationId); Loading Loading @@ -219,9 +220,7 @@ public class SystemDataTransferProcessor { * Enable perm sync for the association */ public void enablePermissionsSync(int associationId) { AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks( associationId); int userId = association.getUserId(); int userId = mAssociationStore.getAssociationWithCallerChecks(associationId).getUserId(); PermissionSyncRequest request = new PermissionSyncRequest(associationId); request.setUserConsented(true); mSystemDataTransferRequestStore.writeRequest(userId, request); Loading @@ -231,9 +230,7 @@ public class SystemDataTransferProcessor { * Disable perm sync for the association */ public void disablePermissionsSync(int associationId) { AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks( associationId); int userId = association.getUserId(); int userId = mAssociationStore.getAssociationWithCallerChecks(associationId).getUserId(); PermissionSyncRequest request = new PermissionSyncRequest(associationId); request.setUserConsented(false); mSystemDataTransferRequestStore.writeRequest(userId, request); Loading @@ -244,9 +241,8 @@ public class SystemDataTransferProcessor { */ @Nullable public PermissionSyncRequest getPermissionSyncRequest(int associationId) { AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks( associationId); int userId = association.getUserId(); int userId = mAssociationStore.getAssociationWithCallerChecks(associationId) .getUserId(); List<SystemDataTransferRequest> requests = mSystemDataTransferRequestStore.readRequestsByAssociationId(userId, associationId); Loading @@ -263,9 +259,7 @@ public class SystemDataTransferProcessor { */ public void removePermissionSyncRequest(int associationId) { Binder.withCleanCallingIdentity(() -> { AssociationInfo association = mAssociationStore.getAssociationWithCallerChecks( associationId); int userId = association.getUserId(); int userId = mAssociationStore.getAssociationById(associationId).getUserId(); mSystemDataTransferRequestStore.removeRequestsByAssociationId(userId, associationId); }); } Loading