Merge "Fix account picker crash when there is no account before."
diff --git a/src/com/android/settings/dashboard/SupportItemAdapter.java b/src/com/android/settings/dashboard/SupportItemAdapter.java
index 4e1ae78..b125fff 100644
--- a/src/com/android/settings/dashboard/SupportItemAdapter.java
+++ b/src/com/android/settings/dashboard/SupportItemAdapter.java
@@ -170,8 +170,13 @@
public void setAccounts(Account accounts[]) {
if (!Arrays.equals(mAccounts, accounts)) {
- int index = ArrayUtils.indexOf(accounts, mAccounts[mSelectedAccountIndex]);
- mSelectedAccountIndex = index != -1 ? index : 0;
+ if (mAccounts.length == 0) {
+ mSelectedAccountIndex = 0;
+ } else {
+ final int index = ArrayUtils.indexOf(accounts, mAccounts[mSelectedAccountIndex]);
+ mSelectedAccountIndex = index != -1 ? index : 0;
+ }
+
mAccounts = accounts;
mSupportFeatureProvider.refreshOperationRules();
refreshEscalationCards();
diff --git a/tests/robotests/src/com/android/settings/dashboard/SupportItemAdapterTest.java b/tests/robotests/src/com/android/settings/dashboard/SupportItemAdapterTest.java
index 71bb4f6..e3d4c94 100644
--- a/tests/robotests/src/com/android/settings/dashboard/SupportItemAdapterTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/SupportItemAdapterTest.java
@@ -51,6 +51,7 @@
private final Account USER_2 = new Account("user2", ACCOUNT_TYPE);
private final Account TWO_ACCOUNTS[] = {USER_1, USER_2};
private final Account ONE_ACCOUNT[] = {USER_1};
+ private final Account ZERO_ACCOUNT[] = {};
private ShadowActivity mShadowActivity;
private Activity mActivity;
@@ -98,6 +99,18 @@
verify(mSupportFeatureProvider).getAccountLoginIntent();
}
+ @Test
+ public void testSetAccount_AccountEmpty_NotCrash() {
+ when(mSupportFeatureProvider.getSupportEligibleAccounts(mActivity)).thenReturn(ZERO_ACCOUNT);
+ mSupportItemAdapter = new SupportItemAdapter(mActivity, null, mSupportFeatureProvider,
+ mMetricsFeatureProvider, null);
+
+ // Should not crash in this method
+ mSupportItemAdapter.setAccounts(ONE_ACCOUNT);
+
+ verify(mSupportFeatureProvider).getSupportEligibleAccounts(mActivity);
+ }
+
/**
* Check after {@link SupportItemAdapter#bindAccountPicker(SupportItemAdapter.ViewHolder)} is
* invoked, whether the spinner in {@paramref viewHolder} has all the data from {@paramref