Move "metered" persistence to WifiConfiguration.

For a long time we've had a nasty tangled dependency between Wi-Fi
and NPMS, since they both persisted different details for configured
networks.  As part of preparing for new carrier data plan APIs, move
the tracking of meteredness over to WifiConfiguration.

We've never really supported "unmetered" mobile networks inside the
framework, so remove the option to configure those flags.

Replace MeteredPreference.notifyChanged() with explicit listener
to avoid confusing an invalidation pass as expression of user intent
to change metered values.

Bug: 63391323
Test: builds, boots, Wi-Fi policy is upgraded
Exempt-From-Owner-Approval: No owner was found for changed files.
Change-Id: If8a6e12650d1d060a729ed1a80f07ebb65e0ffd7
This commit is contained in:
Jeff Sharkey
2017-07-12 10:56:57 -06:00
parent a7b04ed692
commit dc09269c81
4 changed files with 53 additions and 162 deletions

View File

@@ -14,13 +14,15 @@
package com.android.settings.datausage;
import static android.net.ConnectivityManager.TYPE_ETHERNET;
import static android.net.ConnectivityManager.TYPE_WIFI;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.INetworkStatsSession;
import android.net.NetworkPolicy;
import android.net.NetworkPolicyManager;
import android.net.NetworkTemplate;
import android.net.TrafficStats;
@@ -46,6 +48,7 @@ import android.text.style.RelativeSizeSpan;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SummaryPreference;
@@ -55,13 +58,10 @@ import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settingslib.NetworkPolicyEditor;
import com.android.settingslib.net.DataUsageController;
import java.util.ArrayList;
import java.util.List;
import static android.net.ConnectivityManager.TYPE_ETHERNET;
import static android.net.ConnectivityManager.TYPE_WIFI;
import static android.net.NetworkPolicy.LIMIT_DISABLED;
public class DataUsageSummary extends DataUsageBase implements Indexable, DataUsageEditController {
static final boolean LOGD = false;
@@ -403,7 +403,7 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
mPolicyEditor.read();
int count = 0;
for (WifiConfiguration config : mWifiManager.getConfiguredNetworks()) {
if (isMetered(config)) {
if (WifiConfiguration.isMetered(config, null)) {
count++;
}
}
@@ -411,23 +411,6 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
R.plurals.network_restrictions_summary, count, count));
}
@VisibleForTesting
boolean isMetered(WifiConfiguration config) {
if (config.SSID == null) {
return false;
}
final String networkId = config.isPasspoint() ? config.providerFriendlyName : config.SSID;
final NetworkPolicy policy =
mPolicyEditor.getPolicyMaybeUnquoted(NetworkTemplate.buildTemplateWifi(networkId));
if (policy == null) {
return false;
}
if (policy.limitBytes != LIMIT_DISABLED) {
return true;
}
return policy.metered;
}
private static class SummaryProvider
implements SummaryLoader.SummaryProvider {