Format data usage and data limit consistently.

The usage formatter's format flag is change to match data limt flag.

Change-Id: I37d3c8c7bc67a918c793f4799e060010d269834d
Fixes: 63581756
Test: robotests
This commit is contained in:
Fan Zhang
2017-10-11 14:57:22 -07:00
parent da2fadf607
commit cbc4218b9b
2 changed files with 31 additions and 16 deletions

View File

@@ -14,22 +14,15 @@
package com.android.settings.datausage; package com.android.settings.datausage;
import static android.net.ConnectivityManager.TYPE_ETHERNET;
import android.app.Activity; import android.app.Activity;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.INetworkStatsSession;
import android.net.NetworkPolicyManager; import android.net.NetworkPolicyManager;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.net.TrafficStats;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserManager; import android.os.UserManager;
import android.provider.SearchIndexableResource; import android.provider.SearchIndexableResource;
import android.support.annotation.VisibleForTesting; import android.support.annotation.VisibleForTesting;
@@ -46,6 +39,7 @@ 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;
@@ -55,6 +49,7 @@ 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;
@@ -244,13 +239,14 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
updateState(); updateState();
} }
private static CharSequence formatTitle(Context context, String template, long usageLevel) { @VisibleForTesting
static CharSequence formatUsage(Context context, String template, long usageLevel) {
final float LARGER_SIZE = 1.25f * 1.25f; // (1/0.8)^2 final float LARGER_SIZE = 1.25f * 1.25f; // (1/0.8)^2
final float SMALLER_SIZE = 1.0f / LARGER_SIZE; // 0.8^2 final float SMALLER_SIZE = 1.0f / LARGER_SIZE; // 0.8^2
final int FLAGS = Spannable.SPAN_INCLUSIVE_INCLUSIVE; final int FLAGS = Spannable.SPAN_INCLUSIVE_INCLUSIVE;
final Formatter.BytesResult usedResult = Formatter.formatBytes(context.getResources(), final Formatter.BytesResult usedResult = Formatter.formatBytes(context.getResources(),
usageLevel, Formatter.FLAG_SHORTER); usageLevel, Formatter.FLAG_CALCULATE_ROUNDED);
final SpannableString enlargedValue = new SpannableString(usedResult.value); final SpannableString enlargedValue = new SpannableString(usedResult.value);
enlargedValue.setSpan(new RelativeSizeSpan(LARGER_SIZE), 0, enlargedValue.length(), FLAGS); enlargedValue.setSpan(new RelativeSizeSpan(LARGER_SIZE), 0, enlargedValue.length(), FLAGS);
@@ -263,7 +259,7 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
final SpannableString fullTemplate = new SpannableString(template); final SpannableString fullTemplate = new SpannableString(template);
fullTemplate.setSpan(new RelativeSizeSpan(SMALLER_SIZE), 0, fullTemplate.length(), FLAGS); fullTemplate.setSpan(new RelativeSizeSpan(SMALLER_SIZE), 0, fullTemplate.length(), FLAGS);
return TextUtils.expandTemplate(fullTemplate, return TextUtils.expandTemplate(fullTemplate,
BidiFormatter.getInstance().unicodeWrap(formattedUsage)); BidiFormatter.getInstance().unicodeWrap(formattedUsage.toString()));
} }
private void updateState() { private void updateState() {
@@ -275,10 +271,9 @@ public class DataUsageSummary extends DataUsageBase implements Indexable, DataUs
if (mSummaryPreference != null) { if (mSummaryPreference != null) {
mSummaryPreference.setTitle( mSummaryPreference.setTitle(
formatTitle(context, getString(mDataUsageTemplate), info.usageLevel)); formatUsage(context, getString(mDataUsageTemplate), info.usageLevel));
long limit = mDataInfoController.getSummaryLimit(info); final long limit = mDataInfoController.getSummaryLimit(info);
mSummaryPreference.setSummary(info.period); mSummaryPreference.setSummary(info.period);
if (limit <= 0) { if (limit <= 0) {
mSummaryPreference.setChartEnabled(false); mSummaryPreference.setChartEnabled(false);
} else { } else {

View File

@@ -28,11 +28,13 @@ import android.content.Context;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.text.format.Formatter;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.TestConfig; import com.android.settings.TestConfig;
import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.SettingsShadowResources;
import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.NetworkPolicyEditor;
import java.util.ArrayList;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -43,10 +45,13 @@ 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;
@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 {
@Mock private ConnectivityManager mManager; @Mock
private ConnectivityManager mManager;
private Context mContext; private Context mContext;
/** /**
@@ -77,6 +82,21 @@ public class DataUsageSummaryTest {
dataUsageSummary.updateNetworkRestrictionSummary(preference); dataUsageSummary.updateNetworkRestrictionSummary(preference);
verify(preference).setSummary(mContext.getResources().getQuantityString( verify(preference).setSummary(mContext.getResources().getQuantityString(
R.plurals.network_restrictions_summary, 0, 0)); R.plurals.network_restrictions_summary, 0, 0));
}
@Test
@Config(shadows = {
SettingsShadowResources.class,
SettingsShadowResources.SettingsShadowTheme.class
})
public void formatUsage_shouldLookLikeFormatFileSize() {
SettingsShadowResources.overrideResource(com.android.internal.R.string.fileSizeSuffix,
"%1$s %2$s");
final long usage = 2147483648L; // 2GB
final String formattedUsage =
DataUsageSummary.formatUsage(mContext, "^1", usage).toString();
final String formattedAsFileSize = Formatter.formatFileSize(mContext, usage);
assertThat(formattedUsage).isEqualTo(formattedAsFileSize);
} }
} }