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.Bundle;
|
||||||
import android.os.PersistableBundle;
|
import android.os.PersistableBundle;
|
||||||
import android.telephony.CarrierConfigManager;
|
import android.telephony.CarrierConfigManager;
|
||||||
|
import android.telephony.ServiceState;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyCallback;
|
import android.telephony.TelephonyCallback;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
@@ -49,6 +50,7 @@ import androidx.preference.PreferenceScreen;
|
|||||||
import com.android.ims.ImsConfig;
|
import com.android.ims.ImsConfig;
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.internal.telephony.Phone;
|
import com.android.internal.telephony.Phone;
|
||||||
|
import com.android.internal.telephony.flags.Flags;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
@@ -97,6 +99,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
private boolean mEditableWfcMode = true;
|
private boolean mEditableWfcMode = true;
|
||||||
private boolean mEditableWfcRoamingMode = true;
|
private boolean mEditableWfcRoamingMode = true;
|
||||||
private boolean mUseWfcHomeModeForRoaming = false;
|
private boolean mUseWfcHomeModeForRoaming = false;
|
||||||
|
private boolean mOverrideWfcRoamingModeWhileUsingNtn = false;
|
||||||
|
|
||||||
private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
private ImsMmTelManager mImsMmTelManager;
|
private ImsMmTelManager mImsMmTelManager;
|
||||||
@@ -166,7 +169,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
final Preference pref_roam =
|
final Preference pref_roam =
|
||||||
getPreferenceScreen().findPreference(BUTTON_WFC_ROAMING_MODE);
|
getPreferenceScreen().findPreference(BUTTON_WFC_ROAMING_MODE);
|
||||||
if (pref_roam != null) {
|
if (pref_roam != null) {
|
||||||
pref_roam.setEnabled(isWfcRoamingModeEditable);
|
pref_roam.setEnabled(isWfcRoamingModeEditable
|
||||||
|
&& !overrideWfcRoamingModeWhileUsingNtn());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -361,6 +365,9 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
false);
|
false);
|
||||||
isWifiOnlySupported = b.getBoolean(
|
isWifiOnlySupported = b.getBoolean(
|
||||||
CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, true);
|
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.setSummary(getWfcModeSummary(wfcMode));
|
||||||
mButtonWfcMode.setEnabled(wfcEnabled && mEditableWfcMode);
|
mButtonWfcMode.setEnabled(wfcEnabled && mEditableWfcMode);
|
||||||
// mButtonWfcRoamingMode.setSummary is not needed; summary is just selected value.
|
// mButtonWfcRoamingMode.setSummary is not needed; summary is just selected value.
|
||||||
mButtonWfcRoamingMode.setEnabled(wfcEnabled && mEditableWfcRoamingMode);
|
mButtonWfcRoamingMode.setEnabled(wfcEnabled && mEditableWfcRoamingMode
|
||||||
|
&& !overrideWfcRoamingModeWhileUsingNtn());
|
||||||
|
|
||||||
final PreferenceScreen preferenceScreen = getPreferenceScreen();
|
final PreferenceScreen preferenceScreen = getPreferenceScreen();
|
||||||
final boolean updateAddressEnabled = (getCarrierActivityIntent() != null);
|
final boolean updateAddressEnabled = (getCarrierActivityIntent() != null);
|
||||||
@@ -711,4 +719,30 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
mProvisioningManager.unregisterProvisioningChangedCallback(mProvisioningCallback);
|
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.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.PersistableBundle;
|
import android.os.PersistableBundle;
|
||||||
|
import android.platform.test.flag.junit.SetFlagsRule;
|
||||||
import android.telephony.CarrierConfigManager;
|
import android.telephony.CarrierConfigManager;
|
||||||
|
import android.telephony.NetworkRegistrationInfo;
|
||||||
|
import android.telephony.ServiceState;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.telephony.ims.ImsMmTelManager;
|
import android.telephony.ims.ImsMmTelManager;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -48,6 +51,7 @@ import android.view.View;
|
|||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
|
import com.android.internal.telephony.flags.Flags;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.network.ims.MockWifiCallingQueryImsState;
|
import com.android.settings.network.ims.MockWifiCallingQueryImsState;
|
||||||
@@ -57,6 +61,7 @@ import com.android.settings.widget.SettingsMainSwitchBar;
|
|||||||
import com.android.settings.widget.SettingsMainSwitchPreference;
|
import com.android.settings.widget.SettingsMainSwitchPreference;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.ArgumentCaptor;
|
import org.mockito.ArgumentCaptor;
|
||||||
@@ -70,6 +75,7 @@ import org.robolectric.util.ReflectionHelpers;
|
|||||||
@Config(shadows = ShadowFragment.class)
|
@Config(shadows = ShadowFragment.class)
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class WifiCallingSettingsForSubTest {
|
public class WifiCallingSettingsForSubTest {
|
||||||
|
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
|
||||||
private static final int SUB_ID = 2;
|
private static final int SUB_ID = 2;
|
||||||
|
|
||||||
private static final String SWITCH_BAR = "wifi_calling_switch_bar";
|
private static final String SWITCH_BAR = "wifi_calling_switch_bar";
|
||||||
@@ -158,6 +164,7 @@ public class WifiCallingSettingsForSubTest {
|
|||||||
mFragment.onAttach(mContext);
|
mFragment.onAttach(mContext);
|
||||||
mFragment.onCreate(null);
|
mFragment.onCreate(null);
|
||||||
mFragment.onActivityCreated(null);
|
mFragment.onActivityCreated(null);
|
||||||
|
mSetFlagsRule.disableFlags(Flags.FLAG_CARRIER_ENABLED_SATELLITE_FLAG);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDefaultCarrierConfigValues() {
|
private void setDefaultCarrierConfigValues() {
|
||||||
@@ -240,6 +247,31 @@ public class WifiCallingSettingsForSubTest {
|
|||||||
verify(mButtonWfcRoamingMode, times(1)).setVisible(false);
|
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
|
@Test
|
||||||
public void onResume_useWfcHomeModeConfigTrueAndNotEditable_shouldHideWfcRoaming() {
|
public void onResume_useWfcHomeModeConfigTrueAndNotEditable_shouldHideWfcRoaming() {
|
||||||
mBundle.putBoolean(
|
mBundle.putBoolean(
|
||||||
|
Reference in New Issue
Block a user