From 884c5ab9bfd99c215e2ae0813d16af3ca6dd6c8d Mon Sep 17 00:00:00 2001 From: Quang Anh Luong Date: Wed, 1 Nov 2023 15:44:03 +0900 Subject: [PATCH] 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 --- .../network/NetworkProviderSettings.java | 40 +++++-------------- 1 file changed, 9 insertions(+), 31 deletions(-) diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index d5bc2af2be1..f14c32c5381 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -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; - updateWifiEntryPreferences(); - } else { - updateWifiEntryPreferencesDelayed(); + public void onWifiEntriesChanged(@WifiPickerTracker.WifiEntriesChangedReason int reason) { + updateWifiEntryPreferences(); + 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++);