Merge "Optimize NetworkScan for only User-Enabled RANs" into rvc-dev
diff --git a/res/layout/wifi_dialog.xml b/res/layout/wifi_dialog.xml
index a3ad4207..45ecd61 100644
--- a/res/layout/wifi_dialog.xml
+++ b/res/layout/wifi_dialog.xml
@@ -470,7 +470,7 @@
<EditText android:id="@+id/proxy_pac"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- style="@style/wifi_item_content"
+ style="@style/wifi_item_edit_content"
android:hint="@string/proxy_url_hint"
android:inputType="textNoSuggestions"
android:singleLine="true"/>
@@ -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/res/values/styles.xml b/res/values/styles.xml
index dee8176..6ffd6df 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -144,8 +144,9 @@
<style name="wifi_item_edit_content">
<item name="android:paddingStart">4dip</item>
<item name="android:layout_marginStart">4dip</item>
- <item name="android:textSize">18sp</item>
<item name="android:textAlignment">viewStart</item>
+ <item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault.Medium</item>
+ <item name="android:textColorHint">?android:attr/textColorSecondary</item>
<item name="android:minHeight">@dimen/min_tap_target_size</item>
</style>
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/datausage/DataUsageList.java b/src/com/android/settings/datausage/DataUsageList.java
index 0cfb831..8db32e9 100644
--- a/src/com/android/settings/datausage/DataUsageList.java
+++ b/src/com/android/settings/datausage/DataUsageList.java
@@ -90,8 +90,10 @@
private static final String KEY_APP = "app";
private static final String KEY_FIELDS = "fields";
- private static final int LOADER_CHART_DATA = 2;
- private static final int LOADER_SUMMARY = 3;
+ @VisibleForTesting
+ static final int LOADER_CHART_DATA = 2;
+ @VisibleForTesting
+ static final int LOADER_SUMMARY = 3;
@VisibleForTesting
MobileDataEnabledListener mDataStateListener;
@@ -188,6 +190,13 @@
public void onResume() {
super.onResume();
mDataStateListener.start(mSubId);
+
+ // kick off loader for network history
+ // TODO: consider chaining two loaders together instead of reloading
+ // network history when showing app detail.
+ getLoaderManager().restartLoader(LOADER_CHART_DATA,
+ buildArgs(mTemplate), mNetworkCycleDataCallbacks);
+
updateBody();
}
@@ -195,6 +204,9 @@
public void onPause() {
super.onPause();
mDataStateListener.stop();
+
+ getLoaderManager().destroyLoader(LOADER_CHART_DATA);
+ getLoaderManager().destroyLoader(LOADER_SUMMARY);
}
@Override
@@ -246,12 +258,6 @@
final Context context = getActivity();
- // kick off loader for network history
- // TODO: consider chaining two loaders together instead of reloading
- // network history when showing app detail.
- getLoaderManager().restartLoader(LOADER_CHART_DATA,
- buildArgs(mTemplate), mNetworkCycleDataCallbacks);
-
// detail mode can change visible menus, invalidate
getActivity().invalidateOptionsMenu();
diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java
index 138930b..e1b2138 100644
--- a/src/com/android/settings/notification/NotificationBackend.java
+++ b/src/com/android/settings/notification/NotificationBackend.java
@@ -37,14 +37,11 @@
import android.content.pm.ParceledListSlice;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.service.notification.ConversationChannelWrapper;
-import android.service.notification.NotifyingApp;
import android.text.format.DateUtils;
import android.util.IconDrawableFactory;
import android.util.Log;
@@ -522,17 +519,17 @@
}
public Drawable getConversationDrawable(Context context, ShortcutInfo info, String pkg,
- int uid) {
+ int uid, boolean important) {
if (info == null) {
return null;
}
ConversationIconFactory iconFactory = new ConversationIconFactory(context,
context.getSystemService(LauncherApps.class),
- context.getPackageManager(), IconDrawableFactory.newInstance(context),
+ context.getPackageManager(),
+ IconDrawableFactory.newInstance(context, false),
context.getResources().getDimensionPixelSize(
R.dimen.conversation_icon_size));
- return new BitmapDrawable(context.getResources(),
- iconFactory.getConversationBitmap(info, pkg, uid));
+ return iconFactory.getConversationDrawable(info, pkg, uid, important);
}
public void requestPinShortcut(Context context, ShortcutInfo shortcutInfo) {
diff --git a/src/com/android/settings/notification/app/AppConversationListPreferenceController.java b/src/com/android/settings/notification/app/AppConversationListPreferenceController.java
index b36c294..32278db 100644
--- a/src/com/android/settings/notification/app/AppConversationListPreferenceController.java
+++ b/src/com/android/settings/notification/app/AppConversationListPreferenceController.java
@@ -127,7 +127,8 @@
conversation.getParentChannelLabel(), conversation.getGroupLabel())
: conversation.getParentChannelLabel());
if (si != null) {
- pref.setIcon(mBackend.getConversationDrawable(mContext, si, mAppRow.pkg, mAppRow.uid));
+ pref.setIcon(mBackend.getConversationDrawable(mContext, si, mAppRow.pkg, mAppRow.uid,
+ conversation.getNotificationChannel().isImportantConversation()));
}
pref.setKey(conversation.getNotificationChannel().getId());
diff --git a/src/com/android/settings/notification/app/ConversationHeaderPreferenceController.java b/src/com/android/settings/notification/app/ConversationHeaderPreferenceController.java
index 369f3af..c74b032 100644
--- a/src/com/android/settings/notification/app/ConversationHeaderPreferenceController.java
+++ b/src/com/android/settings/notification/app/ConversationHeaderPreferenceController.java
@@ -86,6 +86,7 @@
.setHasAppInfoLink(true)
.setRecyclerView(mFragment.getListView(), mFragment.getSettingsLifecycle())
.done(activity, mContext);
+
pref.findViewById(R.id.entity_header).setVisibility(View.VISIBLE);
}
}
diff --git a/src/com/android/settings/notification/app/ConversationImportantPreferenceController.java b/src/com/android/settings/notification/app/ConversationImportantPreferenceController.java
index 35e1f7d..0b1ee16 100644
--- a/src/com/android/settings/notification/app/ConversationImportantPreferenceController.java
+++ b/src/com/android/settings/notification/app/ConversationImportantPreferenceController.java
@@ -74,8 +74,8 @@
mChannel.setImportantConversation(value);
if (value && bubbleImportantConversations()) {
mChannel.setAllowBubbles(true);
- mDependentFieldListener.onFieldValueChanged();
}
+ mDependentFieldListener.onFieldValueChanged();
saveChannel();
return true;
diff --git a/src/com/android/settings/notification/app/ConversationListPreferenceController.java b/src/com/android/settings/notification/app/ConversationListPreferenceController.java
index 79ed28c..0ca31df 100644
--- a/src/com/android/settings/notification/app/ConversationListPreferenceController.java
+++ b/src/com/android/settings/notification/app/ConversationListPreferenceController.java
@@ -88,7 +88,8 @@
pref.setTitle(getTitle(conversation));
pref.setSummary(getSummary(conversation));
pref.setIcon(mBackend.getConversationDrawable(mContext, conversation.getShortcutInfo(),
- conversation.getPkg(), conversation.getUid()));
+ conversation.getPkg(), conversation.getUid(),
+ conversation.getNotificationChannel().isImportantConversation()));
pref.setKey(conversation.getNotificationChannel().getId());
pref.setIntent(getIntent(conversation, pref.getTitle()));
diff --git a/src/com/android/settings/notification/app/NotificationSettings.java b/src/com/android/settings/notification/app/NotificationSettings.java
index 9d52178..af1d9c1 100644
--- a/src/com/android/settings/notification/app/NotificationSettings.java
+++ b/src/com/android/settings/notification/app/NotificationSettings.java
@@ -49,6 +49,7 @@
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.notification.NotificationBackend;
import com.android.settingslib.RestrictedLockUtilsInternal;
+import com.android.settingslib.notification.ConversationIconFactory;
import java.util.ArrayList;
import java.util.List;
@@ -204,7 +205,8 @@
mContext, mPkg, mUid, mChannel.getConversationId());
if (mConversationInfo != null) {
mConversationDrawable = mBackend.getConversationDrawable(
- mContext, mConversationInfo, mAppRow.pkg, mAppRow.uid);
+ mContext, mConversationInfo, mAppRow.pkg, mAppRow.uid,
+ mChannel.isImportantConversation());
}
}
@@ -329,6 +331,12 @@
protected class DependentFieldListener {
protected void onFieldValueChanged() {
+ // Reload the conversation drawable, which shows some channel/conversation state
+ if (mConversationDrawable != null && mConversationDrawable
+ instanceof ConversationIconFactory.ConversationIconDrawable) {
+ ((ConversationIconFactory.ConversationIconDrawable) mConversationDrawable)
+ .setImportant(mChannel.isImportantConversation());
+ }
final PreferenceScreen screen = getPreferenceScreen();
for (NotificationPreferenceController controller : mControllers) {
controller.displayPreference(screen);
diff --git a/src/com/android/settings/widget/EntityHeaderController.java b/src/com/android/settings/widget/EntityHeaderController.java
index 440882f..654d50b 100644
--- a/src/com/android/settings/widget/EntityHeaderController.java
+++ b/src/com/android/settings/widget/EntityHeaderController.java
@@ -135,7 +135,8 @@
*/
public EntityHeaderController setIcon(Drawable icon) {
if (icon != null) {
- mIcon = icon.getConstantState().newDrawable(mAppContext.getResources());
+ final Drawable.ConstantState state = icon.getConstantState();
+ mIcon = state != null ? state.newDrawable(mAppContext.getResources()) : icon;
}
return this;
}
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/datausage/DataUsageListTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java
index 9aca92e..e4f5b1f 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java
@@ -38,6 +38,7 @@
import android.widget.Spinner;
import androidx.fragment.app.FragmentActivity;
+import androidx.loader.app.LoaderManager;
import androidx.preference.PreferenceManager;
import com.android.settings.R;
@@ -71,6 +72,8 @@
private MobileDataEnabledListener mMobileDataEnabledListener;
@Mock
private TemplatePreference.NetworkServices mNetworkServices;
+ @Mock
+ private LoaderManager mLoaderManager;
private Activity mActivity;
private DataUsageList mDataUsageList;
@@ -90,6 +93,7 @@
ReflectionHelpers.setField(mDataUsageList, "mDataStateListener",
mMobileDataEnabledListener);
ReflectionHelpers.setField(mDataUsageList, "services", mNetworkServices);
+ doReturn(mLoaderManager).when(mDataUsageList).getLoaderManager();
}
@Test
@@ -216,6 +220,14 @@
assertThat(spinner.getVisibility()).isEqualTo(View.VISIBLE);
}
+ @Test
+ public void onPause_shouldDestroyLoaders() {
+ mDataUsageList.onPause();
+
+ verify(mLoaderManager).destroyLoader(DataUsageList.LOADER_CHART_DATA);
+ verify(mLoaderManager).destroyLoader(DataUsageList.LOADER_SUMMARY);
+ }
+
private View getHeader() {
final View rootView = LayoutInflater.from(mActivity)
.inflate(R.layout.preference_list_fragment, null, false);
diff --git a/tests/robotests/src/com/android/settings/notification/app/ConversationImportantPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/app/ConversationImportantPreferenceControllerTest.java
index 783b40f..42b7859 100644
--- a/tests/robotests/src/com/android/settings/notification/app/ConversationImportantPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/app/ConversationImportantPreferenceControllerTest.java
@@ -26,7 +26,6 @@
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
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;
@@ -156,7 +155,7 @@
assertTrue(channel.isImportantConversation());
assertFalse(channel.canBubble());
verify(mBackend, times(1)).updateChannel(any(), anyInt(), any());
- verify(mDependentFieldListener, never()).onFieldValueChanged();
+ verify(mDependentFieldListener, times(1)).onFieldValueChanged();
}
@Test
@@ -202,6 +201,6 @@
assertFalse(channel.isImportantConversation());
assertFalse(channel.canBubble());
verify(mBackend, times(1)).updateChannel(any(), anyInt(), any());
- verify(mDependentFieldListener, never()).onFieldValueChanged();
+ verify(mDependentFieldListener, times(1)).onFieldValueChanged();
}
}
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);