Merge "Disable Wi-Fi calling roaming preferrence while using NTN." into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
abf2a6ae52
@@ -27,6 +27,7 @@ import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.os.PersistableBundle;
|
||||
import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.ServiceState;
|
||||
import android.telephony.SubscriptionManager;
|
||||
import android.telephony.TelephonyCallback;
|
||||
import android.telephony.TelephonyManager;
|
||||
@@ -49,6 +50,7 @@ import androidx.preference.PreferenceScreen;
|
||||
import com.android.ims.ImsConfig;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.telephony.Phone;
|
||||
import com.android.internal.telephony.flags.Flags;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.SettingsPreferenceFragment;
|
||||
@@ -97,6 +99,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
||||
private boolean mEditableWfcMode = true;
|
||||
private boolean mEditableWfcRoamingMode = true;
|
||||
private boolean mUseWfcHomeModeForRoaming = false;
|
||||
private boolean mOverrideWfcRoamingModeWhileUsingNtn = false;
|
||||
|
||||
private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||
private ImsMmTelManager mImsMmTelManager;
|
||||
@@ -166,7 +169,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
||||
final Preference pref_roam =
|
||||
getPreferenceScreen().findPreference(BUTTON_WFC_ROAMING_MODE);
|
||||
if (pref_roam != null) {
|
||||
pref_roam.setEnabled(isWfcRoamingModeEditable);
|
||||
pref_roam.setEnabled(isWfcRoamingModeEditable
|
||||
&& !overrideWfcRoamingModeWhileUsingNtn());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -361,6 +365,9 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
||||
false);
|
||||
isWifiOnlySupported = b.getBoolean(
|
||||
CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, true);
|
||||
mOverrideWfcRoamingModeWhileUsingNtn = b.getBoolean(
|
||||
CarrierConfigManager.KEY_OVERRIDE_WFC_ROAMING_MODE_WHILE_USING_NTN_BOOL,
|
||||
true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -577,7 +584,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
||||
mButtonWfcMode.setSummary(getWfcModeSummary(wfcMode));
|
||||
mButtonWfcMode.setEnabled(wfcEnabled && mEditableWfcMode);
|
||||
// mButtonWfcRoamingMode.setSummary is not needed; summary is just selected value.
|
||||
mButtonWfcRoamingMode.setEnabled(wfcEnabled && mEditableWfcRoamingMode);
|
||||
mButtonWfcRoamingMode.setEnabled(wfcEnabled && mEditableWfcRoamingMode
|
||||
&& !overrideWfcRoamingModeWhileUsingNtn());
|
||||
|
||||
final PreferenceScreen preferenceScreen = getPreferenceScreen();
|
||||
final boolean updateAddressEnabled = (getCarrierActivityIntent() != null);
|
||||
@@ -711,4 +719,30 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
||||
}
|
||||
mProvisioningManager.unregisterProvisioningChangedCallback(mProvisioningCallback);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether to override roaming Wi-Fi calling preference when device is connected to
|
||||
* non-terrestrial network.
|
||||
*
|
||||
* @return {@code true} if phone is connected to non-terrestrial network and if
|
||||
* {@link CarrierConfigManager#KEY_OVERRIDE_WFC_ROAMING_MODE_WHILE_USING_NTN_BOOL} is true,
|
||||
* {@code false} otherwise.
|
||||
*/
|
||||
private boolean overrideWfcRoamingModeWhileUsingNtn() {
|
||||
if (!Flags.carrierEnabledSatelliteFlag()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
TelephonyManager tm = getTelephonyManagerForSub(mSubId);
|
||||
ServiceState serviceState = tm.getServiceState();
|
||||
if (serviceState == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!serviceState.isUsingNonTerrestrialNetwork()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return mOverrideWfcRoamingModeWhileUsingNtn;
|
||||
}
|
||||
}
|
||||
|
@@ -40,7 +40,10 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.PersistableBundle;
|
||||
import android.platform.test.flag.junit.SetFlagsRule;
|
||||
import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.NetworkRegistrationInfo;
|
||||
import android.telephony.ServiceState;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.telephony.ims.ImsMmTelManager;
|
||||
import android.view.View;
|
||||
@@ -48,6 +51,7 @@ import android.view.View;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.internal.telephony.flags.Flags;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsActivity;
|
||||
import com.android.settings.network.ims.MockWifiCallingQueryImsState;
|
||||
@@ -57,6 +61,7 @@ import com.android.settings.widget.SettingsMainSwitchBar;
|
||||
import com.android.settings.widget.SettingsMainSwitchPreference;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
@@ -70,6 +75,7 @@ import org.robolectric.util.ReflectionHelpers;
|
||||
@Config(shadows = ShadowFragment.class)
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class WifiCallingSettingsForSubTest {
|
||||
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
|
||||
private static final int SUB_ID = 2;
|
||||
|
||||
private static final String SWITCH_BAR = "wifi_calling_switch_bar";
|
||||
@@ -158,6 +164,7 @@ public class WifiCallingSettingsForSubTest {
|
||||
mFragment.onAttach(mContext);
|
||||
mFragment.onCreate(null);
|
||||
mFragment.onActivityCreated(null);
|
||||
mSetFlagsRule.disableFlags(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG);
|
||||
}
|
||||
|
||||
private void setDefaultCarrierConfigValues() {
|
||||
@@ -240,6 +247,31 @@ public class WifiCallingSettingsForSubTest {
|
||||
verify(mButtonWfcRoamingMode, times(1)).setVisible(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onResume_overrideWfcRoamingModeWhileUsingNTN_shouldDisableWfcRoaming() {
|
||||
mSetFlagsRule.enableFlags(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG);
|
||||
mBundle.putBoolean(
|
||||
CarrierConfigManager.KEY_USE_WFC_HOME_NETWORK_MODE_IN_ROAMING_NETWORK_BOOL, false);
|
||||
mBundle.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL, true);
|
||||
mBundle.putBoolean(
|
||||
CarrierConfigManager.KEY_OVERRIDE_WFC_ROAMING_MODE_WHILE_USING_NTN_BOOL, true);
|
||||
|
||||
// Phone connected to non-terrestrial network
|
||||
NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
|
||||
.setIsNonTerrestrialNetwork(true)
|
||||
.build();
|
||||
ServiceState ss = new ServiceState();
|
||||
ss.addNetworkRegistrationInfo(nri);
|
||||
doReturn(ss).when(mTelephonyManager).getServiceState();
|
||||
|
||||
// Call onResume to update the WFC roaming preference.
|
||||
mFragment.onResume();
|
||||
|
||||
// Check that WFC roaming preference is visible but disabled
|
||||
verify(mButtonWfcRoamingMode, times(1)).setEnabled(false);
|
||||
verify(mButtonWfcRoamingMode, times(1)).setVisible(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onResume_useWfcHomeModeConfigTrueAndNotEditable_shouldHideWfcRoaming() {
|
||||
mBundle.putBoolean(
|
||||
|
Reference in New Issue
Block a user