diff --git a/src/com/android/settings/wifi/WifiSummaryUpdater.java b/src/com/android/settings/wifi/WifiSummaryUpdater.java index 2c56d08d23c..81c531bf9b5 100644 --- a/src/com/android/settings/wifi/WifiSummaryUpdater.java +++ b/src/com/android/settings/wifi/WifiSummaryUpdater.java @@ -20,14 +20,17 @@ import android.content.BroadcastReceiver; 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 final class WifiSummaryUpdater extends SummaryUpdater { } 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 @@ public final class WifiSummaryUpdater extends SummaryUpdater { } else { mContext.unregisterReceiver(mReceiver); } + mWifiTracker.setListening(register); } @Override @@ -80,7 +88,12 @@ public final class WifiSummaryUpdater extends SummaryUpdater { 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 f6acafdba0a..69cfb106b7b 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 static org.mockito.Mockito.when; 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 @@ public class WifiMasterSwitchPreferenceControllerTest { private PreferenceScreen mScreen; @Mock private MasterSwitchPreference mPreference; + @Mock + private NetworkScoreManager mNetworkScoreManager; private Context mContext; private WifiMasterSwitchPreferenceController mController; @@ -61,6 +65,7 @@ public class WifiMasterSwitchPreferenceControllerTest { 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 fcfadda290d..f55c57f8658 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 com.android.settingslib.wifi.WifiStatusTracker; 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 @@ public class WifiSummaryUpdaterTest { mSummaryUpdater.register(true); mContext.sendBroadcast(new Intent(WifiManager.NETWORK_STATE_CHANGED_ACTION)); - verify(mListener).onSummaryChanged(anyString()); } @@ -91,7 +86,6 @@ public class WifiSummaryUpdaterTest { mSummaryUpdater.register(true); mContext.sendBroadcast(new Intent(WifiManager.RSSI_CHANGED_ACTION)); - verify(mListener).onSummaryChanged(anyString()); } @@ -121,6 +115,16 @@ public class WifiSummaryUpdaterTest { 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;