Loading res/xml/data_usage_cellular.xml +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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" Loading src/com/android/settings/network/telephony/MobileDataPreferenceController.java +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading src/com/android/settings/network/telephony/MobileDataSlice.java +25 −20 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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(); Loading Loading @@ -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. * Loading tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java +32 −6 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
res/xml/data_usage_cellular.xml +3 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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" Loading
src/com/android/settings/network/telephony/MobileDataPreferenceController.java +1 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
src/com/android/settings/network/telephony/MobileDataSlice.java +25 −20 Original line number Diff line number Diff line Loading @@ -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(); Loading @@ -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(); Loading Loading @@ -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. * Loading
tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading
tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java +32 −6 Original line number Diff line number Diff line Loading @@ -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 Loading