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

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

Merge "[CDM][1/2] Modulize files" into main

parents 49e00a8e 868276cb
Loading
Loading
Loading
Loading
+12 −8
Original line number 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 com.android.server.companion.CompanionDeviceManagerService.DEBUG;
import static com.android.server.companion.MetricUtils.logCreateAssociation;
import static com.android.server.companion.PackageUtils.enforceUsesCompanionDeviceFeature;
import static com.android.server.companion.PermissionsUtils.enforcePermissionsForAssociation;
import static com.android.server.companion.RolesUtils.addRoleHolderForAssociation;
import static com.android.server.companion.RolesUtils.isRoleHolder;
import static com.android.server.companion.Utils.prepareForIpc;
import static com.android.server.companion.utils.MetricUtils.logCreateAssociation;
import static com.android.server.companion.utils.PackageUtils.enforceUsesCompanionDeviceFeature;
import static com.android.server.companion.utils.PermissionsUtils.enforcePermissionForCreatingAssociation;
import static com.android.server.companion.utils.RolesUtils.addRoleHolderForAssociation;
import static com.android.server.companion.utils.RolesUtils.isRoleHolder;
import static com.android.server.companion.utils.Utils.prepareForIpc;

import static java.util.Objects.requireNonNull;

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

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

import java.util.List;

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

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

        // 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
        // this request.
        try {
            enforcePermissionsForAssociation(mContext, request, packageUid);
            enforcePermissionForCreatingAssociation(mContext, request, packageUid);
        } catch (SecurityException e) {
            // 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.
@@ -316,6 +317,9 @@ class AssociationRequestsProcessor {
        // If it is null, then the operation will succeed without granting any role.
        addRoleHolderForAssociation(mService.getContext(), association, success -> {
            if (success) {
                Slog.i(TAG, "Added " + association.getDeviceProfile() + " role to userId="
                        + association.getUserId() + ", packageName="
                        + association.getPackageName());
                addAssociationToStore(association);
                sendCallbackAndFinish(association, callback, resultReceiver);
            } else {
+4 −3
Original line number 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 com.android.internal.util.CollectionUtils.any;
import static com.android.server.companion.MetricUtils.logRemoveAssociation;
import static com.android.server.companion.RolesUtils.removeRoleHolderForAssociation;
import static com.android.server.companion.utils.MetricUtils.logRemoveAssociation;
import static com.android.server.companion.utils.RolesUtils.removeRoleHolderForAssociation;
import static com.android.server.companion.CompanionDeviceManagerService.PerUserAssociationSet;

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

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

+26 −5
Original line number Diff line number Diff line
@@ -38,6 +38,9 @@ import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.infra.PerUser;
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.util.ArrayList;
@@ -61,7 +64,7 @@ import java.util.Map;
 * <ul>
 * <li> {@link #bindCompanionApplication(int, String, boolean)}
 * <li> {@link #unbindCompanionApplication(int, String)}
 * <li> {@link #notifyCompanionApplicationDevicePresenceEvent(AssociationInfo, int)}
 * <li> {@link #notifyCompanionDevicePresenceEvent(AssociationInfo, int)}
 * <li> {@link #isCompanionApplicationBound(int, String)}
 * <li> {@link #isRebindingCompanionApplicationScheduled(int, String)}
 * </ul>
@@ -251,7 +254,13 @@ public class CompanionApplicationController {
        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 String packageName = association.getPackageName();

@@ -273,7 +282,13 @@ public class CompanionApplicationController {
        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 String packageName = association.getPackageName();

@@ -295,7 +310,10 @@ public class CompanionApplicationController {
        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 String packageName = association.getPackageName();
        final CompanionDeviceServiceConnector primaryServiceConnector =
@@ -318,7 +336,10 @@ public class CompanionApplicationController {
        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 ParcelUuid parcelUuid = uuid.getUuid();
        final String packageName = uuid.getPackageName();
+15 −13
Original line number 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.function.pooled.PooledLambda.obtainMessage;
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.PackageUtils.enforceUsesCompanionDeviceFeature;
import static com.android.server.companion.PackageUtils.getPackageInfo;
import static com.android.server.companion.PermissionsUtils.checkCallerCanManageCompanionDevice;
import static com.android.server.companion.PermissionsUtils.enforceCallerCanManageAssociationsForPackage;
import static com.android.server.companion.PermissionsUtils.enforceCallerCanObservingDevicePresenceByUuid;
import static com.android.server.companion.PermissionsUtils.enforceCallerIsSystemOr;
import static com.android.server.companion.PermissionsUtils.enforceCallerIsSystemOrCanInteractWithUserId;
import static com.android.server.companion.PermissionsUtils.sanitizeWithCallerChecks;
import static com.android.server.companion.utils.PackageUtils.isRestrictedSettingsAllowed;
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.PermissionsUtils.checkCallerCanManageCompanionDevice;
import static com.android.server.companion.utils.PermissionsUtils.enforceCallerCanManageAssociationsForPackage;
import static com.android.server.companion.utils.PermissionsUtils.enforceCallerCanObservingDevicePresenceByUuid;
import static com.android.server.companion.utils.PermissionsUtils.enforceCallerIsSystemOr;
import static com.android.server.companion.utils.PermissionsUtils.enforceCallerIsSystemOrCanInteractWithUserId;
import static com.android.server.companion.utils.PermissionsUtils.sanitizeWithCallerChecks;

import static java.util.Objects.requireNonNull;
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.CrossDeviceSyncControllerCallback;
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.pm.UserManagerInternal;
import com.android.server.wm.ActivityTaskManagerInternal;
@@ -435,7 +437,7 @@ public class CompanionDeviceManagerService extends SystemService {

                bindApplicationIfNeeded(association);

                mCompanionAppController.notifyCompanionApplicationDevicePresenceEvent(
                mCompanionAppController.notifyCompanionDevicePresenceEvent(
                        association, event);
                break;
            case EVENT_BLE_DISAPPEARED:
@@ -446,7 +448,7 @@ public class CompanionDeviceManagerService extends SystemService {
                    return;
                }
                if (association.shouldBindWhenPresent()) {
                    mCompanionAppController.notifyCompanionApplicationDevicePresenceEvent(
                    mCompanionAppController.notifyCompanionDevicePresenceEvent(
                            association, event);
                }
                // 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");
                }

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

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

                mCompanionAppController.notifyApplicationDevicePresenceEvent(uuid, event);
                mCompanionAppController.notifyUuidDevicePresenceEvent(uuid, event);
                // Check if there are other devices associated to the app or the UUID to be
                // observed are present.
                if (shouldBindPackage(userId, packageName)) return;
+2 −1
Original line number 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 com.android.server.companion.PermissionsUtils.sanitizeWithCallerChecks;
import static com.android.server.companion.utils.PermissionsUtils.sanitizeWithCallerChecks;

import android.companion.AssociationInfo;
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.CrossDeviceSyncController;
import com.android.server.companion.presence.CompanionDevicePresenceMonitor;
import com.android.server.companion.presence.ObservableUuid;
import com.android.server.companion.transport.CompanionTransportManager;

import java.io.PrintWriter;
Loading