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

Commit 0219dc13 authored by Weng Su's avatar Weng Su
Browse files

Fix WiFi toggle issue of Internet Settings

- Because b/209906859 needs to add WiFi service check for WiFi-less
pixel project.

- But mWifiManager has not been initialized before the
addWifiSwitchPreferenceController() function, which will cause the
controller to not handle the WiFi switching UI.

- Add a hasWifiManager() function to initialize the WiFi manager and
handle related functions.

Bug: 212211915
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=NetworkProviderSettingsTest

Change-Id: Idc0d4cdc31403f0ab9a4eb787e4c70be605f7ddb
parent 8551b0d7
Loading
Loading
Loading
Loading
+20 −11
Original line number Diff line number Diff line
@@ -266,13 +266,22 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        setPinnedHeaderView(R.layout.progress_header);
        setProgressBarVisible(false);

        mWifiManager = activity.getSystemService(WifiManager.class);
        if (mWifiManager != null) {
        if (hasWifiManager()) {
            setLoading(true, false);
            mIsViewLoading = true;
        }
    }

    private boolean hasWifiManager() {
        if (mWifiManager != null) return true;

        Context context = getContext();
        if (context == null) return false;

        mWifiManager = context.getSystemService(WifiManager.class);
        return (mWifiManager != null);
    }

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
@@ -337,7 +346,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    }

    private void addWifiSwitchPreferenceController() {
        if (mWifiManager == null) return;
        if (!hasWifiManager()) return;
        if (mWifiSwitchPreferenceController == null) {
            mWifiSwitchPreferenceController =
                    new WifiSwitchPreferenceController(getContext(), getSettingsLifecycle());
@@ -349,7 +358,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        if (mWifiManager != null) {
        if (hasWifiManager()) {
            mWifiPickerTrackerHelper =
                    new WifiPickerTrackerHelper(getSettingsLifecycle(), getContext(), this);
            mWifiPickerTracker = mWifiPickerTrackerHelper.getWifiPickerTracker();
@@ -420,7 +429,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    public void onStart() {
        super.onStart();
        if (mIsViewLoading) {
            final long delayMillis = (mWifiManager != null && mWifiManager.isWifiEnabled())
            final long delayMillis = (hasWifiManager() && mWifiManager.isWifiEnabled())
                    ? 1000 : 100;
            getView().postDelayed(mRemoveLoadingRunnable, delayMillis);
        }
@@ -482,7 +491,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (mWifiManager == null) {
        if (!hasWifiManager()) {
            // Do nothing
        } else if (requestCode == ADD_NETWORK_REQUEST) {
            handleAddNetworkRequest(resultCode, data);
@@ -720,7 +729,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    /** Called when the state of Wifi has changed. */
    @Override
    public void onWifiStateChanged() {
        if (mIsRestricted || mWifiManager == null) {
        if (mIsRestricted || !hasWifiManager()) {
            return;
        }
        final int wifiState = mWifiPickerTracker.getWifiState();
@@ -770,7 +779,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        }

        final LocationManager locationManager = context.getSystemService(LocationManager.class);
        if (mWifiManager == null || isWifiEnabled || !locationManager.isLocationEnabled()
        if (!hasWifiManager() || isWifiEnabled || !locationManager.isLocationEnabled()
                || !mWifiManager.isScanAlwaysAvailable()) {
            mWifiStatusMessagePreference.setVisible(false);
            return;
@@ -1063,7 +1072,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        final Context context = getContext();
        final PowerManager powerManager = context.getSystemService(PowerManager.class);
        final ContentResolver contentResolver = context.getContentResolver();
        return mWifiManager != null
        return hasWifiManager()
                && mWifiManager.isAutoWakeupEnabled()
                && mWifiManager.isScanAlwaysAvailable()
                && Settings.Global.getInt(contentResolver,
@@ -1085,7 +1094,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    private void handleAddNetworkSubmitEvent(Intent data) {
        final WifiConfiguration wifiConfiguration = data.getParcelableExtra(
                AddNetworkFragment.WIFI_CONFIG_KEY);
        if (wifiConfiguration != null && mWifiManager != null) {
        if (wifiConfiguration != null && hasWifiManager()) {
            mWifiManager.save(wifiConfiguration, mSaveListener);
        }
    }
@@ -1122,7 +1131,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment

    @Override
    public void onSubmit(WifiDialog2 dialog) {
        if (mWifiManager == null) return;
        if (!hasWifiManager()) return;

        final int dialogMode = dialog.getMode();
        final WifiConfiguration config = dialog.getController().getConfig();
+3 −5
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ import android.os.Bundle;
import android.os.PowerManager;
import android.os.UserManager;
import android.provider.Settings;
import android.util.FeatureFlagUtils;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
@@ -162,15 +161,14 @@ public class NetworkProviderSettingsTest {

    @Test
    public void addNetworkFragmentSendResult_onActivityResult_shouldHandleEvent() {
        final NetworkProviderSettings NetworkProviderSettings = spy(new NetworkProviderSettings());
        final Intent intent = new Intent();
        doNothing().when(NetworkProviderSettings).handleAddNetworkRequest(anyInt(),
        doNothing().when(mNetworkProviderSettings).handleAddNetworkRequest(anyInt(),
                any(Intent.class));

        NetworkProviderSettings.onActivityResult(NetworkProviderSettings.ADD_NETWORK_REQUEST,
        mNetworkProviderSettings.onActivityResult(NetworkProviderSettings.ADD_NETWORK_REQUEST,
                Activity.RESULT_OK, intent);

        verify(NetworkProviderSettings).handleAddNetworkRequest(anyInt(), any(Intent.class));
        verify(mNetworkProviderSettings).handleAddNetworkRequest(anyInt(), any(Intent.class));
    }

    @Test