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;