Merge "Only show graphics driver option when the apk is available." into rvc-dev
diff --git a/res/layout/notification_history_log_row.xml b/res/layout/notification_history_log_row.xml
index 136af38..c77b005 100644
--- a/res/layout/notification_history_log_row.xml
+++ b/res/layout/notification_history_log_row.xml
@@ -28,19 +28,21 @@
         android:layout_height="wrap_content"
         android:orientation="vertical"
         android:layout_marginBottom="6dp">
-        <RelativeLayout
+        <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="@*android:dimen/status_bar_icon_size"
             android:gravity="center_vertical">
 
             <TextView
                 android:id="@+id/title"
-                android:layout_width="match_parent"
+                android:layout_weight="1"
+                android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_centerVertical="true"
                 android:ellipsize="end"
                 android:singleLine="true"
                 android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification.Title"
+                android:layout_toStartOf="@id/alerted_icon"
                 android:textAlignment="viewStart"/>
 
             <ImageView
@@ -51,8 +53,9 @@
                 android:layout_marginStart="6dp"
                 android:paddingTop="1dp"
                 android:scaleType="fitCenter"
-                android:visibility="gone"
+                android:visibility="invisible"
                 android:layout_toEndOf="@id/title"
+                android:layout_toStartOf="@id/timestamp"
                 android:tint="?android:attr/textColorSecondary"
                 android:src="@drawable/ic_notifications_alert"/>
 
@@ -67,7 +70,7 @@
                 android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Notification"
                 android:textAlignment="viewEnd"
                 />
-        </RelativeLayout>
+        </LinearLayout>
 
         <TextView
             android:id="@+id/text"
diff --git a/res/layout/wifi_dialog.xml b/res/layout/wifi_dialog.xml
index 18ad3b5..45ecd61 100644
--- a/res/layout/wifi_dialog.xml
+++ b/res/layout/wifi_dialog.xml
@@ -559,27 +559,6 @@
 
             </LinearLayout>
 
-            <LinearLayout android:id="@+id/privacy_settings_fields"
-                          android:layout_width="match_parent"
-                          android:layout_height="wrap_content"
-                          style="@style/wifi_item"
-                          android:visibility="gone">
-
-                <TextView android:id="@+id/privacy_settings_title"
-                          android:layout_width="wrap_content"
-                          android:layout_height="wrap_content"
-                          style="@style/wifi_item_label"
-                          android:text="@string/wifi_privacy_settings" />
-
-                <Spinner android:id="@+id/privacy_settings"
-                         android:layout_width="match_parent"
-                         android:layout_height="wrap_content"
-                         style="@style/wifi_item_spinner"
-                         android:prompt="@string/wifi_privacy_settings"
-                         android:entries="@array/wifi_privacy_entries"/>
-
-            </LinearLayout>
-
             <LinearLayout android:id="@+id/staticip"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
@@ -680,6 +659,26 @@
                 </LinearLayout>
             </LinearLayout>
 
+            <LinearLayout android:id="@+id/privacy_settings_fields"
+                          android:layout_width="match_parent"
+                          android:layout_height="wrap_content"
+                          style="@style/wifi_item"
+                          android:visibility="gone">
+
+                <TextView android:id="@+id/privacy_settings_title"
+                          android:layout_width="wrap_content"
+                          android:layout_height="wrap_content"
+                          style="@style/wifi_item_label"
+                          android:text="@string/wifi_privacy_settings" />
+
+                <Spinner android:id="@+id/privacy_settings"
+                         android:layout_width="match_parent"
+                         android:layout_height="wrap_content"
+                         style="@style/wifi_item_spinner"
+                         android:prompt="@string/wifi_privacy_settings"
+                         android:entries="@array/wifi_privacy_entries"/>
+            </LinearLayout>
+
             <LinearLayout
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
diff --git a/src/com/android/settings/applications/AppStateManageExternalStorageBridge.java b/src/com/android/settings/applications/AppStateManageExternalStorageBridge.java
index 5a69035..7933062 100644
--- a/src/com/android/settings/applications/AppStateManageExternalStorageBridge.java
+++ b/src/com/android/settings/applications/AppStateManageExternalStorageBridge.java
@@ -22,20 +22,25 @@
 
 import com.android.settingslib.applications.ApplicationsState;
 
+import java.util.List;
+
 /**
  * Retrieves information from {@link AppOpsManager} and {@link android.content.pm.PackageManager}
  * regarding {@link AppOpsManager#OP_MANAGE_EXTERNAL_STORAGE} and
  * {@link Manifest.permission#MANAGE_EXTERNAL_STORAGE}.
  */
 public class AppStateManageExternalStorageBridge extends AppStateAppOpsBridge {
-    private static final int APP_OPS_OP_CODE = AppOpsManager.OP_MANAGE_EXTERNAL_STORAGE;
+    private static final String APP_OP_STR = AppOpsManager.OPSTR_MANAGE_EXTERNAL_STORAGE;
     private static final String[] PERMISSIONS = {
             Manifest.permission.MANAGE_EXTERNAL_STORAGE
     };
 
+    private final AppOpsManager mAppOpsManager;
+
     public AppStateManageExternalStorageBridge(Context context, ApplicationsState appState,
             Callback callback) {
-        super(context, appState, callback, APP_OPS_OP_CODE, PERMISSIONS);
+        super(context, appState, callback, AppOpsManager.strOpToOp(APP_OP_STR), PERMISSIONS);
+        mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
     }
 
     @Override
@@ -43,6 +48,25 @@
         app.extraInfo = getManageExternalStoragePermState(pkg, uid);
     }
 
+    @Override
+    protected void loadAllExtraInfo() {
+        super.loadAllExtraInfo();
+        List<ApplicationsState.AppEntry> apps = mAppSession.getAllApps();
+        for (ApplicationsState.AppEntry app : apps) {
+            if (app.extraInfo instanceof PermissionState) {
+                ((PermissionState) app.extraInfo).appOpMode =  mAppOpsManager.unsafeCheckOpNoThrow(
+                        APP_OP_STR, app.info.uid, app.info.packageName);
+            }
+        }
+    }
+
+    @Override
+    public PermissionState getPermissionInfo(String pkg, int uid) {
+        PermissionState ps = super.getPermissionInfo(pkg, uid);
+        ps.appOpMode = mAppOpsManager.unsafeCheckOpNoThrow(APP_OP_STR, uid, pkg);
+        return ps;
+    }
+
     /**
      * Returns the MANAGE_EXTERNAL_STORAGE {@link AppStateAppOpsBridge.PermissionState} object
      * associated with the given package and user.
diff --git a/src/com/android/settings/applications/appinfo/ManageExternalStorageDetails.java b/src/com/android/settings/applications/appinfo/ManageExternalStorageDetails.java
index 63ce440..6c840d5 100644
--- a/src/com/android/settings/applications/appinfo/ManageExternalStorageDetails.java
+++ b/src/com/android/settings/applications/appinfo/ManageExternalStorageDetails.java
@@ -23,7 +23,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 
-import androidx.annotation.VisibleForTesting;
 import androidx.appcompat.app.AlertDialog;
 import androidx.preference.Preference;
 import androidx.preference.Preference.OnPreferenceChangeListener;
@@ -110,8 +109,8 @@
      */
     private void setManageExternalStorageState(boolean newState) {
         logSpecialPermissionChange(newState, mPackageName);
-        mAppOpsManager.setMode(AppOpsManager.OP_MANAGE_EXTERNAL_STORAGE,
-                mPackageInfo.applicationInfo.uid, mPackageName, newState
+        mAppOpsManager.setUidMode(AppOpsManager.OP_MANAGE_EXTERNAL_STORAGE,
+                mPackageInfo.applicationInfo.uid, newState
                         ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_ERRORED);
     }
 
diff --git a/src/com/android/settings/network/telephony/NetworkScanHelper.java b/src/com/android/settings/network/telephony/NetworkScanHelper.java
index eb0d020..6d3cdbb 100644
--- a/src/com/android/settings/network/telephony/NetworkScanHelper.java
+++ b/src/com/android/settings/network/telephony/NetworkScanHelper.java
@@ -25,6 +25,7 @@
 import android.telephony.TelephonyScanManager;
 import android.util.Log;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.Executor;
 
@@ -75,37 +76,6 @@
     private static final int MAX_SEARCH_TIME_SEC = 300;
     private static final int INCREMENTAL_RESULTS_PERIODICITY_SEC = 3;
 
-    private static final NetworkScanRequest NETWORK_SCAN_REQUEST =
-            new NetworkScanRequest(
-                    NetworkScanRequest.SCAN_TYPE_ONE_SHOT,
-                    new RadioAccessSpecifier[]{
-                            // GSM
-                            new RadioAccessSpecifier(
-                                    AccessNetworkType.GERAN,
-                                    null /* bands */,
-                                    null /* channels */),
-                            // LTE
-                            new RadioAccessSpecifier(
-                                    AccessNetworkType.EUTRAN,
-                                    null /* bands */,
-                                    null /* channels */),
-                            // WCDMA
-                            new RadioAccessSpecifier(
-                                    AccessNetworkType.UTRAN,
-                                    null /* bands */,
-                                    null /* channels */),
-                            // NR
-                            new RadioAccessSpecifier(
-                                    AccessNetworkType.NGRAN,
-                                    null /* bands */,
-                                    null /* channels */)
-                    },
-                    SEARCH_PERIODICITY_SEC,
-                    MAX_SEARCH_TIME_SEC,
-                    INCREMENTAL_RESULTS,
-                    INCREMENTAL_RESULTS_PERIODICITY_SEC,
-                    null /* List of PLMN ids (MCC-MNC) */);
-
     private final NetworkScanCallback mNetworkScanCallback;
     private final TelephonyManager mTelephonyManager;
     private final TelephonyScanManager.NetworkScanCallback mInternalNetworkScanCallback;
@@ -120,6 +90,47 @@
         mExecutor = executor;
     }
 
+    private NetworkScanRequest createNetworkScanForPreferredAccessNetworks() {
+        long networkTypeBitmap3gpp = mTelephonyManager.getPreferredNetworkTypeBitmask()
+                & TelephonyManager.NETWORK_STANDARDS_FAMILY_BITMASK_3GPP;
+
+        List<RadioAccessSpecifier> radioAccessSpecifiers = new ArrayList<>();
+        // If the allowed network types are unknown or if they are of the right class, scan for
+        // them; otherwise, skip them to save scan time and prevent users from being shown networks
+        // that they can't connect to.
+        if (networkTypeBitmap3gpp == 0
+                || (networkTypeBitmap3gpp & TelephonyManager.NETWORK_CLASS_BITMASK_2G) != 0) {
+            radioAccessSpecifiers.add(
+                    new RadioAccessSpecifier(AccessNetworkType.GERAN, null, null));
+        }
+        if (networkTypeBitmap3gpp == 0
+                || (networkTypeBitmap3gpp & TelephonyManager.NETWORK_CLASS_BITMASK_3G) != 0) {
+            radioAccessSpecifiers.add(
+                    new RadioAccessSpecifier(AccessNetworkType.UTRAN, null, null));
+        }
+        if (networkTypeBitmap3gpp == 0
+                || (networkTypeBitmap3gpp & TelephonyManager.NETWORK_CLASS_BITMASK_4G) != 0) {
+            radioAccessSpecifiers.add(
+                    new RadioAccessSpecifier(AccessNetworkType.EUTRAN, null, null));
+        }
+        if (networkTypeBitmap3gpp == 0
+                || (networkTypeBitmap3gpp & TelephonyManager.NETWORK_CLASS_BITMASK_5G) != 0) {
+            radioAccessSpecifiers.add(
+                    new RadioAccessSpecifier(AccessNetworkType.NGRAN, null, null));
+        }
+
+
+        return new NetworkScanRequest(
+                NetworkScanRequest.SCAN_TYPE_ONE_SHOT,
+                radioAccessSpecifiers.toArray(
+                        new RadioAccessSpecifier[radioAccessSpecifiers.size()]),
+                SEARCH_PERIODICITY_SEC,
+                MAX_SEARCH_TIME_SEC,
+                INCREMENTAL_RESULTS,
+                INCREMENTAL_RESULTS_PERIODICITY_SEC,
+                null /* List of PLMN ids (MCC-MNC) */);
+    }
+
     /**
      * Request a network scan.
      *
@@ -134,7 +145,7 @@
             return;
         }
         mNetworkScanRequester = mTelephonyManager.requestNetworkScan(
-                NETWORK_SCAN_REQUEST,
+                createNetworkScanForPreferredAccessNetworks(),
                 mExecutor,
                 mInternalNetworkScanCallback);
         if (mNetworkScanRequester == null) {
diff --git a/src/com/android/settings/notification/history/NotificationHistoryActivity.java b/src/com/android/settings/notification/history/NotificationHistoryActivity.java
index fbbda21..8c00b5d 100644
--- a/src/com/android/settings/notification/history/NotificationHistoryActivity.java
+++ b/src/com/android/settings/notification/history/NotificationHistoryActivity.java
@@ -241,7 +241,16 @@
 
         @Override
         public void onListenerConnected() {
-            StatusBarNotification[] snoozed = getSnoozedNotifications();
+            StatusBarNotification[] snoozed = null;
+            StatusBarNotification[] dismissed = null;
+            try {
+                snoozed = getSnoozedNotifications();
+                dismissed = mNm.getHistoricalNotifications(
+                    NotificationHistoryActivity.this.getPackageName(), 6, false);
+            } catch (SecurityException | RemoteException e) {
+                Log.d(TAG, "OnPaused called while trying to retrieve notifications");
+            }
+
             mSnoozedRv = mSnoozeView.findViewById(R.id.notification_list);
             LinearLayoutManager lm = new LinearLayoutManager(NotificationHistoryActivity.this);
             mSnoozedRv.setLayoutManager(lm);
@@ -259,26 +268,23 @@
                         new ArrayList<>(Arrays.asList(snoozed)));
             }
 
-            try {
-                StatusBarNotification[] dismissed = mNm.getHistoricalNotifications(
-                        NotificationHistoryActivity.this.getPackageName(), 6, false);
-                mDismissedRv = mDismissView.findViewById(R.id.notification_list);
-                LinearLayoutManager dismissLm =
-                        new LinearLayoutManager(NotificationHistoryActivity.this);
-                mDismissedRv.setLayoutManager(dismissLm);
-                mDismissedRv.setAdapter(
-                        new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm));
-                DividerItemDecoration dismissDivider = new DividerItemDecoration(
-                        mDismissedRv.getContext(), dismissLm.getOrientation());
-                mDismissedRv.addItemDecoration(dismissDivider);
-                mDismissedRv.setNestedScrollingEnabled(false);
+            mDismissedRv = mDismissView.findViewById(R.id.notification_list);
+            LinearLayoutManager dismissLm =
+                new LinearLayoutManager(NotificationHistoryActivity.this);
+            mDismissedRv.setLayoutManager(dismissLm);
+            mDismissedRv.setAdapter(
+                new NotificationSbnAdapter(NotificationHistoryActivity.this, mPm));
+            DividerItemDecoration dismissDivider = new DividerItemDecoration(
+                mDismissedRv.getContext(), dismissLm.getOrientation());
+            mDismissedRv.addItemDecoration(dismissDivider);
+            mDismissedRv.setNestedScrollingEnabled(false);
 
-                ((NotificationSbnAdapter) mDismissedRv.getAdapter()).onRebuildComplete(
-                        new ArrayList<>(Arrays.asList(dismissed)));
-                mDismissView.setVisibility(View.VISIBLE);
-            } catch (Exception e) {
-                Slog.e(TAG, "Cannot load recently dismissed", e);
+            if (dismissed == null || dismissed.length == 0) {
                 mDismissView.setVisibility(View.GONE);
+            } else {
+                mDismissView.setVisibility(View.VISIBLE);
+                ((NotificationSbnAdapter) mDismissedRv.getAdapter()).onRebuildComplete(
+                    new ArrayList<>(Arrays.asList(dismissed)));
             }
         }
 
diff --git a/src/com/android/settings/panel/VolumePanel.java b/src/com/android/settings/panel/VolumePanel.java
index 61dee15..dd9b53c 100644
--- a/src/com/android/settings/panel/VolumePanel.java
+++ b/src/com/android/settings/panel/VolumePanel.java
@@ -48,7 +48,7 @@
 
     @Override
     public CharSequence getTitle() {
-        return mContext.getText(R.string.volume_connectivity_panel_title);
+        return mContext.getText(R.string.sound_settings);
     }
 
     @Override
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index d9b9e3c..5264e10 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -82,6 +82,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
+import java.util.stream.Collectors;
 
 /**
  * The class for allowing UIs like {@link WifiDialog} and {@link WifiConfigUiBase} to
@@ -133,6 +134,14 @@
     public static final int WIFI_TTLS_PHASE2_MSCHAPV2  = 2;
     public static final int WIFI_TTLS_PHASE2_GTC       = 3;
 
+    private static final String UNDESIRED_CERTIFICATE_MACRANDSECRET = "MacRandSecret";
+    private static final String UNDESIRED_CERTIFICATE_MACRANDSAPSECRET = "MacRandSapSecret";
+    @VisibleForTesting
+    static final String[] UNDESIRED_CERTIFICATES = {
+        UNDESIRED_CERTIFICATE_MACRANDSECRET,
+        UNDESIRED_CERTIFICATE_MACRANDSAPSECRET
+    };
+
     /* Phase2 methods supported by PEAP are limited */
     private ArrayAdapter<CharSequence> mPhase2PeapAdapter;
     /* Phase2 methods supported by TTLS are limited */
@@ -1425,7 +1434,8 @@
         return KeyStore.getInstance();
     }
 
-    private void loadCertificates(
+    @VisibleForTesting
+    void loadCertificates(
             Spinner spinner,
             String prefix,
             String noCertificateString,
@@ -1441,12 +1451,25 @@
         if (showUsePreinstalledCertOption) {
             certs.add(mUseSystemCertsString);
         }
+
+        String[] certificateNames = null;
         try {
-            certs.addAll(
-                Arrays.asList(getKeyStore().list(prefix, android.os.Process.WIFI_UID)));
+            certificateNames = getKeyStore().list(prefix, android.os.Process.WIFI_UID);
         } catch (Exception e) {
             Log.e(TAG, "can't get the certificate list from KeyStore");
         }
+        if (certificateNames != null && certificateNames.length != 0) {
+            certs.addAll(Arrays.stream(certificateNames)
+                    .filter(certificateName -> {
+                        for (String undesired : UNDESIRED_CERTIFICATES) {
+                            if (certificateName.startsWith(undesired)) {
+                                return false;
+                            }
+                        }
+                        return true;
+                    }).collect(Collectors.toList()));
+        }
+
         if (mAccessPointSecurity != AccessPoint.SECURITY_EAP_SUITE_B) {
             certs.add(noCertificateString);
         }
diff --git a/src/com/android/settings/wifi/WifiConfigController2.java b/src/com/android/settings/wifi/WifiConfigController2.java
index 8352a76..830f061 100644
--- a/src/com/android/settings/wifi/WifiConfigController2.java
+++ b/src/com/android/settings/wifi/WifiConfigController2.java
@@ -82,6 +82,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Iterator;
+import java.util.stream.Collectors;
 
 /**
  * The class for allowing UIs like {@link WifiDialog2} and {@link WifiConfigUiBase2} to
@@ -133,6 +134,14 @@
     public static final int WIFI_TTLS_PHASE2_MSCHAPV2  = 2;
     public static final int WIFI_TTLS_PHASE2_GTC       = 3;
 
+    private static final String UNDESIRED_CERTIFICATE_MACRANDSECRET = "MacRandSecret";
+    private static final String UNDESIRED_CERTIFICATE_MACRANDSAPSECRET = "MacRandSapSecret";
+    @VisibleForTesting
+    static final String[] UNDESIRED_CERTIFICATES = {
+        UNDESIRED_CERTIFICATE_MACRANDSECRET,
+        UNDESIRED_CERTIFICATE_MACRANDSAPSECRET
+    };
+
     /* Phase2 methods supported by PEAP are limited */
     private ArrayAdapter<CharSequence> mPhase2PeapAdapter;
     /* Phase2 methods supported by TTLS are limited */
@@ -1421,7 +1430,8 @@
         return KeyStore.getInstance();
     }
 
-    private void loadCertificates(
+    @VisibleForTesting
+    void loadCertificates(
             Spinner spinner,
             String prefix,
             String noCertificateString,
@@ -1437,11 +1447,25 @@
         if (showUsePreinstalledCertOption) {
             certs.add(mUseSystemCertsString);
         }
+
+        String[] certificateNames = null;
         try {
-            certs.addAll(Arrays.asList(getKeyStore().list(prefix, android.os.Process.WIFI_UID)));
+            certificateNames = getKeyStore().list(prefix, android.os.Process.WIFI_UID);
         } catch (Exception e) {
             Log.e(TAG, "can't get the certificate list from KeyStore");
         }
+        if (certificateNames != null && certificateNames.length != 0) {
+            certs.addAll(Arrays.stream(certificateNames)
+                    .filter(certificateName -> {
+                        for (String undesired : UNDESIRED_CERTIFICATES) {
+                            if (certificateName.startsWith(undesired)) {
+                                return false;
+                            }
+                        }
+                        return true;
+                    }).collect(Collectors.toList()));
+        }
+
         if (mWifiEntrySecurity != WifiEntry.SECURITY_EAP_SUITE_B) {
             certs.add(noCertificateString);
         }
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java
index e0dc97f..c9bc346 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigController2Test.java
@@ -241,6 +241,20 @@
     }
 
     @Test
+    public void loadCertificates_undesiredCertificates_shouldNotLoadUndesiredCertificates() {
+        final Spinner spinner = new Spinner(mContext);
+        when(mKeyStore.list(anyString())).thenReturn(WifiConfigController.UNDESIRED_CERTIFICATES);
+
+        mController.loadCertificates(spinner,
+                "prefix",
+                "doNotProvideEapUserCertString",
+                false /* showMultipleCerts */,
+                false /* showUsePreinstalledCertOption */);
+
+        assertThat(spinner.getAdapter().getCount()).isEqualTo(1);   // doNotProvideEapUserCertString
+    }
+
+    @Test
     public void ssidGetFocus_addNewNetwork_shouldReturnTrue() {
         mController = new TestWifiConfigController2(mConfigUiBase, mView, null /* wifiEntry */,
                 WifiConfigUiBase2.MODE_CONNECT);
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
index 3a17b6c..9146998 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiConfigControllerTest.java
@@ -241,6 +241,20 @@
     }
 
     @Test
+    public void loadCertificates_undesiredCertificates_shouldNotLoadUndesiredCertificates() {
+        final Spinner spinner = new Spinner(mContext);
+        when(mKeyStore.list(anyString())).thenReturn(WifiConfigController.UNDESIRED_CERTIFICATES);
+
+        mController.loadCertificates(spinner,
+                "prefix",
+                "doNotProvideEapUserCertString",
+                false /* showMultipleCerts */,
+                false /* showUsePreinstalledCertOption */);
+
+        assertThat(spinner.getAdapter().getCount()).isEqualTo(1);   // doNotProvideEapUserCertString
+    }
+
+    @Test
     public void ssidGetFocus_addNewNetwork_shouldReturnTrue() {
         mController = new TestWifiConfigController(mConfigUiBase, mView, null /* accessPoint */,
                 WifiConfigUiBase.MODE_CONNECT);