Merge "Show mobile data slice in Search even no SIM card" into qt-dev
diff --git a/res/xml/data_usage_cellular.xml b/res/xml/data_usage_cellular.xml
index b50eaba..fe1a072 100644
--- a/res/xml/data_usage_cellular.xml
+++ b/res/xml/data_usage_cellular.xml
@@ -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"
diff --git a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java
index 0a39bfd..2df16f5 100644
--- a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java
+++ b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java
@@ -64,7 +64,7 @@
public int getAvailabilityStatus(int subId) {
return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
? AVAILABLE
- : CONDITIONALLY_UNAVAILABLE;
+ : DISABLED_DEPENDENT_SETTING;
}
@Override
diff --git a/src/com/android/settings/network/telephony/MobileDataSlice.java b/src/com/android/settings/network/telephony/MobileDataSlice.java
index bf9fc04..e497a9e 100644
--- a/src/com/android/settings/network/telephony/MobileDataSlice.java
+++ b/src/com/android/settings/network/telephony/MobileDataSlice.java
@@ -73,11 +73,6 @@
@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 @@
// 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();
@@ -128,7 +117,7 @@
@Override
public void onNotifyChange(Intent intent) {
final boolean newState = intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
- isMobileDataEnabled());
+ isMobileDataEnabled());
final int defaultSubId = getDefaultSubscriptionId(mSubscriptionManager);
if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
@@ -212,6 +201,22 @@
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/MobileDataPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java
index e853c47..30b5408 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileDataPreferenceControllerTest.java
@@ -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 @@
}
@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
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 e59fbaf..ae6f568 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileDataSliceTest.java
@@ -170,21 +170,47 @@
}
@Test
- public void isMobileDataAvailable_noSubscriptions_returnsNull() {
+ public void isMobileDataAvailable_noSubscriptions_slicePrimaryActionIsEmpty() {
doReturn(new ArrayList<>()).when(mSubscriptionManager).getSelectableSubscriptionInfoList();
+ final Slice mobileData = mMobileDataSlice.getSlice();
- final Slice slice = mMobileDataSlice.getSlice();
+ final SliceMetadata metadata = SliceMetadata.from(mContext, mobileData);
+ assertThat(metadata.getTitle())
+ .isEqualTo(mContext.getString(R.string.mobile_data_settings_title));
- assertThat(slice).isNull();
+ 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();
}
@Test
- public void isMobileDataAvailable_nullSubscriptions_returnsNull() {
+ public void isMobileDataAvailable_nullSubscriptions_slicePrimaryActionIsEmpty() {
doReturn(null).when(mSubscriptionManager).getSelectableSubscriptionInfoList();
+ final Slice mobileData = mMobileDataSlice.getSlice();
- final Slice slice = mMobileDataSlice.getSlice();
+ final SliceMetadata metadata = SliceMetadata.from(mContext, mobileData);
+ assertThat(metadata.getTitle())
+ .isEqualTo(mContext.getString(R.string.mobile_data_settings_title));
- assertThat(slice).isNull();
+ 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();
}
@Test