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

Unverified Commit 20af3047 authored by Alexander Koskovich's avatar Alexander Koskovich Committed by Michael Bestas
Browse files

Handle mobile data on internet page during setup

Change-Id: Id00e9ef135cd2748376c69596979826e764e9185
parent 13093942
Loading
Loading
Loading
Loading
+26 −4
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ import com.android.settings.network.ethernet.EthernetInterfaceDetailsFragment;
import com.android.settings.network.ethernet.EthernetSwitchPreferenceController;
import com.android.settings.network.ethernet.EthernetTracker;
import com.android.settings.network.ethernet.EthernetTrackerImpl;
import com.android.settings.network.MobileDataEnabledListener;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.wifi.AddNetworkFragment;
import com.android.settings.wifi.AddWifiNetworkPreference;
@@ -123,7 +124,8 @@ import java.util.Optional;
public class NetworkProviderSettings extends RestrictedDashboardFragment
        implements Indexable, WifiPickerTracker.WifiPickerTrackerCallback,
        WifiDialog2.WifiDialog2Listener, DialogInterface.OnDismissListener,
        AirplaneModeEnabler.OnAirplaneModeChangedListener, InternetUpdater.InternetChangeListener {
        AirplaneModeEnabler.OnAirplaneModeChangedListener, InternetUpdater.InternetChangeListener,
        MobileDataEnabledListener.Client {

    private static final String TAG = "NetworkProviderSettings";
    // IDs of context menu
@@ -219,6 +221,9 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
    protected WifiManager mWifiManager;
    private WifiManager.ActionListener mSaveListener;

    int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    MobileDataEnabledListener mDataStateListener;

    protected InternetResetHelper mInternetResetHelper;

    /**
@@ -290,6 +295,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment

    public NetworkProviderSettings() {
        super(DISALLOW_CONFIG_WIFI);
        mSubId = SubscriptionManager.getActiveDataSubscriptionId();
    }

    @Override
@@ -341,6 +347,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
            return;
        }
        mAirplaneModeEnabler = new AirplaneModeEnabler(getContext(), this);
        mDataStateListener = new MobileDataEnabledListener(getContext(), this);

        // TODO(b/37429702): Add animations and preference comparator back after initial screen is
        // loaded (ODR).
@@ -593,6 +600,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
            return;
        }
        mAirplaneModeEnabler.start();
        mDataStateListener.start(mSubId);
        if (com.android.settings.connectivity.Flags.ethernetSettings()) {
            mEthernetTracker.registerInterfaceListener(this::onInterfaceListChanged);
        }
@@ -624,7 +632,8 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
        }

        changeNextButtonState(mWifiPickerTracker != null
                && mWifiPickerTracker.getConnectedWifiEntry() != null);
                && mWifiPickerTracker.getConnectedWifiEntry() != null
                || getDataEnabled());
    }

    @Override
@@ -633,6 +642,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
        getView().removeCallbacks(mUpdateWifiEntryPreferencesRunnable);
        getView().removeCallbacks(mHideProgressBarRunnable);
        mAirplaneModeEnabler.stop();
        mDataStateListener.stop();
        if (com.android.settings.connectivity.Flags.ethernetSettings()) {
            mEthernetTracker.unregisterInterfaceListener(this::onInterfaceListChanged);
        }
@@ -1022,7 +1032,8 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
            setProgressBarVisible(false);
        }
        changeNextButtonState(mWifiPickerTracker != null
                && mWifiPickerTracker.getConnectedWifiEntry() != null);
                && mWifiPickerTracker.getConnectedWifiEntry() != null
                || getDataEnabled());

        // Edit the Wi-Fi network of specified SSID.
        if (mOpenSsid != null && mWifiPickerTracker != null) {
@@ -1352,7 +1363,7 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
     * Renames/replaces "Next" button when appropriate. "Next" button usually exists in
     * Wi-Fi setup screens, not in usual wifi settings screen.
     *
     * @param enabled true when the device is connected to a wifi network.
     * @param enabled true when the device is connected to a mobile or wifi network.
     */
    @VisibleForTesting
    void changeNextButtonState(boolean enabled) {
@@ -1633,6 +1644,17 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment
        }
    }

    /**
     * Implementation of {@code MobileDataEnabledListener.Client}
     */
    public void onMobileDataEnabledChange() {
        changeNextButtonState(getDataEnabled());
    }

    boolean getDataEnabled() {
        return getContext().getSystemService(TelephonyManager.class).getDataEnabled(mSubId);
    }

    /**
     * A Wi-Fi preference for the connected Wi-Fi network without internet access.
     *
+11 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START;
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;

import android.content.Context;
import android.provider.Settings;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
@@ -42,6 +43,8 @@ import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.mobile.dataservice.MobileNetworkInfoEntity;
import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity;

import com.google.android.setupcompat.util.WizardManagerHelper;

import java.util.ArrayList;
import java.util.List;

@@ -130,6 +133,14 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
    public boolean setChecked(boolean isChecked) {
        mNeedDialog = isDialogNeeded();

        // If we are still provisioning we need to allow enabling mobile data first.
        // By default it is not allowed to use mobile network during provisioning so
        // we need to allow it.
        if (!WizardManagerHelper.isDeviceProvisioned(mContext)) {
            Settings.Global.putInt(mContext.getContentResolver(),
                    Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED, isChecked ? 1 : 0);
        }

        if (!mNeedDialog) {
            // Update data directly if we don't need dialog
            Log.d(DIALOG_TAG, "setMobileDataEnabled: " + isChecked);