Loading res/values/strings.xml +9 −0 Original line number Diff line number Diff line Loading @@ -8693,6 +8693,15 @@ <!-- Title of button for application usage cycle preferences [CHAR LIMIT=40] --> <string name="app_usage_cycle">App data usage cycle</string> <!-- Format for a summary describing the amount of data before the user is warned [CHAR LIMIT=NONE] --> <string name="cell_data_warning"><xliff:g name="amount" example="1 GB">^1</xliff:g> data warning</string> <!-- Format for a summary describing the amount of data the limit is set to [CHAR LIMIT=NONE] --> <string name="cell_data_limit"><xliff:g name="amount" example="1 GB">^1</xliff:g> data limit</string> <!-- Format for a summary describing the amount of data before the user is warned or limited [CHAR LIMIT=NONE] --> <string name="cell_data_warning_and_limit"><xliff:g name="amount" example="1 GB">^1</xliff:g> data warning / <xliff:g name="amount" example="2 GB">^2</xliff:g> data limit</string> <!-- Summary describing when the billing cycle for their phone carrier starts [CHAR LIMIT=NONE] --> <string name="billing_cycle_fragment_summary">Monthly on day <xliff:g name="day_of_month" example="17">%1$s</xliff:g></string> src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java +21 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } Loading @@ -188,6 +196,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) { Loading tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java +73 −5 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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); Loading @@ -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 */, Loading @@ -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 */, Loading @@ -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; Loading Loading
res/values/strings.xml +9 −0 Original line number Diff line number Diff line Loading @@ -8693,6 +8693,15 @@ <!-- Title of button for application usage cycle preferences [CHAR LIMIT=40] --> <string name="app_usage_cycle">App data usage cycle</string> <!-- Format for a summary describing the amount of data before the user is warned [CHAR LIMIT=NONE] --> <string name="cell_data_warning"><xliff:g name="amount" example="1 GB">^1</xliff:g> data warning</string> <!-- Format for a summary describing the amount of data the limit is set to [CHAR LIMIT=NONE] --> <string name="cell_data_limit"><xliff:g name="amount" example="1 GB">^1</xliff:g> data limit</string> <!-- Format for a summary describing the amount of data before the user is warned or limited [CHAR LIMIT=NONE] --> <string name="cell_data_warning_and_limit"><xliff:g name="amount" example="1 GB">^1</xliff:g> data warning / <xliff:g name="amount" example="2 GB">^2</xliff:g> data limit</string> <!-- Summary describing when the billing cycle for their phone carrier starts [CHAR LIMIT=NONE] --> <string name="billing_cycle_fragment_summary">Monthly on day <xliff:g name="day_of_month" example="17">%1$s</xliff:g></string>
src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java +21 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } Loading @@ -188,6 +196,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) { Loading
tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceControllerTest.java +73 −5 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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); Loading @@ -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 */, Loading @@ -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 */, Loading @@ -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; Loading