Add res config for roaming
Convert the flag to a bug fix flag. Also add a res config to controll it.
Fix: 287132491
Test: voice + data
Change-Id: Ie64e834b24cf6008a181dca7c3eb1f06fce6c76c
diff --git a/flags/data.aconfig b/flags/data.aconfig
index cad7da7..d0543a6 100644
--- a/flags/data.aconfig
+++ b/flags/data.aconfig
@@ -1,10 +1,13 @@
package: "com.android.internal.telephony.flags"
flag {
- name: "auto_switch_allow_roaming"
+ name: "auto_data_switch_allow_roaming"
namespace: "telephony"
description: "Allow using roaming network as target if user allows it from settings."
- bug: "306488039"
+ bug: "287132491"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
}
flag {
diff --git a/src/java/com/android/internal/telephony/data/AutoDataSwitchController.java b/src/java/com/android/internal/telephony/data/AutoDataSwitchController.java
index 02c459a..343bb0b 100644
--- a/src/java/com/android/internal/telephony/data/AutoDataSwitchController.java
+++ b/src/java/com/android/internal/telephony/data/AutoDataSwitchController.java
@@ -188,6 +188,12 @@
* even if ping test fails.
*/
private boolean mRequirePingTestBeforeSwitch = true;
+ /**
+ * TODO: remove after V.
+ * To indicate whether allow using roaming nDDS if user enabled its roaming when the DDS is not
+ * usable(OOS or disabled roaming)
+ */
+ private boolean mAllowNddsRoamning = true;
/** The count of consecutive auto switch validation failure **/
private int mAutoSwitchValidationFailedCount = 0;
/**
@@ -444,6 +450,7 @@
DataConfigManager dataConfig = phone.getDataNetworkController().getDataConfigManager();
mScoreTolerance = dataConfig.getAutoDataSwitchScoreTolerance();
mRequirePingTestBeforeSwitch = dataConfig.isPingTestBeforeAutoDataSwitchRequired();
+ mAllowNddsRoamning = dataConfig.doesAutoDataSwitchAllowRoaming();
mAutoDataSwitchAvailabilityStabilityTimeThreshold =
dataConfig.getAutoDataSwitchAvailabilityStabilityTimeThreshold();
mAutoDataSwitchPerformanceStabilityTimeThreshold =
@@ -694,7 +701,7 @@
boolean isForPerformance = false;
boolean needValidation = true;
- if (sFeatureFlags.autoSwitchAllowRoaming()) {
+ if (isNddsRoamingEnabled()) {
if (mDefaultNetworkIsOnNonCellular) {
debugMessage.append(", back to default as default network")
.append(" is active on nonCellular transport");
@@ -820,7 +827,7 @@
return invalidResult;
}
- if (sFeatureFlags.autoSwitchAllowRoaming()) {
+ if (isNddsRoamingEnabled()) {
// check whether primary and secondary signal status are worth switching
if (!isRatSignalStrengthBasedSwitchEnabled()
&& isHomeService(mPhonesSignalStatus[defaultPhoneId].mDataRegState)) {
@@ -842,7 +849,7 @@
Phone secondaryDataPhone = null;
PhoneSignalStatus candidatePhoneStatus = mPhonesSignalStatus[phoneId];
- if (sFeatureFlags.autoSwitchAllowRoaming()) {
+ if (isNddsRoamingEnabled()) {
PhoneSignalStatus.UsableState currentUsableState =
mPhonesSignalStatus[defaultPhoneId].getUsableState();
PhoneSignalStatus.UsableState candidateUsableState =
@@ -919,6 +926,13 @@
}
/**
+ * @return {@code true} If the feature of switching to roaming non DDS is enabled.
+ */
+ private boolean isNddsRoamingEnabled() {
+ return sFeatureFlags.autoDataSwitchAllowRoaming() && mAllowNddsRoamning;
+ }
+
+ /**
* Called when the current environment suits auto data switch.
* Start pre-switch validation if the current environment suits auto data switch for
* {@link #mAutoDataSwitchAvailabilityStabilityTimeThreshold} MS.
diff --git a/src/java/com/android/internal/telephony/data/DataConfigManager.java b/src/java/com/android/internal/telephony/data/DataConfigManager.java
index 90743f8..0e06dad 100644
--- a/src/java/com/android/internal/telephony/data/DataConfigManager.java
+++ b/src/java/com/android/internal/telephony/data/DataConfigManager.java
@@ -1051,6 +1051,15 @@
}
/**
+ * TODO: remove after V.
+ * @return To indicate whether allow using roaming nDDS if user enabled its roaming when the DDS
+ * is not usable(OOS or disabled roaming)
+ */
+ public boolean doesAutoDataSwitchAllowRoaming() {
+ return mResources.getBoolean(com.android.internal.R.bool.auto_data_switch_allow_roaming);
+ }
+
+ /**
* @return The maximum number of retries when a validation for switching failed.
*/
public int getAutoDataSwitchValidationMaxRetry() {
diff --git a/tests/telephonytests/src/com/android/internal/telephony/data/AutoDataSwitchControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/data/AutoDataSwitchControllerTest.java
index 50ee5c8..ddbe9c0 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/data/AutoDataSwitchControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/data/AutoDataSwitchControllerTest.java
@@ -156,6 +156,7 @@
// Change data config
doReturn(true).when(mDataConfigManager).isPingTestBeforeAutoDataSwitchRequired();
+ doReturn(true).when(mDataConfigManager).doesAutoDataSwitchAllowRoaming();
doReturn(10000L).when(mDataConfigManager)
.getAutoDataSwitchAvailabilityStabilityTimeThreshold();
doReturn(120000L).when(mDataConfigManager)
@@ -184,7 +185,7 @@
mEventsToAlarmListener = getPrivateField(mAutoDataSwitchControllerUT,
"mEventsToAlarmListener", Map.class);
- doReturn(true).when(mFeatureFlags).autoSwitchAllowRoaming();
+ doReturn(true).when(mFeatureFlags).autoDataSwitchAllowRoaming();
doReturn(true).when(mFeatureFlags).carrierEnabledSatelliteFlag();
}