Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d3ead74 authored by jackqdyulei's avatar jackqdyulei
Browse files

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
parent 88d6b2f9
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -54,6 +54,8 @@ public class EnabledNetworkModePreferenceController extends
    public int getAvailabilityStatus(int subId) {
        boolean visible;
        final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
        final TelephonyManager telephonyManager = TelephonyManager
                .from(mContext).createForSubscriptionId(subId);
        if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
            visible = false;
        } else if (carrierConfig == null) {
@@ -63,8 +65,8 @@ public class EnabledNetworkModePreferenceController extends
            visible = false;
        } else if (carrierConfig.getBoolean(
                CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL)
                && !mTelephonyManager.getServiceState().getRoaming()
                && mTelephonyManager.getServiceState().getDataRegState()
                && !telephonyManager.getServiceState().getRoaming()
                && telephonyManager.getServiceState().getDataRegState()
                == ServiceState.STATE_IN_SERVICE) {
            visible = false;
        } else if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL)) {
+4 −3
Original line number Diff line number Diff line
@@ -30,7 +30,6 @@ import androidx.preference.Preference;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;

/**
 * Preference controller for "Preferred network mode"
@@ -51,6 +50,8 @@ public class PreferredNetworkModePreferenceController extends TelephonyBasePrefe
    @Override
    public int getAvailabilityStatus(int subId) {
        final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
        final TelephonyManager telephonyManager = TelephonyManager
                .from(mContext).createForSubscriptionId(subId);
        boolean visible;
        if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
            visible = false;
@@ -61,8 +62,8 @@ public class PreferredNetworkModePreferenceController extends TelephonyBasePrefe
            visible = false;
        } else if (carrierConfig.getBoolean(
                CarrierConfigManager.KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL)
                && !mTelephonyManager.getServiceState().getRoaming()
                && mTelephonyManager.getServiceState().getDataRegState()
                && !telephonyManager.getServiceState().getRoaming()
                && telephonyManager.getServiceState().getDataRegState()
                == ServiceState.STATE_IN_SERVICE) {
            visible = false;
        } else if (carrierConfig.getBoolean(CarrierConfigManager.KEY_WORLD_PHONE_BOOL)) {
+19 −12
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;

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

    @Override
+1 −1
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ public class WifiCallingPreferenceController extends TelephonyBasePreferenceCont
    public int getAvailabilityStatus(int subId) {
        return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
                && MobileNetworkUtils.isWifiCallingEnabled(mContext,
                SubscriptionManager.getPhoneId(mSubId))
                SubscriptionManager.getPhoneId(subId))
                ? AVAILABLE
                : UNSUPPORTED_ON_DEVICE;
    }
+4 −4
Original line number Diff line number Diff line
@@ -29,8 +29,8 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;

import com.android.settings.core.BasePreferenceController;
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.events.OnStart;
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
 */
public abstract class CdmaBasePreferenceController extends BasePreferenceController
public abstract class CdmaBasePreferenceController extends TelephonyBasePreferenceController
        implements LifecycleObserver, OnStart, OnStop {

    protected Preference mPreference;
@@ -64,8 +64,8 @@ public abstract class CdmaBasePreferenceController extends BasePreferenceControl
    }

    @Override
    public int getAvailabilityStatus() {
        return MobileNetworkUtils.isCdmaOptions(mContext, mSubId)
    public int getAvailabilityStatus(int subId) {
        return MobileNetworkUtils.isCdmaOptions(mContext, subId)
                ? AVAILABLE
                : CONDITIONALLY_UNAVAILABLE;
    }
Loading