From 63bc6a10904a77b365895f6a056fda841ec711e5 Mon Sep 17 00:00:00 2001 From: Matthew Fritze Date: Wed, 12 Jun 2019 15:00:55 -0700 Subject: [PATCH] MobileData slice should be null if not-actionable In cases where MobileData should not be changed: - Airplane mode - No data subscriptions we will return a null slice, rather than a slice with a no-op intent attached as a primary action. The problem with the no-op intent is that Slices assumes all actions are by definition, actionable, and the the TalkBack description announces that the item is clickable, which it really isn't. We will in the future investigate disabled actions on Slices, but this is the short-term fix. Fixes: 132924748 Test: Robolectric Test: Panel tester app Change-Id: I1d62af32fe2dd985f0b52ea4188651e76f9c90ec --- .../network/telephony/MobileDataSlice.java | 26 ++-------- .../telephony/MobileDataSliceTest.java | 48 ++----------------- 2 files changed, 7 insertions(+), 67 deletions(-) diff --git a/src/com/android/settings/network/telephony/MobileDataSlice.java b/src/com/android/settings/network/telephony/MobileDataSlice.java index e497a9e442e..65eaf8708b5 100644 --- a/src/com/android/settings/network/telephony/MobileDataSlice.java +++ b/src/com/android/settings/network/telephony/MobileDataSlice.java @@ -78,16 +78,14 @@ public class MobileDataSlice implements CustomSliceable { final String title = mContext.getText(R.string.mobile_data_settings_title).toString(); @ColorInt final int color = Utils.getColorAccentDefaultColor(mContext); - // Return a Slice without the mobile data toggle when airplane mode is on. + // Return null until we can show a disabled-action Slice, blaming Airplane mode. if (isAirplaneModeEnabled()) { - return buildUnavailableMobileDataSlice(title, - mContext.getText(R.string.mobile_data_ap_mode_disabled), icon, color); + return null; } - // Return a Slice without the mobile data toggle when mobile data disabled. + // Return null until we can show a disabled-action Slice. if (!isMobileDataAvailable()) { - return buildUnavailableMobileDataSlice(title, - mContext.getText(R.string.sim_cellular_data_unavailable), icon, color); + return null; } final CharSequence summary = getSummary(); @@ -201,22 +199,6 @@ 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. * diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java index ae6f5687445..c66f75f02a6 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java @@ -174,21 +174,7 @@ public class MobileDataSliceTest { 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 List toggles = metadata.getToggles(); - assertThat(toggles).hasSize(0); - - final SliceAction primaryAction = metadata.getPrimaryAction(); - final PendingIntent pendingIntent = primaryAction.getAction(); - final Intent actionIntent = pendingIntent.getIntent(); - - assertThat(actionIntent).isNull(); + assertThat(mobileData).isNull(); } @Test @@ -196,21 +182,7 @@ public class MobileDataSliceTest { 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 List toggles = metadata.getToggles(); - assertThat(toggles).hasSize(0); - - final SliceAction primaryAction = metadata.getPrimaryAction(); - final PendingIntent pendingIntent = primaryAction.getAction(); - final Intent actionIntent = pendingIntent.getIntent(); - - assertThat(actionIntent).isNull(); + assertThat(mobileData).isNull(); } @Test @@ -219,20 +191,6 @@ public class MobileDataSliceTest { doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(SUB_ID); 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.mobile_data_ap_mode_disabled)); - - final List toggles = metadata.getToggles(); - assertThat(toggles).hasSize(0); - - final SliceAction primaryAction = metadata.getPrimaryAction(); - final PendingIntent pendingIntent = primaryAction.getAction(); - final Intent actionIntent = pendingIntent.getIntent(); - - assertThat(actionIntent).isNull(); + assertThat(mobileData).isNull(); } }