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

Commit 5bc5aea7 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 5631102 from 5ceb254b to qt-c2f2-release

Change-Id: I5307a166d6765ff7e1269198f6254163dc927fd5
parents eae89cb4 5ceb254b
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -799,6 +799,11 @@ public abstract class Connection {
        mPostDialString = c.mPostDialString;
        mNextPostDialChar = c.mNextPostDialChar;
        mPostDialState = c.mPostDialState;

        // Migrate Emergency call parameters
        mIsEmergencyCall = c.isEmergencyCall();
        mEmergencyNumberInfo = c.getEmergencyNumberInfo();
        mHasKnownUserIntentEmergency = c.hasKnownUserIntentEmergency();
    }

    /**
+152 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.internal.telephony;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.doReturn;

import android.os.Handler;
import android.os.Looper;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;

/**
 * Unit test verifying the methods of the connection class.
 */
public class ConnectionTest extends TelephonyTest {

    private static final int TEST_PHONE_TYPE = 1;

    @Mock
    protected Call mCall;

    private class TestConnection extends Connection {

        private TestConnection(int phoneType) {
            super(phoneType);
        }

        @Override
        public Call getCall() {
            return mCall;
        }

        @Override
        public long getDisconnectTime() {
            return 0;
        }

        @Override
        public long getHoldDurationMillis() {
            return 0;
        }

        @Override
        public String getVendorDisconnectCause() {
            return "";
        }

        @Override
        public void deflect(String number) throws CallStateException {}

        @Override
        public void hangup() throws CallStateException {}

        @Override
        public void separate() throws CallStateException {}

        @Override
        public void proceedAfterWaitChar() {}

        @Override
        public void proceedAfterWildChar(String str) {}

        @Override
        public void cancelPostDial() {}

        @Override
        public int getNumberPresentation() {
            return 0;
        }

        @Override
        public UUSInfo getUUSInfo() {
            return null;
        }

        @Override
        public int getPreciseDisconnectCause() {
            return 0;
        }

        @Override
        public boolean isMultiparty() {
            return false;
        }
    }

    @Before
    public void setUp() throws Exception {
        super.setUp(getClass().getSimpleName());
        doReturn(mPhone).when(mCall).getPhone();
        replaceInstance(Handler.class, "mLooper", mCT, Looper.getMainLooper());
    }

    @After
    public void tearDown() throws Exception {
        super.tearDown();
    }

    @Test
    public void testMigrateFrom() {
        Connection connection1 = new TestConnection(TEST_PHONE_TYPE);
        Connection connection2 = new TestConnection(TEST_PHONE_TYPE);

        // Verify Emergency Call info is migrated
        assertFalse(connection1.isEmergencyCall());
        assertNull(connection1.getEmergencyNumberInfo());
        assertFalse(connection1.hasKnownUserIntentEmergency());

        connection2.setEmergencyCallInfo();
        connection2.setHasKnownUserIntentEmergency(true);
        connection1.migrateFrom(connection2);

        assertTrue(connection1.isEmergencyCall());
        assertEquals(getTestEmergencyNumber(), connection1.getEmergencyNumberInfo());
        assertTrue(connection1.hasKnownUserIntentEmergency());

        // TODO Verify more fields during the migration
    }

    @Test
    public void testEmergencyCallParameters() {
        Connection connection = new TestConnection(TEST_PHONE_TYPE);
        connection.setEmergencyCallInfo();
        assertTrue(connection.isEmergencyCall());
        assertEquals(getTestEmergencyNumber(), connection.getEmergencyNumberInfo());
        connection.setHasKnownUserIntentEmergency(true);
        assertTrue(connection.hasKnownUserIntentEmergency());
    }

    // TODO Verify more methods in Connection
}
+15 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Matchers.anyBoolean;
import static org.mockito.Matchers.nullable;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doReturn;
@@ -52,6 +53,7 @@ import android.telephony.NetworkRegistrationInfo;
import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.emergency.EmergencyNumber;
import android.telephony.euicc.EuiccManager;
import android.telephony.ims.ImsCallProfile;
import android.test.mock.MockContentProvider;
@@ -92,6 +94,7 @@ import org.mockito.stubbing.Answer;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -105,6 +108,12 @@ public abstract class TelephonyTest {

    private static final int MAX_INIT_WAIT_MS = 30000; // 30 seconds

    private static final EmergencyNumber SAMPLE_EMERGENCY_NUMBER =
            new EmergencyNumber("911", "us", "30",
                    EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED,
            new ArrayList<String>(), EmergencyNumber.EMERGENCY_NUMBER_SOURCE_NETWORK_SIGNALING,
            EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL);

    @Mock
    protected GsmCdmaPhone mPhone;
    @Mock
@@ -376,6 +385,8 @@ public abstract class TelephonyTest {
        doReturn(mEmergencyNumberTracker).when(mTelephonyComponentFactory)
                .makeEmergencyNumberTracker(nullable(Phone.class),
                        nullable(CommandsInterface.class));
        doReturn(getTestEmergencyNumber()).when(mEmergencyNumberTracker)
                .getEmergencyNumber(any());
        doReturn(mUiccProfile).when(mTelephonyComponentFactory)
                .makeUiccProfile(nullable(Context.class), nullable(CommandsInterface.class),
                        nullable(IccCardStatus.class), anyInt(), nullable(UiccCard.class),
@@ -709,6 +720,10 @@ public abstract class TelephonyTest {
        }
    }

    protected final EmergencyNumber getTestEmergencyNumber() {
        return SAMPLE_EMERGENCY_NUMBER;
    }

    public static Object invokeMethod(
            Object instance, String methodName, Class<?>[] parameterClasses, Object[] parameters) {
        try {