Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 520c9b33 authored by Guojing Yuan's avatar Guojing Yuan Committed by Android (Google) Code Review
Browse files

Merge "[CDM] Perm Sync toggle fixes" into main

parents ca897c0e 1eb87176
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -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);
        }
        }
+39 −18
Original line number Original line Diff line number Diff line
@@ -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);
@@ -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);
        }
    }
    }


    /**
    /**
@@ -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) {