Loading src/java/com/android/internal/telephony/Connection.java +5 −0 Original line number Diff line number Diff line Loading @@ -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(); } /** Loading tests/telephonytests/src/com/android/internal/telephony/ConnectionTest.java 0 → 100644 +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 } tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; Loading @@ -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 Loading Loading @@ -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), Loading Loading @@ -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 { Loading Loading
src/java/com/android/internal/telephony/Connection.java +5 −0 Original line number Diff line number Diff line Loading @@ -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(); } /** Loading
tests/telephonytests/src/com/android/internal/telephony/ConnectionTest.java 0 → 100644 +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 }
tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; Loading @@ -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 Loading Loading @@ -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), Loading Loading @@ -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 { Loading