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

Commit 740d3719 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Update wifi header summary text to show metered state" into pi-dev

parents 0bc998b3 6f6fe755
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -43,8 +43,6 @@ import android.net.wifi.WifiManager;
import android.net.wifi.WifiNetworkScoreCache;
import android.net.wifi.hotspot2.PasspointConfiguration;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Parcelable;
import android.os.RemoteException;
import android.os.ServiceManager;
@@ -896,6 +894,13 @@ public class AccessPoint implements Comparable<AccessPoint> {
            summary.append(WifiUtils.buildLoggingSummary(this, config));
        }

        if (config != null && (WifiUtils.isMeteredOverridden(config) || config.meteredHint)) {
            return mContext.getResources().getString(
                    R.string.preference_summary_default_combination,
                    WifiUtils.getMeteredLabel(mContext, config),
                    summary.toString());
        }

        // If Speed label and summary are both present, use the preference combination to combine
        // the two, else return the non-null one.
        if (getSpeedLabel() != null && summary.length() != 0) {
+17 −0
Original line number Diff line number Diff line
@@ -16,12 +16,15 @@

package com.android.settingslib.wifi;

import android.content.Context;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiInfo;
import android.os.SystemClock;
import android.support.annotation.VisibleForTesting;

import com.android.settingslib.R;

import java.util.Map;

public class WifiUtils {
@@ -198,4 +201,18 @@ public class WifiUtils {
        // speed wil be determined by mRssi
        return timedScore.getScore().calculateBadge(result.level);
    }

    public static String getMeteredLabel(Context context, WifiConfiguration config) {
        // meteredOverride is whether the user manually set the metered setting or not.
        // meteredHint is whether the network itself is telling us that it is metered
        if (config.meteredOverride == WifiConfiguration.METERED_OVERRIDE_METERED
                || (config.meteredHint && !isMeteredOverridden(config))) {
            return context.getString(R.string.wifi_metered_label);
        }
        return context.getString(R.string.wifi_unmetered_label);
    }

    public static boolean isMeteredOverridden(WifiConfiguration config) {
        return config.meteredOverride != WifiConfiguration.METERED_OVERRIDE_NONE;
    }
}
+49 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.net.RssiCurve;
import android.net.ScoredNetwork;
import android.net.WifiKey;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiNetworkScoreCache;
import android.os.Bundle;
import android.os.Parcelable;
@@ -61,6 +62,8 @@ public class WifiUtilsTest {
    private WifiNetworkScoreCache mockWifiNetworkScoreCache;
    @Mock
    private AccessPoint mAccessPoint;
    @Mock
    WifiConfiguration mWifiConfig;

    @Before
    public void setUp() {
@@ -98,6 +101,52 @@ public class WifiUtilsTest {
        WifiUtils.getVisibilityStatus(mAccessPoint);
    }

    @Test
    public void testGetMeteredLabel_returnsCorrectValues() {
        mWifiConfig.meteredHint = true;
        mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NONE;
        assertThat(WifiUtils.getMeteredLabel(mContext, mWifiConfig)).isEqualTo("Metered");

        mWifiConfig.meteredHint = false;
        mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_METERED;
        assertThat(WifiUtils.getMeteredLabel(mContext, mWifiConfig)).isEqualTo("Metered");

        mWifiConfig.meteredHint = true;
        mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_METERED;
        assertThat(WifiUtils.getMeteredLabel(mContext, mWifiConfig)).isEqualTo("Metered");

        mWifiConfig.meteredHint = false;
        mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NOT_METERED;
        assertThat(WifiUtils.getMeteredLabel(mContext, mWifiConfig)).isEqualTo("Unmetered");

        mWifiConfig.meteredHint = true;
        mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NOT_METERED;
        assertThat(WifiUtils.getMeteredLabel(mContext, mWifiConfig)).isEqualTo("Unmetered");
    }

    @Test
    public void testIsMeteredOverridden_returnsCorrectValues() {
        mWifiConfig.meteredHint = true;
        mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NONE;
        assertThat(WifiUtils.isMeteredOverridden(mWifiConfig)).isFalse();

        mWifiConfig.meteredHint = false;
        mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_METERED;
        assertThat(WifiUtils.isMeteredOverridden(mWifiConfig)).isTrue();

        mWifiConfig.meteredHint = true;
        mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_METERED;
        assertThat(WifiUtils.isMeteredOverridden(mWifiConfig)).isTrue();

        mWifiConfig.meteredHint = false;
        mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NOT_METERED;
        assertThat(WifiUtils.isMeteredOverridden(mWifiConfig)).isTrue();

        mWifiConfig.meteredHint = true;
        mWifiConfig.meteredOverride = WifiConfiguration.METERED_OVERRIDE_NOT_METERED;
        assertThat(WifiUtils.isMeteredOverridden(mWifiConfig)).isTrue();
    }

    private static ArrayList<ScanResult> buildScanResultCache() {
        ArrayList<ScanResult> scanResults = new ArrayList<>();
        for (int i = 0; i < 5; i++) {