Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c685d0fe authored by Amin Shaikh's avatar Amin Shaikh
Browse files

Show wifi status label in preference summary.

Bug: 74075761
Test: m RunSettingsRoboTests && manual
Change-Id: I286fac5d9390634facc0f04b845ef668c55d1331
parent 396e91ab
Loading
Loading
Loading
Loading
+19 −6
Original line number Diff line number Diff line
@@ -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);
    }

}
+5 −0
Original line number Diff line number Diff line
@@ -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);
+17 −13
Original line number Diff line number Diff line
@@ -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;