In Network & internet screen, hide summary under Data usage when there is No SIM
Bug: 70950124
Test: manual
Test: make RunSettingsRoboTests
Change-Id: I4abd401aa9420b2b0090fac76991fe5067acc2e9
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/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"));
+ }
}