Refactor few public static methods.
Move public static methods from DataUsageSummary to DataUsageBase. Bug: 62349208 Test: make RunSettingsRoboTests -j40 Change-Id: I632f75f4c4f370fb225a9787267043fec20994e5
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
/**
|
/*
|
||||||
* Copyright (C) 2007 The Android Open Source Project
|
* Copyright (C) 2007 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
@@ -67,7 +67,6 @@ import android.view.MenuItem;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.webkit.IWebViewUpdateService;
|
import android.webkit.IWebViewUpdateService;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.internal.os.BatterySipper;
|
import com.android.internal.os.BatterySipper;
|
||||||
import com.android.internal.os.BatteryStatsHelper;
|
import com.android.internal.os.BatteryStatsHelper;
|
||||||
@@ -86,6 +85,7 @@ import com.android.settings.datausage.AppDataUsage;
|
|||||||
import com.android.settings.datausage.DataUsageList;
|
import com.android.settings.datausage.DataUsageList;
|
||||||
import com.android.settings.datausage.DataUsageSummary;
|
import com.android.settings.datausage.DataUsageSummary;
|
||||||
import com.android.settings.development.DevelopmentSettingsEnabler;
|
import com.android.settings.development.DevelopmentSettingsEnabler;
|
||||||
|
import com.android.settings.datausage.DataUsageUtils;
|
||||||
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
|
import com.android.settings.fuelgauge.AdvancedPowerUsageDetail;
|
||||||
import com.android.settings.fuelgauge.BatteryEntry;
|
import com.android.settings.fuelgauge.BatteryEntry;
|
||||||
import com.android.settings.fuelgauge.BatteryStatsHelperLoader;
|
import com.android.settings.fuelgauge.BatteryStatsHelperLoader;
|
||||||
@@ -105,7 +105,6 @@ import com.android.settingslib.applications.StorageStatsSource;
|
|||||||
import com.android.settingslib.applications.StorageStatsSource.AppStorageStats;
|
import com.android.settingslib.applications.StorageStatsSource.AppStorageStats;
|
||||||
import com.android.settingslib.net.ChartData;
|
import com.android.settingslib.net.ChartData;
|
||||||
import com.android.settingslib.net.ChartDataLoader;
|
import com.android.settingslib.net.ChartDataLoader;
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -1303,7 +1302,7 @@ public class InstalledAppDetails extends AppInfoBase
|
|||||||
if (DataUsageList.hasReadyMobileRadio(context)) {
|
if (DataUsageList.hasReadyMobileRadio(context)) {
|
||||||
return NetworkTemplate.buildTemplateMobileWildcard();
|
return NetworkTemplate.buildTemplateMobileWildcard();
|
||||||
}
|
}
|
||||||
if (DataUsageSummary.hasWifiRadio(context)) {
|
if (DataUsageUtils.hasWifiRadio(context)) {
|
||||||
return NetworkTemplate.buildTemplateWifiWildcard();
|
return NetworkTemplate.buildTemplateWifiWildcard();
|
||||||
}
|
}
|
||||||
return NetworkTemplate.buildTemplateEthernet();
|
return NetworkTemplate.buildTemplateEthernet();
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
|
|
||||||
package com.android.settings.datausage;
|
package com.android.settings.datausage;
|
||||||
|
|
||||||
|
import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.LoaderManager;
|
import android.app.LoaderManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -39,7 +41,6 @@ import android.util.IconDrawableFactory;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.applications.AppInfoBase;
|
import com.android.settings.applications.AppInfoBase;
|
||||||
@@ -52,8 +53,6 @@ import com.android.settingslib.net.ChartDataLoader;
|
|||||||
import com.android.settingslib.net.UidDetail;
|
import com.android.settingslib.net.UidDetail;
|
||||||
import com.android.settingslib.net.UidDetailProvider;
|
import com.android.settingslib.net.UidDetailProvider;
|
||||||
|
|
||||||
import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
|
|
||||||
|
|
||||||
public class AppDataUsage extends DataUsageBase implements Preference.OnPreferenceChangeListener,
|
public class AppDataUsage extends DataUsageBase implements Preference.OnPreferenceChangeListener,
|
||||||
DataSaverBackend.Listener {
|
DataSaverBackend.Listener {
|
||||||
|
|
||||||
@@ -117,8 +116,8 @@ public class AppDataUsage extends DataUsageBase implements Preference.OnPreferen
|
|||||||
: null;
|
: null;
|
||||||
if (mTemplate == null) {
|
if (mTemplate == null) {
|
||||||
Context context = getContext();
|
Context context = getContext();
|
||||||
mTemplate = DataUsageSummary.getDefaultTemplate(context,
|
mTemplate = DataUsageUtils.getDefaultTemplate(context,
|
||||||
DataUsageSummary.getDefaultSubscriptionId(context));
|
DataUsageUtils.getDefaultSubscriptionId(context));
|
||||||
}
|
}
|
||||||
if (mAppItem == null) {
|
if (mAppItem == null) {
|
||||||
int uid = (args != null) ? args.getInt(AppInfoBase.ARG_PACKAGE_UID, -1)
|
int uid = (args != null) ? args.getInt(AppInfoBase.ARG_PACKAGE_UID, -1)
|
||||||
|
@@ -14,9 +14,6 @@
|
|||||||
|
|
||||||
package com.android.settings.datausage;
|
package com.android.settings.datausage;
|
||||||
|
|
||||||
import com.android.settings.SettingsPreferenceFragment;
|
|
||||||
import com.android.settingslib.NetworkPolicyEditor;
|
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.INetworkStatsService;
|
import android.net.INetworkStatsService;
|
||||||
import android.net.NetworkPolicy;
|
import android.net.NetworkPolicy;
|
||||||
@@ -29,9 +26,10 @@ import android.os.UserManager;
|
|||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
|
import com.android.settingslib.NetworkPolicyEditor;
|
||||||
|
|
||||||
public abstract class DataUsageBase extends SettingsPreferenceFragment {
|
public abstract class DataUsageBase extends SettingsPreferenceFragment {
|
||||||
|
|
||||||
private static final String TAG = "DataUsageBase";
|
private static final String TAG = "DataUsageBase";
|
||||||
|
|
||||||
protected final TemplatePreference.NetworkServices services =
|
protected final TemplatePreference.NetworkServices services =
|
||||||
|
@@ -14,6 +14,12 @@
|
|||||||
|
|
||||||
package com.android.settings.datausage;
|
package com.android.settings.datausage;
|
||||||
|
|
||||||
|
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
||||||
|
import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
|
||||||
|
import static android.net.TrafficStats.UID_REMOVED;
|
||||||
|
import static android.net.TrafficStats.UID_TETHERING;
|
||||||
|
import static android.telephony.TelephonyManager.SIM_STATE_READY;
|
||||||
|
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.LoaderManager.LoaderCallbacks;
|
import android.app.LoaderManager.LoaderCallbacks;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
@@ -46,7 +52,6 @@ import android.view.View;
|
|||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.AdapterView.OnItemSelectedListener;
|
import android.widget.AdapterView.OnItemSelectedListener;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.datausage.CycleAdapter.SpinnerInterface;
|
import com.android.settings.datausage.CycleAdapter.SpinnerInterface;
|
||||||
@@ -56,19 +61,10 @@ import com.android.settingslib.net.ChartData;
|
|||||||
import com.android.settingslib.net.ChartDataLoader;
|
import com.android.settingslib.net.ChartDataLoader;
|
||||||
import com.android.settingslib.net.SummaryForAllUidLoader;
|
import com.android.settingslib.net.SummaryForAllUidLoader;
|
||||||
import com.android.settingslib.net.UidDetailProvider;
|
import com.android.settingslib.net.UidDetailProvider;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
|
||||||
import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
|
|
||||||
import static android.net.TrafficStats.UID_REMOVED;
|
|
||||||
import static android.net.TrafficStats.UID_TETHERING;
|
|
||||||
import static android.telephony.TelephonyManager.SIM_STATE_READY;
|
|
||||||
import static com.android.settings.datausage.DataUsageSummary.TEST_RADIOS;
|
|
||||||
import static com.android.settings.datausage.DataUsageSummary.TEST_RADIOS_PROP;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Panel showing data usage history across various networks, including options
|
* Panel showing data usage history across various networks, including options
|
||||||
* to inspect based on usage cycle and control through {@link NetworkPolicy}.
|
* to inspect based on usage cycle and control through {@link NetworkPolicy}.
|
||||||
@@ -442,8 +438,8 @@ public class DataUsageList extends DataUsageBase {
|
|||||||
* Test if device has a mobile data radio with SIM in ready state.
|
* Test if device has a mobile data radio with SIM in ready state.
|
||||||
*/
|
*/
|
||||||
public static boolean hasReadyMobileRadio(Context context) {
|
public static boolean hasReadyMobileRadio(Context context) {
|
||||||
if (TEST_RADIOS) {
|
if (DataUsageUtils.TEST_RADIOS) {
|
||||||
return SystemProperties.get(TEST_RADIOS_PROP).contains("mobile");
|
return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile");
|
||||||
}
|
}
|
||||||
|
|
||||||
final ConnectivityManager conn = ConnectivityManager.from(context);
|
final ConnectivityManager conn = ConnectivityManager.from(context);
|
||||||
@@ -476,8 +472,8 @@ public class DataUsageList extends DataUsageBase {
|
|||||||
* TODO: consider adding to TelephonyManager or SubscriptionManager.
|
* TODO: consider adding to TelephonyManager or SubscriptionManager.
|
||||||
*/
|
*/
|
||||||
public static boolean hasReadyMobileRadio(Context context, int subId) {
|
public static boolean hasReadyMobileRadio(Context context, int subId) {
|
||||||
if (TEST_RADIOS) {
|
if (DataUsageUtils.TEST_RADIOS) {
|
||||||
return SystemProperties.get(TEST_RADIOS_PROP).contains("mobile");
|
return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile");
|
||||||
}
|
}
|
||||||
|
|
||||||
final ConnectivityManager conn = ConnectivityManager.from(context);
|
final ConnectivityManager conn = ConnectivityManager.from(context);
|
||||||
|
@@ -16,8 +16,6 @@ package com.android.settings.datausage;
|
|||||||
|
|
||||||
import static android.net.wifi.WifiInfo.removeDoubleQuotes;
|
import static android.net.wifi.WifiInfo.removeDoubleQuotes;
|
||||||
|
|
||||||
import static com.android.settings.datausage.DataUsageSummary.hasWifiRadio;
|
|
||||||
|
|
||||||
import android.app.backup.BackupManager;
|
import android.app.backup.BackupManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
@@ -29,7 +27,6 @@ import android.support.v7.preference.DropDownPreference;
|
|||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceCategory;
|
import android.support.v7.preference.PreferenceCategory;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
@@ -37,7 +34,6 @@ import com.android.settings.search.BaseSearchIndexProvider;
|
|||||||
import com.android.settings.search.Indexable;
|
import com.android.settings.search.Indexable;
|
||||||
import com.android.settings.search.SearchIndexableRaw;
|
import com.android.settings.search.SearchIndexableRaw;
|
||||||
import com.android.settingslib.NetworkPolicyEditor;
|
import com.android.settingslib.NetworkPolicyEditor;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -83,7 +79,7 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment impleme
|
|||||||
getPreferenceScreen().removePreference(mMobileCategory);
|
getPreferenceScreen().removePreference(mMobileCategory);
|
||||||
|
|
||||||
mWifiCategory.removeAll();
|
mWifiCategory.removeAll();
|
||||||
if (hasWifiRadio(context) && mWifiManager.isWifiEnabled()) {
|
if (DataUsageUtils.hasWifiRadio(context) && mWifiManager.isWifiEnabled()) {
|
||||||
for (WifiConfiguration config : mWifiManager.getConfiguredNetworks()) {
|
for (WifiConfiguration config : mWifiManager.getConfiguredNetworks()) {
|
||||||
final Preference pref = new MeteredPreference(getPrefContext(), config);
|
final Preference pref = new MeteredPreference(getPrefContext(), config);
|
||||||
if (!TextUtils.isEmpty(pref.getTitle())) {
|
if (!TextUtils.isEmpty(pref.getTitle())) {
|
||||||
@@ -162,7 +158,7 @@ public class DataUsageMeteredSettings extends SettingsPreferenceFragment impleme
|
|||||||
|
|
||||||
final WifiManager wifiManager =
|
final WifiManager wifiManager =
|
||||||
(WifiManager) context.getSystemService(Context.WIFI_SERVICE);
|
(WifiManager) context.getSystemService(Context.WIFI_SERVICE);
|
||||||
if (hasWifiRadio(context) && wifiManager.isWifiEnabled()) {
|
if (DataUsageUtils.hasWifiRadio(context) && wifiManager.isWifiEnabled()) {
|
||||||
for (WifiConfiguration config : wifiManager.getConfiguredNetworks()) {
|
for (WifiConfiguration config : wifiManager.getConfiguredNetworks()) {
|
||||||
if (config.SSID != null) {
|
if (config.SSID != null) {
|
||||||
final String networkId = config.SSID;
|
final String networkId = config.SSID;
|
||||||
|
@@ -15,7 +15,6 @@
|
|||||||
package com.android.settings.datausage;
|
package com.android.settings.datausage;
|
||||||
|
|
||||||
import static android.net.ConnectivityManager.TYPE_ETHERNET;
|
import static android.net.ConnectivityManager.TYPE_ETHERNET;
|
||||||
import static android.net.ConnectivityManager.TYPE_WIFI;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
@@ -38,7 +37,6 @@ import android.support.v7.preference.Preference;
|
|||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
import android.telephony.SubscriptionInfo;
|
import android.telephony.SubscriptionInfo;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
|
||||||
import android.text.BidiFormatter;
|
import android.text.BidiFormatter;
|
||||||
import android.text.Spannable;
|
import android.text.Spannable;
|
||||||
import android.text.SpannableString;
|
import android.text.SpannableString;
|
||||||
@@ -48,7 +46,6 @@ import android.text.style.RelativeSizeSpan;
|
|||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SummaryPreference;
|
import com.android.settings.SummaryPreference;
|
||||||
@@ -58,7 +55,6 @@ import com.android.settings.search.BaseSearchIndexProvider;
|
|||||||
import com.android.settings.search.Indexable;
|
import com.android.settings.search.Indexable;
|
||||||
import com.android.settingslib.NetworkPolicyEditor;
|
import com.android.settingslib.NetworkPolicyEditor;
|
||||||
import com.android.settingslib.net.DataUsageController;
|
import com.android.settingslib.net.DataUsageController;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -66,9 +62,6 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
|
|||||||
|
|
||||||
static final boolean LOGD = false;
|
static final boolean LOGD = false;
|
||||||
|
|
||||||
public static final boolean TEST_RADIOS = false;
|
|
||||||
public static final String TEST_RADIOS_PROP = "test.radios";
|
|
||||||
|
|
||||||
public static final String KEY_RESTRICT_BACKGROUND = "restrict_background";
|
public static final String KEY_RESTRICT_BACKGROUND = "restrict_background";
|
||||||
public static final String KEY_NETWORK_RESTRICTIONS = "network_restrictions";
|
public static final String KEY_NETWORK_RESTRICTIONS = "network_restrictions";
|
||||||
|
|
||||||
@@ -101,16 +94,16 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
|
|||||||
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
|
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
|
||||||
mPolicyEditor = new NetworkPolicyEditor(policyManager);
|
mPolicyEditor = new NetworkPolicyEditor(policyManager);
|
||||||
|
|
||||||
boolean hasMobileData = hasMobileData(context);
|
boolean hasMobileData = DataUsageUtils.hasMobileData(context);
|
||||||
mDataUsageController = new DataUsageController(context);
|
mDataUsageController = new DataUsageController(context);
|
||||||
mDataInfoController = new DataUsageInfoController();
|
mDataInfoController = new DataUsageInfoController();
|
||||||
addPreferencesFromResource(R.xml.data_usage);
|
addPreferencesFromResource(R.xml.data_usage);
|
||||||
|
|
||||||
int defaultSubId = getDefaultSubscriptionId(context);
|
int defaultSubId = DataUsageUtils.getDefaultSubscriptionId(context);
|
||||||
if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||||
hasMobileData = false;
|
hasMobileData = false;
|
||||||
}
|
}
|
||||||
mDefaultTemplate = getDefaultTemplate(context, defaultSubId);
|
mDefaultTemplate = DataUsageUtils.getDefaultTemplate(context, defaultSubId);
|
||||||
mSummaryPreference = (SummaryPreference) findPreference(KEY_STATUS_HEADER);
|
mSummaryPreference = (SummaryPreference) findPreference(KEY_STATUS_HEADER);
|
||||||
|
|
||||||
if (!hasMobileData || !isAdmin()) {
|
if (!hasMobileData || !isAdmin()) {
|
||||||
@@ -136,7 +129,7 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
|
|||||||
removePreference(KEY_LIMIT_SUMMARY);
|
removePreference(KEY_LIMIT_SUMMARY);
|
||||||
mSummaryPreference.setSelectable(false);
|
mSummaryPreference.setSelectable(false);
|
||||||
}
|
}
|
||||||
boolean hasWifiRadio = hasWifiRadio(context);
|
boolean hasWifiRadio = DataUsageUtils.hasWifiRadio(context);
|
||||||
if (hasWifiRadio) {
|
if (hasWifiRadio) {
|
||||||
addWifiSection();
|
addWifiSection();
|
||||||
}
|
}
|
||||||
@@ -322,8 +315,8 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
|
|||||||
* Test if device has an ethernet network connection.
|
* Test if device has an ethernet network connection.
|
||||||
*/
|
*/
|
||||||
public boolean hasEthernet(Context context) {
|
public boolean hasEthernet(Context context) {
|
||||||
if (TEST_RADIOS) {
|
if (DataUsageUtils.TEST_RADIOS) {
|
||||||
return SystemProperties.get(TEST_RADIOS_PROP).contains("ethernet");
|
return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("ethernet");
|
||||||
}
|
}
|
||||||
|
|
||||||
final ConnectivityManager conn = ConnectivityManager.from(context);
|
final ConnectivityManager conn = ConnectivityManager.from(context);
|
||||||
@@ -348,53 +341,6 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
|
|||||||
return hasEthernet && ethernetBytes > 0;
|
return hasEthernet && ethernetBytes > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean hasMobileData(Context context) {
|
|
||||||
return ConnectivityManager.from(context).isNetworkSupported(
|
|
||||||
ConnectivityManager.TYPE_MOBILE);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test if device has a Wi-Fi data radio.
|
|
||||||
*/
|
|
||||||
public static boolean hasWifiRadio(Context context) {
|
|
||||||
if (TEST_RADIOS) {
|
|
||||||
return SystemProperties.get(TEST_RADIOS_PROP).contains("wifi");
|
|
||||||
}
|
|
||||||
|
|
||||||
final ConnectivityManager conn = ConnectivityManager.from(context);
|
|
||||||
return conn.isNetworkSupported(TYPE_WIFI);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getDefaultSubscriptionId(Context context) {
|
|
||||||
SubscriptionManager subManager = SubscriptionManager.from(context);
|
|
||||||
if (subManager == null) {
|
|
||||||
return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
|
||||||
}
|
|
||||||
SubscriptionInfo subscriptionInfo = subManager.getDefaultDataSubscriptionInfo();
|
|
||||||
if (subscriptionInfo == null) {
|
|
||||||
List<SubscriptionInfo> list = subManager.getAllSubscriptionInfoList();
|
|
||||||
if (list.size() == 0) {
|
|
||||||
return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
|
||||||
}
|
|
||||||
subscriptionInfo = list.get(0);
|
|
||||||
}
|
|
||||||
return subscriptionInfo.getSubscriptionId();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static NetworkTemplate getDefaultTemplate(Context context, int defaultSubId) {
|
|
||||||
if (hasMobileData(context) && defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
|
||||||
TelephonyManager telephonyManager = TelephonyManager.from(context);
|
|
||||||
NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll(
|
|
||||||
telephonyManager.getSubscriberId(defaultSubId));
|
|
||||||
return NetworkTemplate.normalize(mobileAll,
|
|
||||||
telephonyManager.getMergedSubscriberIds());
|
|
||||||
} else if (hasWifiRadio(context)) {
|
|
||||||
return NetworkTemplate.buildTemplateWifiWildcard();
|
|
||||||
} else {
|
|
||||||
return NetworkTemplate.buildTemplateEthernet();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void updateNetworkRestrictionSummary(NetworkRestrictionsPreference preference) {
|
void updateNetworkRestrictionSummary(NetworkRestrictionsPreference preference) {
|
||||||
if (preference == null) {
|
if (preference == null) {
|
||||||
@@ -459,12 +405,12 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
|
|||||||
resource.xmlResId = R.xml.data_usage;
|
resource.xmlResId = R.xml.data_usage;
|
||||||
resources.add(resource);
|
resources.add(resource);
|
||||||
|
|
||||||
if (hasMobileData(context)) {
|
if (DataUsageUtils.hasMobileData(context)) {
|
||||||
resource = new SearchIndexableResource(context);
|
resource = new SearchIndexableResource(context);
|
||||||
resource.xmlResId = R.xml.data_usage_cellular;
|
resource.xmlResId = R.xml.data_usage_cellular;
|
||||||
resources.add(resource);
|
resources.add(resource);
|
||||||
}
|
}
|
||||||
if (hasWifiRadio(context)) {
|
if (DataUsageUtils.hasWifiRadio(context)) {
|
||||||
resource = new SearchIndexableResource(context);
|
resource = new SearchIndexableResource(context);
|
||||||
resource.xmlResId = R.xml.data_usage_wifi;
|
resource.xmlResId = R.xml.data_usage_wifi;
|
||||||
resources.add(resource);
|
resources.add(resource);
|
||||||
@@ -476,10 +422,10 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
|
|||||||
public List<String> getNonIndexableKeys(Context context) {
|
public List<String> getNonIndexableKeys(Context context) {
|
||||||
List<String> keys = super.getNonIndexableKeys(context);
|
List<String> keys = super.getNonIndexableKeys(context);
|
||||||
|
|
||||||
if (hasMobileData(context)) {
|
if (DataUsageUtils.hasMobileData(context)) {
|
||||||
keys.add(KEY_RESTRICT_BACKGROUND);
|
keys.add(KEY_RESTRICT_BACKGROUND);
|
||||||
}
|
}
|
||||||
if (hasWifiRadio(context)) {
|
if (DataUsageUtils.hasWifiRadio(context)) {
|
||||||
keys.add(KEY_NETWORK_RESTRICTIONS);
|
keys.add(KEY_NETWORK_RESTRICTIONS);
|
||||||
}
|
}
|
||||||
keys.add(KEY_WIFI_USAGE_TITLE);
|
keys.add(KEY_WIFI_USAGE_TITLE);
|
||||||
|
97
src/com/android/settings/datausage/DataUsageUtils.java
Normal file
97
src/com/android/settings/datausage/DataUsageUtils.java
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2017 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
|
||||||
|
* except in compliance with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software distributed under the
|
||||||
|
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the specific language governing
|
||||||
|
* permissions and limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.datausage;
|
||||||
|
|
||||||
|
import static android.net.ConnectivityManager.TYPE_WIFI;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
|
import android.net.NetworkTemplate;
|
||||||
|
import android.os.SystemProperties;
|
||||||
|
import android.telephony.SubscriptionInfo;
|
||||||
|
import android.telephony.SubscriptionManager;
|
||||||
|
import android.telephony.TelephonyManager;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility methods for data usage classes.
|
||||||
|
*/
|
||||||
|
public final class DataUsageUtils {
|
||||||
|
static final boolean TEST_RADIOS = false;
|
||||||
|
static final String TEST_RADIOS_PROP = "test.radios";
|
||||||
|
|
||||||
|
private DataUsageUtils() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns whether device has mobile data.
|
||||||
|
* TODO: This is the opposite to Utils.isWifiOnly(), it should be refactored into 1 method.
|
||||||
|
*/
|
||||||
|
static boolean hasMobileData(Context context) {
|
||||||
|
ConnectivityManager connectivityManager = ConnectivityManager.from(context);
|
||||||
|
return connectivityManager != null && connectivityManager
|
||||||
|
.isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether device has a Wi-Fi data radio.
|
||||||
|
*/
|
||||||
|
public static boolean hasWifiRadio(Context context) {
|
||||||
|
if (TEST_RADIOS) {
|
||||||
|
return SystemProperties.get(TEST_RADIOS_PROP).contains("wifi");
|
||||||
|
}
|
||||||
|
|
||||||
|
ConnectivityManager connectivityManager = ConnectivityManager.from(context);
|
||||||
|
return connectivityManager != null && connectivityManager.isNetworkSupported(TYPE_WIFI);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the default subscription if available else returns
|
||||||
|
* SubscriptionManager#INVALID_SUBSCRIPTION_ID
|
||||||
|
*/
|
||||||
|
public static int getDefaultSubscriptionId(Context context) {
|
||||||
|
SubscriptionManager subManager = SubscriptionManager.from(context);
|
||||||
|
if (subManager == null) {
|
||||||
|
return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
|
}
|
||||||
|
SubscriptionInfo subscriptionInfo = subManager.getDefaultDataSubscriptionInfo();
|
||||||
|
if (subscriptionInfo == null) {
|
||||||
|
List<SubscriptionInfo> list = subManager.getAllSubscriptionInfoList();
|
||||||
|
if (list.size() == 0) {
|
||||||
|
return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
|
}
|
||||||
|
subscriptionInfo = list.get(0);
|
||||||
|
}
|
||||||
|
return subscriptionInfo.getSubscriptionId();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the default network template based on the availability of mobile data, Wifi. Returns
|
||||||
|
* ethernet template if both mobile data and Wifi are not available.
|
||||||
|
*/
|
||||||
|
static NetworkTemplate getDefaultTemplate(Context context, int defaultSubId) {
|
||||||
|
if (hasMobileData(context) && defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||||
|
TelephonyManager telephonyManager = TelephonyManager.from(context);
|
||||||
|
NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll(
|
||||||
|
telephonyManager.getSubscriberId(defaultSubId));
|
||||||
|
return NetworkTemplate.normalize(mobileAll,
|
||||||
|
telephonyManager.getMergedSubscriberIds());
|
||||||
|
} else if (hasWifiRadio(context)) {
|
||||||
|
return NetworkTemplate.buildTemplateWifiWildcard();
|
||||||
|
} else {
|
||||||
|
return NetworkTemplate.buildTemplateEthernet();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -16,19 +16,26 @@
|
|||||||
|
|
||||||
package com.android.settings.datausage;
|
package com.android.settings.datausage;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
import static org.mockito.Matchers.anyInt;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.spy;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.NetworkPolicy;
|
|
||||||
import android.net.wifi.WifiConfiguration;
|
import android.net.wifi.WifiConfiguration;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
|
||||||
import com.android.settings.TestConfig;
|
import com.android.settings.TestConfig;
|
||||||
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.XmlTestUtils;
|
import com.android.settings.testutils.XmlTestUtils;
|
||||||
import com.android.settings.testutils.shadow.ShadowConnectivityManager;
|
import com.android.settings.testutils.shadow.ShadowConnectivityManager;
|
||||||
import com.android.settingslib.NetworkPolicyEditor;
|
import com.android.settingslib.NetworkPolicyEditor;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@@ -39,18 +46,6 @@ import org.robolectric.annotation.Config;
|
|||||||
import org.robolectric.shadows.ShadowApplication;
|
import org.robolectric.shadows.ShadowApplication;
|
||||||
import org.robolectric.util.ReflectionHelpers;
|
import org.robolectric.util.ReflectionHelpers;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
|
||||||
import static org.mockito.Matchers.any;
|
|
||||||
import static org.mockito.Matchers.anyInt;
|
|
||||||
import static org.mockito.Mockito.doReturn;
|
|
||||||
import static org.mockito.Mockito.mock;
|
|
||||||
import static org.mockito.Mockito.spy;
|
|
||||||
import static org.mockito.Mockito.verify;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
public class DataUsageSummaryTest {
|
public class DataUsageSummaryTest {
|
||||||
@@ -71,12 +66,6 @@ public class DataUsageSummaryTest {
|
|||||||
when(mManager.isNetworkSupported(anyInt())).thenReturn(true);
|
when(mManager.isNetworkSupported(anyInt())).thenReturn(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testMobileDataStatus() {
|
|
||||||
boolean hasMobileData = DataUsageSummary.hasMobileData(mContext);
|
|
||||||
assertThat(hasMobileData).isTrue();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateNetworkRestrictionSummary_shouldSetSummary() {
|
public void testUpdateNetworkRestrictionSummary_shouldSetSummary() {
|
||||||
final DataUsageSummary dataUsageSummary = spy(new DataUsageSummary());
|
final DataUsageSummary dataUsageSummary = spy(new DataUsageSummary());
|
||||||
|
@@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2017 The Android Open Source Project
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.android.settings.datausage;
|
||||||
|
|
||||||
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
import static org.mockito.Matchers.anyInt;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
|
import com.android.settings.TestConfig;
|
||||||
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockitoAnnotations;
|
||||||
|
import org.robolectric.annotation.Config;
|
||||||
|
import org.robolectric.shadows.ShadowApplication;
|
||||||
|
|
||||||
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
|
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
|
||||||
|
public final class DataUsageUtilsTest {
|
||||||
|
@Mock private ConnectivityManager mManager;
|
||||||
|
private Context mContext;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
MockitoAnnotations.initMocks(this);
|
||||||
|
ShadowApplication shadowContext = ShadowApplication.getInstance();
|
||||||
|
mContext = shadowContext.getApplicationContext();
|
||||||
|
shadowContext.setSystemService(Context.CONNECTIVITY_SERVICE, mManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void mobileDataStatus_whenNetworkIsSupported() {
|
||||||
|
when(mManager.isNetworkSupported(anyInt())).thenReturn(true);
|
||||||
|
boolean hasMobileData = DataUsageUtils.hasMobileData(mContext);
|
||||||
|
assertThat(hasMobileData).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void mobileDataStatus_whenNetworkIsNotSupported() {
|
||||||
|
when(mManager.isNetworkSupported(anyInt())).thenReturn(false);
|
||||||
|
boolean hasMobileData = DataUsageUtils.hasMobileData(mContext);
|
||||||
|
assertThat(hasMobileData).isFalse();
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user