Merge "Wake up/unlock device before running tests"
diff --git a/src/com/android/settings/network/SubscriptionsChangeListener.java b/src/com/android/settings/network/SubscriptionsChangeListener.java
index c3bb22b..1ecd770 100644
--- a/src/com/android/settings/network/SubscriptionsChangeListener.java
+++ b/src/com/android/settings/network/SubscriptionsChangeListener.java
@@ -59,7 +59,9 @@
mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- subscriptionsChangedCallback();
+ if (!isInitialStickyBroadcast()) {
+ subscriptionsChangedCallback();
+ }
}
};
}
diff --git a/src/com/android/settings/network/telephony/MobileNetworkActivity.java b/src/com/android/settings/network/telephony/MobileNetworkActivity.java
index 3c0940d..47eb66b 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkActivity.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkActivity.java
@@ -85,7 +85,14 @@
setContentView(R.layout.mobile_network_settings_container);
}
setActionBar(findViewById(R.id.mobile_action_bar));
- mPhoneChangeReceiver = new PhoneChangeReceiver();
+ mPhoneChangeReceiver = new PhoneChangeReceiver(this, () -> {
+ if (mCurSubscriptionId != SUB_ID_NULL) {
+ // When the radio changes (ex: CDMA->GSM), refresh the fragment.
+ // This is very rare.
+ switchFragment(new MobileNetworkSettings(), mCurSubscriptionId,
+ true /* forceUpdate */);
+ }
+ });
mSubscriptionManager = getSystemService(SubscriptionManager.class);
mSubscriptionInfos = mSubscriptionManager.getActiveSubscriptionInfoList(true);
mCurSubscriptionId = savedInstanceState != null
@@ -103,16 +110,14 @@
@Override
protected void onStart() {
super.onStart();
- final IntentFilter intentFilter = new IntentFilter(
- TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
- registerReceiver(mPhoneChangeReceiver, intentFilter);
+ mPhoneChangeReceiver.register();
mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
}
@Override
protected void onStop() {
super.onStop();
- unregisterReceiver(mPhoneChangeReceiver);
+ mPhoneChangeReceiver.unregister();
mSubscriptionManager.removeOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
}
@@ -235,14 +240,35 @@
return MOBILE_SETTINGS_TAG + subscriptionId;
}
- private class PhoneChangeReceiver extends BroadcastReceiver {
+ @VisibleForTesting
+ static class PhoneChangeReceiver extends BroadcastReceiver {
+ private static final IntentFilter RADIO_TECHNOLOGY_CHANGED_FILTER = new IntentFilter(
+ TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
+
+ private Context mContext;
+ private Client mClient;
+
+ interface Client {
+ void onPhoneChange();
+ }
+
+ public PhoneChangeReceiver(Context context, Client client) {
+ mContext = context;
+ mClient = client;
+ }
+
+ public void register() {
+ mContext.registerReceiver(this, RADIO_TECHNOLOGY_CHANGED_FILTER);
+ }
+
+ public void unregister() {
+ mContext.unregisterReceiver(this);
+ }
+
@Override
public void onReceive(Context context, Intent intent) {
- // When the radio changes (ex: CDMA->GSM), refresh the fragment.
- // This is very rare to happen.
- if (mCurSubscriptionId != SUB_ID_NULL) {
- switchFragment(new MobileNetworkSettings(), mCurSubscriptionId,
- true /* forceUpdate */);
+ if (!isInitialStickyBroadcast()) {
+ mClient.onPhoneChange();
}
}
}
diff --git a/src/com/android/settings/network/telephony/NetworkSelectSettings.java b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
index 2495ca5..088bfbf 100644
--- a/src/com/android/settings/network/telephony/NetworkSelectSettings.java
+++ b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
@@ -132,7 +132,8 @@
@Override
public void onStart() {
super.onStart();
- mForbiddenPlmns = Arrays.asList(mTelephonyManager.getForbiddenPlmns());
+
+ updateForbiddenPlmns();
setProgressBarVisible(true);
mNetworkScanHelper.startNetworkScan(
@@ -141,6 +142,17 @@
: NetworkScanHelper.NETWORK_SCAN_TYPE_WAIT_FOR_ALL_RESULTS);
}
+ /**
+ * Update forbidden PLMNs from the USIM App
+ */
+ @VisibleForTesting
+ void updateForbiddenPlmns() {
+ final String[] forbiddenPlmns = mTelephonyManager.getForbiddenPlmns();
+ mForbiddenPlmns = forbiddenPlmns != null
+ ? Arrays.asList(forbiddenPlmns)
+ : new ArrayList<>();
+ }
+
@Override
public void onStop() {
super.onStop();
diff --git a/src/com/android/settings/password/BiometricFragment.java b/src/com/android/settings/password/BiometricFragment.java
index 7a685ab..baefa09 100644
--- a/src/com/android/settings/password/BiometricFragment.java
+++ b/src/com/android/settings/password/BiometricFragment.java
@@ -125,7 +125,7 @@
.setUseDefaultTitle() // use default title if title is null/empty
.setSubtitle(mBundle.getString(BiometricPrompt.KEY_SUBTITLE))
.setDescription(mBundle.getString(BiometricPrompt.KEY_DESCRIPTION))
- .setRequireConfirmation(
+ .setConfirmationRequired(
mBundle.getBoolean(BiometricPrompt.KEY_REQUIRE_CONFIRMATION, true))
.setNegativeButton(getResources().getString(
R.string.confirm_device_credential_use_alternate_method),
diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
index bc33f4f..01673e3 100644
--- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
@@ -635,7 +635,7 @@
.setDescription(description);
if (keyguardManager.isDeviceSecure()) {
- builder.setAllowDeviceCredential(true);
+ builder.setDeviceCredentialAllowed(true);
}
final BiometricPrompt bp = builder.build();
diff --git a/tests/robotests/src/com/android/settings/network/SubscriptionsChangeListenerTest.java b/tests/robotests/src/com/android/settings/network/SubscriptionsChangeListenerTest.java
index 79d3fdc..9f302df 100644
--- a/tests/robotests/src/com/android/settings/network/SubscriptionsChangeListenerTest.java
+++ b/tests/robotests/src/com/android/settings/network/SubscriptionsChangeListenerTest.java
@@ -23,17 +23,20 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.Intent;
import android.database.ContentObserver;
import android.net.Uri;
import android.provider.Settings;
import android.telephony.SubscriptionManager;
+import com.android.internal.telephony.TelephonyIntents;
import com.android.settings.network.SubscriptionsChangeListener.SubscriptionsChangeListenerClient;
import org.junit.Before;
@@ -95,6 +98,19 @@
}
@Test
+ public void
+ onSubscriptionsChangedEvent_ignoresStickyBroadcastFromBeforeRegistering() {
+ final Intent intent = new Intent(TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
+ mContext.sendStickyBroadcast(intent);
+
+ initListener(true);
+ verify(mClient, never()).onSubscriptionsChanged();
+
+ mContext.sendStickyBroadcast(intent);
+ verify(mClient, times(1)).onSubscriptionsChanged();
+ }
+
+ @Test
public void onSubscriptionsChangedEvent_radioTechnologyChangedBroadcast_eventDeliveredToUs() {
initListener(true);
final ArgumentCaptor<BroadcastReceiver> broadcastReceiverCaptor =
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java
index 3b5cdf9..68f8c91 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java
@@ -26,6 +26,7 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
@@ -35,10 +36,7 @@
import android.view.Menu;
import android.view.View;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentTransaction;
-
+import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.view.menu.ContextMenuBuilder;
import com.android.settings.R;
@@ -56,6 +54,10 @@
import java.util.ArrayList;
import java.util.List;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+
@RunWith(RobolectricTestRunner.class)
public class MobileNetworkActivityTest {
@@ -142,6 +144,25 @@
}
@Test
+ public void phoneChangeReceiver_ignoresStickyBroadcastFromBeforeRegistering() {
+ Activity activity = Robolectric.setupActivity(Activity.class);
+ final int[] onChangeCallbackCount = {0};
+ MobileNetworkActivity.PhoneChangeReceiver receiver =
+ new MobileNetworkActivity.PhoneChangeReceiver(activity, () -> {
+ onChangeCallbackCount[0]++;
+ });
+ Intent intent = new Intent(TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
+ activity.sendStickyBroadcast(intent);
+
+ receiver.register();
+ assertThat(onChangeCallbackCount[0]).isEqualTo(0);
+
+ activity.sendStickyBroadcast(intent);
+ assertThat(onChangeCallbackCount[0]).isEqualTo(1);
+ }
+
+
+ @Test
public void getSubscriptionId_hasIntent_getIdFromIntent() {
final Intent intent = new Intent();
intent.putExtra(Settings.EXTRA_SUB_ID, CURRENT_SUB_ID);
diff --git a/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java b/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
index 2aa68f7..7dfc8a3 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
@@ -102,4 +102,12 @@
(NetworkOperatorPreference) mPreferenceCategory.getPreference(0);
assertThat(preference.getCellInfo()).isEqualTo(mCellInfo2);
}
+
+ @Test
+ public void updateForbiddenPlmns_forbiddenPlmnsNull_shouldNotCrash() {
+ when(mTelephonyManager.getForbiddenPlmns()).thenReturn(null);
+
+ // Should not Crash
+ mNetworkSelectSettings.updateForbiddenPlmns();
+ }
}