Merge "Show mobile data slice in Search even no SIM card" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
8b285f2355
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
<PreferenceScreen
|
<PreferenceScreen
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:settings="http://schemas.android.com/apk/res-auto"
|
||||||
android:key="data_usage_cellular_screen">
|
android:key="data_usage_cellular_screen">
|
||||||
|
|
||||||
<com.android.settings.datausage.TemplatePreferenceCategory
|
<com.android.settings.datausage.TemplatePreferenceCategory
|
||||||
@@ -24,7 +25,8 @@
|
|||||||
|
|
||||||
<com.android.settings.datausage.CellDataPreference
|
<com.android.settings.datausage.CellDataPreference
|
||||||
android:key="data_usage_enable"
|
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
|
<com.android.settings.datausage.DataUsagePreference
|
||||||
android:key="cellular_data_usage"
|
android:key="cellular_data_usage"
|
||||||
|
@@ -64,7 +64,7 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
|
|||||||
public int getAvailabilityStatus(int subId) {
|
public int getAvailabilityStatus(int subId) {
|
||||||
return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||||
? AVAILABLE
|
? AVAILABLE
|
||||||
: CONDITIONALLY_UNAVAILABLE;
|
: DISABLED_DEPENDENT_SETTING;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -73,11 +73,6 @@ public class MobileDataSlice implements CustomSliceable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Slice getSlice() {
|
public Slice getSlice() {
|
||||||
// Mobile data not available, thus return no Slice.
|
|
||||||
if (!isMobileDataAvailable()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
final IconCompat icon = IconCompat.createWithResource(mContext,
|
final IconCompat icon = IconCompat.createWithResource(mContext,
|
||||||
R.drawable.ic_network_cell);
|
R.drawable.ic_network_cell);
|
||||||
final String title = mContext.getText(R.string.mobile_data_settings_title).toString();
|
final String title = mContext.getText(R.string.mobile_data_settings_title).toString();
|
||||||
@@ -85,20 +80,14 @@ public class MobileDataSlice implements CustomSliceable {
|
|||||||
|
|
||||||
// Return a Slice without the mobile data toggle when airplane mode is on.
|
// Return a Slice without the mobile data toggle when airplane mode is on.
|
||||||
if (isAirplaneModeEnabled()) {
|
if (isAirplaneModeEnabled()) {
|
||||||
final CharSequence summary = mContext.getText(R.string.mobile_data_ap_mode_disabled);
|
return buildUnavailableMobileDataSlice(title,
|
||||||
// Intent does nothing, but we have to pass an intent to the Row.
|
mContext.getText(R.string.mobile_data_ap_mode_disabled), icon, color);
|
||||||
final PendingIntent intent = PendingIntent.getActivity(mContext, 0 /* requestCode */,
|
}
|
||||||
new Intent(), 0 /* flags */);
|
|
||||||
final SliceAction deadAction =
|
// Return a Slice without the mobile data toggle when mobile data disabled.
|
||||||
SliceAction.create(intent, icon, ListBuilder.ICON_IMAGE, title);
|
if (!isMobileDataAvailable()) {
|
||||||
final ListBuilder listBuilder = new ListBuilder(mContext, getUri(),
|
return buildUnavailableMobileDataSlice(title,
|
||||||
ListBuilder.INFINITY)
|
mContext.getText(R.string.sim_cellular_data_unavailable), icon, color);
|
||||||
.setAccentColor(color)
|
|
||||||
.addRow(new ListBuilder.RowBuilder()
|
|
||||||
.setTitle(title)
|
|
||||||
.setSubtitle(summary)
|
|
||||||
.setPrimaryAction(deadAction));
|
|
||||||
return listBuilder.build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final CharSequence summary = getSummary();
|
final CharSequence summary = getSummary();
|
||||||
@@ -128,7 +117,7 @@ public class MobileDataSlice implements CustomSliceable {
|
|||||||
@Override
|
@Override
|
||||||
public void onNotifyChange(Intent intent) {
|
public void onNotifyChange(Intent intent) {
|
||||||
final boolean newState = intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
|
final boolean newState = intent.getBooleanExtra(EXTRA_TOGGLE_STATE,
|
||||||
isMobileDataEnabled());
|
isMobileDataEnabled());
|
||||||
|
|
||||||
final int defaultSubId = getDefaultSubscriptionId(mSubscriptionManager);
|
final int defaultSubId = getDefaultSubscriptionId(mSubscriptionManager);
|
||||||
if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
if (defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
|
||||||
@@ -212,6 +201,22 @@ public class MobileDataSlice implements CustomSliceable {
|
|||||||
return mTelephonyManager.isDataEnabled();
|
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.
|
* Listener for mobile data state changes.
|
||||||
*
|
*
|
||||||
|
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package com.android.settings.network.telephony;
|
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;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
@@ -86,10 +86,10 @@ public class MobileDataPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getAvailabilityStatus_invalidSubscription_returnUnavailable() {
|
public void getAvailabilityStatus_invalidSubscription_returnDisabledDependentSetting() {
|
||||||
mController.init(mFragmentManager, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
mController.init(mFragmentManager, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||||
|
|
||||||
assertThat(mController.getAvailabilityStatus()).isEqualTo(CONDITIONALLY_UNAVAILABLE);
|
assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_DEPENDENT_SETTING);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -170,21 +170,47 @@ public class MobileDataSliceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isMobileDataAvailable_noSubscriptions_returnsNull() {
|
public void isMobileDataAvailable_noSubscriptions_slicePrimaryActionIsEmpty() {
|
||||||
doReturn(new ArrayList<>()).when(mSubscriptionManager).getSelectableSubscriptionInfoList();
|
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
|
@Test
|
||||||
public void isMobileDataAvailable_nullSubscriptions_returnsNull() {
|
public void isMobileDataAvailable_nullSubscriptions_slicePrimaryActionIsEmpty() {
|
||||||
doReturn(null).when(mSubscriptionManager).getSelectableSubscriptionInfoList();
|
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
|
@Test
|
||||||
|
Reference in New Issue
Block a user