Merge "[Settings] Support the display of data usage when SIM inactive" into rvc-dev
This commit is contained in:
@@ -120,14 +120,14 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
|
|||||||
mContext.getSystemService(NetworkPolicyManager.class);
|
mContext.getSystemService(NetworkPolicyManager.class);
|
||||||
mPolicyEditor = new NetworkPolicyEditor(policyManager);
|
mPolicyEditor = new NetworkPolicyEditor(policyManager);
|
||||||
|
|
||||||
mHasMobileData = SubscriptionManager.isValidSubscriptionId(mSubId)
|
mHasMobileData = DataUsageUtils.hasMobileData(mContext);
|
||||||
&& DataUsageUtils.hasMobileData(mContext);
|
|
||||||
|
|
||||||
mDataUsageController = new DataUsageController(mContext);
|
mDataUsageController = new DataUsageController(mContext);
|
||||||
mDataUsageController.setSubscriptionId(mSubId);
|
mDataUsageController.setSubscriptionId(mSubId);
|
||||||
mDataInfoController = new DataUsageInfoController();
|
mDataInfoController = new DataUsageInfoController();
|
||||||
|
|
||||||
if (mHasMobileData) {
|
final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId);
|
||||||
|
if (subInfo != null) {
|
||||||
mDataUsageTemplate = R.string.cell_data_template;
|
mDataUsageTemplate = R.string.cell_data_template;
|
||||||
} else if (DataUsageUtils.hasWifiRadio(mContext)) {
|
} else if (DataUsageUtils.hasWifiRadio(mContext)) {
|
||||||
mDataUsageTemplate = R.string.wifi_data_template;
|
mDataUsageTemplate = R.string.wifi_data_template;
|
||||||
@@ -180,18 +180,16 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
|
|||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
SubscriptionInfo getSubscriptionInfo(int subscriptionId) {
|
SubscriptionInfo getSubscriptionInfo(int subscriptionId) {
|
||||||
|
if (!mHasMobileData) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return ProxySubscriptionManager.getInstance(mContext)
|
return ProxySubscriptionManager.getInstance(mContext)
|
||||||
.getAccessibleSubscriptionInfo(subscriptionId);
|
.getAccessibleSubscriptionInfo(subscriptionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
boolean hasSim() {
|
|
||||||
return DataUsageUtils.hasSim(mContext);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus(int subId) {
|
public int getAvailabilityStatus(int subId) {
|
||||||
return hasSim()
|
return (getSubscriptionInfo(subId) != null)
|
||||||
|| DataUsageUtils.hasWifiRadio(mContext) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
|| DataUsageUtils.hasWifiRadio(mContext) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,16 +197,15 @@ public class DataUsageSummaryPreferenceController extends TelephonyBasePreferenc
|
|||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
DataUsageSummaryPreference summaryPreference = (DataUsageSummaryPreference) preference;
|
DataUsageSummaryPreference summaryPreference = (DataUsageSummaryPreference) preference;
|
||||||
|
|
||||||
final boolean isSimCardAdded = hasSim();
|
final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId);
|
||||||
if (!isSimCardAdded) {
|
if (subInfo == null) {
|
||||||
mDefaultTemplate = NetworkTemplate.buildTemplateWifiWildcard();
|
mDefaultTemplate = NetworkTemplate.buildTemplateWifiWildcard();
|
||||||
}
|
}
|
||||||
|
|
||||||
final DataUsageController.DataUsageInfo info =
|
final DataUsageController.DataUsageInfo info =
|
||||||
mDataUsageController.getDataUsageInfo(mDefaultTemplate);
|
mDataUsageController.getDataUsageInfo(mDefaultTemplate);
|
||||||
|
|
||||||
final SubscriptionInfo subInfo = getSubscriptionInfo(mSubId);
|
if (subInfo != null) {
|
||||||
if (isSimCardAdded) {
|
|
||||||
mDataInfoController.updateDataLimit(info, mPolicyEditor.getPolicy(mDefaultTemplate));
|
mDataInfoController.updateDataLimit(info, mPolicyEditor.getPolicy(mDefaultTemplate));
|
||||||
summaryPreference.setWifiMode(/* isWifiMode */ false,
|
summaryPreference.setWifiMode(/* isWifiMode */ false,
|
||||||
/* usagePeriod */ null, /* isSingleWifi */ false);
|
/* usagePeriod */ null, /* isSingleWifi */ false);
|
||||||
|
@@ -19,7 +19,6 @@ package com.android.settings.datausage;
|
|||||||
import static android.net.ConnectivityManager.TYPE_WIFI;
|
import static android.net.ConnectivityManager.TYPE_WIFI;
|
||||||
|
|
||||||
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
|
import static com.android.settings.core.BasePreferenceController.AVAILABLE;
|
||||||
import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
|
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
@@ -159,8 +158,6 @@ public class DataUsageSummaryPreferenceControllerTest {
|
|||||||
doReturn(CARRIER_NAME).when(mSubscriptionInfo).getCarrierName();
|
doReturn(CARRIER_NAME).when(mSubscriptionInfo).getCarrierName();
|
||||||
doReturn(mSubscriptionInfo).when(mController).getSubscriptionInfo(mDefaultSubscriptionId);
|
doReturn(mSubscriptionInfo).when(mController).getSubscriptionInfo(mDefaultSubscriptionId);
|
||||||
doReturn(mSubscriptionPlans).when(mController).getSubscriptionPlans(mDefaultSubscriptionId);
|
doReturn(mSubscriptionPlans).when(mController).getSubscriptionPlans(mDefaultSubscriptionId);
|
||||||
|
|
||||||
doReturn(true).when(mController).hasSim();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
@@ -355,56 +352,16 @@ public class DataUsageSummaryPreferenceControllerTest {
|
|||||||
false /* isSingleWifi */);
|
false /* isSingleWifi */);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testSummaryUpdate_noSim_shouldSetWifiMode() {
|
|
||||||
mController.init(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
|
||||||
mController.mDataUsageController = mDataUsageController;
|
|
||||||
doReturn(TelephonyManager.SIM_STATE_ABSENT).when(mTelephonyManager).getSimState();
|
|
||||||
doReturn(false).when(mController).hasSim();
|
|
||||||
|
|
||||||
final long now = System.currentTimeMillis();
|
|
||||||
final DataUsageController.DataUsageInfo info = createTestDataUsageInfo(now);
|
|
||||||
info.warningLevel = BillingCycleSettings.MIB_IN_BYTES;
|
|
||||||
info.limitLevel = BillingCycleSettings.MIB_IN_BYTES;
|
|
||||||
|
|
||||||
final Intent intent = new Intent();
|
|
||||||
|
|
||||||
doReturn(info).when(mDataUsageController).getDataUsageInfo(any());
|
|
||||||
setupTestDataUsage(LIMIT1, USAGE1, now - UPDATE_BACKOFF_MS);
|
|
||||||
|
|
||||||
mController.updateState(mSummaryPreference);
|
|
||||||
|
|
||||||
verify(mSummaryPreference).setWifiMode(true /* isWifiMode */, info.period /* usagePeriod */,
|
|
||||||
false /* isSingleWifi */);
|
|
||||||
verify(mSummaryPreference).setLimitInfo(null);
|
|
||||||
verify(mSummaryPreference).setUsageNumbers(info.usageLevel, -1L, true);
|
|
||||||
verify(mSummaryPreference).setChartEnabled(false);
|
|
||||||
verify(mSummaryPreference).setUsageInfo(info.cycleEnd, -1L, null, 0, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMobileData_preferenceAvailable() {
|
public void testMobileData_preferenceAvailable() {
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testMobileData_noSimNoWifi_preferenceDisabled() {
|
|
||||||
final int subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
|
||||||
mController.init(subscriptionId);
|
|
||||||
mController.mDataUsageController = mDataUsageController;
|
|
||||||
doReturn(TelephonyManager.SIM_STATE_ABSENT).when(mTelephonyManager).getSimState();
|
|
||||||
doReturn(false).when(mController).hasSim();
|
|
||||||
when(mConnectivityManager.isNetworkSupported(TYPE_WIFI)).thenReturn(false);
|
|
||||||
assertThat(mController.getAvailabilityStatus())
|
|
||||||
.isEqualTo(CONDITIONALLY_UNAVAILABLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testMobileData_noSimWifi_preferenceDisabled() {
|
public void testMobileData_noSimWifi_preferenceDisabled() {
|
||||||
final int subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
final int subscriptionId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
mController.init(subscriptionId);
|
mController.init(subscriptionId);
|
||||||
mController.mDataUsageController = mDataUsageController;
|
mController.mDataUsageController = mDataUsageController;
|
||||||
doReturn(TelephonyManager.SIM_STATE_ABSENT).when(mTelephonyManager).getSimState();
|
|
||||||
when(mConnectivityManager.isNetworkSupported(TYPE_WIFI)).thenReturn(true);
|
when(mConnectivityManager.isNetworkSupported(TYPE_WIFI)).thenReturn(true);
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user