Update search for mobile network
Continue work from ag/5991582: 1. Add search support for CDMA/GSM related preference 2. Update func getAvailabilityStatus, inside it should get all related manager from subId, rather than default one in controller. Bug: 117843601 Bug: 77276236 Test: RunSettingsRoboTests Change-Id: Id72505a512269bdc5adb02e806d38ac367ce9f07
This commit is contained in:
@@ -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)) {
|
||||||
|
@@ -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)) {
|
||||||
|
@@ -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
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user