diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1c2bbf2f2b2..45d88162038 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8745,9 +8745,12 @@
Primary data
-
+
^1 used
+
+ ^1 over
+
^1 left
diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreference.java b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
index 94e70002376..e7f4a9dec7a 100644
--- a/src/com/android/settings/datausage/DataUsageSummaryPreference.java
+++ b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
@@ -131,16 +131,7 @@ public class DataUsageSummaryPreference extends Preference {
holder.findViewById(R.id.label_bar).setVisibility(View.GONE);
}
- TextView usageNumberField = (TextView) holder.findViewById(R.id.data_usage_view);
- usageNumberField.setText(TextUtils.expandTemplate(
- getContext().getString(R.string.data_used),
- Formatter.formatFileSize(getContext(), mDataplanUse)));
- if (mHasMobileData && mNumPlans >= 0 && mDataplanSize > 0L) {
- TextView usageRemainingField = (TextView) holder.findViewById(R.id.data_remaining_view);
- usageRemainingField.setText(
- TextUtils.expandTemplate(getContext().getText(R.string.data_remaining),
- Formatter.formatFileSize(getContext(), mDataplanSize - mDataplanUse)));
- }
+ updateDataUsageLabels(holder);
TextView usageTitle = (TextView) holder.findViewById(R.id.usage_title);
usageTitle.setVisibility(mNumPlans > 1 ? View.VISIBLE : View.GONE);
@@ -169,6 +160,26 @@ public class DataUsageSummaryPreference extends Preference {
limitInfo.setText(mLimitInfoText);
}
+ private void updateDataUsageLabels(PreferenceViewHolder holder) {
+ TextView usageNumberField = (TextView) holder.findViewById(R.id.data_usage_view);
+ usageNumberField.setText(TextUtils.expandTemplate(
+ getContext().getString(R.string.data_used),
+ Formatter.formatFileSize(getContext(), mDataplanUse)));
+ if (mHasMobileData && mNumPlans >= 0 && mDataplanSize > 0L) {
+ TextView usageRemainingField = (TextView) holder.findViewById(R.id.data_remaining_view);
+ long dataRemaining = mDataplanSize - mDataplanUse;
+ if (dataRemaining >= 0) {
+ usageRemainingField.setText(
+ TextUtils.expandTemplate(getContext().getText(R.string.data_remaining),
+ Formatter.formatFileSize(getContext(), dataRemaining)));
+ } else {
+ usageRemainingField.setText(
+ TextUtils.expandTemplate(getContext().getText(R.string.data_overusage),
+ Formatter.formatFileSize(getContext(), -dataRemaining)));
+ }
+ }
+ }
+
private void setCarrierInfo(TextView carrierInfo, CharSequence carrierName, long updateAge) {
if (mNumPlans > 0 && updateAge >= 0L) {
carrierInfo.setVisibility(View.VISIBLE);
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
index f17e8b5e781..2a64e90c2f7 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
@@ -207,6 +207,7 @@ public class DataUsageSummaryPreferenceTest {
mSummaryPreference.setLabels("0.0 GB", "5.0 GB");
}
+ @Test
public void testSetUsageAndRemainingInfo_withUsageInfo_dataUsageAndRemainingShown() {
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, DUMMY_CARRIER, 1 /* numPlans */,
new Intent());
@@ -217,6 +218,17 @@ public class DataUsageSummaryPreferenceTest {
assertThat(mDataRemaining.getText().toString()).isEqualTo("9.00 MB left");
}
+ @Test
+ public void testSetUsageInfo_withDataOverusage() {
+ mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, DUMMY_CARRIER, 1 /* numPlans */,
+ new Intent());
+ mSummaryPreference.setUsageNumbers(11_000_000L, 10_000_000L, true);
+
+ bindViewHolder();
+ assertThat(mDataUsed.getText().toString()).isEqualTo("11.00 MB used");
+ assertThat(mDataRemaining.getText().toString()).isEqualTo("1.00 MB over");
+ }
+
@Test
public void testSetUsageInfo_withUsageInfo_dataUsageShown() {
mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,