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
This commit is contained in:
Weng Su
2021-02-08 22:48:05 +08:00
parent c01232b16b
commit 029e2d771e
2 changed files with 9 additions and 0 deletions

View File

@@ -74,6 +74,7 @@ public final class WifiSummaryUpdater extends SummaryUpdater {
@Override @Override
public void register(boolean register) { public void register(boolean register) {
if (register) { if (register) {
mWifiTracker.fetchInitialState();
notifyChangeIfNeeded(); notifyChangeIfNeeded();
mContext.registerReceiver(mReceiver, INTENT_FILTER); mContext.registerReceiver(mReceiver, INTENT_FILTER);
} else { } else {

View File

@@ -64,6 +64,14 @@ public class WifiSummaryUpdaterTest {
verify(mWifiTracker).setListening(true); verify(mWifiTracker).setListening(true);
} }
@Test
public void register_true_shouldFetchInitialStateAndSendSummaryChange() {
mSummaryUpdater.register(true);
verify(mWifiTracker).fetchInitialState();
verify(mListener).onSummaryChanged(anyString());
}
@Test @Test
public void register_false_shouldUnregisterListenerAndTracker() { public void register_false_shouldUnregisterListenerAndTracker() {
mSummaryUpdater.register(true); mSummaryUpdater.register(true);