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
diff --git a/src/com/android/settings/network/telephony/MobileDataSlice.java b/src/com/android/settings/network/telephony/MobileDataSlice.java
index e497a9e..65eaf87 100644
--- a/src/com/android/settings/network/telephony/MobileDataSlice.java
+++ b/src/com/android/settings/network/telephony/MobileDataSlice.java
@@ -78,16 +78,14 @@
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 @@
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 ae6f568..c66f75f 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 @@
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<SliceAction> 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 @@
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<SliceAction> 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 @@
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<SliceAction> 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();
}
}