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

Commit af1be3d5 authored by Vladimir Komsiyski's avatar Vladimir Komsiyski
Browse files

Add internal API to get associationId for deviceId.

Bug: 286363466
Test: atest VirtualDeviceManagerServiceTest
Change-Id: I3260a1587ab14572a7da4f3329e1821b503c7870
parent f5741e2a
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -102,6 +102,13 @@ public final class VirtualDeviceManager {
    public static final String EXTRA_VIRTUAL_DEVICE_ID =
            "android.companion.virtual.extra.VIRTUAL_DEVICE_ID";

    /**
     * A representation of an invalid CDM association ID. Association IDs must be positive.
     *
     * @hide
     */
    public static final int ASSOCIATION_ID_INVALID = -1;

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef(
+11 −0
Original line number Diff line number Diff line
@@ -685,6 +685,17 @@ public class VirtualDeviceManagerService extends SystemService {
            return virtualDevice == null ? new ArraySet<>() : virtualDevice.getDisplayIds();
        }

        @Override
        public int getAssociationIdForDevice(int deviceId) {
            VirtualDeviceImpl virtualDevice;
            synchronized (mVirtualDeviceManagerLock) {
                virtualDevice = mVirtualDevices.get(deviceId);
            }
            return virtualDevice == null
                    ? VirtualDeviceManager.ASSOCIATION_ID_INVALID
                    : virtualDevice.getAssociationId();
        }

        @Override
        public void registerVirtualDisplayListener(
                @NonNull VirtualDisplayListener listener) {
+10 −0
Original line number Diff line number Diff line
@@ -156,4 +156,14 @@ public abstract class VirtualDeviceManagerInternal {
     * @return the set of display ids for all VirtualDisplays owned by the device
     */
    public abstract @NonNull ArraySet<Integer> getDisplayIdsForDevice(int deviceId);

    /**
     * Gets the CDM association ID for the VirtualDevice with the given device ID.
     *
     * @param deviceId which device we're asking about
     * @return the CDM association ID for this device, or
     *   {@link android.companion.virtual.VirtualDeviceManager#ASSOCIATION_ID_INVALID} if no such
     *   association exists.
     */
    public abstract int getAssociationIdForDevice(int deviceId);
}
+18 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.server.companion.virtual;

import static android.companion.virtual.VirtualDeviceManager.ASSOCIATION_ID_INVALID;
import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_CUSTOM;
import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_DEFAULT;
import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_RECENTS;
@@ -1711,6 +1712,22 @@ public class VirtualDeviceManagerServiceTest {
        assertThat(displayIds).containsExactly(DISPLAY_ID_1, DISPLAY_ID_2);
    }

    @Test
    public void getAssociationIdForDevice_invalidDeviceId_returnsInvalidAssociationId() {
        assertThat(mLocalService.getAssociationIdForDevice(DEVICE_ID_INVALID))
                .isEqualTo(ASSOCIATION_ID_INVALID);
        assertThat(mLocalService.getAssociationIdForDevice(DEVICE_ID_DEFAULT))
                .isEqualTo(ASSOCIATION_ID_INVALID);
        assertThat(mLocalService.getAssociationIdForDevice(VIRTUAL_DEVICE_ID_2))
                .isEqualTo(ASSOCIATION_ID_INVALID);
    }

    @Test
    public void getAssociationIdForDevice_returnsCorrectAssociationId() {
        assertThat(mLocalService.getAssociationIdForDevice(VIRTUAL_DEVICE_ID_1))
                .isEqualTo(mAssociationInfo.getId());
    }

    private VirtualDeviceImpl createVirtualDevice(int virtualDeviceId, int ownerUid) {
        VirtualDeviceParams params = new VirtualDeviceParams.Builder()
                .setBlockedActivities(getBlockedActivities())
@@ -1727,6 +1744,7 @@ public class VirtualDeviceManagerServiceTest {
                mPendingTrampolineCallback, mActivityListener, mSoundEffectListener,
                mRunningAppsChangedCallback, params, new DisplayManagerGlobal(mIDisplayManager));
        mVdms.addVirtualDevice(virtualDeviceImpl);
        assertThat(virtualDeviceImpl.getAssociationId()).isEqualTo(mAssociationInfo.getId());
        return virtualDeviceImpl;
    }