Loading services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -887,6 +887,11 @@ public class CompanionDeviceManagerService extends SystemService { @Override @Override public PermissionSyncRequest getPermissionSyncRequest(int associationId) { public PermissionSyncRequest getPermissionSyncRequest(int associationId) { // TODO: temporary fix, will remove soon AssociationInfo association = mAssociationStore.getAssociationById(associationId); if (association == null) { return null; } getAssociationWithCallerChecks(associationId); getAssociationWithCallerChecks(associationId); return mSystemDataTransferProcessor.getPermissionSyncRequest(associationId); return mSystemDataTransferProcessor.getPermissionSyncRequest(associationId); } } Loading services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java +39 −18 Original line number Original line Diff line number Diff line Loading @@ -139,7 +139,7 @@ public class SystemDataTransferProcessor { @UserIdInt int userId, int associationId) { @UserIdInt int userId, int associationId) { if (PackageUtils.isPackageAllowlisted(mContext, mPackageManager, packageName)) { if (PackageUtils.isPackageAllowlisted(mContext, mPackageManager, packageName)) { Slog.i(LOG_TAG, "User consent Intent should be skipped. Returning null."); 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); PermissionSyncRequest request = getPermissionSyncRequest(associationId); if (request == null) { if (request == null) { PermissionSyncRequest newRequest = new PermissionSyncRequest(associationId); PermissionSyncRequest newRequest = new PermissionSyncRequest(associationId); Loading Loading @@ -224,20 +224,30 @@ public class SystemDataTransferProcessor { * Enable perm sync for the association * Enable perm sync for the association */ */ public void enablePermissionsSync(int associationId) { public void enablePermissionsSync(int associationId) { final long callingIdentityToken = Binder.clearCallingIdentity(); try { int userId = mAssociationStore.getAssociationById(associationId).getUserId(); int userId = mAssociationStore.getAssociationById(associationId).getUserId(); PermissionSyncRequest request = new PermissionSyncRequest(associationId); PermissionSyncRequest request = new PermissionSyncRequest(associationId); request.setUserConsented(true); request.setUserConsented(true); mSystemDataTransferRequestStore.writeRequest(userId, request); mSystemDataTransferRequestStore.writeRequest(userId, request); } finally { Binder.restoreCallingIdentity(callingIdentityToken); } } } /** /** * Disable perm sync for the association * Disable perm sync for the association */ */ public void disablePermissionsSync(int associationId) { public void disablePermissionsSync(int associationId) { final long callingIdentityToken = Binder.clearCallingIdentity(); try { int userId = mAssociationStore.getAssociationById(associationId).getUserId(); int userId = mAssociationStore.getAssociationById(associationId).getUserId(); PermissionSyncRequest request = new PermissionSyncRequest(associationId); PermissionSyncRequest request = new PermissionSyncRequest(associationId); request.setUserConsented(false); request.setUserConsented(false); mSystemDataTransferRequestStore.writeRequest(userId, request); mSystemDataTransferRequestStore.writeRequest(userId, request); } finally { Binder.restoreCallingIdentity(callingIdentityToken); } } } /** /** Loading @@ -245,23 +255,34 @@ public class SystemDataTransferProcessor { */ */ @Nullable @Nullable public PermissionSyncRequest getPermissionSyncRequest(int associationId) { public PermissionSyncRequest getPermissionSyncRequest(int associationId) { final long callingIdentityToken = Binder.clearCallingIdentity(); try { int userId = mAssociationStore.getAssociationById(associationId).getUserId(); int userId = mAssociationStore.getAssociationById(associationId).getUserId(); List<SystemDataTransferRequest> requests = List<SystemDataTransferRequest> requests = mSystemDataTransferRequestStore.readRequestsByAssociationId(userId, associationId); mSystemDataTransferRequestStore.readRequestsByAssociationId(userId, associationId); for (SystemDataTransferRequest request : requests) { for (SystemDataTransferRequest request : requests) { if (request instanceof PermissionSyncRequest) { if (request instanceof PermissionSyncRequest) { return (PermissionSyncRequest) request; return (PermissionSyncRequest) request; } } } } return null; return null; } finally { Binder.restoreCallingIdentity(callingIdentityToken); } } } /** /** * Remove perm sync request for the association. * Remove perm sync request for the association. */ */ public void removePermissionSyncRequest(int associationId) { public void removePermissionSyncRequest(int associationId) { final long callingIdentityToken = Binder.clearCallingIdentity(); try { int userId = mAssociationStore.getAssociationById(associationId).getUserId(); int userId = mAssociationStore.getAssociationById(associationId).getUserId(); mSystemDataTransferRequestStore.removeRequestsByAssociationId(userId, associationId); mSystemDataTransferRequestStore.removeRequestsByAssociationId(userId, associationId); } finally { Binder.restoreCallingIdentity(callingIdentityToken); } } } private void onReceivePermissionRestore(byte[] message) { private void onReceivePermissionRestore(byte[] message) { Loading Loading
services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java +5 −0 Original line number Original line Diff line number Diff line Loading @@ -887,6 +887,11 @@ public class CompanionDeviceManagerService extends SystemService { @Override @Override public PermissionSyncRequest getPermissionSyncRequest(int associationId) { public PermissionSyncRequest getPermissionSyncRequest(int associationId) { // TODO: temporary fix, will remove soon AssociationInfo association = mAssociationStore.getAssociationById(associationId); if (association == null) { return null; } getAssociationWithCallerChecks(associationId); getAssociationWithCallerChecks(associationId); return mSystemDataTransferProcessor.getPermissionSyncRequest(associationId); return mSystemDataTransferProcessor.getPermissionSyncRequest(associationId); } } Loading
services/companion/java/com/android/server/companion/datatransfer/SystemDataTransferProcessor.java +39 −18 Original line number Original line Diff line number Diff line Loading @@ -139,7 +139,7 @@ public class SystemDataTransferProcessor { @UserIdInt int userId, int associationId) { @UserIdInt int userId, int associationId) { if (PackageUtils.isPackageAllowlisted(mContext, mPackageManager, packageName)) { if (PackageUtils.isPackageAllowlisted(mContext, mPackageManager, packageName)) { Slog.i(LOG_TAG, "User consent Intent should be skipped. Returning null."); 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); PermissionSyncRequest request = getPermissionSyncRequest(associationId); if (request == null) { if (request == null) { PermissionSyncRequest newRequest = new PermissionSyncRequest(associationId); PermissionSyncRequest newRequest = new PermissionSyncRequest(associationId); Loading Loading @@ -224,20 +224,30 @@ public class SystemDataTransferProcessor { * Enable perm sync for the association * Enable perm sync for the association */ */ public void enablePermissionsSync(int associationId) { public void enablePermissionsSync(int associationId) { final long callingIdentityToken = Binder.clearCallingIdentity(); try { int userId = mAssociationStore.getAssociationById(associationId).getUserId(); int userId = mAssociationStore.getAssociationById(associationId).getUserId(); PermissionSyncRequest request = new PermissionSyncRequest(associationId); PermissionSyncRequest request = new PermissionSyncRequest(associationId); request.setUserConsented(true); request.setUserConsented(true); mSystemDataTransferRequestStore.writeRequest(userId, request); mSystemDataTransferRequestStore.writeRequest(userId, request); } finally { Binder.restoreCallingIdentity(callingIdentityToken); } } } /** /** * Disable perm sync for the association * Disable perm sync for the association */ */ public void disablePermissionsSync(int associationId) { public void disablePermissionsSync(int associationId) { final long callingIdentityToken = Binder.clearCallingIdentity(); try { int userId = mAssociationStore.getAssociationById(associationId).getUserId(); int userId = mAssociationStore.getAssociationById(associationId).getUserId(); PermissionSyncRequest request = new PermissionSyncRequest(associationId); PermissionSyncRequest request = new PermissionSyncRequest(associationId); request.setUserConsented(false); request.setUserConsented(false); mSystemDataTransferRequestStore.writeRequest(userId, request); mSystemDataTransferRequestStore.writeRequest(userId, request); } finally { Binder.restoreCallingIdentity(callingIdentityToken); } } } /** /** Loading @@ -245,23 +255,34 @@ public class SystemDataTransferProcessor { */ */ @Nullable @Nullable public PermissionSyncRequest getPermissionSyncRequest(int associationId) { public PermissionSyncRequest getPermissionSyncRequest(int associationId) { final long callingIdentityToken = Binder.clearCallingIdentity(); try { int userId = mAssociationStore.getAssociationById(associationId).getUserId(); int userId = mAssociationStore.getAssociationById(associationId).getUserId(); List<SystemDataTransferRequest> requests = List<SystemDataTransferRequest> requests = mSystemDataTransferRequestStore.readRequestsByAssociationId(userId, associationId); mSystemDataTransferRequestStore.readRequestsByAssociationId(userId, associationId); for (SystemDataTransferRequest request : requests) { for (SystemDataTransferRequest request : requests) { if (request instanceof PermissionSyncRequest) { if (request instanceof PermissionSyncRequest) { return (PermissionSyncRequest) request; return (PermissionSyncRequest) request; } } } } return null; return null; } finally { Binder.restoreCallingIdentity(callingIdentityToken); } } } /** /** * Remove perm sync request for the association. * Remove perm sync request for the association. */ */ public void removePermissionSyncRequest(int associationId) { public void removePermissionSyncRequest(int associationId) { final long callingIdentityToken = Binder.clearCallingIdentity(); try { int userId = mAssociationStore.getAssociationById(associationId).getUserId(); int userId = mAssociationStore.getAssociationById(associationId).getUserId(); mSystemDataTransferRequestStore.removeRequestsByAssociationId(userId, associationId); mSystemDataTransferRequestStore.removeRequestsByAssociationId(userId, associationId); } finally { Binder.restoreCallingIdentity(callingIdentityToken); } } } private void onReceivePermissionRestore(byte[] message) { private void onReceivePermissionRestore(byte[] message) { Loading