Loading src/java/com/android/internal/telephony/dataconnection/DcFailCause.java +9 −5 Original line number Original line Diff line number Diff line Loading @@ -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); } } } } Loading tests/telephonytests/src/com/android/internal/telephony/dataconnection/DcFailCauseTest.java +45 −5 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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(); } } Loading Loading @@ -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())); } } } Loading
src/java/com/android/internal/telephony/dataconnection/DcFailCause.java +9 −5 Original line number Original line Diff line number Diff line Loading @@ -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); } } } } Loading
tests/telephonytests/src/com/android/internal/telephony/dataconnection/DcFailCauseTest.java +45 −5 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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(); } } Loading Loading @@ -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())); } } }