From 029e2d771e4fc799424256c70104c8a8a979c992 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Mon, 8 Feb 2021 22:48:05 +0800 Subject: [PATCH] Fix WiFi show "Not connected" always issue - The WiFi summary is designed to be changed when the onCapabilitiesChanged() callback is made from the ConnectivityManager, but there is no guarantee that there will be a callback after the settings are registered to the ConnectivityManager. - Need to fatch initial state information to show the correct summary first when the settings register callback to the ConnectivityManager. - Screenshot: https://screenshot.googleplex.com/AwmLX2ZQE2grC7N Bug: 179335681 Test: manual test - make RunSettingsRoboTests ROBOTEST_FILTER=WifiSummaryUpdaterTest Change-Id: Ib5d22bdf34a3832dd5082e6e11cee699694afdee --- src/com/android/settings/wifi/WifiSummaryUpdater.java | 1 + .../com/android/settings/wifi/WifiSummaryUpdaterTest.java | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/com/android/settings/wifi/WifiSummaryUpdater.java b/src/com/android/settings/wifi/WifiSummaryUpdater.java index c559e7dcea3..4264b4548f7 100644 --- a/src/com/android/settings/wifi/WifiSummaryUpdater.java +++ b/src/com/android/settings/wifi/WifiSummaryUpdater.java @@ -74,6 +74,7 @@ public final class WifiSummaryUpdater extends SummaryUpdater { @Override public void register(boolean register) { if (register) { + mWifiTracker.fetchInitialState(); notifyChangeIfNeeded(); mContext.registerReceiver(mReceiver, INTENT_FILTER); } else { diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java index 02bf172e891..1ae31e8d75d 100644 --- a/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java +++ b/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java @@ -64,6 +64,14 @@ public class WifiSummaryUpdaterTest { verify(mWifiTracker).setListening(true); } + @Test + public void register_true_shouldFetchInitialStateAndSendSummaryChange() { + mSummaryUpdater.register(true); + + verify(mWifiTracker).fetchInitialState(); + verify(mListener).onSummaryChanged(anyString()); + } + @Test public void register_false_shouldUnregisterListenerAndTracker() { mSummaryUpdater.register(true);