Loading res/xml/network_and_internet.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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" Loading res/xml/network_and_internet_v2.xml +1 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,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" Loading src/com/android/settings/network/telephony/MobileDataSlice.java +16 −0 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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(); Loading Loading @@ -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. Loading tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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); Loading Loading @@ -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(); Loading Loading
res/xml/network_and_internet.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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" Loading
res/xml/network_and_internet_v2.xml +1 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,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" Loading
src/com/android/settings/network/telephony/MobileDataSlice.java +16 −0 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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(); Loading Loading @@ -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. Loading
tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java +23 −0 Original line number Diff line number Diff line Loading @@ -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) Loading Loading @@ -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); Loading Loading @@ -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(); Loading