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

Commit 42a34025 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 11012804 from cf934c17 to 24Q1-release

Change-Id: I94e7f93f3f53502de37982e6f90fddfb5dec2a5f
parents cb7f5927 cf934c17
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ import android.util.SparseArray;
import com.android.ims.internal.IImsCallSession;
import com.android.ims.internal.IImsServiceFeatureCallback;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.flags.Flags;
import com.android.internal.telephony.ITelephony;
import com.android.telephony.Rlog;

@@ -2450,6 +2451,15 @@ public class ImsManager implements FeatureUpdates {
            call.attachSession(new ImsCallSession(session));
            call.setListener(listener);

            if (Flags.ignoreAlreadyTerminatedIncomingCallBeforeRegisteringListener()){
                // If the call session already terminated before registering callback then the
                // framework should ignore incoming call.
                if (!ImsCall.isSessionAlive(call.getSession())) {
                    loge("takeCall : ImsCallSession is not alive");
                    throw new ImsException("takeCall() : ImsCallSession is not alive",
                            ImsReasonInfo.CODE_UNSPECIFIED);
                }
            }
            return call;
        } catch (Throwable t) {
            loge("takeCall caught: ", t);
+2 −0
Original line number Diff line number Diff line
@@ -37,6 +37,8 @@ android_test {
        "androidx.test.ext.junit",
        "androidx.test.rules",
        "mockito-target-minus-junit4",
        "telephony_flags_core_java_lib",
        "flag-junit",
    ],

    test_suites: [
+32 −2
Original line number Diff line number Diff line
@@ -23,11 +23,15 @@ import static android.telephony.ims.stub.ImsRegistrationImplBase.REGISTRATION_TE

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -38,11 +42,11 @@ import android.content.res.Resources;
import android.os.IBinder;
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.platform.test.flag.junit.SetFlagsRule;
import android.telephony.BinderCacheManager;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
import android.telephony.ims.ImsMmTelManager;
import android.telephony.ims.ImsRcsManager;
import android.telephony.ims.ProvisioningManager;
import android.telephony.ims.aidl.IImsConfig;
import android.telephony.ims.aidl.IImsRegistration;
@@ -56,20 +60,25 @@ import androidx.test.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import com.android.ims.internal.IImsCallSession;
import com.android.internal.os.SomeArgs;
import com.android.internal.telephony.ITelephony;
import com.android.internal.telephony.flags.Flags;

import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;

import java.util.Hashtable;
import java.util.concurrent.Executor;

@RunWith(AndroidJUnit4.class)
public class ImsManagerTest extends ImsTestBase {
    @Rule
    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    private static final boolean ENHANCED_4G_MODE_DEFAULT_VAL = true;
    private static final boolean ENHANCED_4G_MODE_EDITABLE = true;
    private static final boolean WFC_IMS_ENABLE_DEFAULT_VAL = false;
@@ -131,6 +140,8 @@ public class ImsManagerTest extends ImsTestBase {
        InstrumentationRegistry.getInstrumentation().getUiAutomation()
                .adoptShellPermissionIdentity(
                        "android.permission.READ_PRIVILEGED_PHONE_STATE");

        mSetFlagsRule.initAllFlagsToReleaseConfigDefault();
    }

    @After
@@ -1020,6 +1031,25 @@ public class ImsManagerTest extends ImsTestBase {
        verify(mMmTelFeatureConnection).onMemoryAvailable(eq(token));
    }

    @Test @SmallTest
    public void testTakeCall_incomingSessionTerminatedBeforeRegisterListener()
            throws RemoteException {
        mSetFlagsRule.enableFlags(
                Flags.FLAG_IGNORE_ALREADY_TERMINATED_INCOMING_CALL_BEFORE_REGISTERING_LISTENER);

        IImsCallSession mockSession = mock(IImsCallSession.class);
        doThrow(RemoteException.class).when(mockSession).setListener(any());
        ImsCall.Listener mockListener = mock(ImsCall.Listener.class);

        ImsManager imsManager = getImsManagerAndInitProvisionedValues();
        try {
            imsManager.takeCall(mockSession, mockListener);
            fail("expect ImsException");
        } catch (ImsException e) {
            // expected result
        }
    }

    private ImsManager getImsManagerAndInitProvisionedValues() {
        when(mImsConfigImplBaseMock.getConfigInt(anyInt()))
                .thenAnswer(invocation ->  {