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

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

Drop VDM permissions from Shell

Instead, rely on the relevant role to get these permissions.

Replace FakeAssociationRule with VirtualDeviceRule

Fix: 370657093
Fix: 318641591
Test: presubmit
Test: atest VirtualDeviceManagerServiceTest
Test: atest AppOpsActiveWatcherTest AppOpsDeviceAwareServiceTest AppOpsStartedWatcherTest AppOpsNotedWatcherTest
Flag: EXEMPT test improvement

Change-Id: I65826943040c8650adbfd1ac002094e42bacd1ac
parent a3bea3e2
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -743,12 +743,6 @@
    <uses-permission android:name="android.permission.READ_SAFETY_CENTER_STATUS" />
    <uses-permission android:name="android.permission.MANAGE_SAFETY_CENTER" />

    <!-- Permissions required for CTS test - CtsVirtualDevicesTestCases -->
    <uses-permission android:name="android.permission.CREATE_VIRTUAL_DEVICE" />
    <uses-permission android:name="android.permission.ADD_TRUSTED_DISPLAY" />
    <uses-permission android:name="android.permission.ADD_ALWAYS_UNLOCKED_DISPLAY" />


    <!-- Permission required for CTS test - Notification test suite -->
    <uses-permission android:name="android.permission.REVOKE_POST_NOTIFICATIONS_WITHOUT_KILL" />

+1 −0
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@
    <uses-permission android:name="android.permission.MANAGE_ROLE_HOLDERS" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.CREATE_VIRTUAL_DEVICE" />

    <queries>
        <package android:name="com.android.servicestests.apps.suspendtestapp" />
+0 −1
Original line number Diff line number Diff line
@@ -65,7 +65,6 @@ public class AppOpsActiveWatcherTest {
            VirtualDeviceRule.withAdditionalPermissions(
                    Manifest.permission.GRANT_RUNTIME_PERMISSIONS,
                    Manifest.permission.REVOKE_RUNTIME_PERMISSIONS,
                    Manifest.permission.CREATE_VIRTUAL_DEVICE,
                    Manifest.permission.GET_APP_OPS_STATS
            );
    private static final long NOTIFICATION_TIMEOUT_MILLIS = 5000;
+0 −1
Original line number Diff line number Diff line
@@ -58,7 +58,6 @@ public class AppOpsDeviceAwareServiceTest {
            VirtualDeviceRule.withAdditionalPermissions(
                    Manifest.permission.GRANT_RUNTIME_PERMISSIONS,
                    Manifest.permission.REVOKE_RUNTIME_PERMISSIONS,
                    Manifest.permission.CREATE_VIRTUAL_DEVICE,
                    Manifest.permission.GET_APP_OPS_STATS);

    private static final String ATTRIBUTION_TAG_1 = "attributionTag1";
+7 −18
Original line number Diff line number Diff line
@@ -22,16 +22,14 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity;

import android.app.AppOpsManager;
import android.app.AppOpsManager.OnOpNotedListener;
import android.companion.virtual.VirtualDeviceManager;
import android.companion.virtual.VirtualDeviceParams;
import android.content.AttributionSource;
import android.content.Context;
import android.os.Process;
import android.virtualdevice.cts.common.FakeAssociationRule;
import android.virtualdevice.cts.common.VirtualDeviceRule;

import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -42,8 +40,6 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InOrder;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * Tests watching noted ops.
 */
@@ -51,7 +47,7 @@ import java.util.concurrent.atomic.AtomicInteger;
@RunWith(AndroidJUnit4.class)
public class AppOpsNotedWatcherTest {
    @Rule
    public FakeAssociationRule mFakeAssociationRule = new FakeAssociationRule();
    public VirtualDeviceRule mVirtualDeviceRule = VirtualDeviceRule.createDefault();
    private static final long NOTIFICATION_TIMEOUT_MILLIS = 5000;

    @Test
@@ -119,19 +115,12 @@ public class AppOpsNotedWatcherTest {
    public void testWatchNotedOpsForExternalDevice() {
        final AppOpsManager.OnOpNotedListener listener = mock(
                AppOpsManager.OnOpNotedListener.class);
        final VirtualDeviceManager virtualDeviceManager = getContext().getSystemService(
                VirtualDeviceManager.class);
        AtomicInteger virtualDeviceId = new AtomicInteger();
        runWithShellPermissionIdentity(() -> {
        final VirtualDeviceManager.VirtualDevice virtualDevice =
                    virtualDeviceManager.createVirtualDevice(
                            mFakeAssociationRule.getAssociationInfo().getId(),
                            new VirtualDeviceParams.Builder().setName("virtual_device").build());
            virtualDeviceId.set(virtualDevice.getDeviceId());
        });
                mVirtualDeviceRule.createManagedVirtualDevice();
        final int virtualDeviceId = virtualDevice.getDeviceId();
        AttributionSource attributionSource = new AttributionSource(Process.myUid(),
                getContext().getOpPackageName(), getContext().getAttributionTag(),
                virtualDeviceId.get());
                virtualDeviceId);

        final AppOpsManager appOpsManager = getContext().getSystemService(AppOpsManager.class);
        appOpsManager.startWatchingNoted(new int[]{AppOpsManager.OP_FINE_LOCATION,
@@ -142,7 +131,7 @@ public class AppOpsNotedWatcherTest {
        verify(listener, timeout(NOTIFICATION_TIMEOUT_MILLIS)
                .times(1)).onOpNoted(eq(AppOpsManager.OPSTR_FINE_LOCATION),
                eq(Process.myUid()), eq(getContext().getOpPackageName()),
                eq(getContext().getAttributionTag()), eq(virtualDeviceId.get()),
                eq(getContext().getAttributionTag()), eq(virtualDeviceId),
                eq(AppOpsManager.OP_FLAG_SELF), eq(AppOpsManager.MODE_ALLOWED));

        appOpsManager.finishOp(getContext().getAttributionSource().getToken(),
Loading