Search in sources :

Example 1 with ImsReasonInfo

use of android.telephony.ims.ImsReasonInfo in project android_frameworks_opt_telephony by LineageOS.

the class ImsPhoneCallTracker method resetImsCapabilities.

private void resetImsCapabilities() {
    log("Resetting Capabilities...");
    boolean tmpIsVideoCallEnabled = isVideoCallEnabled();
    mMmTelCapabilities = new MmTelFeature.MmTelCapabilities();
    mPhone.setServiceState(ServiceState.STATE_OUT_OF_SERVICE);
    mPhone.resetImsRegistrationState();
    mPhone.processDisconnectReason(new ImsReasonInfo(ImsReasonInfo.CODE_LOCAL_IMS_SERVICE_DOWN, ImsReasonInfo.CODE_UNSPECIFIED));
    boolean isVideoEnabled = isVideoCallEnabled();
    if (tmpIsVideoCallEnabled != isVideoEnabled) {
        mPhone.notifyForVideoCapabilityChanged(isVideoEnabled);
    }
}
Also used : MmTelFeature(android.telephony.ims.feature.MmTelFeature) ImsReasonInfo(android.telephony.ims.ImsReasonInfo)

Example 2 with ImsReasonInfo

use of android.telephony.ims.ImsReasonInfo in project android_frameworks_opt_telephony by LineageOS.

the class ImsRegistrationCallbackHelperTest method testImsUnRegistered.

@Test
@SmallTest
public void testImsUnRegistered() {
    // Verify the RegistrationCallback should not be null
    RegistrationCallback callback = mRegistrationCallbackHelper.getCallback();
    assertNotNull(callback);
    // When onUnregistered is called, the registration state should be
    // REGISTRATION_STATE_NOT_REGISTERED
    ImsReasonInfo reasonInfo = new ImsReasonInfo(ImsReasonInfo.CODE_REGISTRATION_ERROR, 0);
    callback.onUnregistered(reasonInfo);
    // The registration state should be REGISTRATION_STATE_NOT_REGISTERED
    assertEquals(RegistrationManager.REGISTRATION_STATE_NOT_REGISTERED, mRegistrationCallbackHelper.getImsRegistrationState());
    verify(mMockRegistrationUpdate).handleImsUnregistered(reasonInfo);
}
Also used : RegistrationCallback(android.telephony.ims.RegistrationManager.RegistrationCallback) ImsReasonInfo(android.telephony.ims.ImsReasonInfo) SmallTest(android.test.suitebuilder.annotation.SmallTest) TelephonyTest(com.android.internal.telephony.TelephonyTest) Test(org.junit.Test) SmallTest(android.test.suitebuilder.annotation.SmallTest)

Example 3 with ImsReasonInfo

use of android.telephony.ims.ImsReasonInfo in project android_frameworks_opt_telephony by LineageOS.

the class VoiceCallSessionStatsTest method singleImsCall_mtAccepted.

@Test
@SmallTest
public void singleImsCall_mtAccepted() {
    doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getVoiceNetworkType();
    doReturn(true).when(mImsConnection0).isIncoming();
    doReturn(2000L).when(mImsConnection0).getCreateTime();
    doReturn(mImsCall0).when(mImsConnection0).getCall();
    doReturn(new ArrayList(List.of(mImsConnection0))).when(mImsCall0).getConnections();
    VoiceCallSession expectedCall = makeSlot0CallProto(VOICE_CALL_SESSION__BEARER_AT_END__CALL_BEARER_IMS, VOICE_CALL_SESSION__DIRECTION__CALL_DIRECTION_MT, TelephonyManager.NETWORK_TYPE_LTE, ImsReasonInfo.CODE_USER_TERMINATED);
    expectedCall.setupDuration = VOICE_CALL_SESSION__SETUP_DURATION__CALL_SETUP_DURATION_ULTRA_FAST;
    expectedCall.setupFailed = false;
    expectedCall.codecBitmask = 1L << AudioCodec.AUDIO_CODEC_AMR;
    RawVoiceCallRatUsage expectedRatUsage = makeRatUsageProto(CARRIER_ID_SLOT_0, TelephonyManager.NETWORK_TYPE_LTE, 2000L, 12000L, 1L);
    final AtomicReference<RawVoiceCallRatUsage[]> ratUsage = setupRatUsageCapture();
    mVoiceCallSessionStats0.setTimeMillis(2000L);
    doReturn(Call.State.INCOMING).when(mImsCall0).getState();
    doReturn(Call.State.INCOMING).when(mImsConnection0).getState();
    mVoiceCallSessionStats0.onImsCallReceived(mImsConnection0);
    mVoiceCallSessionStats0.setTimeMillis(2100L);
    mVoiceCallSessionStats0.onAudioCodecChanged(mImsConnection0, ImsStreamMediaProfile.AUDIO_QUALITY_AMR);
    mVoiceCallSessionStats0.setTimeMillis(2200L);
    mVoiceCallSessionStats0.onImsAcceptCall(List.of(mImsConnection0));
    mVoiceCallSessionStats0.setTimeMillis(2280L);
    doReturn(Call.State.ACTIVE).when(mImsCall0).getState();
    doReturn(Call.State.ACTIVE).when(mImsConnection0).getState();
    mVoiceCallSessionStats0.onCallStateChanged(mImsCall0);
    mVoiceCallSessionStats0.setTimeMillis(12000L);
    mVoiceCallSessionStats0.onImsCallTerminated(mImsConnection0, new ImsReasonInfo(ImsReasonInfo.CODE_USER_TERMINATED, 0));
    ArgumentCaptor<VoiceCallSession> callCaptor = ArgumentCaptor.forClass(VoiceCallSession.class);
    verify(mPersistAtomsStorage, times(1)).addVoiceCallSession(callCaptor.capture());
    verify(mPersistAtomsStorage, times(1)).addVoiceCallRatUsage(any());
    verifyNoMoreInteractions(mPersistAtomsStorage);
    assertProtoEquals(expectedCall, callCaptor.getValue());
    assertThat(ratUsage.get()).hasLength(1);
    assertProtoEquals(expectedRatUsage, ratUsage.get()[0]);
}
Also used : VoiceCallSession(com.android.internal.telephony.nano.PersistAtomsProto.VoiceCallSession) ArrayList(java.util.ArrayList) RawVoiceCallRatUsage(com.android.internal.telephony.nano.PersistAtomsProto.RawVoiceCallRatUsage) ImsReasonInfo(android.telephony.ims.ImsReasonInfo) TelephonyTest(com.android.internal.telephony.TelephonyTest) SmallTest(android.test.suitebuilder.annotation.SmallTest) Test(org.junit.Test) SmallTest(android.test.suitebuilder.annotation.SmallTest)

Example 4 with ImsReasonInfo

use of android.telephony.ims.ImsReasonInfo in project android_frameworks_opt_telephony by LineageOS.

the class VoiceCallSessionStatsTest method singleImsCall_roaming.

@Test
@SmallTest
public void singleImsCall_roaming() {
    doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getVoiceNetworkType();
    doReturn(true).when(mServiceState).getVoiceRoaming();
    doReturn(true).when(mImsConnection0).isIncoming();
    doReturn(2000L).when(mImsConnection0).getCreateTime();
    doReturn(mImsCall0).when(mImsConnection0).getCall();
    doReturn(new ArrayList(List.of(mImsConnection0))).when(mImsCall0).getConnections();
    VoiceCallSession expectedCall = makeSlot0CallProto(VOICE_CALL_SESSION__BEARER_AT_END__CALL_BEARER_IMS, VOICE_CALL_SESSION__DIRECTION__CALL_DIRECTION_MT, TelephonyManager.NETWORK_TYPE_LTE, ImsReasonInfo.CODE_LOCAL_CALL_DECLINE);
    expectedCall.setupFailed = true;
    expectedCall.codecBitmask = 1L << AudioCodec.AUDIO_CODEC_AMR;
    expectedCall.isRoaming = true;
    mVoiceCallSessionStats0.setTimeMillis(2000L);
    doReturn(Call.State.INCOMING).when(mImsCall0).getState();
    doReturn(Call.State.INCOMING).when(mImsConnection0).getState();
    mVoiceCallSessionStats0.onImsCallReceived(mImsConnection0);
    mVoiceCallSessionStats0.setTimeMillis(2100L);
    mVoiceCallSessionStats0.onAudioCodecChanged(mImsConnection0, ImsStreamMediaProfile.AUDIO_QUALITY_AMR);
    mVoiceCallSessionStats0.setTimeMillis(8000L);
    mVoiceCallSessionStats0.onImsCallTerminated(mImsConnection0, new ImsReasonInfo(ImsReasonInfo.CODE_LOCAL_CALL_DECLINE, 0));
    ArgumentCaptor<VoiceCallSession> callCaptor = ArgumentCaptor.forClass(VoiceCallSession.class);
    verify(mPersistAtomsStorage, times(1)).addVoiceCallSession(callCaptor.capture());
    verify(mPersistAtomsStorage, times(1)).addVoiceCallRatUsage(any());
    verifyNoMoreInteractions(mPersistAtomsStorage);
    assertProtoEquals(expectedCall, callCaptor.getValue());
}
Also used : VoiceCallSession(com.android.internal.telephony.nano.PersistAtomsProto.VoiceCallSession) ArrayList(java.util.ArrayList) ImsReasonInfo(android.telephony.ims.ImsReasonInfo) TelephonyTest(com.android.internal.telephony.TelephonyTest) SmallTest(android.test.suitebuilder.annotation.SmallTest) Test(org.junit.Test) SmallTest(android.test.suitebuilder.annotation.SmallTest)

Example 5 with ImsReasonInfo

use of android.telephony.ims.ImsReasonInfo in project android_frameworks_opt_telephony by LineageOS.

the class VoiceCallSessionStatsTest method singleCall_srvccFailed.

@Test
@SmallTest
public void singleCall_srvccFailed() {
    doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getVoiceNetworkType();
    doReturn(true).when(mImsConnection0).isIncoming();
    doReturn(2000L).when(mImsConnection0).getCreateTime();
    doReturn(mImsCall0).when(mImsConnection0).getCall();
    doReturn(new ArrayList(List.of(mImsConnection0))).when(mImsCall0).getConnections();
    doReturn(mImsPhone).when(mPhone).getImsPhone();
    doReturn(new ArrayList(List.of(mImsConnection0))).when(mImsPhone).getHandoverConnection();
    VoiceCallSession expectedCall = makeSlot0CallProto(VOICE_CALL_SESSION__BEARER_AT_END__CALL_BEARER_IMS, VOICE_CALL_SESSION__DIRECTION__CALL_DIRECTION_MT, TelephonyManager.NETWORK_TYPE_LTE, ImsReasonInfo.CODE_LOCAL_HO_NOT_FEASIBLE);
    expectedCall.setupDuration = VOICE_CALL_SESSION__SETUP_DURATION__CALL_SETUP_DURATION_ULTRA_FAST;
    expectedCall.setupFailed = false;
    expectedCall.srvccFailureCount = 2L;
    expectedCall.ratSwitchCount = 1L;
    expectedCall.ratAtEnd = TelephonyManager.NETWORK_TYPE_UMTS;
    expectedCall.codecBitmask = 1L << AudioCodec.AUDIO_CODEC_AMR;
    RawVoiceCallRatUsage expectedRatUsageLte = makeRatUsageProto(CARRIER_ID_SLOT_0, TelephonyManager.NETWORK_TYPE_LTE, 2000L, 10000L, 1L);
    RawVoiceCallRatUsage expectedRatUsageUmts = makeRatUsageProto(CARRIER_ID_SLOT_0, TelephonyManager.NETWORK_TYPE_UMTS, 10000L, 12000L, 1L);
    final AtomicReference<RawVoiceCallRatUsage[]> ratUsage = setupRatUsageCapture();
    mVoiceCallSessionStats0.setTimeMillis(2000L);
    doReturn(Call.State.INCOMING).when(mImsCall0).getState();
    doReturn(Call.State.INCOMING).when(mImsConnection0).getState();
    mVoiceCallSessionStats0.onImsCallReceived(mImsConnection0);
    mVoiceCallSessionStats0.setTimeMillis(2100L);
    mVoiceCallSessionStats0.onAudioCodecChanged(mImsConnection0, ImsStreamMediaProfile.AUDIO_QUALITY_AMR);
    mVoiceCallSessionStats0.setTimeMillis(2200L);
    mVoiceCallSessionStats0.onImsAcceptCall(List.of(mImsConnection0));
    mVoiceCallSessionStats0.setTimeMillis(2280L);
    doReturn(Call.State.ACTIVE).when(mImsCall0).getState();
    doReturn(Call.State.ACTIVE).when(mImsConnection0).getState();
    mVoiceCallSessionStats0.onCallStateChanged(mImsCall0);
    mVoiceCallSessionStats0.setTimeMillis(9000L);
    mVoiceCallSessionStats0.onRilSrvccStateChanged(TelephonyManager.SRVCC_STATE_HANDOVER_STARTED);
    mVoiceCallSessionStats0.setTimeMillis(10000L);
    doReturn(TelephonyManager.NETWORK_TYPE_UMTS).when(mServiceState).getVoiceNetworkType();
    mVoiceCallSessionStats0.onServiceStateChanged(mServiceState);
    mVoiceCallSessionStats0.setTimeMillis(11000L);
    mVoiceCallSessionStats0.onRilSrvccStateChanged(TelephonyManager.SRVCC_STATE_HANDOVER_FAILED);
    mVoiceCallSessionStats0.setTimeMillis(11100L);
    mVoiceCallSessionStats0.onRilSrvccStateChanged(TelephonyManager.SRVCC_STATE_HANDOVER_STARTED);
    mVoiceCallSessionStats0.setTimeMillis(11500L);
    mVoiceCallSessionStats0.onRilSrvccStateChanged(TelephonyManager.SRVCC_STATE_HANDOVER_FAILED);
    mVoiceCallSessionStats0.setTimeMillis(12000L);
    mVoiceCallSessionStats0.onImsCallTerminated(mImsConnection0, new ImsReasonInfo(ImsReasonInfo.CODE_LOCAL_HO_NOT_FEASIBLE, 0));
    ArgumentCaptor<VoiceCallSession> callCaptor = ArgumentCaptor.forClass(VoiceCallSession.class);
    verify(mPersistAtomsStorage, times(1)).addVoiceCallSession(callCaptor.capture());
    verify(mPersistAtomsStorage, times(1)).addVoiceCallRatUsage(any());
    verifyNoMoreInteractions(mPersistAtomsStorage);
    assertProtoEquals(expectedCall, callCaptor.getValue());
    assertSortedProtoArrayEquals(new RawVoiceCallRatUsage[] { expectedRatUsageLte, expectedRatUsageUmts }, ratUsage.get());
}
Also used : VoiceCallSession(com.android.internal.telephony.nano.PersistAtomsProto.VoiceCallSession) ArrayList(java.util.ArrayList) RawVoiceCallRatUsage(com.android.internal.telephony.nano.PersistAtomsProto.RawVoiceCallRatUsage) ImsReasonInfo(android.telephony.ims.ImsReasonInfo) TelephonyTest(com.android.internal.telephony.TelephonyTest) SmallTest(android.test.suitebuilder.annotation.SmallTest) Test(org.junit.Test) SmallTest(android.test.suitebuilder.annotation.SmallTest)

Aggregations

ImsReasonInfo (android.telephony.ims.ImsReasonInfo)31 Test (org.junit.Test)26 SmallTest (android.test.suitebuilder.annotation.SmallTest)25 TelephonyTest (com.android.internal.telephony.TelephonyTest)25 VoiceCallSession (com.android.internal.telephony.nano.PersistAtomsProto.VoiceCallSession)21 ArrayList (java.util.ArrayList)21 RawVoiceCallRatUsage (com.android.internal.telephony.nano.PersistAtomsProto.RawVoiceCallRatUsage)13 FlakyTest (androidx.test.filters.FlakyTest)3 ImsCall (com.android.ims.ImsCall)3 BroadcastReceiver (android.content.BroadcastReceiver)1 Intent (android.content.Intent)1 NetworkCapabilities (android.net.NetworkCapabilities)1 AsyncResult (android.os.AsyncResult)1 Bundle (android.os.Bundle)1 Handler (android.os.Handler)1 PersistableBundle (android.os.PersistableBundle)1 ImsCallProfile (android.telephony.ims.ImsCallProfile)1 RegistrationCallback (android.telephony.ims.ImsMmTelManager.RegistrationCallback)1 RegistrationCallback (android.telephony.ims.RegistrationManager.RegistrationCallback)1 ImsFeature (android.telephony.ims.feature.ImsFeature)1