From 7b352d271ea3c063284284c91105aeb2c7631762 Mon Sep 17 00:00:00 2001 From: Jan Nordqvist Date: Mon, 12 Mar 2018 13:15:47 -0700 Subject: [PATCH] Change text for data warning and data limit. This change modifies the "data warning" text to show either nothing, only warning, only limit, or warning and limit, based on which of the values are set. It also remove the capitalization of the first letter of the texts. Bug: 70950124 Test: manual Test: make RunSettingsRoboTests ROBOTEST_FILTER=DataUsageSummaryPreferenceControllerTest Change-Id: Ifebb411b906719c6e2f343f48d825f7b6f17af53 --- res/values/strings.xml | 9 +++ .../DataUsageSummaryPreferenceController.java | 27 +++++-- ...aUsageSummaryPreferenceControllerTest.java | 78 +++++++++++++++++-- 3 files changed, 103 insertions(+), 11 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 162674b568c..2d2465bfe87 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -8693,6 +8693,15 @@ App data usage cycle + + ^1 data warning + + + ^1 data limit + + + ^1 data warning / ^2 data limit + Monthly on day %1$s diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java index 0729fff1517..4df98146e42 100644 --- a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java +++ b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java @@ -37,6 +37,7 @@ import android.util.RecurrenceRule; import com.android.internal.util.CollectionUtils; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settings.core.FeatureFlags; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.net.DataUsageController; @@ -164,12 +165,19 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll refreshDataplanInfo(info); } - if (mDataplanCount == 0 && (info.warningLevel > 0 || info.limitLevel > 0)) { - final String warning = Formatter.formatFileSize(mContext, info.warningLevel); - final String limit = Formatter.formatFileSize(mContext, info.limitLevel); - summaryPreference.setLimitInfo(mContext.getString(info.limitLevel <= 0 - ? R.string.cell_warning_only - : R.string.cell_warning_and_limit, warning, limit)); + if (info.warningLevel > 0 && info.limitLevel > 0) { + summaryPreference.setLimitInfo(TextUtils.expandTemplate( + mContext.getText(R.string.cell_data_warning_and_limit), + Formatter.formatFileSize(mContext, info.warningLevel), + Formatter.formatFileSize(mContext, info.limitLevel)).toString()); + } else if (info.warningLevel > 0) { + summaryPreference.setLimitInfo(TextUtils.expandTemplate( + mContext.getText(R.string.cell_data_warning), + Formatter.formatFileSize(mContext, info.warningLevel)).toString()); + } else if (info.limitLevel > 0) { + summaryPreference.setLimitInfo(TextUtils.expandTemplate( + mContext.getText(R.string.cell_data_limit), + Formatter.formatFileSize(mContext, info.limitLevel)).toString()); } else { summaryPreference.setLimitInfo(null); } @@ -200,6 +208,13 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll mDataplanCount, mManageSubscriptionIntent); } + private String getLimitText(long limit, int textId) { + if (limit <= 0) { + return null; + } + return mContext.getString(textId, Formatter.formatFileSize(mContext, limit)); + } + // TODO(b/70950124) add test for this method once the robolectric shadow run script is // completed (b/3526807) private void refreshDataplanInfo(DataUsageController.DataUsageInfo info) { diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java index eb94d8dd436..191425038f2 100644 --- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java @@ -90,12 +90,12 @@ public class DataUsageSummaryPreferenceControllerTest { final Intent intent = new Intent(); - when(mDataUsageController.getDataUsageInfo()).thenReturn(info); + when(mDataUsageController.getDataUsageInfo(any())).thenReturn(info); mController.setPlanValues(1 /* dataPlanCount */, LIMIT1, USAGE1); mController.setCarrierValues(CARRIER_NAME, now - UPDATE_BACKOFF_MS, info.cycleEnd, intent); mController.updateState(mSummaryPreference); - verify(mSummaryPreference).setLimitInfo(null); + verify(mSummaryPreference).setLimitInfo("500 MB data warning / 1.00 GB data limit"); verify(mSummaryPreference).setUsageInfo(info.cycleEnd, now - UPDATE_BACKOFF_MS, CARRIER_NAME, 1 /* numPlans */, intent); verify(mSummaryPreference).setChartEnabled(true); @@ -113,7 +113,7 @@ public class DataUsageSummaryPreferenceControllerTest { mController.setCarrierValues(CARRIER_NAME, now - UPDATE_BACKOFF_MS, info.cycleEnd, intent); mController.updateState(mSummaryPreference); - verify(mSummaryPreference).setLimitInfo("500 MB Data warning / 1.00 GB Data limit"); + verify(mSummaryPreference).setLimitInfo("500 MB data warning / 1.00 GB data limit"); verify(mSummaryPreference).setUsageInfo(info.cycleEnd, now - UPDATE_BACKOFF_MS, CARRIER_NAME, 0 /* numPlans */, intent); verify(mSummaryPreference).setChartEnabled(true); @@ -130,7 +130,7 @@ public class DataUsageSummaryPreferenceControllerTest { info.cycleEnd, null /* intent */); mController.updateState(mSummaryPreference); - verify(mSummaryPreference).setLimitInfo("500 MB Data warning / 1.00 GB Data limit"); + verify(mSummaryPreference).setLimitInfo("500 MB data warning / 1.00 GB data limit"); verify(mSummaryPreference).setUsageInfo( info.cycleEnd, -1L /* snapshotTime */, @@ -152,7 +152,7 @@ public class DataUsageSummaryPreferenceControllerTest { info.cycleEnd, null /* intent */); mController.updateState(mSummaryPreference); - verify(mSummaryPreference).setLimitInfo("500 MB Data warning / 1.00 GB Data limit"); + verify(mSummaryPreference).setLimitInfo("500 MB data warning / 1.00 GB data limit"); verify(mSummaryPreference).setUsageInfo( info.cycleEnd, -1L /* snapshotTime */, @@ -162,6 +162,74 @@ public class DataUsageSummaryPreferenceControllerTest { verify(mSummaryPreference).setChartEnabled(false); } + @Test + public void testSummaryUpdate_noLimitNoWarning() { + final long now = System.currentTimeMillis(); + final DataUsageController.DataUsageInfo info = createTestDataUsageInfo(now); + info.warningLevel = 0L; + info.limitLevel = 0L; + + final Intent intent = new Intent(); + + when(mDataUsageController.getDataUsageInfo(any())).thenReturn(info); + mController.setPlanValues(0 /* dataPlanCount */, LIMIT1, USAGE1); + mController.setCarrierValues(CARRIER_NAME, now - UPDATE_BACKOFF_MS, info.cycleEnd, intent); + + mController.updateState(mSummaryPreference); + verify(mSummaryPreference).setLimitInfo(null); + } + + @Test + public void testSummaryUpdate_warningOnly() { + final long now = System.currentTimeMillis(); + final DataUsageController.DataUsageInfo info = createTestDataUsageInfo(now); + info.warningLevel = 1000000L; + info.limitLevel = 0L; + + final Intent intent = new Intent(); + + when(mDataUsageController.getDataUsageInfo(any())).thenReturn(info); + mController.setPlanValues(0 /* dataPlanCount */, LIMIT1, USAGE1); + mController.setCarrierValues(CARRIER_NAME, now - UPDATE_BACKOFF_MS, info.cycleEnd, intent); + + mController.updateState(mSummaryPreference); + verify(mSummaryPreference).setLimitInfo("1.00 MB data warning"); + } + + @Test + public void testSummaryUpdate_limitOnly() { + final long now = System.currentTimeMillis(); + final DataUsageController.DataUsageInfo info = createTestDataUsageInfo(now); + info.warningLevel = 0L; + info.limitLevel = 1000000L; + + final Intent intent = new Intent(); + + when(mDataUsageController.getDataUsageInfo(any())).thenReturn(info); + mController.setPlanValues(0 /* dataPlanCount */, LIMIT1, USAGE1); + mController.setCarrierValues(CARRIER_NAME, now - UPDATE_BACKOFF_MS, info.cycleEnd, intent); + + mController.updateState(mSummaryPreference); + verify(mSummaryPreference).setLimitInfo("1.00 MB data limit"); + } + + @Test + public void testSummaryUpdate_limitAndWarning() { + final long now = System.currentTimeMillis(); + final DataUsageController.DataUsageInfo info = createTestDataUsageInfo(now); + info.warningLevel = 1000000L; + info.limitLevel = 1000000L; + + final Intent intent = new Intent(); + + when(mDataUsageController.getDataUsageInfo(any())).thenReturn(info); + mController.setPlanValues(0 /* dataPlanCount */, LIMIT1, USAGE1); + mController.setCarrierValues(CARRIER_NAME, now - UPDATE_BACKOFF_MS, info.cycleEnd, intent); + + mController.updateState(mSummaryPreference); + verify(mSummaryPreference).setLimitInfo("1.00 MB data warning / 1.00 MB data limit"); + } + private DataUsageController.DataUsageInfo createTestDataUsageInfo(long now) { DataUsageController.DataUsageInfo info = new DataUsageController.DataUsageInfo(); info.carrier = CARRIER_NAME;