Merge "Add AlarmsAndRemindersAppListProvider to SpecialAppAccess"
diff --git a/src/com/android/settings/applications/appinfo/AppLocaleDetails.java b/src/com/android/settings/applications/appinfo/AppLocaleDetails.java
index a73d658..1a7793e 100644
--- a/src/com/android/settings/applications/appinfo/AppLocaleDetails.java
+++ b/src/com/android/settings/applications/appinfo/AppLocaleDetails.java
@@ -35,6 +35,7 @@
import androidx.preference.Preference;
+import com.android.internal.app.LocaleHelper;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
@@ -212,7 +213,7 @@
if (appLocale == null) {
return context.getString(R.string.preference_of_system_locale_summary);
} else {
- return appLocale.getDisplayName(appLocale);
+ return LocaleHelper.getDisplayName(appLocale, appLocale, true);
}
}
}
diff --git a/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceController.java b/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceController.java
index ea2a9ec..f4543f5 100644
--- a/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceController.java
+++ b/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceController.java
@@ -22,10 +22,8 @@
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
-import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
-import android.util.Log;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
@@ -38,8 +36,6 @@
import com.android.settings.network.MobileDataContentObserver;
import com.android.settings.network.SubscriptionsChangeListener;
-import java.util.List;
-
/**
* Controls whether switch mobile data to the non-default SIM if the non-default SIM has better
* availability.
@@ -49,88 +45,39 @@
* signal/connectivity.
* If this feature is enabled, data will be temporarily enabled on the non-default data SIM,
* including during any voice calls.
- *
- * Showing this preference in the default data sim UI.
*/
public class AutoDataSwitchPreferenceController extends TelephonyTogglePreferenceController
implements LifecycleObserver,
SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
- private static final String TAG = "AutoDataSwitchPreferenceController";
private SwitchPreference mPreference;
private SubscriptionsChangeListener mChangeListener;
private TelephonyManager mManager;
private MobileDataContentObserver mMobileDataContentObserver;
private PreferenceScreen mScreen;
- private SubscriptionManager mSubscriptionManager;
- private List<SubscriptionInfo> mSubInfoList;
public AutoDataSwitchPreferenceController(Context context,
String preferenceKey) {
super(context, preferenceKey);
- mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class);
}
void init(int subId) {
this.mSubId = subId;
- if (renewSubscriptionInfoList()) {
- // If the subscriptionInfos are changed, then
- mManager = mContext.getSystemService(TelephonyManager.class)
- .createForSubscriptionId(getNonDdsSubId());
- }
- if (mMobileDataContentObserver == null) {
- mMobileDataContentObserver = new MobileDataContentObserver(
- new Handler(Looper.getMainLooper()));
- mMobileDataContentObserver.setOnMobileDataChangedListener(() -> {
- mManager = mContext.getSystemService(TelephonyManager.class)
- .createForSubscriptionId(getNonDdsSubId());
- refreshPreference();
- });
- }
- }
-
- private void renewTelephonyComponent() {
- if (renewSubscriptionInfoList()) {
- // If the subscriptionInfos are changed, then
- if (mMobileDataContentObserver != null) {
- mMobileDataContentObserver.unRegister(mContext);
- }
- }
- if (mSubInfoList == null) {
- Log.d(TAG, "mSubInfoList is null. Stop to register the listener");
- return;
- }
- if (mMobileDataContentObserver != null) {
- for (SubscriptionInfo subInfo : mSubInfoList) {
- mMobileDataContentObserver.register(mContext, subInfo.getSubscriptionId());
- }
- }
- mManager = mContext.getSystemService(TelephonyManager.class)
- .createForSubscriptionId(getNonDdsSubId());
- }
-
- /**
- * Renew the subscriptionInfoList if the subscriptionInfos are changed.
- * @return true if the subscriptionInfos are changed. Otherwise, return false.
- */
- private boolean renewSubscriptionInfoList() {
- final List<SubscriptionInfo> newSubInfoList =
- mSubscriptionManager.getActiveSubscriptionInfoList();
- if ((newSubInfoList == null && mSubInfoList == null)
- || (mSubInfoList != null && mSubInfoList.equals(newSubInfoList))) {
- return false;
- }
- mSubInfoList = newSubInfoList;
- return true;
+ mManager = mContext.getSystemService(TelephonyManager.class).createForSubscriptionId(subId);
}
@OnLifecycleEvent(ON_RESUME)
public void onResume() {
- renewTelephonyComponent();
if (mChangeListener == null) {
mChangeListener = new SubscriptionsChangeListener(mContext, this);
}
mChangeListener.start();
+ if (mMobileDataContentObserver == null) {
+ mMobileDataContentObserver = new MobileDataContentObserver(
+ new Handler(Looper.getMainLooper()));
+ mMobileDataContentObserver.setOnMobileDataChangedListener(() -> refreshPreference());
+ }
+ mMobileDataContentObserver.register(mContext, mSubId);
}
@OnLifecycleEvent(ON_PAUSE)
@@ -158,10 +105,6 @@
@Override
public boolean setChecked(boolean isChecked) {
- if (mManager == null) {
- Log.d(TAG, "mManager is null.");
- return false;
- }
mManager.setMobileDataPolicyEnabled(
TelephonyManager.MOBILE_DATA_POLICY_AUTO_DATA_SWITCH,
isChecked);
@@ -176,8 +119,7 @@
@Override
public int getAvailabilityStatus(int subId) {
if (!SubscriptionManager.isValidSubscriptionId(subId)
- || SubscriptionManager.getDefaultDataSubscriptionId() != subId
- || !SubscriptionManager.isValidSubscriptionId(getNonDdsSubId())
+ || SubscriptionManager.getDefaultDataSubscriptionId() == subId
|| (!hasMobileData())) {
return CONDITIONALLY_UNAVAILABLE;
}
@@ -194,12 +136,10 @@
}
@Override
- public void onAirplaneModeChanged(boolean airplaneModeEnabled) {
- }
+ public void onAirplaneModeChanged(boolean airplaneModeEnabled) {}
@Override
public void onSubscriptionsChanged() {
- renewTelephonyComponent();
updateState(mPreference);
}
@@ -212,23 +152,4 @@
super.displayPreference(mScreen);
}
}
-
- private int getNonDdsSubId() {
- int ddsSubId = SubscriptionManager.getDefaultDataSubscriptionId();
- Log.d(TAG, "DDS SubId: " + ddsSubId);
-
- if (ddsSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
- return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
- }
-
- if (mSubInfoList == null) {
- return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
- }
-
- return mSubInfoList.stream()
- .mapToInt(subInfo -> subInfo.getSubscriptionId())
- .filter(subId -> subId != ddsSubId)
- .findFirst()
- .orElse(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
- }
}
diff --git a/tests/robotests/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceControllerTest.java
index 32657a4..758d6b0 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/AutoDataSwitchPreferenceControllerTest.java
@@ -28,18 +28,13 @@
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
-import static org.robolectric.Shadows.shadowOf;
import android.content.Context;
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
-import com.google.common.collect.ImmutableList;
-
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -61,15 +56,10 @@
private TelephonyManager mTelephonyManager;
@Mock
private PreferenceScreen mPreferenceScreen;
- @Mock
- private SubscriptionInfo mSubscriptionInfo1;
- @Mock
- private SubscriptionInfo mSubscriptionInfo2;
private Context mContext;
private SwitchPreference mSwitchPreference;
private AutoDataSwitchPreferenceController mController;
- private ShadowSubscriptionManager mShadowSubscriptionManager;
@Before
public void setUp() {
@@ -79,11 +69,6 @@
when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
mSwitchPreference = new SwitchPreference(mContext);
when(mPreferenceScreen.findPreference(PREF_KEY)).thenReturn(mSwitchPreference);
- when(mSubscriptionInfo1.getSubscriptionId()).thenReturn(SUB_ID_1);
- when(mSubscriptionInfo2.getSubscriptionId()).thenReturn(SUB_ID_2);
- mShadowSubscriptionManager = shadowOf(mContext.getSystemService(SubscriptionManager.class));
- mShadowSubscriptionManager.setActiveSubscriptionInfoList(ImmutableList.of(
- mSubscriptionInfo1, mSubscriptionInfo2));
mController = new AutoDataSwitchPreferenceController(mContext, PREF_KEY) {
@Override
protected boolean hasMobileData() {
@@ -105,19 +90,8 @@
}
@Test
- public void displayPreference_defaultForData_available() {
+ public void displayPreference_defaultForData_notAvailable() {
ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
- mController.init(SUB_ID_1);
-
- mController.displayPreference(mPreferenceScreen);
-
- assertThat(mController.isAvailable()).isTrue();
- assertThat(mSwitchPreference.isVisible()).isTrue();
- }
-
- @Test
- public void displayPreference_notDefaultForData_notAvailable() {
- ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_2);
mController.displayPreference(mPreferenceScreen);
@@ -126,25 +100,21 @@
}
@Test
- public void onSubscriptionsChanged_becomesDefaultForData_available() {
+ public void displayPreference_notDefaultForData_available() {
ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_2);
- mController.init(SUB_ID_1);
mController.displayPreference(mPreferenceScreen);
- ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
- mController.onSubscriptionsChanged();
assertThat(mController.isAvailable()).isTrue();
assertThat(mSwitchPreference.isVisible()).isTrue();
}
@Test
- public void onSubscriptionsChanged_noLongerDefaultForData_notAvailable() {
- ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
- mController.init(SUB_ID_1);
+ public void onSubscriptionsChanged_becomesDefaultForData_notAvailable() {
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_2);
mController.displayPreference(mPreferenceScreen);
- ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_2);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
mController.onSubscriptionsChanged();
assertThat(mController.isAvailable()).isFalse();
@@ -152,25 +122,34 @@
}
@Test
- public void getAvailabilityStatus_mobileDataChangWithDefaultDataSubId_returnAvailable() {
+ public void onSubscriptionsChanged_noLongerDefaultForData_available() {
ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
- mController.init(SUB_ID_1);
+
+ mController.displayPreference(mPreferenceScreen);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_2);
+ mController.onSubscriptionsChanged();
+
+ assertThat(mController.isAvailable()).isTrue();
+ assertThat(mSwitchPreference.isVisible()).isTrue();
+ }
+
+ @Test
+ public void getAvailabilityStatus_mobileDataChangWithDefaultDataSubId_returnUnavailable() {
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
mController.refreshPreference();
assertThat(mController.getAvailabilityStatus(SUB_ID_1))
- .isEqualTo(AVAILABLE);
+ .isEqualTo(CONDITIONALLY_UNAVAILABLE);
}
@Test
- public void getAvailabilityStatus_mobileDataChangWithoutDefaultDataSubId_returnUnavailable() {
+ public void getAvailabilityStatus_mobileDataChangWithoutDefaultDataSubId_returnAvailable() {
ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID_1);
- mController.init(SUB_ID_1);
mController.displayPreference(mPreferenceScreen);
mController.refreshPreference();
- assertThat(mController.getAvailabilityStatus(SUB_ID_2)).isEqualTo(
- CONDITIONALLY_UNAVAILABLE);
+ assertThat(mController.getAvailabilityStatus(SUB_ID_2)).isEqualTo(AVAILABLE);
}
}