Merge "Clean up VirtualDeviceManagerInternal."

This commit is contained in:
Vladimir Komsiyski
2022-12-10 08:32:06 +00:00
committed by Android (Google) Code Review
3 changed files with 37 additions and 98 deletions

View File

@@ -386,7 +386,15 @@ public class VirtualDeviceManagerService extends SystemService {
@Override // BinderCall
@VirtualDeviceParams.DevicePolicy
public int getDevicePolicy(int deviceId, @VirtualDeviceParams.PolicyType int policyType) {
return mLocalService.getDevicePolicy(deviceId, policyType);
synchronized (mVirtualDeviceManagerLock) {
for (int i = 0; i < mVirtualDevices.size(); i++) {
final VirtualDeviceImpl device = mVirtualDevices.valueAt(i);
if (device.getDeviceId() == deviceId) {
return device.getDevicePolicy(policyType);
}
}
}
return VirtualDeviceParams.DEVICE_POLICY_DEFAULT;
}
@@ -486,20 +494,6 @@ public class VirtualDeviceManagerService extends SystemService {
}
}
@Override
@VirtualDeviceParams.DevicePolicy
public int getDevicePolicy(int deviceId, @VirtualDeviceParams.PolicyType int policyType) {
synchronized (mVirtualDeviceManagerLock) {
for (int i = 0; i < mVirtualDevices.size(); i++) {
final VirtualDeviceImpl device = mVirtualDevices.valueAt(i);
if (device.getDeviceId() == deviceId) {
return device.getDevicePolicy(policyType);
}
}
}
return VirtualDeviceParams.DEVICE_POLICY_DEFAULT;
}
@Override
public void onVirtualDisplayCreated(int displayId) {
final VirtualDisplayListener[] listeners;
@@ -560,19 +554,6 @@ public class VirtualDeviceManagerService extends SystemService {
return ((VirtualDeviceImpl) virtualDevice).getBaseVirtualDisplayFlags();
}
@Override
public boolean isAppOwnerOfAnyVirtualDevice(int uid) {
synchronized (mVirtualDeviceManagerLock) {
int size = mVirtualDevices.size();
for (int i = 0; i < size; i++) {
if (mVirtualDevices.valueAt(i).getOwnerUid() == uid) {
return true;
}
}
return false;
}
}
@Override
public boolean isAppRunningOnAnyVirtualDevice(int uid) {
synchronized (mVirtualDeviceManagerLock) {

View File

@@ -18,7 +18,6 @@ package com.android.server.companion.virtual;
import android.annotation.NonNull;
import android.companion.virtual.IVirtualDevice;
import android.companion.virtual.VirtualDeviceParams;
import java.util.Set;
@@ -93,12 +92,6 @@ public abstract class VirtualDeviceManagerInternal {
*/
public abstract int getBaseVirtualDisplayFlags(IVirtualDevice virtualDevice);
/**
* Returns true if the given {@code uid} is the owner of any virtual devices that are
* currently active.
*/
public abstract boolean isAppOwnerOfAnyVirtualDevice(int uid);
/**
* Returns true if the given {@code uid} is currently running on any virtual devices. This is
* determined by whether the app has any activities in the task stack on a virtual-device-owned
@@ -110,14 +103,4 @@ public abstract class VirtualDeviceManagerInternal {
* Returns true if the {@code displayId} is owned by any virtual device
*/
public abstract boolean isDisplayOwnedByAnyVirtualDevice(int displayId);
/**
* Returns the device policy for the given virtual device and policy type.
*
* <p>In case the virtual device identifier is not valid, or there's no explicitly specified
* policy for that device and policy type, then
* {@link VirtualDeviceParams#DEVICE_POLICY_DEFAULT} is returned.
*/
public abstract @VirtualDeviceParams.DevicePolicy int getDevicePolicy(
int deviceId, @VirtualDeviceParams.PolicyType int policyType);
}

View File

@@ -16,6 +16,8 @@
package com.android.server.companion.virtual;
import static android.companion.virtual.VirtualDeviceManager.DEFAULT_DEVICE_ID;
import static android.companion.virtual.VirtualDeviceManager.INVALID_DEVICE_ID;
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_SENSORS;
@@ -47,7 +49,6 @@ import android.app.WindowConfiguration;
import android.app.admin.DevicePolicyManager;
import android.companion.AssociationInfo;
import android.companion.virtual.IVirtualDeviceActivityListener;
import android.companion.virtual.VirtualDeviceManager;
import android.companion.virtual.VirtualDeviceParams;
import android.companion.virtual.audio.IAudioConfigChangedCallback;
import android.companion.virtual.audio.IAudioRoutingCallback;
@@ -179,6 +180,7 @@ public class VirtualDeviceManagerServiceTest {
private AssociationInfo mAssociationInfo;
private VirtualDeviceManagerService mVdms;
private VirtualDeviceManagerInternal mLocalService;
private VirtualDeviceManagerService.VirtualDeviceManagerImpl mVdm;
@Mock
private InputController.NativeWrapper mNativeWrapperMock;
@Mock
@@ -304,80 +306,68 @@ public class VirtualDeviceManagerServiceTest {
mVdms = new VirtualDeviceManagerService(mContext);
mLocalService = mVdms.getLocalServiceInstance();
mVdm = mVdms.new VirtualDeviceManagerImpl();
mDeviceImpl = createVirtualDevice(VIRTUAL_DEVICE_ID);
VirtualDeviceParams params = new VirtualDeviceParams
.Builder()
.setBlockedActivities(getBlockedActivities())
.build();
mDeviceImpl = new VirtualDeviceImpl(mContext,
mAssociationInfo, new Binder(), /* ownerUid= */ 0, VIRTUAL_DEVICE_ID,
mInputController, mSensorController, (int associationId) -> {},
mPendingTrampolineCallback, mActivityListener, mRunningAppsChangedCallback, params);
mVdms.addVirtualDevice(mDeviceImpl);
}
@Test
public void getDeviceIdForDisplayId_invalidDisplayId_returnsDefault() {
VirtualDeviceManagerService.VirtualDeviceManagerImpl vdm =
mVdms.new VirtualDeviceManagerImpl();
assertThat(
vdm.getDeviceIdForDisplayId(Display.INVALID_DISPLAY))
.isEqualTo(VirtualDeviceManager.DEFAULT_DEVICE_ID);
assertThat(mVdm.getDeviceIdForDisplayId(Display.INVALID_DISPLAY))
.isEqualTo(DEFAULT_DEVICE_ID);
}
@Test
public void getDeviceIdForDisplayId_defaultDisplayId_returnsDefault() {
VirtualDeviceManagerService.VirtualDeviceManagerImpl vdm =
mVdms.new VirtualDeviceManagerImpl();
assertThat(
vdm.getDeviceIdForDisplayId(Display.DEFAULT_DISPLAY))
.isEqualTo(VirtualDeviceManager.DEFAULT_DEVICE_ID);
assertThat(mVdm.getDeviceIdForDisplayId(Display.DEFAULT_DISPLAY))
.isEqualTo(DEFAULT_DEVICE_ID);
}
@Test
public void getDeviceIdForDisplayId_nonExistentDisplayId_returnsDefault() {
VirtualDeviceManagerService.VirtualDeviceManagerImpl vdm =
mVdms.new VirtualDeviceManagerImpl();
int nonExistentDisplayId = 999;
mDeviceImpl.mVirtualDisplayIds.remove(DISPLAY_ID);
assertThat(
vdm.getDeviceIdForDisplayId(nonExistentDisplayId))
.isEqualTo(VirtualDeviceManager.DEFAULT_DEVICE_ID);
assertThat(mVdm.getDeviceIdForDisplayId(DISPLAY_ID))
.isEqualTo(DEFAULT_DEVICE_ID);
}
@Test
public void getDeviceIdForDisplayId_withValidVirtualDisplayId_returnsDeviceId() {
VirtualDeviceManagerService.VirtualDeviceManagerImpl vdm =
mVdms.new VirtualDeviceManagerImpl();
VirtualDeviceImpl virtualDevice = createVirtualDevice(/* virtualDeviceId */ 1000);
virtualDevice.mVirtualDisplayIds.add(DISPLAY_ID);
mDeviceImpl.mVirtualDisplayIds.add(DISPLAY_ID);
assertThat(
vdm.getDeviceIdForDisplayId(DISPLAY_ID))
.isEqualTo(1000);
assertThat(mVdm.getDeviceIdForDisplayId(DISPLAY_ID))
.isEqualTo(mDeviceImpl.getDeviceId());
}
@Test
public void getDevicePolicy_invalidDeviceId_returnsDefault() {
assertThat(
mLocalService.getDevicePolicy(
VirtualDeviceManager.INVALID_DEVICE_ID, POLICY_TYPE_SENSORS))
assertThat(mVdm.getDevicePolicy(INVALID_DEVICE_ID, POLICY_TYPE_SENSORS))
.isEqualTo(DEVICE_POLICY_DEFAULT);
}
@Test
public void getDevicePolicy_defaultDeviceId_returnsDefault() {
assertThat(
mLocalService.getDevicePolicy(
VirtualDeviceManager.DEFAULT_DEVICE_ID, POLICY_TYPE_SENSORS))
assertThat(mVdm.getDevicePolicy(DEFAULT_DEVICE_ID, POLICY_TYPE_SENSORS))
.isEqualTo(DEVICE_POLICY_DEFAULT);
}
@Test
public void getDevicePolicy_nonExistentDeviceId_returnsDefault() {
assertThat(
mLocalService.getDevicePolicy(mDeviceImpl.getDeviceId() + 1, POLICY_TYPE_SENSORS))
assertThat(mVdm.getDevicePolicy(mDeviceImpl.getDeviceId() + 1, POLICY_TYPE_SENSORS))
.isEqualTo(DEVICE_POLICY_DEFAULT);
}
@Test
public void getDevicePolicy_unspecifiedPolicy_returnsDefault() {
assertThat(
mLocalService.getDevicePolicy(mDeviceImpl.getDeviceId(), POLICY_TYPE_SENSORS))
assertThat(mVdm.getDevicePolicy(mDeviceImpl.getDeviceId(), POLICY_TYPE_SENSORS))
.isEqualTo(DEVICE_POLICY_DEFAULT);
}
@@ -394,8 +384,7 @@ public class VirtualDeviceManagerServiceTest {
mPendingTrampolineCallback, mActivityListener, mRunningAppsChangedCallback, params);
mVdms.addVirtualDevice(mDeviceImpl);
assertThat(
mLocalService.getDevicePolicy(mDeviceImpl.getDeviceId(), POLICY_TYPE_SENSORS))
assertThat(mVdm.getDevicePolicy(mDeviceImpl.getDeviceId(), POLICY_TYPE_SENSORS))
.isEqualTo(DEVICE_POLICY_CUSTOM);
}
@@ -1196,18 +1185,4 @@ public class VirtualDeviceManagerServiceTest {
verify(mContext).startActivityAsUser(argThat(intent ->
intent.filterEquals(blockedAppIntent)), any(), any());
}
private VirtualDeviceImpl createVirtualDevice(int virtualDeviceId) {
VirtualDeviceParams params = new VirtualDeviceParams
.Builder()
.setBlockedActivities(getBlockedActivities())
.build();
VirtualDeviceImpl virtualDeviceImpl = new VirtualDeviceImpl(mContext,
mAssociationInfo, new Binder(), /* ownerUid */ 0, virtualDeviceId,
mInputController, mSensorController, (int associationId) -> {},
mPendingTrampolineCallback, mActivityListener, mRunningAppsChangedCallback, params);
mVdms.addVirtualDevice(virtualDeviceImpl);
return virtualDeviceImpl;
}
}