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

Unverified Commit 2e109565 authored by Alexander Koskovich's avatar Alexander Koskovich Committed by Michael Bestas
Browse files

Add a mobile data toggle for setup

mIsInSetupWizard was moved to top of NetworkProviderSetting's onCreate
so it is available for addPreferences().

Change-Id: I9299c3033e96bcd30450ec239f14fb5daa800d63
parent 6cf58fed
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -42,6 +42,13 @@
        android:summary="@string/to_switch_networks_disconnect_ethernet"
        android:summary="@string/to_switch_networks_disconnect_ethernet"
        android:icon="@drawable/ic_settings_ethernet"/>
        android:icon="@drawable/ic_settings_ethernet"/>


    <SwitchPreferenceCompat
        android:key="main_toggle_mobile_data"
        android:title="@string/mobile_data_settings_title"
        android:summary="@string/mobile_data_settings_summary"
        settings:isPreferenceVisible="@bool/config_show_sim_info"
        settings:controller="com.android.settings.network.telephony.MobileDataPreferenceController"/>

    <PreferenceCategory
    <PreferenceCategory
        android:key="provider_model_mobile_network"
        android:key="provider_model_mobile_network"
        android:title="@string/summary_placeholder"
        android:title="@string/summary_placeholder"
+22 −2
Original line number Original line Diff line number Diff line
@@ -74,6 +74,7 @@ import com.android.settings.datausage.DataUsagePreference;
import com.android.settings.datausage.DataUsageUtils;
import com.android.settings.datausage.DataUsageUtils;
import com.android.settings.location.WifiScanningFragment;
import com.android.settings.location.WifiScanningFragment;
import com.android.settings.network.MobileDataEnabledListener;
import com.android.settings.network.MobileDataEnabledListener;
import com.android.settings.network.telephony.MobileDataPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.wifi.AddNetworkFragment;
import com.android.settings.wifi.AddNetworkFragment;
import com.android.settings.wifi.AddWifiNetworkPreference;
import com.android.settings.wifi.AddWifiNetworkPreference;
@@ -262,6 +263,12 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
    @VisibleForTesting
    @VisibleForTesting
    MenuProvider mMenuProvider;
    MenuProvider mMenuProvider;


    /**
     * Mobile data toggle
     */
    private static final String PREF_KEY_MOBILE_DATA_TOGGLE = "main_toggle_mobile_data";
    private MobileDataPreferenceController mMobileDataPreferenceController;

    /**
    /**
     * Mobile networks list for provider model
     * Mobile networks list for provider model
     */
     */
@@ -322,6 +329,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
    public void onCreate(Bundle icicle) {
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        super.onCreate(icicle);
        final Context context = getContext();
        final Context context = getContext();
        final Intent intent = this.getIntent();
        if (context != null && !context.getResources().getBoolean(
        if (context != null && !context.getResources().getBoolean(
                R.bool.config_show_internet_settings)) {
                R.bool.config_show_internet_settings)) {
            finish();
            finish();
@@ -329,6 +337,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
        }
        }
        mAirplaneModeEnabler = new AirplaneModeEnabler(getContext(), this);
        mAirplaneModeEnabler = new AirplaneModeEnabler(getContext(), this);
        mDataStateListener = new MobileDataEnabledListener(getContext(), this);
        mDataStateListener = new MobileDataEnabledListener(getContext(), this);
        mIsInSetupWizard = WizardManagerHelper.isAnySetupWizard(intent);


        // TODO(b/37429702): Add animations and preference comparator back after initial screen is
        // TODO(b/37429702): Add animations and preference comparator back after initial screen is
        // loaded (ODR).
        // loaded (ODR).
@@ -376,8 +385,6 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
                fixConnectivityItem.setVisible(!mIsGuest && (!isAirplaneModeOn || isWifiEnabled));
                fixConnectivityItem.setVisible(!mIsGuest && (!isAirplaneModeOn || isWifiEnabled));
            }
            }
        };
        };
        final Intent intent = this.getIntent();
        mIsInSetupWizard = WizardManagerHelper.isAnySetupWizard(intent);
    }
    }


    private void updateUserType() {
    private void updateUserType() {
@@ -428,6 +435,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
        if (mResetInternetPreference != null) {
        if (mResetInternetPreference != null) {
            mResetInternetPreference.setVisible(false);
            mResetInternetPreference.setVisible(false);
        }
        }
        addMobileDataPreferenceController();
        addNetworkMobileProviderController();
        addNetworkMobileProviderController();
        addConnectedEthernetNetworkController();
        addConnectedEthernetNetworkController();
        addWifiSwitchPreferenceController();
        addWifiSwitchPreferenceController();
@@ -450,6 +458,18 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
        return (context != null) && SubscriptionUtil.isSimHardwareVisible(context);
        return (context != null) && SubscriptionUtil.isSimHardwareVisible(context);
    }
    }


    private void addMobileDataPreferenceController() {
        if (!showAnySubscriptionInfo(getContext())) {
            return;
        }
        if (mMobileDataPreferenceController == null) {
            mMobileDataPreferenceController = new MobileDataPreferenceController(
                    getContext(), PREF_KEY_MOBILE_DATA_TOGGLE, getSettingsLifecycle(),
                    mSubId, mIsInSetupWizard);
        }
        mMobileDataPreferenceController.displayPreference(getPreferenceScreen());
    }

    private void addNetworkMobileProviderController() {
    private void addNetworkMobileProviderController() {
        if (!showAnySubscriptionInfo(getContext())) {
        if (!showAnySubscriptionInfo(getContext())) {
            return;
            return;
+18 −17
Original line number Original line Diff line number Diff line
@@ -16,9 +16,6 @@


package com.android.settings.network.telephony;
package com.android.settings.network.telephony;


import static androidx.lifecycle.Lifecycle.Event.ON_START;
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;

import android.content.Context;
import android.content.Context;
import android.provider.Settings;
import android.provider.Settings;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager;
@@ -26,9 +23,10 @@ import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.Log;
import android.util.Log;


import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.Preference;
@@ -36,6 +34,7 @@ import androidx.preference.PreferenceScreen;
import androidx.preference.TwoStatePreference;
import androidx.preference.TwoStatePreference;


import com.android.settings.R;
import com.android.settings.R;
import com.android.settings.datausage.DataUsageUtils;
import com.android.settings.flags.Flags;
import com.android.settings.flags.Flags;
import com.android.settings.network.MobileNetworkRepository;
import com.android.settings.network.MobileNetworkRepository;
import com.android.settings.wifi.WifiPickerTrackerHelper;
import com.android.settings.wifi.WifiPickerTrackerHelper;
@@ -52,7 +51,7 @@ import java.util.List;
 * Preference controller for "Mobile data"
 * Preference controller for "Mobile data"
 */
 */
public class MobileDataPreferenceController extends TelephonyTogglePreferenceController
public class MobileDataPreferenceController extends TelephonyTogglePreferenceController
        implements LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback {
        implements DefaultLifecycleObserver, MobileNetworkRepository.MobileNetworkCallback {


    private static final String DIALOG_TAG = "MobileDataDialog";
    private static final String DIALOG_TAG = "MobileDataDialog";


@@ -64,10 +63,10 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
    int mDialogType;
    int mDialogType;
    @VisibleForTesting
    @VisibleForTesting
    boolean mNeedDialog;
    boolean mNeedDialog;
    boolean mIsInSetupWizard;


    private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
    private WifiPickerTrackerHelper mWifiPickerTrackerHelper;
    protected MobileNetworkRepository mMobileNetworkRepository;
    protected MobileNetworkRepository mMobileNetworkRepository;
    protected LifecycleOwner mLifecycleOwner;
    private List<SubscriptionInfoEntity> mSubscriptionInfoEntityList = new ArrayList<>();
    private List<SubscriptionInfoEntity> mSubscriptionInfoEntityList = new ArrayList<>();
    private List<MobileNetworkInfoEntity> mMobileNetworkInfoEntityList = new ArrayList<>();
    private List<MobileNetworkInfoEntity> mMobileNetworkInfoEntityList = new ArrayList<>();
    private int mDefaultSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    private int mDefaultSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
@@ -75,10 +74,10 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
    MobileNetworkInfoEntity mMobileNetworkInfoEntity;
    MobileNetworkInfoEntity mMobileNetworkInfoEntity;


    public MobileDataPreferenceController(Context context, String key, Lifecycle lifecycle,
    public MobileDataPreferenceController(Context context, String key, Lifecycle lifecycle,
            LifecycleOwner lifecycleOwner, int subId) {
            int subId, boolean isInSetupWizard) {
        this(context, key);
        this(context, key);
        mSubId = subId;
        mSubId = subId;
        mLifecycleOwner = lifecycleOwner;
        mIsInSetupWizard = isInSetupWizard;
        if (lifecycle != null) {
        if (lifecycle != null) {
            lifecycle.addObserver(this);
            lifecycle.addObserver(this);
        }
        }
@@ -92,12 +91,13 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon


    @Override
    @Override
    public int getAvailabilityStatus(int subId) {
    public int getAvailabilityStatus(int subId) {
        if (Flags.isDualSimOnboardingEnabled()) {
        if ((Flags.isDualSimOnboardingEnabled() && !mIsInSetupWizard)
                || mSubscriptionManager.getActiveSubscriptionInfo(subId) == null
                || !mSubscriptionManager.isUsableSubscriptionId(subId)
                || !DataUsageUtils.hasMobileData(mContext)) {
            return CONDITIONALLY_UNAVAILABLE;
            return CONDITIONALLY_UNAVAILABLE;
        }
        }
        return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
        return AVAILABLE;
                ? AVAILABLE
                : AVAILABLE_UNSEARCHABLE;
    }
    }


    @Override
    @Override
@@ -106,14 +106,14 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
        mPreference = screen.findPreference(getPreferenceKey());
        mPreference = screen.findPreference(getPreferenceKey());
    }
    }


    @OnLifecycleEvent(ON_START)
    @Override
    public void onStart() {
    public void onResume(@NonNull LifecycleOwner owner) {
        mMobileNetworkRepository.addRegister(mLifecycleOwner, this, mSubId);
        mMobileNetworkRepository.addRegister(owner, this, mSubId);
        mMobileNetworkRepository.updateEntity();
        mMobileNetworkRepository.updateEntity();
    }
    }


    @OnLifecycleEvent(ON_STOP)
    @Override
    public void onStop() {
    public void onPause(@NonNull LifecycleOwner owner) {
        mMobileNetworkRepository.removeRegister(this);
        mMobileNetworkRepository.removeRegister(this);
    }
    }


@@ -174,6 +174,7 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
            return;
            return;
        }
        }


        mPreference.setVisible(isAvailable());
        mPreference.setChecked(isChecked());
        mPreference.setChecked(isChecked());
        if (mSubscriptionInfoEntity.isOpportunistic) {
        if (mSubscriptionInfoEntity.isOpportunistic) {
            mPreference.setEnabled(false);
            mPreference.setEnabled(false);
+1 −1
Original line number Original line Diff line number Diff line
@@ -197,7 +197,7 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings impleme
                new SmsDefaultSubscriptionController(context, KEY_SMS_PREF, getSettingsLifecycle(),
                new SmsDefaultSubscriptionController(context, KEY_SMS_PREF, getSettingsLifecycle(),
                        this),
                        this),
                new MobileDataPreferenceController(context, KEY_MOBILE_DATA_PREF,
                new MobileDataPreferenceController(context, KEY_MOBILE_DATA_PREF,
                        getSettingsLifecycle(), this, mSubId),
                        getSettingsLifecycle(), mSubId, false),
                new ConvertToEsimPreferenceController(context, KEY_CONVERT_TO_ESIM_PREF,
                new ConvertToEsimPreferenceController(context, KEY_CONVERT_TO_ESIM_PREF,
                        getSettingsLifecycle(), this, mSubId), eid);
                        getSettingsLifecycle(), this, mSubId), eid);
    }
    }
+1 −1
Original line number Original line Diff line number Diff line
@@ -131,7 +131,7 @@ public class MobileDataPreferenceControllerComponentTest {
                URL url = new URL("https://www.google.net");
                URL url = new URL("https://www.google.net");
                MobileDataPreferenceController controller = new MobileDataPreferenceController(
                MobileDataPreferenceController controller = new MobileDataPreferenceController(
                        mInstrumentation.getTargetContext(), "mobile_data", mLifecycle,
                        mInstrumentation.getTargetContext(), "mobile_data", mLifecycle,
                        mLifecycleOwner, sSubscriptionId);
                        sSubscriptionId, false);
                FragmentManager manager = ((FragmentActivity) activity).getSupportFragmentManager();
                FragmentManager manager = ((FragmentActivity) activity).getSupportFragmentManager();
                controller.init(manager, sSubscriptionId, mock(SubscriptionInfoEntity.class), mock(
                controller.init(manager, sSubscriptionId, mock(SubscriptionInfoEntity.class), mock(
                        MobileNetworkInfoEntity.class));
                        MobileNetworkInfoEntity.class));
Loading