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

Commit 9d6cff46 authored by Quang Luong's avatar Quang Luong Committed by Android (Google) Code Review
Browse files

Merge "Show wifi list progress bar when scanning" into main

parents c48a9bc9 884c5ab9
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++);