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

This commit is contained in:
TreeHugger Robot
2018-03-28 19:15:05 +00:00
committed by Android (Google) Code Review
3 changed files with 73 additions and 2 deletions

View File

@@ -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) {

View File

@@ -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;
}
}

View File

@@ -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++) {