Update preference text for Network & internet screen.
- Add footer info to Hotspot & tethering
- Add summary text for Data usage -> Network restrictions
- Update summary for Hotspot & tethering -> Portable Wi-Fi hotspot
- Remove quotes from Wi-Fi summary
Bug: 36296257
Test: make RunSettingsRoboTests
Change-Id: Ibab61b089521a3339e660e9df0db0cd1b316712b
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index 0a0eed2..61cad39 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -132,6 +132,8 @@
super.onCreate(icicle);
addPreferencesFromResource(R.xml.tether_prefs);
+ mFooterPreferenceMixin.createFooterPreference()
+ .setTitle(R.string.tethering_footer_info);
mDataSaverBackend = new DataSaverBackend(getContext());
mDataSaverEnabled = mDataSaverBackend.isDataSaverEnabled();
diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java
index 41dc78f..8eb1f61 100644
--- a/src/com/android/settings/datausage/DataUsageSummary.java
+++ b/src/com/android/settings/datausage/DataUsageSummary.java
@@ -20,13 +20,18 @@
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;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserManager;
import android.provider.SearchIndexableResource;
+import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.telephony.SubscriptionInfo;
@@ -56,6 +61,7 @@
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 {
@@ -68,6 +74,7 @@
private static final String KEY_STATUS_HEADER = "status_header";
private static final String KEY_LIMIT_SUMMARY = "limit_summary";
private static final String KEY_RESTRICT_BACKGROUND = "restrict_background";
+ private static final String KEY_NETWORK_RESTRICTIONS = "network_restrictions";
private DataUsageController mDataUsageController;
private DataUsageInfoController mDataInfoController;
@@ -75,6 +82,10 @@
private Preference mLimitPreference;
private NetworkTemplate mDefaultTemplate;
private int mDataUsageTemplate;
+ private NetworkRestrictionsPreference mNetworkRestrcitionPreference;
+ private WifiManager mWifiManager;
+ private NetworkPolicyManager mPolicyManager;
+ private NetworkPolicyEditor mPolicyEditor;
@Override
protected int getHelpResource() {
@@ -85,16 +96,21 @@
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
- boolean hasMobileData = hasMobileData(getContext());
- mDataUsageController = new DataUsageController(getContext());
+ final Context context = getContext();
+ mPolicyManager = NetworkPolicyManager.from(context);
+ mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ mPolicyEditor = new NetworkPolicyEditor(mPolicyManager);
+
+ boolean hasMobileData = hasMobileData(context);
+ mDataUsageController = new DataUsageController(context);
mDataInfoController = new DataUsageInfoController();
addPreferencesFromResource(R.xml.data_usage);
- int defaultSubId = getDefaultSubscriptionId(getContext());
+ int defaultSubId = getDefaultSubscriptionId(context);
if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
hasMobileData = false;
}
- mDefaultTemplate = getDefaultTemplate(getContext(), defaultSubId);
+ mDefaultTemplate = getDefaultTemplate(context, defaultSubId);
mSummaryPreference = (SummaryPreference) findPreference(KEY_STATUS_HEADER);
if (!hasMobileData || !isAdmin()) {
@@ -115,11 +131,11 @@
removePreference(KEY_LIMIT_SUMMARY);
mSummaryPreference.setSelectable(false);
}
- boolean hasWifiRadio = hasWifiRadio(getContext());
+ boolean hasWifiRadio = hasWifiRadio(context);
if (hasWifiRadio) {
addWifiSection();
}
- if (hasEthernet(getContext())) {
+ if (hasEthernet(context)) {
addEthernetSection();
}
mDataUsageTemplate = hasMobileData ? R.string.cell_data_template
@@ -171,6 +187,8 @@
TemplatePreferenceCategory category = (TemplatePreferenceCategory)
inflatePreferences(R.xml.data_usage_wifi);
category.setTemplate(NetworkTemplate.buildTemplateWifiWildcard(), 0, services);
+ mNetworkRestrcitionPreference =
+ (NetworkRestrictionsPreference) category.findPreference(KEY_NETWORK_RESTRICTIONS);
}
private void addEthernetSection() {
@@ -259,6 +277,8 @@
mLimitPreference.setSummary(null);
}
+ updateNetworkRestrictionSummary(mNetworkRestrcitionPreference);
+
PreferenceScreen screen = getPreferenceScreen();
for (int i = 1; i < screen.getPreferenceCount(); i++) {
((TemplatePreferenceCategory) screen.getPreference(i)).pushTemplates(services);
@@ -362,6 +382,39 @@
}
}
+ @VisibleForTesting
+ void updateNetworkRestrictionSummary(NetworkRestrictionsPreference preference) {
+ if (preference == null) {
+ return;
+ }
+ mPolicyEditor.read();
+ int count = 0;
+ for (WifiConfiguration config : mWifiManager.getConfiguredNetworks()) {
+ if (isMetered(config)) {
+ count++;
+ }
+ }
+ preference.setSummary(getResources().getQuantityString(
+ 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 {
diff --git a/src/com/android/settings/wifi/WifiApEnabler.java b/src/com/android/settings/wifi/WifiApEnabler.java
index 760879e..8e577a4 100644
--- a/src/com/android/settings/wifi/WifiApEnabler.java
+++ b/src/com/android/settings/wifi/WifiApEnabler.java
@@ -28,7 +28,6 @@
import com.android.settings.R;
import com.android.settings.datausage.DataSaverBackend;
-import com.android.settingslib.TetherUtil;
import java.util.ArrayList;
@@ -140,6 +139,8 @@
updateConfigSummary(wifiConfig);
} else if (wifiErrored) {
mSwitch.setSummary(R.string.wifi_error);
+ } else {
+ mSwitch.setSummary(R.string.wifi_hotspot_off_subtext);
}
}
diff --git a/src/com/android/settings/wifi/WifiSummaryUpdater.java b/src/com/android/settings/wifi/WifiSummaryUpdater.java
index 533ee07..c0d4468 100644
--- a/src/com/android/settings/wifi/WifiSummaryUpdater.java
+++ b/src/com/android/settings/wifi/WifiSummaryUpdater.java
@@ -26,6 +26,8 @@
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.
@@ -78,7 +80,7 @@
if (!mWifiTracker.connected) {
return mContext.getString(R.string.disconnected);
}
- return mWifiTracker.ssid;
+ return removeDoubleQuotes(mWifiTracker.ssid);
}
}