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

Commit 8b285f23 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Show mobile data slice in Search even no SIM card" into qt-dev

parents c962ea09 238928de
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settings="http://schemas.android.com/apk/res-auto"
    android:key="data_usage_cellular_screen">

    <com.android.settings.datausage.TemplatePreferenceCategory
@@ -24,7 +25,8 @@

        <com.android.settings.datausage.CellDataPreference
            android:key="data_usage_enable"
            android:title="@string/data_usage_enable_mobile" />
            android:title="@string/data_usage_enable_mobile"
            settings:searchable="false" />

        <com.android.settings.datausage.DataUsagePreference
            android:key="cellular_data_usage"
+1 −1
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
    public int getAvailabilityStatus(int subId) {
        return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
                ? AVAILABLE
                : CONDITIONALLY_UNAVAILABLE;
                : DISABLED_DEPENDENT_SETTING;
    }

    @Override
+25 −20
Original line number Diff line number Diff line
@@ -73,11 +73,6 @@ 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();
@@ -85,20 +80,14 @@ public class MobileDataSlice implements CustomSliceable {

        // Return a Slice without the mobile data toggle when airplane mode is on.
        if (isAirplaneModeEnabled()) {
            final CharSequence summary = mContext.getText(R.string.mobile_data_ap_mode_disabled);
            // Intent does nothing, but we have to pass an intent to the Row.
            final PendingIntent intent = PendingIntent.getActivity(mContext, 0 /* requestCode */,
                    new Intent(), 0 /* flags */);
            final SliceAction deadAction =
                    SliceAction.create(intent, icon, ListBuilder.ICON_IMAGE, title);
            final ListBuilder listBuilder = new ListBuilder(mContext, getUri(),
                    ListBuilder.INFINITY)
                    .setAccentColor(color)
                    .addRow(new ListBuilder.RowBuilder()
                            .setTitle(title)
                            .setSubtitle(summary)
                            .setPrimaryAction(deadAction));
            return listBuilder.build();
            return buildUnavailableMobileDataSlice(title,
                    mContext.getText(R.string.mobile_data_ap_mode_disabled), icon, color);
        }

        // Return a Slice without the mobile data toggle when mobile data disabled.
        if (!isMobileDataAvailable()) {
            return buildUnavailableMobileDataSlice(title,
                    mContext.getText(R.string.sim_cellular_data_unavailable), icon, color);
        }

        final CharSequence summary = getSummary();
@@ -212,6 +201,22 @@ public class MobileDataSlice implements CustomSliceable {
        return mTelephonyManager.isDataEnabled();
    }

    private Slice buildUnavailableMobileDataSlice(String title, CharSequence summary,
            IconCompat icon, int color) {
        final PendingIntent intent = PendingIntent.getActivity(mContext, 0 /* requestCode */,
                new Intent(), 0 /* flags */);
        final SliceAction deadAction =
                SliceAction.create(intent, icon, ListBuilder.ICON_IMAGE, title);
        final ListBuilder listBuilder = new ListBuilder(mContext, getUri(),
                ListBuilder.INFINITY)
                .setAccentColor(color)
                .addRow(new ListBuilder.RowBuilder()
                        .setTitle(title)
                        .setSubtitle(summary)
                        .setPrimaryAction(deadAction));
        return listBuilder.build();
    }

    /**
     * Listener for mobile data state changes.
     *
+3 −3
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

package com.android.settings.network.telephony;

import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
import static com.android.settings.core.BasePreferenceController.DISABLED_DEPENDENT_SETTING;

import static com.google.common.truth.Truth.assertThat;

@@ -86,10 +86,10 @@ public class MobileDataPreferenceControllerTest {
    }

    @Test
    public void getAvailabilityStatus_invalidSubscription_returnUnavailable() {
    public void getAvailabilityStatus_invalidSubscription_returnDisabledDependentSetting() {
        mController.init(mFragmentManager, SubscriptionManager.INVALID_SUBSCRIPTION_ID);

        assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
        assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_DEPENDENT_SETTING);
    }

    @Test
+32 −6
Original line number Diff line number Diff line
@@ -170,21 +170,47 @@ public class MobileDataSliceTest {
    }

    @Test
    public void isMobileDataAvailable_noSubscriptions_returnsNull() {
    public void isMobileDataAvailable_noSubscriptions_slicePrimaryActionIsEmpty() {
        doReturn(new ArrayList<>()).when(mSubscriptionManager).getSelectableSubscriptionInfoList();
        final Slice mobileData = mMobileDataSlice.getSlice();

        final SliceMetadata metadata = SliceMetadata.from(mContext, mobileData);
        assertThat(metadata.getTitle())
                .isEqualTo(mContext.getString(R.string.mobile_data_settings_title));

        assertThat(metadata.getSubtitle())
                .isEqualTo(mContext.getString(R.string.sim_cellular_data_unavailable));

        final Slice slice = mMobileDataSlice.getSlice();
        final List<SliceAction> toggles = metadata.getToggles();
        assertThat(toggles).hasSize(0);

        assertThat(slice).isNull();
        final SliceAction primaryAction = metadata.getPrimaryAction();
        final PendingIntent pendingIntent = primaryAction.getAction();
        final Intent actionIntent = pendingIntent.getIntent();

        assertThat(actionIntent).isNull();
    }

    @Test
    public void isMobileDataAvailable_nullSubscriptions_returnsNull() {
    public void isMobileDataAvailable_nullSubscriptions_slicePrimaryActionIsEmpty() {
        doReturn(null).when(mSubscriptionManager).getSelectableSubscriptionInfoList();
        final Slice mobileData = mMobileDataSlice.getSlice();

        final SliceMetadata metadata = SliceMetadata.from(mContext, mobileData);
        assertThat(metadata.getTitle())
                .isEqualTo(mContext.getString(R.string.mobile_data_settings_title));

        assertThat(metadata.getSubtitle())
                .isEqualTo(mContext.getString(R.string.sim_cellular_data_unavailable));

        final Slice slice = mMobileDataSlice.getSlice();
        final List<SliceAction> toggles = metadata.getToggles();
        assertThat(toggles).hasSize(0);

        assertThat(slice).isNull();
        final SliceAction primaryAction = metadata.getPrimaryAction();
        final PendingIntent pendingIntent = primaryAction.getAction();
        final Intent actionIntent = pendingIntent.getIntent();

        assertThat(actionIntent).isNull();
    }

    @Test