diff options
2 files changed, 44 insertions, 18 deletions
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java index 330e35b5aeca..ba4533960db4 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java @@ -887,6 +887,11 @@ public class CompanionDeviceManagerService extends SystemService { @Override public PermissionSyncRequest getPermissionSyncRequest(int associationId) { + // TODO: temporary fix, will remove soon + AssociationInfo association = mAssociationStore.getAssociationById(associationId); + if (association == null) { + return null; + } getAssociationWithCallerChecks(associationId); return mSystemDataTransferProcessor.getPermissionSyncRequest(associationId); } diff --git a/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java b/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java index 42b5a8ba8a4d..e5c847acad6e 100644 --- a/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java +++ b/services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java @@ -139,7 +139,7 @@ public class SystemDataTransferProcessor { @UserIdInt int userId, int associationId) { if (PackageUtils.isPackageAllowlisted(mContext, mPackageManager, packageName)) { Slog.i(LOG_TAG, "User consent Intent should be skipped. Returning null."); - // Auto enable perm sync for the whitelisted packages, but don't override user decision + // Auto enable perm sync for the allowlisted packages, but don't override user decision PermissionSyncRequest request = getPermissionSyncRequest(associationId); if (request == null) { PermissionSyncRequest newRequest = new PermissionSyncRequest(associationId); @@ -224,20 +224,30 @@ public class SystemDataTransferProcessor { * Enable perm sync for the association */ public void enablePermissionsSync(int associationId) { - int userId = mAssociationStore.getAssociationById(associationId).getUserId(); - PermissionSyncRequest request = new PermissionSyncRequest(associationId); - request.setUserConsented(true); - mSystemDataTransferRequestStore.writeRequest(userId, request); + final long callingIdentityToken = Binder.clearCallingIdentity(); + try { + int userId = mAssociationStore.getAssociationById(associationId).getUserId(); + PermissionSyncRequest request = new PermissionSyncRequest(associationId); + request.setUserConsented(true); + mSystemDataTransferRequestStore.writeRequest(userId, request); + } finally { + Binder.restoreCallingIdentity(callingIdentityToken); + } } /** * Disable perm sync for the association */ public void disablePermissionsSync(int associationId) { - int userId = mAssociationStore.getAssociationById(associationId).getUserId(); - PermissionSyncRequest request = new PermissionSyncRequest(associationId); - request.setUserConsented(false); - mSystemDataTransferRequestStore.writeRequest(userId, request); + final long callingIdentityToken = Binder.clearCallingIdentity(); + try { + int userId = mAssociationStore.getAssociationById(associationId).getUserId(); + PermissionSyncRequest request = new PermissionSyncRequest(associationId); + request.setUserConsented(false); + mSystemDataTransferRequestStore.writeRequest(userId, request); + } finally { + Binder.restoreCallingIdentity(callingIdentityToken); + } } /** @@ -245,23 +255,34 @@ public class SystemDataTransferProcessor { */ @Nullable public PermissionSyncRequest getPermissionSyncRequest(int associationId) { - int userId = mAssociationStore.getAssociationById(associationId).getUserId(); - List<SystemDataTransferRequest> requests = - mSystemDataTransferRequestStore.readRequestsByAssociationId(userId, associationId); - for (SystemDataTransferRequest request : requests) { - if (request instanceof PermissionSyncRequest) { - return (PermissionSyncRequest) request; + final long callingIdentityToken = Binder.clearCallingIdentity(); + try { + int userId = mAssociationStore.getAssociationById(associationId).getUserId(); + List<SystemDataTransferRequest> requests = + mSystemDataTransferRequestStore.readRequestsByAssociationId(userId, + associationId); + for (SystemDataTransferRequest request : requests) { + if (request instanceof PermissionSyncRequest) { + return (PermissionSyncRequest) request; + } } + return null; + } finally { + Binder.restoreCallingIdentity(callingIdentityToken); } - return null; } /** * Remove perm sync request for the association. */ public void removePermissionSyncRequest(int associationId) { - int userId = mAssociationStore.getAssociationById(associationId).getUserId(); - mSystemDataTransferRequestStore.removeRequestsByAssociationId(userId, associationId); + final long callingIdentityToken = Binder.clearCallingIdentity(); + try { + int userId = mAssociationStore.getAssociationById(associationId).getUserId(); + mSystemDataTransferRequestStore.removeRequestsByAssociationId(userId, associationId); + } finally { + Binder.restoreCallingIdentity(callingIdentityToken); + } } private void onReceivePermissionRestore(byte[] message) { |