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

Commit e6d7d3b1 authored by jackqdyulei's avatar jackqdyulei
Browse files

Update search for mobile network settings

This CL make all mobile related preferences support:
1. If subId is manually set, check visibility by subId
2. If not, try find whether there is one active subId meets requirement.
If so, isAvailable() will return true to enable search.

Bug: 77276236
Test: RunSettingsRoboTests
Change-Id: I24e2d2f5e882284ba8e997b844caee7722b6b07d
parent d2e7bfeb
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -77,7 +77,8 @@

    <PreferenceCategory
        android:key="calling_category"
        android:title="@string/call_category">
        android:title="@string/call_category"
        settings:searchable="false">

        <PreferenceScreen
            android:key="wifi_calling_key"
+5 −7
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.SettingsActivity;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.ApnSettings;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedPreference;
@@ -43,12 +42,11 @@ import com.android.settingslib.core.lifecycle.events.OnStop;
/**
 * Preference controller for "Apn settings"
 */
public class ApnPreferenceController extends BasePreferenceController implements
public class ApnPreferenceController extends TelephonyBasePreferenceController implements
        LifecycleObserver, OnStart, OnStop {

    @VisibleForTesting
    CarrierConfigManager mCarrierConfigManager;
    private int mSubId;
    private Preference mPreference;
    private DpcApnEnforcedObserver mDpcApnEnforcedObserver;

@@ -59,12 +57,12 @@ public class ApnPreferenceController extends BasePreferenceController implements
    }

    @Override
    public int getAvailabilityStatus() {
        final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
        final boolean isCdmaApn = MobileNetworkUtils.isCdmaOptions(mContext, mSubId)
    public int getAvailabilityStatus(int subId) {
        final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
        final boolean isCdmaApn = MobileNetworkUtils.isCdmaOptions(mContext, subId)
                && carrierConfig != null
                && carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_APN_SETTING_CDMA_BOOL);
        final boolean isGsmApn = MobileNetworkUtils.isGsmOptions(mContext, mSubId)
        final boolean isGsmApn = MobileNetworkUtils.isGsmOptions(mContext, subId)
                && carrierConfig != null
                && carrierConfig.getBoolean(CarrierConfigManager.KEY_APN_EXPAND_BOOL);

+5 −9
Original line number Diff line number Diff line
@@ -28,21 +28,17 @@ import android.telephony.SubscriptionManager;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;

import com.android.settings.core.BasePreferenceController;

/**
 * Preference controller for "Carrier Settings"
 */
public class CarrierPreferenceController extends BasePreferenceController {
public class CarrierPreferenceController extends TelephonyBasePreferenceController {

    @VisibleForTesting
    CarrierConfigManager mCarrierConfigManager;
    private int mSubId;

    public CarrierPreferenceController(Context context, String key) {
        super(context, key);
        mCarrierConfigManager = new CarrierConfigManager(context);
        mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    }

    public void init(int subId) {
@@ -50,14 +46,14 @@ public class CarrierPreferenceController extends BasePreferenceController {
    }

    @Override
    public int getAvailabilityStatus() {
        final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
    public int getAvailabilityStatus(int subId) {
        final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);

        // Return available if it is in CDMA or GSM mode, and the flag is on
        return carrierConfig != null
                && carrierConfig.getBoolean(CarrierConfigManager.KEY_CARRIER_SETTINGS_ENABLE_BOOL)
                && (MobileNetworkUtils.isCdmaOptions(mContext, mSubId)
                || MobileNetworkUtils.isGsmOptions(mContext, mSubId))
                && (MobileNetworkUtils.isCdmaOptions(mContext, subId)
                || MobileNetworkUtils.isGsmOptions(mContext, subId))
                ? AVAILABLE
                : CONDITIONALLY_UNAVAILABLE;
    }
+6 −10
Original line number Diff line number Diff line
@@ -29,18 +29,15 @@ import android.text.TextUtils;
import androidx.preference.Preference;

import com.android.internal.telephony.PhoneConstants;
import com.android.settings.core.BasePreferenceController;

/**
 * Preference controller for "Data service setup"
 */
public class DataServiceSetupPreferenceController extends BasePreferenceController {
public class DataServiceSetupPreferenceController extends TelephonyBasePreferenceController {

    private CarrierConfigManager mCarrierConfigManager;
    private TelephonyManager mTelephonyManager;
    private PersistableBundle mCarrierConfig;
    private String mSetupUrl;
    private int mSubId;

    public DataServiceSetupPreferenceController(Context context, String key) {
        super(context, key);
@@ -48,16 +45,16 @@ public class DataServiceSetupPreferenceController extends BasePreferenceControll
        mTelephonyManager = context.getSystemService(TelephonyManager.class);
        mSetupUrl = Settings.Global.getString(mContext.getContentResolver(),
                Settings.Global.SETUP_PREPAID_DATA_SERVICE_URL);
        mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    }

    @Override
    public int getAvailabilityStatus() {
    public int getAvailabilityStatus(int subId) {
        final boolean isLteOnCdma = mTelephonyManager.getLteOnCdmaMode()
                == PhoneConstants.LTE_ON_CDMA_TRUE;
        return mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
                && mCarrierConfig != null
                && !mCarrierConfig.getBoolean(
        final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
        return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
                && carrierConfig != null
                && !carrierConfig.getBoolean(
                CarrierConfigManager.KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL)
                && isLteOnCdma && !TextUtils.isEmpty(mSetupUrl)
                ? AVAILABLE
@@ -67,7 +64,6 @@ public class DataServiceSetupPreferenceController extends BasePreferenceControll
    public void init(int subId) {
        mSubId = subId;
        mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
        mCarrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
    }

    @Override
+3 −6
Original line number Diff line number Diff line
@@ -28,27 +28,24 @@ import android.text.format.Formatter;
import androidx.preference.Preference;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.net.DataUsageController;

/**
 * Preference controller for "Data usage"
 */
public class DataUsagePreferenceController extends BasePreferenceController {
public class DataUsagePreferenceController extends TelephonyBasePreferenceController {

    private NetworkTemplate mTemplate;
    private DataUsageController.DataUsageInfo mDataUsageInfo;
    private Intent mIntent;
    private int mSubId;

    public DataUsagePreferenceController(Context context, String key) {
        super(context, key);
        mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    }

    @Override
    public int getAvailabilityStatus() {
        return mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
    public int getAvailabilityStatus(int subId) {
        return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
                ? AVAILABLE
                : AVAILABLE_UNSEARCHABLE;
    }
Loading