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

Commit 884c5ab9 authored by Quang Anh Luong's avatar Quang Anh Luong
Browse files

Show wifi list progress bar when scanning

Show the progress bar in Internet Settings while we're currently
scanning for networks, and then stop when we receive the results of the
scan.

Bug: 308567866
Test: manually verify progress bar is shown while wifi is scanning
Change-Id: Ice500c69d24f7843b1a6b64c9ac5245b16c7c0db
parent af9bbb9f
Loading
Loading
Loading
Loading
+9 −31
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import android.net.NetworkTemplate;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.PowerManager;
import android.os.UserHandle;
import android.os.UserManager;
@@ -184,7 +183,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        }
    };

    private boolean mIsWifiEntryListStale = true;
    @VisibleForTesting
    final Runnable mUpdateWifiEntryPreferencesRunnable = () -> {
        updateWifiEntryPreferences();
@@ -536,7 +534,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment

    @Override
    public void onStop() {
        mIsWifiEntryListStale = true;
        getView().removeCallbacks(mRemoveLoadingRunnable);
        getView().removeCallbacks(mUpdateWifiEntryPreferencesRunnable);
        getView().removeCallbacks(mHideProgressBarRunnable);
@@ -878,6 +875,11 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        }
    }

    @Override
    public void onScanRequested() {
        setProgressBarVisible(true);
    }

    @VisibleForTesting
    void setWifiScanMessage(boolean isWifiEnabled) {
        final Context context = getContext();
@@ -908,12 +910,10 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
    }

    @Override
    public void onWifiEntriesChanged() {
        if (mIsWifiEntryListStale) {
            mIsWifiEntryListStale = false;
    public void onWifiEntriesChanged(@WifiPickerTracker.WifiEntriesChangedReason int reason) {
        updateWifiEntryPreferences();
        } else {
            updateWifiEntryPreferencesDelayed();
        if (reason == WifiPickerTracker.WIFI_ENTRIES_CHANGED_REASON_SCAN_RESULTS) {
            setProgressBarVisible(false);
        }
        changeNextButtonState(mWifiPickerTracker != null
                && mWifiPickerTracker.getConnectedWifiEntry() != null);
@@ -950,24 +950,6 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        setAdditionalSettingsSummaries();
    }

    /**
     * Updates WifiEntries from {@link WifiPickerTracker#getWifiEntries()}. Adds a delay to have
     * progress bar displayed before starting to modify entries.
     */
    private void updateWifiEntryPreferencesDelayed() {
        // Safeguard from some delayed event handling
        if (getActivity() != null && !mIsRestricted && mWifiPickerTracker != null
                && mWifiPickerTracker.getWifiState() == WifiManager.WIFI_STATE_ENABLED) {
            final View view = getView();
            final Handler handler = view.getHandler();
            if (handler != null && handler.hasCallbacks(mUpdateWifiEntryPreferencesRunnable)) {
                return;
            }
            setProgressBarVisible(true);
            view.postDelayed(mUpdateWifiEntryPreferencesRunnable, 300);
        }
    }

    protected void updateWifiEntryPreferences() {
        // bypass the update if the activity and the view are not ready, or it's restricted UI.
        if (getActivity() == null || getView() == null || mIsRestricted) {
@@ -1050,16 +1032,12 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment
        removeCachedPrefs(mWifiEntryPreferenceCategory);

        if (!hasAvailableWifiEntries) {
            setProgressBarVisible(true);
            Preference pref = new Preference(getPrefContext());
            pref.setSelectable(false);
            pref.setSummary(R.string.wifi_empty_list_wifi_on);
            pref.setOrder(index++);
            pref.setKey(PREF_KEY_EMPTY_WIFI_LIST);
            mWifiEntryPreferenceCategory.addPreference(pref);
        } else {
            // Continuing showing progress bar for an additional delay to overlap with animation
            getView().postDelayed(mHideProgressBarRunnable, 1700 /* delay millis */);
        }

        mAddWifiNetworkPreference.setOrder(index++);