Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 441a4394 authored by Matthew Fritze's avatar Matthew Fritze
Browse files

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
parent f1cea95f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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"
+1 −1
Original line number Diff line number Diff line
@@ -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"
+16 −0
Original line number Diff line number Diff line
@@ -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.
+23 −0
Original line number Diff line number Diff line
@@ -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();