Merge "Update search for mobile network"

This commit is contained in:
Lei Yu
2019-02-13 22:43:22 +00:00
committed by Android (Google) Code Review
9 changed files with 46 additions and 34 deletions

View File

@@ -54,6 +54,8 @@ public class EnabledNetworkModePreferenceController extends
public int getAvailabilityStatus(int subId) { public int getAvailabilityStatus(int subId) {
boolean visible; boolean visible;
final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId); final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
final TelephonyManager telephonyManager = TelephonyManager
.from(mContext).createForSubscriptionId(subId);
if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
visible = false; visible = false;
} else if (carrierConfig == null) { } else if (carrierConfig == null) {
@@ -63,8 +65,8 @@ public class EnabledNetworkModePreferenceController extends
visible = false; visible = false;
} else if (carrierConfig.getBoolean( } else if (carrierConfig.getBoolean(
CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL) CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL)
&& !mTelephonyManager.getServiceState().getRoaming() && !telephonyManager.getServiceState().getRoaming()
&& mTelephonyManager.getServiceState().getDataRegState() && telephonyManager.getServiceState().getDataRegState()
== ServiceState.STATE_IN_SERVICE) { == ServiceState.STATE_IN_SERVICE) {
visible = false; visible = false;
} else if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL)) { } else if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL)) {

View File

@@ -30,7 +30,6 @@ import androidx.preference.Preference;
import com.android.internal.telephony.Phone; import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.PhoneConstants;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
/** /**
* Preference controller for "Preferred network mode" * Preference controller for "Preferred network mode"
@@ -51,6 +50,8 @@ public class PreferredNetworkModePreferenceController extends TelephonyBasePrefe
@Override @Override
public int getAvailabilityStatus(int subId) { public int getAvailabilityStatus(int subId) {
final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId); final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
final TelephonyManager telephonyManager = TelephonyManager
.from(mContext).createForSubscriptionId(subId);
boolean visible; boolean visible;
if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
visible = false; visible = false;
@@ -61,8 +62,8 @@ public class PreferredNetworkModePreferenceController extends TelephonyBasePrefe
visible = false; visible = false;
} else if (carrierConfig.getBoolean( } else if (carrierConfig.getBoolean(
CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL) CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL)
&& !mTelephonyManager.getServiceState().getRoaming() && !telephonyManager.getServiceState().getRoaming()
&& mTelephonyManager.getServiceState().getDataRegState() && telephonyManager.getServiceState().getDataRegState()
== ServiceState.STATE_IN_SERVICE) { == ServiceState.STATE_IN_SERVICE) {
visible = false; visible = false;
} else if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL)) { } else if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL)) {

View File

@@ -34,7 +34,6 @@ import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreference;
import com.android.ims.ImsManager; import com.android.ims.ImsManager;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop; import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -49,7 +48,6 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC
private Preference mPreference; private Preference mPreference;
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
private CarrierConfigManager mCarrierConfigManager; private CarrierConfigManager mCarrierConfigManager;
private PersistableBundle mCarrierConfig;
@VisibleForTesting @VisibleForTesting
ImsManager mImsManager; ImsManager mImsManager;
private PhoneCallStateListener mPhoneStateListener; private PhoneCallStateListener mPhoneStateListener;
@@ -67,7 +65,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC
return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
&& MobileNetworkUtils.isWifiCallingEnabled(mContext, && MobileNetworkUtils.isWifiCallingEnabled(mContext,
SubscriptionManager.getPhoneId(subId)) SubscriptionManager.getPhoneId(subId))
&& isVideoCallEnabled() && isVideoCallEnabled(subId)
? AVAILABLE ? AVAILABLE
: CONDITIONALLY_UNAVAILABLE; : CONDITIONALLY_UNAVAILABLE;
} }
@@ -94,7 +92,7 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC
public void updateState(Preference preference) { public void updateState(Preference preference) {
super.updateState(preference); super.updateState(preference);
final SwitchPreference switchPreference = (SwitchPreference) preference; final SwitchPreference switchPreference = (SwitchPreference) preference;
final boolean videoCallEnabled = isVideoCallEnabled(); final boolean videoCallEnabled = isVideoCallEnabled(mSubId, mImsManager);
switchPreference.setVisible(videoCallEnabled); switchPreference.setVisible(videoCallEnabled);
if (videoCallEnabled) { if (videoCallEnabled) {
final boolean is4gLteEnabled = mImsManager.isEnhanced4gLteModeSettingEnabledByUser() final boolean is4gLteEnabled = mImsManager.isEnhanced4gLteModeSettingEnabledByUser()
@@ -119,7 +117,6 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC
public VideoCallingPreferenceController init(int subId) { public VideoCallingPreferenceController init(int subId) {
mSubId = subId; mSubId = subId;
mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId); mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
mCarrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId)); mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
} }
@@ -127,15 +124,25 @@ public class VideoCallingPreferenceController extends TelephonyTogglePreferenceC
return this; return this;
} }
private boolean isVideoCallEnabled(int subId) {
final ImsManager imsManager = subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
? ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(subId))
: null;
return isVideoCallEnabled(subId, imsManager);
}
@VisibleForTesting @VisibleForTesting
boolean isVideoCallEnabled() { boolean isVideoCallEnabled(int subId, ImsManager imsManager) {
return mCarrierConfig != null && mImsManager != null final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
&& mImsManager.isVtEnabledByPlatform() final TelephonyManager telephonyManager = TelephonyManager
&& mImsManager.isVtProvisionedOnDevice() .from(mContext).createForSubscriptionId(subId);
&& MobileNetworkUtils.isImsServiceStateReady(mImsManager) return carrierConfig != null && imsManager != null
&& (mCarrierConfig.getBoolean( && imsManager.isVtEnabledByPlatform()
&& imsManager.isVtProvisionedOnDevice()
&& MobileNetworkUtils.isImsServiceStateReady(imsManager)
&& (carrierConfig.getBoolean(
CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS) CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS)
|| mTelephonyManager.isDataEnabled()); || telephonyManager.isDataEnabled());
} }
@Override @Override

View File

@@ -67,7 +67,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
public int getAvailabilityStatus(int subId) { public int getAvailabilityStatus(int subId) {
return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
&& MobileNetworkUtils.isWifiCallingEnabled(mContext, && MobileNetworkUtils.isWifiCallingEnabled(mContext,
SubscriptionManager.getPhoneId(mSubId)) SubscriptionManager.getPhoneId(subId))
? AVAILABLE ? AVAILABLE
: UNSUPPORTED_ON_DEVICE; : UNSUPPORTED_ON_DEVICE;
} }

View File

@@ -29,8 +29,8 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.network.telephony.TelephonyBasePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop; import com.android.settingslib.core.lifecycle.events.OnStop;
@@ -38,7 +38,7 @@ import com.android.settingslib.core.lifecycle.events.OnStop;
/** /**
* Preference controller related to CDMA category * Preference controller related to CDMA category
*/ */
public abstract class CdmaBasePreferenceController extends BasePreferenceController public abstract class CdmaBasePreferenceController extends TelephonyBasePreferenceController
implements LifecycleObserver, OnStart, OnStop { implements LifecycleObserver, OnStart, OnStop {
protected Preference mPreference; protected Preference mPreference;
@@ -64,8 +64,8 @@ public abstract class CdmaBasePreferenceController extends BasePreferenceControl
} }
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus(int subId) {
return MobileNetworkUtils.isCdmaOptions(mContext, mSubId) return MobileNetworkUtils.isCdmaOptions(mContext, subId)
? AVAILABLE ? AVAILABLE
: CONDITIONALLY_UNAVAILABLE; : CONDITIONALLY_UNAVAILABLE;
} }

View File

@@ -44,8 +44,8 @@ public class CdmaSubscriptionPreferenceController extends CdmaBasePreferenceCont
} }
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus(int subId) {
return MobileNetworkUtils.isCdmaOptions(mContext, mSubId) && deviceSupportsNvAndRuim() return MobileNetworkUtils.isCdmaOptions(mContext, subId) && deviceSupportsNvAndRuim()
? AVAILABLE ? AVAILABLE
: CONDITIONALLY_UNAVAILABLE; : CONDITIONALLY_UNAVAILABLE;
} }

View File

@@ -29,9 +29,9 @@ import androidx.preference.Preference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.network.telephony.NetworkSelectSettings;
import com.android.settings.network.telephony.TelephonyTogglePreferenceController;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -39,7 +39,7 @@ import java.util.List;
/** /**
* Preference controller for "Auto Select Network" * Preference controller for "Auto Select Network"
*/ */
public class AutoSelectPreferenceController extends TogglePreferenceController { public class AutoSelectPreferenceController extends TelephonyTogglePreferenceController {
private int mSubId; private int mSubId;
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
@@ -54,8 +54,8 @@ public class AutoSelectPreferenceController extends TogglePreferenceController {
} }
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus(int subId) {
return MobileNetworkUtils.shouldDisplayNetworkSelectOptions(mContext,mSubId) return MobileNetworkUtils.shouldDisplayNetworkSelectOptions(mContext, subId)
? AVAILABLE ? AVAILABLE
: CONDITIONALLY_UNAVAILABLE; : CONDITIONALLY_UNAVAILABLE;
} }

View File

@@ -33,11 +33,13 @@ import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.SubSettingLauncher; import com.android.settings.core.SubSettingLauncher;
import com.android.settings.network.telephony.MobileNetworkUtils; import com.android.settings.network.telephony.MobileNetworkUtils;
import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.network.telephony.NetworkSelectSettings;
import com.android.settings.network.telephony.TelephonyBasePreferenceController;
/** /**
* Preference controller for "Open network select" * Preference controller for "Open network select"
*/ */
public class OpenNetworkSelectPagePreferenceController extends BasePreferenceController implements public class OpenNetworkSelectPagePreferenceController extends
TelephonyBasePreferenceController implements
AutoSelectPreferenceController.OnNetworkSelectModeListener { AutoSelectPreferenceController.OnNetworkSelectModeListener {
private int mSubId; private int mSubId;
@@ -51,8 +53,8 @@ public class OpenNetworkSelectPagePreferenceController extends BasePreferenceCon
} }
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus(int subId) {
return MobileNetworkUtils.shouldDisplayNetworkSelectOptions(mContext, mSubId) return MobileNetworkUtils.shouldDisplayNetworkSelectOptions(mContext, subId)
? AVAILABLE ? AVAILABLE
: CONDITIONALLY_UNAVAILABLE; : CONDITIONALLY_UNAVAILABLE;
} }

View File

@@ -84,14 +84,14 @@ public class VideoCallingPreferenceControllerTest {
@Test @Test
public void isVideoCallEnabled_allFlagsOn_returnTrue() { public void isVideoCallEnabled_allFlagsOn_returnTrue() {
assertThat(mController.isVideoCallEnabled()).isTrue(); assertThat(mController.isVideoCallEnabled(SUB_ID, mImsManager)).isTrue();
} }
@Test @Test
public void isVideoCallEnabled_disabledByPlatform_returnFalse() { public void isVideoCallEnabled_disabledByPlatform_returnFalse() {
doReturn(false).when(mImsManager).isVtEnabledByPlatform(); doReturn(false).when(mImsManager).isVtEnabledByPlatform();
assertThat(mController.isVideoCallEnabled()).isFalse(); assertThat(mController.isVideoCallEnabled(SUB_ID, mImsManager)).isFalse();
} }
@Test @Test
@@ -100,7 +100,7 @@ public class VideoCallingPreferenceControllerTest {
CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS, false); CarrierConfigManager.KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS, false);
doReturn(false).when(mTelephonyManager).isDataEnabled(); doReturn(false).when(mTelephonyManager).isDataEnabled();
assertThat(mController.isVideoCallEnabled()).isFalse(); assertThat(mController.isVideoCallEnabled(SUB_ID, mImsManager)).isFalse();
} }
@Test @Test