Show wifi status label in preference summary.
Bug: 74075761
Test: m RunSettingsRoboTests && manual
Change-Id: I286fac5d9390634facc0f04b845ef668c55d1331
diff --git a/src/com/android/settings/wifi/WifiSummaryUpdater.java b/src/com/android/settings/wifi/WifiSummaryUpdater.java
index 2c56d08..81c531b 100644
--- a/src/com/android/settings/wifi/WifiSummaryUpdater.java
+++ b/src/com/android/settings/wifi/WifiSummaryUpdater.java
@@ -20,14 +20,17 @@
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.net.ConnectivityManager;
+import android.net.NetworkScoreManager;
+import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.support.annotation.VisibleForTesting;
+import android.text.TextUtils;
+
import com.android.settings.R;
import com.android.settings.widget.SummaryUpdater;
import com.android.settingslib.wifi.WifiStatusTracker;
-import static android.net.wifi.WifiInfo.removeDoubleQuotes;
-
/**
* Helper class that listeners to wifi callback and notify client when there is update in
* wifi summary info.
@@ -46,14 +49,18 @@
}
public WifiSummaryUpdater(Context context, OnSummaryChangeListener listener) {
- this(context, listener, new WifiStatusTracker(context.getSystemService(WifiManager.class)));
+ this(context, listener, null);
}
@VisibleForTesting
public WifiSummaryUpdater(Context context, OnSummaryChangeListener listener,
WifiStatusTracker wifiTracker) {
super(context, listener);
- mWifiTracker = wifiTracker;
+ mWifiTracker = wifiTracker != null ? wifiTracker :
+ new WifiStatusTracker(context, context.getSystemService(WifiManager.class),
+ context.getSystemService(NetworkScoreManager.class),
+ context.getSystemService(ConnectivityManager.class),
+ this::notifyChangeIfNeeded);
mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -70,6 +77,7 @@
} else {
mContext.unregisterReceiver(mReceiver);
}
+ mWifiTracker.setListening(register);
}
@Override
@@ -80,7 +88,12 @@
if (!mWifiTracker.connected) {
return mContext.getString(R.string.disconnected);
}
- return removeDoubleQuotes(mWifiTracker.ssid);
+ String ssid = WifiInfo.removeDoubleQuotes(mWifiTracker.ssid);
+ if (TextUtils.isEmpty(mWifiTracker.statusLabel)) {
+ return ssid;
+ }
+ return mContext.getResources().getString(
+ com.android.settingslib.R.string.preference_summary_default_combination,
+ ssid, mWifiTracker.statusLabel);
}
-
}
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiMasterSwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiMasterSwitchPreferenceControllerTest.java
index f6acafd..69cfb10 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiMasterSwitchPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiMasterSwitchPreferenceControllerTest.java
@@ -17,6 +17,7 @@
package com.android.settings.wifi;
import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@@ -25,6 +26,7 @@
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IntentFilter;
+import android.net.NetworkScoreManager;
import android.net.wifi.WifiManager;
import android.support.v7.preference.Preference.OnPreferenceChangeListener;
import android.support.v7.preference.PreferenceScreen;
@@ -51,6 +53,8 @@
private PreferenceScreen mScreen;
@Mock
private MasterSwitchPreference mPreference;
+ @Mock
+ private NetworkScoreManager mNetworkScoreManager;
private Context mContext;
private WifiMasterSwitchPreferenceController mController;
@@ -61,6 +65,7 @@
MockitoAnnotations.initMocks(this);
mMetricsFeatureProvider = FakeFeatureFactory.setupForTest().getMetricsFeatureProvider();
mContext = spy(RuntimeEnvironment.application.getApplicationContext());
+ when(mContext.getSystemService(NetworkScoreManager.class)).thenReturn(mNetworkScoreManager);
mController = new WifiMasterSwitchPreferenceController(mContext, mMetricsFeatureProvider);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mWifiManager);
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java
index fcfadda..f55c57f 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiSummaryUpdaterTest.java
@@ -36,45 +36,41 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
@RunWith(SettingsRobolectricTestRunner.class)
public class WifiSummaryUpdaterTest {
-
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private WifiManager mWifiManager;
- @Mock
- private SummaryListener mListener;
+ @Mock private WifiStatusTracker mWifiTracker;
+ @Mock private SummaryListener mListener;
private Context mContext;
private WifiSummaryUpdater mSummaryUpdater;
- private WifiStatusTracker mWifiTracker;
+
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- mWifiTracker = new WifiStatusTracker(mWifiManager);
-
mContext = spy(RuntimeEnvironment.application.getApplicationContext());
mSummaryUpdater = new WifiSummaryUpdater(mContext, mListener, mWifiTracker);
}
@Test
- public void register_true_shouldRegisterListener() {
+ public void register_true_shouldRegisterListenerAndTracker() {
mSummaryUpdater.register(true);
verify(mContext).registerReceiver(any(BroadcastReceiver.class), any(IntentFilter.class));
+ verify(mWifiTracker).setListening(true);
}
@Test
- public void register_false_shouldUnregisterListener() {
+ public void register_false_shouldUnregisterListenerAndTracker() {
mSummaryUpdater.register(true);
mSummaryUpdater.register(false);
verify(mContext).unregisterReceiver(any(BroadcastReceiver.class));
+ verify(mWifiTracker).setListening(false);
}
@Test
@@ -82,7 +78,6 @@
mSummaryUpdater.register(true);
mContext.sendBroadcast(new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION));
-
verify(mListener).onSummaryChanged(anyString());
}
@@ -91,7 +86,6 @@
mSummaryUpdater.register(true);
mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION));
-
verify(mListener).onSummaryChanged(anyString());
}
@@ -121,6 +115,16 @@
assertThat(mSummaryUpdater.getSummary()).isEqualTo("Test Ssid");
}
+ @Test
+ public void getSummary_wifiConnected_withSpeedLabel_shouldReturnSsid_withSpeedLabel() {
+ mWifiTracker.enabled = true;
+ mWifiTracker.connected = true;
+ mWifiTracker.ssid = "Test Ssid";
+ mWifiTracker.statusLabel = "Very Fast";
+
+ assertThat(mSummaryUpdater.getSummary()).isEqualTo("Test Ssid / Very Fast");
+ }
+
private class SummaryListener implements OnSummaryChangeListener {
String summary;