Merge "Import translations. DO NOT MERGE" into pi-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5f29949..953480f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8786,15 +8786,15 @@
<string name="data_remaining"><xliff:g name="bytes" example="2 GB">^1</xliff:g> left</string>
<!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
- <string name="cycle_left_multiple_days"><xliff:g name="time" example="2d">%d</xliff:g> days left</string>
-
- <!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
<plurals name="billing_cycle_days_left">
<item quantity="one">%d day left</item>
<item quantity="other">%d days left</item>
</plurals>
<!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
+ <string name="billing_cycle_none_left">No time remaining</string>
+
+ <!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
<string name="billing_cycle_less_than_one_day_left">Less than 1 day left</string>
<!-- Informational text about carrier and update time [CHAR LIMIT=30] -->
diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java
index 6d9ef38..b05d180 100644
--- a/src/com/android/settings/datausage/DataUsageSummary.java
+++ b/src/com/android/settings/datausage/DataUsageSummary.java
@@ -28,6 +28,7 @@
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionPlan;
+import android.telephony.TelephonyManager;
import android.text.BidiFormatter;
import android.text.Spannable;
import android.text.SpannableString;
@@ -302,8 +303,18 @@
@Override
public void setListening(boolean listening) {
if (listening) {
- mSummaryLoader.setSummary(this,
- mActivity.getString(R.string.data_usage_summary_format, formatUsedData()));
+ TelephonyManager telephonyManager = (TelephonyManager) mActivity
+ .getSystemService(Context.TELEPHONY_SERVICE);
+ final int simState = telephonyManager.getSimState();
+ // Note that pulling the SIM card returns UNKNOWN, not ABSENT.
+ if (simState == TelephonyManager.SIM_STATE_ABSENT
+ || simState == TelephonyManager.SIM_STATE_UNKNOWN) {
+ mSummaryLoader.setSummary(this, null);
+ } else {
+ mSummaryLoader.setSummary(this,
+ mActivity.getString(R.string.data_usage_summary_format,
+ formatUsedData()));
+ }
}
}
diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreference.java b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
index 0ce8e4f..43ebecc 100644
--- a/src/com/android/settings/datausage/DataUsageSummaryPreference.java
+++ b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
@@ -199,18 +199,18 @@
}
private void updateCycleTimeText(PreferenceViewHolder holder) {
- float daysLeft =
- ((float) mCycleEndTimeMs - System.currentTimeMillis()) / MILLIS_IN_A_DAY;
- if (daysLeft < 0) {
- daysLeft = 0;
- }
-
TextView cycleTime = (TextView) holder.findViewById(R.id.cycle_left_time);
- cycleTime.setText(
- (daysLeft > 0 && daysLeft < 1)
- ? getContext().getString(R.string.billing_cycle_less_than_one_day_left)
- : getContext().getResources().getQuantityString(
- R.plurals.billing_cycle_days_left, (int) daysLeft, (int) daysLeft));
+
+ long millisLeft = mCycleEndTimeMs - System.currentTimeMillis();
+ if (millisLeft <= 0) {
+ cycleTime.setText(getContext().getString(R.string.billing_cycle_none_left));
+ } else {
+ int daysLeft = (int)(millisLeft / MILLIS_IN_A_DAY);
+ cycleTime.setText(daysLeft < 1
+ ? getContext().getString(R.string.billing_cycle_less_than_one_day_left)
+ : getContext().getResources().getQuantityString(
+ R.plurals.billing_cycle_days_left, daysLeft, daysLeft));
+ }
}
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
index 638ee79..58e42a0 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
@@ -179,7 +179,7 @@
}
@Test
- public void testSetUsageInfo_cycleRemainingTimeNegativeDaysLeft_shouldDisplayZeroDays() {
+ public void testSetUsageInfo_cycleRemainingTimeNegativeDaysLeft_shouldDisplayNoneLeft() {
final long cycleEnd = System.currentTimeMillis() - 1L;
mSummaryPreference.setUsageInfo(cycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
new Intent());
@@ -187,7 +187,7 @@
bindViewHolder();
assertThat(mCycleTime.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mCycleTime.getText()).isEqualTo(
- mContext.getResources().getQuantityString(R.plurals.billing_cycle_days_left, 0, 0));
+ mContext.getString(R.string.billing_cycle_none_left));
}
@Test
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java
index 6892264..d065c73 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java
@@ -18,13 +18,20 @@
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Matchers.endsWith;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
+import android.telephony.TelephonyManager;
import android.text.format.Formatter;
import com.android.settings.R;
+import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.SettingsShadowResources;
@@ -33,6 +40,7 @@
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.robolectric.Robolectric;
import org.robolectric.shadows.ShadowApplication;
@RunWith(SettingsRobolectricTestRunner.class)
@@ -41,6 +49,12 @@
@Mock
private ConnectivityManager mManager;
private Context mContext;
+ @Mock
+ TelephonyManager mTelephonyManager;
+ @Mock
+ private SummaryLoader mSummaryLoader;
+ private Activity mActivity;
+ private SummaryLoader.SummaryProvider mSummaryProvider;
/**
* This set up is contrived to get a passing test so that the build doesn't block without tests.
@@ -54,6 +68,12 @@
shadowContext.setSystemService(Context.CONNECTIVITY_SERVICE, mManager);
mContext = shadowContext.getApplicationContext();
when(mManager.isNetworkSupported(anyInt())).thenReturn(true);
+
+ mActivity = spy(Robolectric.buildActivity(Activity.class).get());
+ when(mActivity.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
+
+ mSummaryProvider = DataUsageSummary.SUMMARY_PROVIDER_FACTORY
+ .createSummaryProvider(mActivity, mSummaryLoader);
}
@Test
@@ -66,4 +86,18 @@
final String formattedAsFileSize = Formatter.formatFileSize(mContext, usage);
assertThat(formattedUsage).isEqualTo(formattedAsFileSize);
}
+
+ @Test
+ public void setListening_shouldBlankSummaryWithNoSim() {
+ when(mTelephonyManager.getSimState()).thenReturn(TelephonyManager.SIM_STATE_ABSENT);
+ mSummaryProvider.setListening(true);
+ verify(mSummaryLoader).setSummary(mSummaryProvider, null);
+ }
+
+ @Test
+ public void setListening_shouldSetSummaryWithSim() {
+ when(mTelephonyManager.getSimState()).thenReturn(TelephonyManager.SIM_STATE_READY);
+ mSummaryProvider.setListening(true);
+ verify(mSummaryLoader).setSummary(anyObject(), endsWith(" of data used"));
+ }
}