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

Commit daa525ee authored by Hunsuk Choi's avatar Hunsuk Choi
Browse files

Make methods common for children of DomainSelectionConnection

Move methods from NormalCallDomainSelectionConneciton
to DomainSelectionConnection

Bug: 330745812
Test: atest DomainSelectionConnectionTest
Change-Id: I80ce8a7d5037dd53b042988467964ecc3406aca1
parent 87ae3a5d
Loading
Loading
Loading
Loading
+51 −0
Original line number Diff line number Diff line
@@ -35,7 +35,9 @@ import android.telephony.DomainSelectionService.EmergencyScanType;
import android.telephony.DomainSelector;
import android.telephony.EmergencyRegistrationResult;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.PreciseDisconnectCause;
import android.telephony.data.ApnSetting;
import android.telephony.ims.ImsReasonInfo;
import android.util.LocalLog;
import android.util.Log;

@@ -351,6 +353,10 @@ public class DomainSelectionConnection {

    private boolean mIsTestMode = false;

    private int mDisconnectCause = DisconnectCause.NOT_VALID;
    private int mPreciseDisconnectCause = PreciseDisconnectCause.NOT_VALID;
    private String mReasonMessage = null;

    /**
     * Creates an instance.
     *
@@ -788,6 +794,51 @@ public class DomainSelectionConnection {
        mIsTestMode = testMode;
    }

    /**
     * Save call disconnect info for error propagation.
     * @param disconnectCause The code for the reason for the disconnect.
     * @param preciseDisconnectCause The code for the precise reason for the disconnect.
     * @param reasonMessage Description of the reason for the disconnect, not intended for the user
     *                      to see.
     */
    public void setDisconnectCause(int disconnectCause, int preciseDisconnectCause,
                                String reasonMessage) {
        mDisconnectCause = disconnectCause;
        mPreciseDisconnectCause = preciseDisconnectCause;
        mReasonMessage = reasonMessage;
    }

    public int getDisconnectCause() {
        return mDisconnectCause;
    }

    public int getPreciseDisconnectCause() {
        return mPreciseDisconnectCause;
    }

    public String getReasonMessage() {
        return mReasonMessage;
    }

    /**
     * @return imsReasonInfo Reason for the IMS call failure.
     */
    public @Nullable ImsReasonInfo getImsReasonInfo() {
        if (getSelectionAttributes() == null) {
            // Neither selectDomain(...) nor reselectDomain(...) has been called yet.
            return null;
        }

        return getSelectionAttributes().getPsDisconnectCause();
    }

    /**
     * @return phoneId To support localized message based on phoneId
     */
    public int getPhoneId() {
        return getPhone().getPhoneId();
    }

    /**
     * Dumps local log.
     */
+0 −50
Original line number Diff line number Diff line
@@ -24,11 +24,9 @@ import android.net.Uri;
import android.telecom.PhoneAccount;
import android.telephony.AccessNetworkConstants.RadioAccessNetworkType;
import android.telephony.Annotation.DisconnectCauses;
import android.telephony.DisconnectCause;
import android.telephony.DomainSelectionService;
import android.telephony.DomainSelectionService.EmergencyScanType;
import android.telephony.NetworkRegistrationInfo;
import android.telephony.PreciseDisconnectCause;
import android.telephony.ims.ImsReasonInfo;

import com.android.internal.telephony.Phone;
@@ -41,9 +39,6 @@ import java.util.concurrent.CompletableFuture;
public class NormalCallDomainSelectionConnection extends DomainSelectionConnection {

    private static final boolean DBG = false;
    private int mDisconnectCause = DisconnectCause.NOT_VALID;
    private int mPreciseDisconnectCause = PreciseDisconnectCause.NOT_VALID;
    private String mReasonMessage = null;

    private @Nullable DomainSelectionConnectionCallback mCallback;

@@ -130,49 +125,4 @@ public class NormalCallDomainSelectionConnection extends DomainSelectionConnecti
        }
        return builder.build();
    }

    /**
     * Save call disconnect info for error propagation.
     * @param disconnectCause The code for the reason for the disconnect.
     * @param preciseDisconnectCause The code for the precise reason for the disconnect.
     * @param reasonMessage Description of the reason for the disconnect, not intended for the user
     *                      to see.
     */
    public void setDisconnectCause(int disconnectCause, int preciseDisconnectCause,
                                String reasonMessage) {
        mDisconnectCause = disconnectCause;
        mPreciseDisconnectCause = preciseDisconnectCause;
        mReasonMessage = reasonMessage;
    }

    public int getDisconnectCause() {
        return mDisconnectCause;
    }

    public int getPreciseDisconnectCause() {
        return mPreciseDisconnectCause;
    }

    public String getReasonMessage() {
        return mReasonMessage;
    }

    /**
     * @return imsReasonInfo Reason for the IMS call failure.
     */
    public @Nullable ImsReasonInfo getImsReasonInfo() {
        if (getSelectionAttributes() == null) {
            // Neither selectDomain(...) nor reselectDomain(...) has been called yet.
            return null;
        }

        return getSelectionAttributes().getPsDisconnectCause();
    }

    /**
     * @return phoneId To support localized message based on phoneId
     */
    public int getPhoneId() {
        return getPhone().getPhoneId();
    }
}
+23 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static android.telephony.DomainSelectionService.SELECTOR_TYPE_CALLING;

import static com.google.common.truth.Truth.assertThat;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -42,8 +43,10 @@ import android.os.RemoteException;
import android.telecom.PhoneAccount;
import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants.AccessNetworkType;
import android.telephony.DisconnectCause;
import android.telephony.DomainSelectionService;
import android.telephony.EmergencyRegistrationResult;
import android.telephony.PreciseDisconnectCause;
import android.telephony.data.ApnSetting;
import android.telephony.ims.ImsReasonInfo;
import android.testing.AndroidTestingRunner;
@@ -773,6 +776,26 @@ public class DomainSelectionConnectionTest extends TelephonyTest {
        verify(mDomainSelectionController, times(1)).selectDomain(any(), eq(transportCallback));
    }

    @Test
    @SmallTest
    public void testSetDisconnectCause() throws Exception {
        mDsc = createConnection(mPhone, SELECTOR_TYPE_CALLING, true,
                mDomainSelectionController);

        assertEquals(DisconnectCause.NOT_VALID, mDsc.getDisconnectCause());
        assertEquals(PreciseDisconnectCause.NOT_VALID, mDsc.getPreciseDisconnectCause());
        assertEquals(mPhone.getPhoneId(), mDsc.getPhoneId());

        String reason = "No SIM or SIM error";
        mDsc.setDisconnectCause(DisconnectCause.ICC_ERROR,
                PreciseDisconnectCause.NO_VALID_SIM, reason);

        assertEquals(DisconnectCause.ICC_ERROR, mDsc.getDisconnectCause());
        assertEquals(PreciseDisconnectCause.NO_VALID_SIM, mDsc.getPreciseDisconnectCause());
        assertEquals(reason, mDsc.getReasonMessage());
        assertEquals(mPhone.getPhoneId(), mDsc.getPhoneId());
    }

    private DomainSelectionConnection createConnection(Phone phone, int selectorType,
            boolean isEmergency, DomainSelectionController controller) throws Exception {
        DomainSelectionConnection dsc = new DomainSelectionConnection(phone,