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

Commit 868276cb authored by Guojing Yuan's avatar Guojing Yuan
Browse files

[CDM][1/2] Modulize files

[1/2] Modulize non-association files
[2/2] Will do - modulize association files and consolidate association
cache

Bug: 327049496

Test: CTS
Change-Id: I8943fde617bc2251f2ea425f2eef268b83b19bcf
parent b8b3c55b
Loading
Loading
Loading
Loading
+12 −8
Original line number Original line Diff line number Diff line
@@ -25,12 +25,12 @@ import static android.content.ComponentName.createRelative;
import static android.content.pm.PackageManager.FEATURE_WATCH;
import static android.content.pm.PackageManager.FEATURE_WATCH;


import static com.android.server.companion.CompanionDeviceManagerService.DEBUG;
import static com.android.server.companion.CompanionDeviceManagerService.DEBUG;
import static com.android.server.companion.MetricUtils.logCreateAssociation;
import static com.android.server.companion.utils.MetricUtils.logCreateAssociation;
import static com.android.server.companion.PackageUtils.enforceUsesCompanionDeviceFeature;
import static com.android.server.companion.utils.PackageUtils.enforceUsesCompanionDeviceFeature;
import static com.android.server.companion.PermissionsUtils.enforcePermissionsForAssociation;
import static com.android.server.companion.utils.PermissionsUtils.enforcePermissionForCreatingAssociation;
import static com.android.server.companion.RolesUtils.addRoleHolderForAssociation;
import static com.android.server.companion.utils.RolesUtils.addRoleHolderForAssociation;
import static com.android.server.companion.RolesUtils.isRoleHolder;
import static com.android.server.companion.utils.RolesUtils.isRoleHolder;
import static com.android.server.companion.Utils.prepareForIpc;
import static com.android.server.companion.utils.Utils.prepareForIpc;


import static java.util.Objects.requireNonNull;
import static java.util.Objects.requireNonNull;


@@ -59,6 +59,7 @@ import android.os.UserHandle;
import android.util.Slog;
import android.util.Slog;


import com.android.internal.R;
import com.android.internal.R;
import com.android.server.companion.utils.PackageUtils;


import java.util.List;
import java.util.List;


@@ -167,7 +168,7 @@ class AssociationRequestsProcessor {
        }
        }


        // 1. Enforce permissions and other requirements.
        // 1. Enforce permissions and other requirements.
        enforcePermissionsForAssociation(mContext, request, packageUid);
        enforcePermissionForCreatingAssociation(mContext, request, packageUid);
        enforceUsesCompanionDeviceFeature(mContext, userId, packageName);
        enforceUsesCompanionDeviceFeature(mContext, userId, packageName);


        // 2a. Check if association can be created without launching UI (i.e. CDM needs NEITHER
        // 2a. Check if association can be created without launching UI (i.e. CDM needs NEITHER
@@ -257,7 +258,7 @@ class AssociationRequestsProcessor {
        // 1. Need to check permissions again in case something changed, since we first received
        // 1. Need to check permissions again in case something changed, since we first received
        // this request.
        // this request.
        try {
        try {
            enforcePermissionsForAssociation(mContext, request, packageUid);
            enforcePermissionForCreatingAssociation(mContext, request, packageUid);
        } catch (SecurityException e) {
        } catch (SecurityException e) {
            // Since, at this point the caller is our own UI, we need to catch the exception on
            // Since, at this point the caller is our own UI, we need to catch the exception on
            // forward it back to the application via the callback.
            // forward it back to the application via the callback.
@@ -316,6 +317,9 @@ class AssociationRequestsProcessor {
        // If it is null, then the operation will succeed without granting any role.
        // If it is null, then the operation will succeed without granting any role.
        addRoleHolderForAssociation(mService.getContext(), association, success -> {
        addRoleHolderForAssociation(mService.getContext(), association, success -> {
            if (success) {
            if (success) {
                Slog.i(TAG, "Added " + association.getDeviceProfile() + " role to userId="
                        + association.getUserId() + ", packageName="
                        + association.getPackageName());
                addAssociationToStore(association);
                addAssociationToStore(association);
                sendCallbackAndFinish(association, callback, resultReceiver);
                sendCallbackAndFinish(association, callback, resultReceiver);
            } else {
            } else {
+4 −3
Original line number Original line Diff line number Diff line
@@ -20,8 +20,8 @@ import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIB
import static android.companion.AssociationRequest.DEVICE_PROFILE_AUTOMOTIVE_PROJECTION;
import static android.companion.AssociationRequest.DEVICE_PROFILE_AUTOMOTIVE_PROJECTION;


import static com.android.internal.util.CollectionUtils.any;
import static com.android.internal.util.CollectionUtils.any;
import static com.android.server.companion.MetricUtils.logRemoveAssociation;
import static com.android.server.companion.utils.MetricUtils.logRemoveAssociation;
import static com.android.server.companion.RolesUtils.removeRoleHolderForAssociation;
import static com.android.server.companion.utils.RolesUtils.removeRoleHolderForAssociation;
import static com.android.server.companion.CompanionDeviceManagerService.PerUserAssociationSet;
import static com.android.server.companion.CompanionDeviceManagerService.PerUserAssociationSet;


import android.annotation.NonNull;
import android.annotation.NonNull;
@@ -203,7 +203,8 @@ public class AssociationRevokeProcessor {
            return false;
            return false;
        }
        }


        removeRoleHolderForAssociation(mContext, association);
        removeRoleHolderForAssociation(mContext, association.getUserId(),
                association.getPackageName(), association.getDeviceProfile());
        return true;
        return true;
    }
    }


+26 −5
Original line number Original line Diff line number Diff line
@@ -38,6 +38,9 @@ import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.infra.PerUser;
import com.android.internal.infra.PerUser;
import com.android.server.companion.presence.CompanionDevicePresenceMonitor;
import com.android.server.companion.presence.CompanionDevicePresenceMonitor;
import com.android.server.companion.presence.ObservableUuid;
import com.android.server.companion.presence.ObservableUuidStore;
import com.android.server.companion.utils.PackageUtils;


import java.io.PrintWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.ArrayList;
@@ -61,7 +64,7 @@ import java.util.Map;
 * <ul>
 * <ul>
 * <li> {@link #bindCompanionApplication(int, String, boolean)}
 * <li> {@link #bindCompanionApplication(int, String, boolean)}
 * <li> {@link #unbindCompanionApplication(int, String)}
 * <li> {@link #unbindCompanionApplication(int, String)}
 * <li> {@link #notifyCompanionApplicationDevicePresenceEvent(AssociationInfo, int)}
 * <li> {@link #notifyCompanionDevicePresenceEvent(AssociationInfo, int)}
 * <li> {@link #isCompanionApplicationBound(int, String)}
 * <li> {@link #isCompanionApplicationBound(int, String)}
 * <li> {@link #isRebindingCompanionApplicationScheduled(int, String)}
 * <li> {@link #isRebindingCompanionApplicationScheduled(int, String)}
 * </ul>
 * </ul>
@@ -251,7 +254,13 @@ public class CompanionApplicationController {
        serviceConnector.connect();
        serviceConnector.connect();
    }
    }


    void notifyCompanionApplicationDeviceAppeared(AssociationInfo association) {
    /**
     * Notify the app that the device appeared.
     *
     * @deprecated use {@link #notifyCompanionDevicePresenceEvent(AssociationInfo, int)} instead
     */
    @Deprecated
    public void notifyCompanionApplicationDeviceAppeared(AssociationInfo association) {
        final int userId = association.getUserId();
        final int userId = association.getUserId();
        final String packageName = association.getPackageName();
        final String packageName = association.getPackageName();


@@ -273,7 +282,13 @@ public class CompanionApplicationController {
        primaryServiceConnector.postOnDeviceAppeared(association);
        primaryServiceConnector.postOnDeviceAppeared(association);
    }
    }


    void notifyCompanionApplicationDeviceDisappeared(AssociationInfo association) {
    /**
     * Notify the app that the device disappeared.
     *
     * @deprecated use {@link #notifyCompanionDevicePresenceEvent(AssociationInfo, int)} instead
     */
    @Deprecated
    public void notifyCompanionApplicationDeviceDisappeared(AssociationInfo association) {
        final int userId = association.getUserId();
        final int userId = association.getUserId();
        final String packageName = association.getPackageName();
        final String packageName = association.getPackageName();


@@ -295,7 +310,10 @@ public class CompanionApplicationController {
        primaryServiceConnector.postOnDeviceDisappeared(association);
        primaryServiceConnector.postOnDeviceDisappeared(association);
    }
    }


    void notifyCompanionApplicationDevicePresenceEvent(AssociationInfo association, int event) {
    /**
     * Notify the app that the device appeared.
     */
    public void notifyCompanionDevicePresenceEvent(AssociationInfo association, int event) {
        final int userId = association.getUserId();
        final int userId = association.getUserId();
        final String packageName = association.getPackageName();
        final String packageName = association.getPackageName();
        final CompanionDeviceServiceConnector primaryServiceConnector =
        final CompanionDeviceServiceConnector primaryServiceConnector =
@@ -318,7 +336,10 @@ public class CompanionApplicationController {
        primaryServiceConnector.postOnDevicePresenceEvent(devicePresenceEvent);
        primaryServiceConnector.postOnDevicePresenceEvent(devicePresenceEvent);
    }
    }


    void notifyApplicationDevicePresenceEvent(ObservableUuid uuid, int event) {
    /**
     * Notify the app that the device disappeared.
     */
    public void notifyUuidDevicePresenceEvent(ObservableUuid uuid, int event) {
        final int userId = uuid.getUserId();
        final int userId = uuid.getUserId();
        final ParcelUuid parcelUuid = uuid.getUuid();
        final ParcelUuid parcelUuid = uuid.getUuid();
        final String packageName = uuid.getPackageName();
        final String packageName = uuid.getPackageName();
+15 −13
Original line number Original line Diff line number Diff line
@@ -38,15 +38,15 @@ import static com.android.internal.util.CollectionUtils.any;
import static com.android.internal.util.Preconditions.checkState;
import static com.android.internal.util.Preconditions.checkState;
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
import static com.android.server.companion.AssociationStore.CHANGE_TYPE_UPDATED_ADDRESS_UNCHANGED;
import static com.android.server.companion.AssociationStore.CHANGE_TYPE_UPDATED_ADDRESS_UNCHANGED;
import static com.android.server.companion.PackageUtils.isRestrictedSettingsAllowed;
import static com.android.server.companion.utils.PackageUtils.isRestrictedSettingsAllowed;
import static com.android.server.companion.PackageUtils.enforceUsesCompanionDeviceFeature;
import static com.android.server.companion.utils.PackageUtils.enforceUsesCompanionDeviceFeature;
import static com.android.server.companion.PackageUtils.getPackageInfo;
import static com.android.server.companion.utils.PackageUtils.getPackageInfo;
import static com.android.server.companion.PermissionsUtils.checkCallerCanManageCompanionDevice;
import static com.android.server.companion.utils.PermissionsUtils.checkCallerCanManageCompanionDevice;
import static com.android.server.companion.PermissionsUtils.enforceCallerCanManageAssociationsForPackage;
import static com.android.server.companion.utils.PermissionsUtils.enforceCallerCanManageAssociationsForPackage;
import static com.android.server.companion.PermissionsUtils.enforceCallerCanObservingDevicePresenceByUuid;
import static com.android.server.companion.utils.PermissionsUtils.enforceCallerCanObservingDevicePresenceByUuid;
import static com.android.server.companion.PermissionsUtils.enforceCallerIsSystemOr;
import static com.android.server.companion.utils.PermissionsUtils.enforceCallerIsSystemOr;
import static com.android.server.companion.PermissionsUtils.enforceCallerIsSystemOrCanInteractWithUserId;
import static com.android.server.companion.utils.PermissionsUtils.enforceCallerIsSystemOrCanInteractWithUserId;
import static com.android.server.companion.PermissionsUtils.sanitizeWithCallerChecks;
import static com.android.server.companion.utils.PermissionsUtils.sanitizeWithCallerChecks;


import static java.util.Objects.requireNonNull;
import static java.util.Objects.requireNonNull;
import static java.util.concurrent.TimeUnit.DAYS;
import static java.util.concurrent.TimeUnit.DAYS;
@@ -123,6 +123,8 @@ import com.android.server.companion.datatransfer.contextsync.CrossDeviceCall;
import com.android.server.companion.datatransfer.contextsync.CrossDeviceSyncController;
import com.android.server.companion.datatransfer.contextsync.CrossDeviceSyncController;
import com.android.server.companion.datatransfer.contextsync.CrossDeviceSyncControllerCallback;
import com.android.server.companion.datatransfer.contextsync.CrossDeviceSyncControllerCallback;
import com.android.server.companion.presence.CompanionDevicePresenceMonitor;
import com.android.server.companion.presence.CompanionDevicePresenceMonitor;
import com.android.server.companion.presence.ObservableUuid;
import com.android.server.companion.presence.ObservableUuidStore;
import com.android.server.companion.transport.CompanionTransportManager;
import com.android.server.companion.transport.CompanionTransportManager;
import com.android.server.pm.UserManagerInternal;
import com.android.server.pm.UserManagerInternal;
import com.android.server.wm.ActivityTaskManagerInternal;
import com.android.server.wm.ActivityTaskManagerInternal;
@@ -435,7 +437,7 @@ public class CompanionDeviceManagerService extends SystemService {


                bindApplicationIfNeeded(association);
                bindApplicationIfNeeded(association);


                mCompanionAppController.notifyCompanionApplicationDevicePresenceEvent(
                mCompanionAppController.notifyCompanionDevicePresenceEvent(
                        association, event);
                        association, event);
                break;
                break;
            case EVENT_BLE_DISAPPEARED:
            case EVENT_BLE_DISAPPEARED:
@@ -446,7 +448,7 @@ public class CompanionDeviceManagerService extends SystemService {
                    return;
                    return;
                }
                }
                if (association.shouldBindWhenPresent()) {
                if (association.shouldBindWhenPresent()) {
                    mCompanionAppController.notifyCompanionApplicationDevicePresenceEvent(
                    mCompanionAppController.notifyCompanionDevicePresenceEvent(
                            association, event);
                            association, event);
                }
                }
                // Check if there are other devices associated to the app that are present.
                // Check if there are other devices associated to the app that are present.
@@ -475,7 +477,7 @@ public class CompanionDeviceManagerService extends SystemService {
                    Log.i(TAG, "u" + userId + "\\" + packageName + " is already bound");
                    Log.i(TAG, "u" + userId + "\\" + packageName + " is already bound");
                }
                }


                mCompanionAppController.notifyApplicationDevicePresenceEvent(uuid, event);
                mCompanionAppController.notifyUuidDevicePresenceEvent(uuid, event);


                break;
                break;
            case EVENT_BT_DISCONNECTED:
            case EVENT_BT_DISCONNECTED:
@@ -484,7 +486,7 @@ public class CompanionDeviceManagerService extends SystemService {
                    return;
                    return;
                }
                }


                mCompanionAppController.notifyApplicationDevicePresenceEvent(uuid, event);
                mCompanionAppController.notifyUuidDevicePresenceEvent(uuid, event);
                // Check if there are other devices associated to the app or the UUID to be
                // Check if there are other devices associated to the app or the UUID to be
                // observed are present.
                // observed are present.
                if (shouldBindPackage(userId, packageName)) return;
                if (shouldBindPackage(userId, packageName)) return;
+2 −1
Original line number Original line Diff line number Diff line
@@ -18,7 +18,7 @@ package com.android.server.companion;


import static android.companion.CompanionDeviceManager.MESSAGE_REQUEST_CONTEXT_SYNC;
import static android.companion.CompanionDeviceManager.MESSAGE_REQUEST_CONTEXT_SYNC;


import static com.android.server.companion.PermissionsUtils.sanitizeWithCallerChecks;
import static com.android.server.companion.utils.PermissionsUtils.sanitizeWithCallerChecks;


import android.companion.AssociationInfo;
import android.companion.AssociationInfo;
import android.companion.ContextSyncMessage;
import android.companion.ContextSyncMessage;
@@ -36,6 +36,7 @@ import com.android.server.companion.datatransfer.SystemDataTransferProcessor;
import com.android.server.companion.datatransfer.contextsync.BitmapUtils;
import com.android.server.companion.datatransfer.contextsync.BitmapUtils;
import com.android.server.companion.datatransfer.contextsync.CrossDeviceSyncController;
import com.android.server.companion.datatransfer.contextsync.CrossDeviceSyncController;
import com.android.server.companion.presence.CompanionDevicePresenceMonitor;
import com.android.server.companion.presence.CompanionDevicePresenceMonitor;
import com.android.server.companion.presence.ObservableUuid;
import com.android.server.companion.transport.CompanionTransportManager;
import com.android.server.companion.transport.CompanionTransportManager;


import java.io.PrintWriter;
import java.io.PrintWriter;
Loading