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

Commit 5f8a2979 authored by Nathan Harold's avatar Nathan Harold Committed by Android (Google) Code Review
Browse files

Merge changes from topic "n1-mode-tweaks" into main

* changes:
  Don't send setN1Mode for partial CC
  Call setN1Mode via Phone rather than CommandsInterface
parents 0ed73477 35c9fdd2
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2461,6 +2461,8 @@ public class GsmCdmaPhone extends Phone {
    private void updateCarrierN1ModeSupported(@NonNull PersistableBundle b) {
        if (!mFeatureFlags.enableCarrierConfigN1Control()) return;

        if (!CarrierConfigManager.isConfigForIdentifiedCarrier(b)) return;

        final int[] supportedNrModes = b.getIntArray(
                CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY);

+1 −1
Original line number Diff line number Diff line
@@ -286,7 +286,7 @@ public class ImsNrSaModeHandler extends Handler{

    private void setNrSaMode(boolean onOrOff) {
        if (mIsNrSaSupported) {
            mPhone.getDefaultPhone().mCi.setN1ModeEnabled(onOrOff, null);
            mPhone.getDefaultPhone().setN1ModeEnabled(onOrOff, null);
            Log.i(TAG, "setNrSaMode : " + onOrOff);

            setNrSaDisabledForWfc(!onOrOff);
+42 −9
Original line number Diff line number Diff line
@@ -1510,6 +1510,44 @@ public class GsmCdmaPhoneTest extends TelephonyTest {
        assertEquals(captor.getValue().what, Phone.EVENT_GET_RADIO_CAPABILITY);
    }

    private void setIsCarrierConfigForIdentifiedCarrier(
            PersistableBundle carrierConfig, boolean isIdentified) {
        carrierConfig.putBoolean(
                CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL,
                isIdentified);
    }

    @Test
    public void testNrCapabilityChanged_firstRequest_incompleteCarrierConfig_changeNeeded() {
        when(mFeatureFlags.enableCarrierConfigN1Control()).thenReturn(true);

        mPhoneUT.mCi = mMockCi;
        PersistableBundle bundle = mContextFixture.getCarrierConfigBundle();
        bundle.putIntArray(CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY,
                new int[]{
                    CarrierConfigManager.CARRIER_NR_AVAILABILITY_NSA});

        mPhoneUT.sendMessage(mPhoneUT.obtainMessage(Phone.EVENT_CARRIER_CONFIG_CHANGED));
        processAllMessages();


        verify(mMockCi, never()).isN1ModeEnabled(any());
        verify(mMockCi, never()).setN1ModeEnabled(anyBoolean(), any());

        setIsCarrierConfigForIdentifiedCarrier(bundle, true);

        mPhoneUT.sendMessage(mPhoneUT.obtainMessage(Phone.EVENT_CARRIER_CONFIG_CHANGED));
        processAllMessages();

        ArgumentCaptor<Message> messageCaptor = ArgumentCaptor.forClass(Message.class);
        verify(mMockCi, times(1)).isN1ModeEnabled(messageCaptor.capture());
        AsyncResult.forMessage(messageCaptor.getValue(), Boolean.TRUE, null);
        messageCaptor.getValue().sendToTarget();
        processAllMessages();

        verify(mMockCi, times(1)).setN1ModeEnabled(eq(false), messageCaptor.capture());
    }

    @Test
    public void testNrCapabilityChanged_firstRequest_noChangeNeeded() {
        when(mFeatureFlags.enableCarrierConfigN1Control()).thenReturn(true);
@@ -1520,6 +1558,7 @@ public class GsmCdmaPhoneTest extends TelephonyTest {
                new int[]{
                    CarrierConfigManager.CARRIER_NR_AVAILABILITY_NSA,
                    CarrierConfigManager.CARRIER_NR_AVAILABILITY_SA});
        setIsCarrierConfigForIdentifiedCarrier(bundle, true);

        mPhoneUT.sendMessage(mPhoneUT.obtainMessage(Phone.EVENT_CARRIER_CONFIG_CHANGED));
        processAllMessages();
@@ -1543,6 +1582,7 @@ public class GsmCdmaPhoneTest extends TelephonyTest {
                new int[]{
                    CarrierConfigManager.CARRIER_NR_AVAILABILITY_NSA,
                    CarrierConfigManager.CARRIER_NR_AVAILABILITY_SA});
        setIsCarrierConfigForIdentifiedCarrier(bundle, true);

        mPhoneUT.sendMessage(mPhoneUT.obtainMessage(Phone.EVENT_CARRIER_CONFIG_CHANGED));
        processAllMessages();
@@ -1554,9 +1594,6 @@ public class GsmCdmaPhoneTest extends TelephonyTest {
        processAllMessages();

        verify(mMockCi, times(1)).setN1ModeEnabled(eq(true), messageCaptor.capture());
        AsyncResult.forMessage(messageCaptor.getValue(), Boolean.TRUE, null);
        messageCaptor.getValue().sendToTarget();
        processAllMessages();
    }

    @Test
@@ -1571,6 +1608,7 @@ public class GsmCdmaPhoneTest extends TelephonyTest {
        bundle.putIntArray(
                CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY,
                new int[]{CarrierConfigManager.CARRIER_NR_AVAILABILITY_NSA});
        setIsCarrierConfigForIdentifiedCarrier(bundle, true);

        mPhoneUT.sendMessage(mPhoneUT.obtainMessage(Phone.EVENT_CARRIER_CONFIG_CHANGED));
        processAllMessages();
@@ -1578,9 +1616,6 @@ public class GsmCdmaPhoneTest extends TelephonyTest {
        ArgumentCaptor<Message> messageCaptor = ArgumentCaptor.forClass(Message.class);
        verify(mMockCi, times(1)).isN1ModeEnabled(any()); // not called again
        verify(mMockCi, times(1)).setN1ModeEnabled(eq(false), messageCaptor.capture());
        AsyncResult.forMessage(messageCaptor.getValue(), null, null);
        messageCaptor.getValue().sendToTarget();
        processAllMessages();
    }

    @Test
@@ -1594,6 +1629,7 @@ public class GsmCdmaPhoneTest extends TelephonyTest {
                    new int[]{
                        CarrierConfigManager.CARRIER_NR_AVAILABILITY_NSA,
                        CarrierConfigManager.CARRIER_NR_AVAILABILITY_SA});
            setIsCarrierConfigForIdentifiedCarrier(bundle, true);

            mPhoneUT.sendMessage(mPhoneUT.obtainMessage(Phone.EVENT_CARRIER_CONFIG_CHANGED));
            processAllMessages();
@@ -1642,9 +1678,6 @@ public class GsmCdmaPhoneTest extends TelephonyTest {

        verify(mMockCi, times(1)).isN1ModeEnabled(any()); // not called again
        verify(mMockCi, times(1)).setN1ModeEnabled(eq(true), messageCaptor.capture());
        AsyncResult.forMessage(messageCaptor.getValue(), null, null);
        messageCaptor.getValue().sendToTarget();
        processAllMessages();
    }

    private void setupForWpsCallTest() throws Exception {
+12 −1
Original line number Diff line number Diff line
@@ -41,6 +41,9 @@ import android.testing.TestableLooper;
import android.util.ArraySet;

import com.android.internal.telephony.Call;
import com.android.internal.telephony.GsmCdmaPhone;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.TelephonyTest;

import org.junit.After;
@@ -66,6 +69,8 @@ public final class ImsNrSaModeHandlerTest extends TelephonyTest{
    private CarrierConfigManager.CarrierConfigChangeListener mCarrierConfigChangeListener;
    private Handler mPreciseCallStateHandler;

    private Phone mPassthroughPhone;

    @Mock private ImsPhoneCall mForegroundCall;
    @Mock private ImsPhoneCall mBackgroundCall;
    private Call.State mActiveState = ImsPhoneCall.State.ACTIVE;
@@ -90,7 +95,13 @@ public final class ImsNrSaModeHandlerTest extends TelephonyTest{
        doReturn(mAnyInt).when(mImsPhone).getSubId();
        doReturn(mContextFixture.getCarrierConfigBundle()).when(mCarrierConfigManager)
                .getConfigForSubId(anyInt(), any());
        doReturn(mPhone).when(mImsPhone).getDefaultPhone();

        mPassthroughPhone = new GsmCdmaPhone(
                mContext, mSimulatedCommands, mNotifier, true, 0,
                PhoneConstants.PHONE_TYPE_GSM, mTelephonyComponentFactory,
                (c, p) -> mImsManager, mFeatureFlags);

        doReturn(mPassthroughPhone).when(mImsPhone).getDefaultPhone();

        doReturn(mForegroundCall).when(mImsPhone).getForegroundCall();
        doReturn(mBackgroundCall).when(mImsPhone).getBackgroundCall();