Remove DataSummaryUsageLegacy.
Change-Id: I8da039530cafe547008b434b6016add5f9383e94
Fixes: 109943959
Test: robotest/atest
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 651c3a7..0d85062 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -76,7 +76,6 @@
public static class CryptKeeperSettingsActivity extends SettingsActivity { /* empty */ }
public static class DeviceAdminSettingsActivity extends SettingsActivity { /* empty */ }
public static class DataUsageSummaryActivity extends SettingsActivity { /* empty */ }
- public static class DataUsageSummaryLegacyActivity extends SettingsActivity { /* empty */ }
public static class MobileDataUsageListActivity extends SettingsActivity { /* empty */ }
public static class ConfigureWifiSettingsActivity extends SettingsActivity { /* empty */ }
public static class SavedAccessPointsSettingsActivity extends SettingsActivity { /* empty */ }
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 5d6ea4d..8b9b912 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -664,17 +664,9 @@
Settings.PowerUsageSummaryActivity.class.getName()),
mBatteryPresent, isAdmin) || somethingChanged;
- final boolean isDataUsageSettingsV2Enabled =
- FeatureFlagUtils.isEnabled(this, FeatureFlags.DATA_USAGE_SETTINGS_V2);
- // Enable new data usage page if v2 enabled
somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,
Settings.DataUsageSummaryActivity.class.getName()),
- Utils.isBandwidthControlEnabled() && isDataUsageSettingsV2Enabled, isAdmin)
- || somethingChanged;
- // Enable legacy data usage page if v2 disabled
- somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,
- Settings.DataUsageSummaryLegacyActivity.class.getName()),
- Utils.isBandwidthControlEnabled() && !isDataUsageSettingsV2Enabled, isAdmin)
+ Utils.isBandwidthControlEnabled(), isAdmin)
|| somethingChanged;
somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,
diff --git a/src/com/android/settings/core/FeatureFlags.java b/src/com/android/settings/core/FeatureFlags.java
index a1bce23..47da6cf 100644
--- a/src/com/android/settings/core/FeatureFlags.java
+++ b/src/com/android/settings/core/FeatureFlags.java
@@ -23,6 +23,5 @@
public static final String BATTERY_DISPLAY_APP_LIST = "settings_battery_display_app_list";
public static final String ZONE_PICKER_V2 = "settings_zone_picker_v2";
public static final String BLUETOOTH_WHILE_DRIVING = "settings_bluetooth_while_driving";
- public static final String DATA_USAGE_SETTINGS_V2 = "settings_data_usage_v2";
public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher";
}
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index 6cf29597..a050628 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -59,7 +59,6 @@
import com.android.settings.connecteddevice.usb.UsbDetailsFragment;
import com.android.settings.datausage.DataUsageList;
import com.android.settings.datausage.DataUsageSummary;
-import com.android.settings.datausage.DataUsageSummaryLegacy;
import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
import com.android.settings.development.DevelopmentSettingsDashboardFragment;
import com.android.settings.deviceinfo.PrivateVolumeForget;
@@ -192,7 +191,6 @@
SwipeUpGestureSettings.class.getName(),
CryptKeeperSettings.class.getName(),
DataUsageSummary.class.getName(),
- DataUsageSummaryLegacy.class.getName(),
DreamSettings.class.getName(),
UserSettings.class.getName(),
NotificationAccessSettings.class.getName(),
diff --git a/src/com/android/settings/dashboard/conditional/BackgroundDataCondition.java b/src/com/android/settings/dashboard/conditional/BackgroundDataCondition.java
index a7e160f..d5372a2 100644
--- a/src/com/android/settings/dashboard/conditional/BackgroundDataCondition.java
+++ b/src/com/android/settings/dashboard/conditional/BackgroundDataCondition.java
@@ -18,12 +18,10 @@
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.NetworkPolicyManager;
-import android.util.FeatureFlagUtils;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.Settings;
-import com.android.settings.core.FeatureFlags;
public class BackgroundDataCondition extends Condition {
@@ -58,11 +56,8 @@
@Override
public void onPrimaryClick() {
- final Class activityClass = FeatureFlagUtils.isEnabled(mManager.getContext(),
- FeatureFlags.DATA_USAGE_SETTINGS_V2)
- ? Settings.DataUsageSummaryActivity.class
- : Settings.DataUsageSummaryLegacyActivity.class;
- mManager.getContext().startActivity(new Intent(mManager.getContext(), activityClass)
+ mManager.getContext().startActivity(new Intent(mManager.getContext(),
+ Settings.DataUsageSummaryActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
diff --git a/src/com/android/settings/datausage/BillingCyclePreference.java b/src/com/android/settings/datausage/BillingCyclePreference.java
index 7d454a1..70a123f 100644
--- a/src/com/android/settings/datausage/BillingCyclePreference.java
+++ b/src/com/android/settings/datausage/BillingCyclePreference.java
@@ -14,24 +14,20 @@
package com.android.settings.datausage;
-import static android.net.NetworkPolicy.CYCLE_NONE;
-
import android.content.Context;
import android.content.Intent;
import android.net.NetworkTemplate;
import android.os.Bundle;
import android.os.RemoteException;
-import androidx.preference.Preference;
import android.util.AttributeSet;
-import android.util.FeatureFlagUtils;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
-
-import com.android.settings.core.FeatureFlags;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.datausage.CellDataPreference.DataStateListener;
+import androidx.preference.Preference;
+
public class BillingCyclePreference extends Preference implements TemplatePreference {
private NetworkTemplate mTemplate;
@@ -60,14 +56,8 @@
mTemplate = template;
mSubId = subId;
mServices = services;
- final int cycleDay = services.mPolicyEditor.getPolicyCycleDay(mTemplate);
- if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.DATA_USAGE_SETTINGS_V2)) {
- setSummary(null);
- } else if (cycleDay != CYCLE_NONE) {
- setSummary(getContext().getString(R.string.billing_cycle_fragment_summary, cycleDay));
- } else {
- setSummary(null);
- }
+ setSummary(null);
+
setIntent(getIntent());
}
diff --git a/src/com/android/settings/datausage/BillingCycleSettings.java b/src/com/android/settings/datausage/BillingCycleSettings.java
index 5cdf22a..8360df8 100644
--- a/src/com/android/settings/datausage/BillingCycleSettings.java
+++ b/src/com/android/settings/datausage/BillingCycleSettings.java
@@ -14,7 +14,6 @@
package com.android.settings.datausage;
-import static android.net.NetworkPolicy.CYCLE_NONE;
import static android.net.NetworkPolicy.LIMIT_DISABLED;
import static android.net.NetworkPolicy.WARNING_DISABLED;
@@ -27,10 +26,7 @@
import android.net.NetworkPolicy;
import android.net.NetworkTemplate;
import android.os.Bundle;
-import androidx.preference.SwitchPreference;
-import androidx.preference.Preference;
import android.text.format.Time;
-import android.util.FeatureFlagUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -41,11 +37,13 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settingslib.NetworkPolicyEditor;
import com.android.settingslib.net.DataUsageController;
+import androidx.preference.Preference;
+import androidx.preference.SwitchPreference;
+
public class BillingCycleSettings extends DataUsageBase implements
Preference.OnPreferenceChangeListener, DataUsageEditController {
@@ -63,7 +61,8 @@
private static final String KEY_BILLING_CYCLE = "billing_cycle";
private static final String KEY_SET_DATA_WARNING = "set_data_warning";
private static final String KEY_DATA_WARNING = "data_warning";
- @VisibleForTesting static final String KEY_SET_DATA_LIMIT = "set_data_limit";
+ @VisibleForTesting
+ static final String KEY_SET_DATA_LIMIT = "set_data_limit";
private static final String KEY_DATA_LIMIT = "data_limit";
private NetworkTemplate mNetworkTemplate;
@@ -76,11 +75,11 @@
@VisibleForTesting
void setUpForTest(NetworkPolicyEditor policyEditor,
- Preference billingCycle,
- Preference dataLimit,
- Preference dataWarning,
- SwitchPreference enableLimit,
- SwitchPreference enableWarning) {
+ Preference billingCycle,
+ Preference dataLimit,
+ Preference dataWarning,
+ SwitchPreference enableLimit,
+ SwitchPreference enableWarning) {
services.mPolicyEditor = policyEditor;
mBillingCycle = billingCycle;
mDataLimit = dataLimit;
@@ -118,14 +117,7 @@
@VisibleForTesting
void updatePrefs() {
- final int cycleDay = services.mPolicyEditor.getPolicyCycleDay(mNetworkTemplate);
- if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.DATA_USAGE_SETTINGS_V2)) {
- mBillingCycle.setSummary(null);
- } else if (cycleDay != CYCLE_NONE) {
- mBillingCycle.setSummary(getString(R.string.billing_cycle_fragment_summary, cycleDay));
- } else {
- mBillingCycle.setSummary(null);
- }
+ mBillingCycle.setSummary(null);
final long warningBytes = services.mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate);
if (warningBytes != WARNING_DISABLED) {
mDataWarning.setSummary(DataUsageUtils.formatDataUsage(getContext(), warningBytes));
@@ -402,7 +394,8 @@
*/
public static class ConfirmLimitFragment extends InstrumentedDialogFragment implements
DialogInterface.OnClickListener {
- @VisibleForTesting static final String EXTRA_LIMIT_BYTES = "limitBytes";
+ @VisibleForTesting
+ static final String EXTRA_LIMIT_BYTES = "limitBytes";
public static final float FLOAT = 1.2f;
public static void show(BillingCycleSettings parent) {
diff --git a/src/com/android/settings/datausage/DataUsageBase.java b/src/com/android/settings/datausage/DataUsageBase.java
index b889a2f..c5df0bb 100644
--- a/src/com/android/settings/datausage/DataUsageBase.java
+++ b/src/com/android/settings/datausage/DataUsageBase.java
@@ -14,25 +14,19 @@
package com.android.settings.datausage;
-import static android.net.ConnectivityManager.TYPE_ETHERNET;
-
import android.content.Context;
-import android.net.ConnectivityManager;
import android.net.INetworkStatsService;
-import android.net.INetworkStatsSession;
import android.net.NetworkPolicy;
import android.net.NetworkPolicyManager;
-import android.net.NetworkTemplate;
-import android.net.TrafficStats;
import android.os.Bundle;
import android.os.INetworkManagementService;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.os.SystemProperties;
import android.os.UserManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.Log;
+
import com.android.settings.SettingsPreferenceFragment;
import com.android.settingslib.NetworkPolicyEditor;
@@ -99,34 +93,4 @@
return false;
}
}
-
- /**
- * Test if device has an ethernet network connection.
- */
- public boolean hasEthernet(Context context) {
- if (DataUsageUtils.TEST_RADIOS) {
- return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains(ETHERNET);
- }
-
- final ConnectivityManager conn = ConnectivityManager.from(context);
- final boolean hasEthernet = conn.isNetworkSupported(TYPE_ETHERNET);
-
- final long ethernetBytes;
- try {
- INetworkStatsSession statsSession = services.mStatsService.openSession();
- if (statsSession != null) {
- ethernetBytes = statsSession.getSummaryForNetwork(
- NetworkTemplate.buildTemplateEthernet(), Long.MIN_VALUE, Long.MAX_VALUE)
- .getTotalBytes();
- TrafficStats.closeQuietly(statsSession);
- } else {
- ethernetBytes = 0;
- }
- } catch (RemoteException e) {
- throw new RuntimeException(e);
- }
-
- // only show ethernet when both hardware present and traffic has occurred
- return hasEthernet && ethernetBytes > 0;
- }
}
diff --git a/src/com/android/settings/datausage/DataUsageBaseFragment.java b/src/com/android/settings/datausage/DataUsageBaseFragment.java
index e9c73ff..f6e88cc 100644
--- a/src/com/android/settings/datausage/DataUsageBaseFragment.java
+++ b/src/com/android/settings/datausage/DataUsageBaseFragment.java
@@ -14,27 +14,19 @@
package com.android.settings.datausage;
-import static android.net.ConnectivityManager.TYPE_ETHERNET;
-
import android.content.Context;
-import android.net.ConnectivityManager;
import android.net.INetworkStatsService;
-import android.net.INetworkStatsSession;
import android.net.NetworkPolicy;
import android.net.NetworkPolicyManager;
-import android.net.NetworkTemplate;
-import android.net.TrafficStats;
import android.os.Bundle;
import android.os.INetworkManagementService;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.os.SystemProperties;
import android.os.UserManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.Log;
-import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.NetworkPolicyEditor;
@@ -54,7 +46,7 @@
ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE));
services.mStatsService = INetworkStatsService.Stub.asInterface(
ServiceManager.getService(Context.NETWORK_STATS_SERVICE));
- services.mPolicyManager = (NetworkPolicyManager)context
+ services.mPolicyManager = (NetworkPolicyManager) context
.getSystemService(Context.NETWORK_POLICY_SERVICE);
services.mPolicyEditor = new NetworkPolicyEditor(services.mPolicyManager);
@@ -98,35 +90,4 @@
return false;
}
}
-
- /**
- * Test if device has an ethernet network connection.
- * TODO(b/77590489): Remove this method when DataUsageSummaryLegacy is deprecated.
- */
- public boolean hasEthernet(Context context) {
- if (DataUsageUtils.TEST_RADIOS) {
- return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains(ETHERNET);
- }
-
- final ConnectivityManager conn = ConnectivityManager.from(context);
- final boolean hasEthernet = conn.isNetworkSupported(TYPE_ETHERNET);
-
- final long ethernetBytes;
- try {
- INetworkStatsSession statsSession = services.mStatsService.openSession();
- if (statsSession != null) {
- ethernetBytes = statsSession.getSummaryForNetwork(
- NetworkTemplate.buildTemplateEthernet(), Long.MIN_VALUE, Long.MAX_VALUE)
- .getTotalBytes();
- TrafficStats.closeQuietly(statsSession);
- } else {
- ethernetBytes = 0;
- }
- } catch (RemoteException e) {
- throw new RuntimeException(e);
- }
-
- // only show ethernet when both hardware present and traffic has occurred
- return hasEthernet && ethernetBytes > 0;
- }
}
diff --git a/src/com/android/settings/datausage/DataUsagePreference.java b/src/com/android/settings/datausage/DataUsagePreference.java
index bb3902c..af8d6d4 100644
--- a/src/com/android/settings/datausage/DataUsagePreference.java
+++ b/src/com/android/settings/datausage/DataUsagePreference.java
@@ -19,17 +19,16 @@
import android.content.res.TypedArray;
import android.net.NetworkTemplate;
import android.os.Bundle;
-import androidx.core.content.res.TypedArrayUtils;
-import androidx.preference.Preference;
import android.util.AttributeSet;
-import android.util.FeatureFlagUtils;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
import com.android.settings.core.SubSettingLauncher;
import com.android.settingslib.net.DataUsageController;
+import androidx.core.content.res.TypedArrayUtils;
+import androidx.preference.Preference;
+
public class DataUsagePreference extends Preference implements TemplatePreference {
private NetworkTemplate mTemplate;
@@ -54,20 +53,13 @@
mSubId = subId;
DataUsageController controller = new DataUsageController(getContext());
DataUsageController.DataUsageInfo usageInfo = controller.getDataUsageInfo(mTemplate);
- if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.DATA_USAGE_SETTINGS_V2)) {
- if (mTemplate.isMatchRuleMobile()) {
- setTitle(R.string.app_cellular_data_usage);
- } else {
- setTitle(mTitleRes);
- setSummary(getContext().getString(R.string.data_usage_template,
- DataUsageUtils.formatDataUsage(getContext(), usageInfo.usageLevel),
- usageInfo.period));
- }
+ if (mTemplate.isMatchRuleMobile()) {
+ setTitle(R.string.app_cellular_data_usage);
} else {
setTitle(mTitleRes);
setSummary(getContext().getString(R.string.data_usage_template,
DataUsageUtils.formatDataUsage(getContext(), usageInfo.usageLevel),
- usageInfo.period));
+ usageInfo.period));
}
setIntent(getIntent());
}
@@ -81,18 +73,10 @@
.setArguments(args)
.setDestination(DataUsageList.class.getName())
.setSourceMetricsCategory(MetricsProto.MetricsEvent.VIEW_UNKNOWN);
- if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.DATA_USAGE_SETTINGS_V2)) {
- if (mTemplate.isMatchRuleMobile()) {
- launcher.setTitleRes(R.string.app_cellular_data_usage);
- } else {
- launcher.setTitleRes(mTitleRes);
- }
+ if (mTemplate.isMatchRuleMobile()) {
+ launcher.setTitleRes(R.string.app_cellular_data_usage);
} else {
- if (mTitleRes > 0) {
- launcher.setTitleRes(mTitleRes);
- } else {
- launcher.setTitleText(getTitle());
- }
+ launcher.setTitleRes(mTitleRes);
}
return launcher.toIntent();
}
diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java
index 1b012f1..58a5a8f 100644
--- a/src/com/android/settings/datausage/DataUsageSummary.java
+++ b/src/com/android/settings/datausage/DataUsageSummary.java
@@ -15,15 +15,10 @@
package com.android.settings.datausage;
import android.app.Activity;
-import android.content.ComponentName;
import android.content.Context;
-import android.content.Intent;
import android.net.NetworkTemplate;
import android.os.Bundle;
import android.provider.SearchIndexableResource;
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionPlan;
@@ -33,7 +28,6 @@
import android.text.TextUtils;
import android.text.format.Formatter;
import android.text.style.RelativeSizeSpan;
-import android.view.MenuItem;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
@@ -49,6 +43,10 @@
import java.util.ArrayList;
import java.util.List;
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
/**
* Settings preference fragment that displays data usage summary.
*/
@@ -121,20 +119,6 @@
}
@Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.data_usage_menu_cellular_networks: {
- final Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.setComponent(new ComponentName("com.android.phone",
- "com.android.phone.MobileNetworkSettings"));
- startActivity(intent);
- return true;
- }
- }
- return false;
- }
-
- @Override
public boolean onPreferenceTreeClick(Preference preference) {
if (preference == findPreference(KEY_STATUS_HEADER)) {
BillingCycleSettings.BytesEditorFragment.show(this, false);
diff --git a/src/com/android/settings/datausage/DataUsageSummaryLegacy.java b/src/com/android/settings/datausage/DataUsageSummaryLegacy.java
deleted file mode 100644
index f54d6ef..0000000
--- a/src/com/android/settings/datausage/DataUsageSummaryLegacy.java
+++ /dev/null
@@ -1,359 +0,0 @@
-/*
- * Copyright (C) 2016 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 android.app.Activity;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.net.NetworkPolicyManager;
-import android.net.NetworkTemplate;
-import android.os.Bundle;
-import android.os.UserManager;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.text.BidiFormatter;
-import android.text.Spannable;
-import android.text.SpannableString;
-import android.text.TextUtils;
-import android.text.format.Formatter;
-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;
-import com.android.settings.Utils;
-import com.android.settings.dashboard.SummaryLoader;
-import com.android.settings.search.Indexable;
-import com.android.settingslib.NetworkPolicyEditor;
-import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.net.DataUsageController;
-
-import java.util.List;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
-
-/**
- * Legacy {@link DataUsageSummary} fragment.
- */
-public class DataUsageSummaryLegacy extends DataUsageBaseFragment implements Indexable,
- DataUsageEditController {
-
- private static final String TAG = "DataUsageSummaryLegacy";
-
- static final boolean LOGD = false;
-
- public static final String KEY_RESTRICT_BACKGROUND = "restrict_background_legacy";
-
- private static final String KEY_STATUS_HEADER = "status_header";
- private static final String KEY_LIMIT_SUMMARY = "limit_summary";
-
- // Mobile data keys
- public static final String KEY_MOBILE_USAGE_TITLE = "mobile_category";
- public static final String KEY_MOBILE_DATA_USAGE_TOGGLE = "data_usage_enable";
- public static final String KEY_MOBILE_DATA_USAGE = "cellular_data_usage";
- public static final String KEY_MOBILE_BILLING_CYCLE = "billing_preference";
-
- // Wifi keys
- public static final String KEY_WIFI_USAGE_TITLE = "wifi_category";
- public static final String KEY_WIFI_DATA_USAGE = "wifi_data_usage";
-
- private DataUsageController mDataUsageController;
- private DataUsageInfoController mDataInfoController;
- private SummaryPreference mSummaryPreference;
- private Preference mLimitPreference;
- private NetworkTemplate mDefaultTemplate;
- private int mDataUsageTemplate;
- private NetworkPolicyEditor mPolicyEditor;
-
- @Override
- public int getHelpResource() {
- return R.string.help_url_data_usage;
- }
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- final Context context = getContext();
- NetworkPolicyManager policyManager = NetworkPolicyManager.from(context);
- mPolicyEditor = new NetworkPolicyEditor(policyManager);
-
- boolean hasMobileData = DataUsageUtils.hasMobileData(context);
- mDataUsageController = new DataUsageController(context);
- mDataInfoController = new DataUsageInfoController();
-
- int defaultSubId = DataUsageUtils.getDefaultSubscriptionId(context);
- if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
- hasMobileData = false;
- }
- mDefaultTemplate = DataUsageUtils.getDefaultTemplate(context, defaultSubId);
- mSummaryPreference = (SummaryPreference) findPreference(KEY_STATUS_HEADER);
-
- if (!hasMobileData || !isAdmin()) {
- removePreference(KEY_RESTRICT_BACKGROUND);
- }
- if (hasMobileData) {
- mLimitPreference = findPreference(KEY_LIMIT_SUMMARY);
- List<SubscriptionInfo> subscriptions =
- services.mSubscriptionManager.getActiveSubscriptionInfoList();
- if (subscriptions == null || subscriptions.size() == 0) {
- addMobileSection(defaultSubId);
- }
- for (int i = 0; subscriptions != null && i < subscriptions.size(); i++) {
- SubscriptionInfo subInfo = subscriptions.get(i);
- if (subscriptions.size() > 1) {
- addMobileSection(subInfo.getSubscriptionId(), subInfo);
- } else {
- addMobileSection(subInfo.getSubscriptionId());
- }
- }
- mSummaryPreference.setSelectable(true);
- } else {
- removePreference(KEY_LIMIT_SUMMARY);
- mSummaryPreference.setSelectable(false);
- }
- boolean hasWifiRadio = DataUsageUtils.hasWifiRadio(context);
- if (hasWifiRadio) {
- addWifiSection();
- }
- if (hasEthernet(context)) {
- addEthernetSection();
- }
- mDataUsageTemplate = hasMobileData ? R.string.cell_data_template
- : hasWifiRadio ? R.string.wifi_data_template
- : R.string.ethernet_data_template;
-
- setHasOptionsMenu(true);
- }
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- if (UserManager.get(getContext()).isAdminUser()) {
- inflater.inflate(R.menu.data_usage, menu);
- }
- super.onCreateOptionsMenu(menu, inflater);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.data_usage_menu_cellular_networks: {
- final Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.setComponent(new ComponentName("com.android.phone",
- "com.android.phone.MobileNetworkSettings"));
- startActivity(intent);
- return true;
- }
- }
- return false;
- }
-
- @Override
- public boolean onPreferenceTreeClick(Preference preference) {
- if (preference == findPreference(KEY_STATUS_HEADER)) {
- BillingCycleSettings.BytesEditorFragment.show(this, false);
- return false;
- }
- return super.onPreferenceTreeClick(preference);
- }
-
- @Override
- protected int getPreferenceScreenResId() {
- return R.xml.data_usage_legacy;
- }
-
- @Override
- protected String getLogTag() {
- return TAG;
- }
-
- @Override
- protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
- return null;
- }
-
- private void addMobileSection(int subId) {
- addMobileSection(subId, null);
- }
-
- private void addMobileSection(int subId, SubscriptionInfo subInfo) {
- TemplatePreferenceCategory category = (TemplatePreferenceCategory)
- inflatePreferences(R.xml.data_usage_cellular);
- category.setTemplate(getNetworkTemplate(subId), subId, services);
- category.pushTemplates(services);
- if (subInfo != null && !TextUtils.isEmpty(subInfo.getDisplayName())) {
- Preference title = category.findPreference(KEY_MOBILE_USAGE_TITLE);
- title.setTitle(subInfo.getDisplayName());
- }
- }
-
- private void addWifiSection() {
- TemplatePreferenceCategory category = (TemplatePreferenceCategory)
- inflatePreferences(R.xml.data_usage_wifi);
- category.setTemplate(NetworkTemplate.buildTemplateWifiWildcard(), 0, services);
- }
-
- private void addEthernetSection() {
- TemplatePreferenceCategory category = (TemplatePreferenceCategory)
- inflatePreferences(R.xml.data_usage_ethernet);
- category.setTemplate(NetworkTemplate.buildTemplateEthernet(), 0, services);
- }
-
- private Preference inflatePreferences(int resId) {
- PreferenceScreen rootPreferences = getPreferenceManager().inflateFromResource(
- getPrefContext(), resId, null);
- Preference pref = rootPreferences.getPreference(0);
- rootPreferences.removeAll();
-
- PreferenceScreen screen = getPreferenceScreen();
- pref.setOrder(screen.getPreferenceCount());
- screen.addPreference(pref);
-
- return pref;
- }
-
- private NetworkTemplate getNetworkTemplate(int subscriptionId) {
- NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll(
- services.mTelephonyManager.getSubscriberId(subscriptionId));
- return NetworkTemplate.normalize(mobileAll,
- services.mTelephonyManager.getMergedSubscriberIds());
- }
-
- @Override
- public void onResume() {
- super.onResume();
- updateState();
- }
-
- @VisibleForTesting
- static CharSequence formatUsage(Context context, String template, long usageLevel) {
- final float LARGER_SIZE = 1.25f * 1.25f; // (1/0.8)^2
- final float SMALLER_SIZE = 1.0f / LARGER_SIZE; // 0.8^2
- final int FLAGS = Spannable.SPAN_INCLUSIVE_INCLUSIVE;
-
- final Formatter.BytesResult usedResult = Formatter.formatBytes(context.getResources(),
- usageLevel, Formatter.FLAG_CALCULATE_ROUNDED);
- final SpannableString enlargedValue = new SpannableString(usedResult.value);
- enlargedValue.setSpan(new RelativeSizeSpan(LARGER_SIZE), 0, enlargedValue.length(), FLAGS);
-
- final SpannableString amountTemplate = new SpannableString(
- context.getString(com.android.internal.R.string.fileSizeSuffix)
- .replace("%1$s", "^1").replace("%2$s", "^2"));
- final CharSequence formattedUsage = TextUtils.expandTemplate(amountTemplate,
- enlargedValue, usedResult.units);
-
- final SpannableString fullTemplate = new SpannableString(template);
- fullTemplate.setSpan(new RelativeSizeSpan(SMALLER_SIZE), 0, fullTemplate.length(), FLAGS);
- return TextUtils.expandTemplate(fullTemplate,
- BidiFormatter.getInstance().unicodeWrap(formattedUsage.toString()));
- }
-
- private void updateState() {
- DataUsageController.DataUsageInfo info = mDataUsageController.getDataUsageInfo(
- mDefaultTemplate);
- Context context = getContext();
- mDataInfoController.updateDataLimit(info,
- services.mPolicyEditor.getPolicy(mDefaultTemplate));
-
- if (mSummaryPreference != null) {
- mSummaryPreference.setTitle(
- formatUsage(context, getString(mDataUsageTemplate), info.usageLevel));
- final long limit = mDataInfoController.getSummaryLimit(info);
- mSummaryPreference.setSummary(info.period);
- if (limit <= 0) {
- mSummaryPreference.setChartEnabled(false);
- } else {
- mSummaryPreference.setChartEnabled(true);
- mSummaryPreference.setLabels(Formatter.formatFileSize(context, 0),
- Formatter.formatFileSize(context, limit));
- mSummaryPreference.setRatios(info.usageLevel / (float) limit, 0,
- (limit - info.usageLevel) / (float) limit);
- }
- }
- if (mLimitPreference != null && (info.warningLevel > 0 || info.limitLevel > 0)) {
- String warning = Formatter.formatFileSize(context, info.warningLevel);
- String limit = Formatter.formatFileSize(context, info.limitLevel);
- mLimitPreference.setSummary(getString(info.limitLevel <= 0 ? R.string.cell_warning_only
- : R.string.cell_warning_and_limit, warning, limit));
- } else if (mLimitPreference != null) {
- mLimitPreference.setSummary(null);
- }
-
- PreferenceScreen screen = getPreferenceScreen();
- for (int i = 1; i < screen.getPreferenceCount(); i++) {
- ((TemplatePreferenceCategory) screen.getPreference(i)).pushTemplates(services);
- }
- }
-
- @Override
- public int getMetricsCategory() {
- return MetricsEvent.DATA_USAGE_SUMMARY;
- }
-
- @Override
- public NetworkPolicyEditor getNetworkPolicyEditor() {
- return services.mPolicyEditor;
- }
-
- @Override
- public NetworkTemplate getNetworkTemplate() {
- return mDefaultTemplate;
- }
-
- @Override
- public void updateDataUsage() {
- updateState();
- }
-
- private static class SummaryProvider
- implements SummaryLoader.SummaryProvider {
-
- private final Activity mActivity;
- private final SummaryLoader mSummaryLoader;
- private final DataUsageController mDataController;
-
- public SummaryProvider(Activity activity, SummaryLoader summaryLoader) {
- mActivity = activity;
- mSummaryLoader = summaryLoader;
- mDataController = new DataUsageController(activity);
- }
-
- @Override
- public void setListening(boolean listening) {
- if (listening) {
- DataUsageController.DataUsageInfo info = mDataController.getDataUsageInfo();
- String used;
- if (info == null) {
- used = Formatter.formatFileSize(mActivity, 0);
- } else if (info.limitLevel <= 0) {
- used = Formatter.formatFileSize(mActivity, info.usageLevel);
- } else {
- used = Utils.formatPercentage(info.usageLevel, info.limitLevel);
- }
- mSummaryLoader.setSummary(this,
- mActivity.getString(R.string.data_usage_summary_format, used));
- }
- }
- }
-
- public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
- = SummaryProvider::new;
-}