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

Commit a181ab10 authored by Youming Ye's avatar Youming Ye Committed by android-build-merger
Browse files

Merge "Fix the walk around for ATT re-provisioning." am: c04d548e am: ab7d97bf

am: 12927056

Change-Id: Iadd286a2a718a49e537ec920b0b39339f9a18e86
parents c6e42300 12927056
Loading
Loading
Loading
Loading
+9 −5
Original line number Original line Diff line number Diff line
@@ -157,17 +157,21 @@ public enum DcFailCause {
                context.getSystemService(Context.CARRIER_CONFIG_SERVICE);
                context.getSystemService(Context.CARRIER_CONFIG_SERVICE);
        if (configManager != null) {
        if (configManager != null) {
            PersistableBundle b = configManager.getConfigForSubId(subId);
            PersistableBundle b = configManager.getConfigForSubId(subId);

            if (b != null) {
            if (b != null) {
                if (this == REGULAR_DEACTIVATION
                        && b.getBoolean(CarrierConfigManager
                        .KEY_RESTART_RADIO_ON_PDP_FAIL_REGULAR_DEACTIVATION_BOOL)) {
                    // This is for backward compatibility support. We need to continue support this
                    // old configuration until it gets removed in the future.
                    return true;
                }
                // Check the current configurations.
                int[] causeCodes = b.getIntArray(CarrierConfigManager
                int[] causeCodes = b.getIntArray(CarrierConfigManager
                        .KEY_RADIO_RESTART_FAILURE_CAUSES_INT_ARRAY);
                        .KEY_RADIO_RESTART_FAILURE_CAUSES_INT_ARRAY);
                if (causeCodes != null) {
                if (causeCodes != null) {
                    return Arrays.stream(causeCodes).anyMatch(i -> i == getErrorCode());
                    return Arrays.stream(causeCodes).anyMatch(i -> i == getErrorCode());
                }
                }

                // This is for backward compatibility support. We need to continue support this old
                // configuration until it gets removed in the future.
                return b.getBoolean(CarrierConfigManager
                        .KEY_RESTART_RADIO_ON_PDP_FAIL_REGULAR_DEACTIVATION_BOOL);
            }
            }
        }
        }


+45 −5
Original line number Original line Diff line number Diff line
@@ -16,6 +16,13 @@


package com.android.internal.telephony.dataconnection;
package com.android.internal.telephony.dataconnection;


import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;

import static org.mockito.Mockito.doReturn;

import android.content.Context;
import android.os.PersistableBundle;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
import android.telephony.CarrierConfigManager;
import android.test.suitebuilder.annotation.SmallTest;
import android.test.suitebuilder.annotation.SmallTest;
@@ -27,14 +34,12 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.Test;


import java.util.ArrayList;
import java.util.ArrayList;

import java.util.Random;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import static org.mockito.Mockito.doReturn;


public class DcFailCauseTest extends TelephonyTest {
public class DcFailCauseTest extends TelephonyTest {


    private PersistableBundle mPersistableBundle;

    private class DcFailCauseData {
    private class DcFailCauseData {
        public final int mCause;
        public final int mCause;
        public final boolean mPermanentFailure;
        public final boolean mPermanentFailure;
@@ -135,10 +140,20 @@ public class DcFailCauseTest extends TelephonyTest {
        mFailCauseDataList.add(new DcFailCauseData(0x10003, false, false));
        mFailCauseDataList.add(new DcFailCauseData(0x10003, false, false));
        mFailCauseDataList.add(new DcFailCauseData(0x10004, false, false));
        mFailCauseDataList.add(new DcFailCauseData(0x10004, false, false));
        mFailCauseDataList.add(new DcFailCauseData(0x10005, false, false));
        mFailCauseDataList.add(new DcFailCauseData(0x10005, false, false));

        CarrierConfigManager configManager = (CarrierConfigManager)
                mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE);
        mPersistableBundle = configManager.getConfigForSubId(mPhone.getSubId());
        mPersistableBundle.putBoolean(CarrierConfigManager
                .KEY_RESTART_RADIO_ON_PDP_FAIL_REGULAR_DEACTIVATION_BOOL, false);
        mPersistableBundle.putIntArray(CarrierConfigManager
                .KEY_RADIO_RESTART_FAILURE_CAUSES_INT_ARRAY, new int[0]);
        logd(getClass().getSimpleName() + " -Setup!");
    }
    }


    @After
    @After
    public void tearDown() throws Exception {
    public void tearDown() throws Exception {
        mPersistableBundle = null;
        super.tearDown();
        super.tearDown();
    }
    }


@@ -197,4 +212,29 @@ public class DcFailCauseTest extends TelephonyTest {
        assertEquals(DcFailCause.UNKNOWN.getErrorCode(),
        assertEquals(DcFailCause.UNKNOWN.getErrorCode(),
                DcFailCause.fromInt(123456).getErrorCode());
                DcFailCause.fromInt(123456).getErrorCode());
    }
    }

    @Test
    public void testIsRadioRestartFailureRegularDeactivation() {
        assertFalse(DcFailCause.fromInt(DcFailCause.REGULAR_DEACTIVATION.getErrorCode())
                .isRadioRestartFailure(mContext, mPhone.getSubId()));
        mPersistableBundle.putBoolean(CarrierConfigManager
                .KEY_RESTART_RADIO_ON_PDP_FAIL_REGULAR_DEACTIVATION_BOOL, true);
        assertTrue(DcFailCause.fromInt(DcFailCause.REGULAR_DEACTIVATION.getErrorCode())
                .isRadioRestartFailure(mContext, mPhone.getSubId()));
    }

    @Test
    public void testIsRadioRestartFailureNotRegularDeactivation() {
        DcFailCause randomCause = DcFailCause.fromInt(mFailCauseDataList
                .get(new Random().nextInt(mFailCauseDataList.size())).mCause);
        while (randomCause == DcFailCause.REGULAR_DEACTIVATION) {
            randomCause = DcFailCause.fromInt(mFailCauseDataList
                    .get(new Random().nextInt(mFailCauseDataList.size())).mCause);
        }
        assertFalse(randomCause.isRadioRestartFailure(mContext, mPhone.getSubId()));
        int [] matchingErrorCodes = {randomCause.getErrorCode()};
        mPersistableBundle.putIntArray(CarrierConfigManager
                .KEY_RADIO_RESTART_FAILURE_CAUSES_INT_ARRAY, matchingErrorCodes);
        assertTrue(randomCause.isRadioRestartFailure(mContext, mPhone.getSubId()));
    }
}
}