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

Commit d9b2ee2e authored by Nate Myren's avatar Nate Myren Committed by Automerger Merge Worker
Browse files

Update Telecom tests due to OS change am: 9c0a5dc0

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telecomm/+/14788862

Change-Id: Idd8cf439f22ff5a14da1a0f738f396c6a55a1c0b
parents e4607b14 9c0a5dc0
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import com.google.common.base.Predicate;

import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -473,6 +474,7 @@ public class BasicCallTests extends TelecomSystemTest {
    @LargeTest
    @Test
    @FlakyTest
    @Ignore("b/189904580")
    public void testIncomingCallFromBlockedNumberIsRejected() throws Exception {
        String phoneNumber = "650-555-1212";
        blockNumber(phoneNumber);
@@ -492,6 +494,7 @@ public class BasicCallTests extends TelecomSystemTest {

        waitForHandlerAction(mConnectionServiceFixtureA.mConnectionServiceDelegate.getHandler(),
                TEST_TIMEOUT);

        assertEquals(1, mCallerInfoAsyncQueryFactoryFixture.mRequests.size());
        for (CallerInfoAsyncQueryFactoryFixture.Request request :
                mCallerInfoAsyncQueryFactoryFixture.mRequests) {
+19 −4
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.app.StatusBarManager;
import android.app.UiModeManager;
import android.app.role.RoleManager;
import android.content.AttributionSource;
import android.content.AttributionSourceState;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -61,6 +62,7 @@ import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.VibratorManager;
import android.permission.PermissionCheckerManager;
import android.telecom.CallAudioState;
import android.telecom.ConnectionService;
import android.telecom.Log;
@@ -84,7 +86,9 @@ import java.util.Locale;
import java.util.Map;
import java.util.concurrent.Executor;

import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.matches;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
@@ -215,6 +219,8 @@ public class ComponentContextFixture implements TestFixture<Context> {
                    return mUiModeManager;
                case Context.VIBRATOR_MANAGER_SERVICE:
                    return mVibratorManager;
                case Context.PERMISSION_CHECKER_SERVICE:
                    return mPermissionCheckerManager;
                default:
                    return null;
            }
@@ -240,6 +246,8 @@ public class ComponentContextFixture implements TestFixture<Context> {
                return Context.UI_MODE_SERVICE;
            } else if (svcClass == VibratorManager.class) {
                return Context.VIBRATOR_MANAGER_SERVICE;
            } else if (svcClass == PermissionCheckerManager.class) {
                return Context.PERMISSION_CHECKER_SERVICE;
            }
            throw new UnsupportedOperationException();
        }
@@ -516,6 +524,8 @@ public class ComponentContextFixture implements TestFixture<Context> {
            mock(TelephonyRegistryManager.class);
    private final VibratorManager mVibratorManager = mock(VibratorManager.class);
    private final UiModeManager mUiModeManager = mock(UiModeManager.class);
    private final PermissionCheckerManager mPermissionCheckerManager =
            mock(PermissionCheckerManager.class);
    private final PermissionInfo mPermissionInfo = mock(PermissionInfo.class);

    private TelecomManager mTelecomManager = mock(TelecomManager.class);
@@ -570,9 +580,10 @@ public class ComponentContextFixture implements TestFixture<Context> {
        }).when(mPackageManager).queryBroadcastReceiversAsUser((Intent) any(), anyInt(), anyInt());

        // By default, tests use non-ui apps instead of 3rd party companion apps.
        when(mPackageManager.checkPermission(
                matches(Manifest.permission.CALL_COMPANION_APP), anyString()))
                .thenReturn(PackageManager.PERMISSION_DENIED);
        when(mPermissionCheckerManager.checkPermission(
                matches(Manifest.permission.CALL_COMPANION_APP), any(AttributionSourceState.class),
                nullable(String.class), anyBoolean(), anyBoolean(), anyBoolean(), anyInt()))
                .thenReturn(PermissionCheckerManager.PERMISSION_HARD_DENIED);

        try {
            when(mPackageManager.getPermissionInfo(anyString(), anyInt())).thenReturn(
@@ -649,11 +660,15 @@ public class ComponentContextFixture implements TestFixture<Context> {
        serviceInfo.name = componentName.getClassName();
        mServiceInfoByComponentName.put(componentName, serviceInfo);

        // Used in InCallController to check permissions for CONTROL_INCALL_EXPERIENCE
        // Used in InCallController to check permissions for CONTROL_INCALL_fvEXPERIENCE
        when(mPackageManager.getPackagesForUid(eq(uid))).thenReturn(new String[] {
                componentName.getPackageName() });
        when(mPackageManager.checkPermission(eq(Manifest.permission.CONTROL_INCALL_EXPERIENCE),
                eq(componentName.getPackageName()))).thenReturn(PackageManager.PERMISSION_GRANTED);
        when(mPermissionCheckerManager.checkPermission(
                eq(Manifest.permission.CONTROL_INCALL_EXPERIENCE),
                any(AttributionSourceState.class), anyString(), anyBoolean(), anyBoolean(),
                anyBoolean(), anyInt())).thenReturn(PackageManager.PERMISSION_GRANTED);
    }

    public void addIntentReceiver(String action, ComponentName name) {
+57 −10
Original line number Diff line number Diff line
@@ -25,7 +25,9 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.matches;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.any;
@@ -42,11 +44,14 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.AppOpsManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.UiModeManager;
import android.content.AttributionSource;
import android.content.AttributionSourceState;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
@@ -66,6 +71,7 @@ import android.os.IBinder;
import android.os.Looper;
import android.os.Process;
import android.os.UserHandle;
import android.permission.PermissionCheckerManager;
import android.telecom.CallAudioState;
import android.telecom.InCallService;
import android.telecom.ParcelableCall;
@@ -101,6 +107,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentMatcher;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.mockito.MockitoSession;
@@ -111,6 +118,7 @@ import org.mockito.stubbing.Answer;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;

@RunWith(JUnit4.class)
@@ -120,6 +128,7 @@ public class InCallControllerTests extends TelecomTestCase {
    @Mock BluetoothHeadsetProxy mMockBluetoothHeadset;
    @Mock SystemStateHelper mMockSystemStateHelper;
    @Mock PackageManager mMockPackageManager;
    @Mock PermissionCheckerManager mMockPermissionCheckerManager;
    @Mock Call mMockCall;
    @Mock Resources mMockResources;
    @Mock AppOpsManager mMockAppOpsManager;
@@ -185,6 +194,8 @@ public class InCallControllerTests extends TelecomTestCase {
        when(mMockCallsManager.getRoleManagerAdapter()).thenReturn(mMockRoleManagerAdapter);
        when(mMockContext.getSystemService(eq(Context.NOTIFICATION_SERVICE)))
                .thenReturn(mNotificationManager);
        when(mMockContext.getSystemService(eq(PermissionCheckerManager.class)))
                .thenReturn(mMockPermissionCheckerManager);
        when(mMockPackageManager.getPermissionInfo(anyString(), anyInt())).thenReturn(
                mMockPermissionInfo);
        when(mMockContext.getAttributionSource()).thenReturn(new AttributionSource(Process.myUid(),
@@ -219,21 +230,37 @@ public class InCallControllerTests extends TelecomTestCase {
            }
            return null;
        }).when(mMockPackageManager).getPackagesForUid(anyInt());
        when(mMockPackageManager.checkPermission(

        when(mMockPermissionCheckerManager.checkPermission(
                matches(Manifest.permission.CONTROL_INCALL_EXPERIENCE),
                matches(COMPANION_PKG))).thenReturn(PackageManager.PERMISSION_DENIED);
        when(mMockPackageManager.checkPermission(
                matchesAttributionSourcePackage(COMPANION_PKG), nullable(String.class),
                anyBoolean(), anyBoolean(), anyBoolean(), anyInt()))
                .thenReturn(PackageManager.PERMISSION_DENIED);

        when(mMockPermissionCheckerManager.checkPermission(
                matches(Manifest.permission.CONTROL_INCALL_EXPERIENCE),
                matches(CAR_PKG))).thenReturn(PackageManager.PERMISSION_GRANTED);
        when(mMockPackageManager.checkPermission(
                matchesAttributionSourcePackage(CAR_PKG), nullable(String.class),
                anyBoolean(), anyBoolean(), anyBoolean(), anyInt()))
                .thenReturn(PackageManager.PERMISSION_GRANTED);

        when(mMockPermissionCheckerManager.checkPermission(
                matches(Manifest.permission.CONTROL_INCALL_EXPERIENCE),
                matches(CAR2_PKG))).thenReturn(PackageManager.PERMISSION_GRANTED);
        when(mMockPackageManager.checkPermission(
                matchesAttributionSourcePackage(CAR2_PKG), nullable(String.class),
                anyBoolean(), anyBoolean(), anyBoolean(), anyInt()))
                .thenReturn(PackageManager.PERMISSION_GRANTED);

        when(mMockPermissionCheckerManager.checkPermission(
                matches(Manifest.permission.CONTROL_INCALL_EXPERIENCE),
                matches(NONUI_PKG))).thenReturn(PackageManager.PERMISSION_GRANTED);
        when(mMockPackageManager.checkPermission(
                matchesAttributionSourcePackage(NONUI_PKG), nullable(String.class),
                anyBoolean(), anyBoolean(), anyBoolean(), anyInt()))
                .thenReturn(PackageManager.PERMISSION_GRANTED);

        when(mMockPermissionCheckerManager.checkPermission(
                matches(Manifest.permission.CONTROL_INCALL_EXPERIENCE),
                matches(APPOP_NONUI_PKG))).thenReturn(PackageManager.PERMISSION_DENIED);
                matchesAttributionSourcePackage(APPOP_NONUI_PKG), nullable(String.class),
                anyBoolean(), anyBoolean(), anyBoolean(), anyInt()))
                .thenReturn(PackageManager.PERMISSION_DENIED);

        when(mMockCallsManager.getAudioState()).thenReturn(new CallAudioState(false, 0, 0));
    }

@@ -1489,4 +1516,24 @@ public class InCallControllerTests extends TelecomTestCase {
                        ? PackageManager.PERMISSION_GRANTED
                        : PackageManager.PERMISSION_DENIED);
  }

    private static AttributionSourceState matchesAttributionSourcePackage(
            @Nullable String packageName) {
        return argThat(new PackageNameArgumentMatcher(packageName));
    }

    private static class PackageNameArgumentMatcher implements
            ArgumentMatcher<AttributionSourceState> {
        @Nullable
        private final String mPackgeName;

        PackageNameArgumentMatcher(@Nullable String packageName) {
            mPackgeName = packageName;
        }

        @Override
        public boolean matches(@NonNull AttributionSourceState attributionSource) {
            return Objects.equals(mPackgeName, attributionSource.packageName);
        }
    }
}