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

Commit 21f0c7fc authored by Hunsuk Choi's avatar Hunsuk Choi Committed by Automerger Merge Worker
Browse files

Merge "Make methods common for children of DomainSelectionConnection" into 24D1-dev am: 55f9314b

parents 69b3aff1 55f9314b
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,