Fix up Network and Internet Slice

- Fix pref key for Airplane mode
- Return null when no mobile data is available

Test: robotests
Fixes: 130244854
Change-Id: I88806cb9215af159114ac150c20cdb8fb413befe
This commit is contained in:
Matthew Fritze
2019-04-09 15:05:11 -07:00
parent f1cea95f3e
commit 441a439431
4 changed files with 41 additions and 2 deletions

View File

@@ -64,7 +64,7 @@
settings:useAdminDisabledSummary="true" />
<com.android.settingslib.RestrictedSwitchPreference
android:key="airplane_mode"
android:key="airplane_mode_old"
android:title="@string/airplane_mode"
android:icon="@drawable/ic_airplanemode_active"
android:disableDependentsState="true"

View File

@@ -52,7 +52,7 @@
settings:useAdminDisabledSummary="true" />
<com.android.settingslib.RestrictedSwitchPreference
android:key="toggle_airplane"
android:key="airplane_mode"
android:title="@string/airplane_mode"
android:icon="@drawable/ic_airplanemode_active"
android:disableDependentsState="true"

View File

@@ -46,6 +46,7 @@ import com.android.settings.slices.SliceBackgroundWorker;
import com.google.common.annotations.VisibleForTesting;
import java.io.IOException;
import java.util.List;
/**
* Custom {@link Slice} for Mobile Data.
@@ -71,6 +72,11 @@ public class MobileDataSlice implements CustomSliceable {
@Override
public Slice getSlice() {
// Mobile data not available, thus return no Slice.
if (!isMobileDataAvailable()) {
return null;
}
final IconCompat icon = IconCompat.createWithResource(mContext,
R.drawable.ic_network_cell);
final String title = mContext.getText(R.string.mobile_data_settings_title).toString();
@@ -178,6 +184,16 @@ public class MobileDataSlice implements CustomSliceable {
intent, 0 /* flags */);
}
/**
* @return {@code true} when mobile data is not supported by the current device.
*/
private boolean isMobileDataAvailable() {
final List<SubscriptionInfo> subInfoList =
mSubscriptionManager.getSelectableSubscriptionInfoList();
return !(subInfoList == null || subInfoList.isEmpty());
}
@VisibleForTesting
boolean isAirplaneModeEnabled() {
// Generic key since we only want the method check - no UI.

View File

@@ -49,6 +49,8 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
@@ -76,6 +78,9 @@ public class MobileDataSliceTest {
doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
doReturn(mSubscriptionInfo).when(mSubscriptionManager).getDefaultDataSubscriptionInfo();
doReturn(SUB_ID).when(mSubscriptionInfo).getSubscriptionId();
doReturn(new ArrayList<>(Arrays.asList(mSubscriptionInfo)))
.when(mSubscriptionManager).getSelectableSubscriptionInfoList();
// Set-up specs for SliceMetadata.
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
@@ -164,6 +169,24 @@ public class MobileDataSliceTest {
assertThat(isMobileDataEnabled).isEqualTo(seed);
}
@Test
public void isMobileDataAvailable_noSubscriptions_returnsNull() {
doReturn(new ArrayList<>()).when(mSubscriptionManager).getSelectableSubscriptionInfoList();
final Slice slice = mMobileDataSlice.getSlice();
assertThat(slice).isNull();
}
@Test
public void isMobileDataAvailable_nullSubscriptions_returnsNull() {
doReturn(null).when(mSubscriptionManager).getSelectableSubscriptionInfoList();
final Slice slice = mMobileDataSlice.getSlice();
assertThat(slice).isNull();
}
@Test
public void airplaneModeEnabled_slicePrimaryActionIsEmpty() {
doReturn(true).when(mMobileDataSlice).isAirplaneModeEnabled();