Disable Moblie Data Slice in AP mode

When airplane mode is enabled, users should not be able to
change the value of mobile data. Thus, when airplane mode is enabled,
replace the Slice with a no-op slice explaining why it cannot be
changed.

Fixes: 119411534
Fixes: 126726036
Test: robotests
Change-Id: I991fe05ad8f18004f77fbf1c87403de602d3a267
This commit is contained in:
Matthew Fritze
2019-02-28 10:42:56 -08:00
parent 0666a12734
commit cc50a4a540
3 changed files with 47 additions and 6 deletions

View File

@@ -24,6 +24,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
@@ -162,4 +163,27 @@ public class MobileDataSliceTest {
assertThat(isMobileDataEnabled).isEqualTo(seed);
}
@Test
public void airplaneModeEnabled_slicePrimaryActionIsEmpty() {
doReturn(true).when(mMobileDataSlice).isAirplaneModeEnabled();
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();
}
}