diff --git a/src/com/android/email/provider/EmailProvider.java b/src/com/android/email/provider/EmailProvider.java index 6f6aac830..a26a249c1 100644 --- a/src/com/android/email/provider/EmailProvider.java +++ b/src/com/android/email/provider/EmailProvider.java @@ -1691,12 +1691,14 @@ public class EmailProvider extends ContentProvider { long accountId = Account.NO_ACCOUNT; // Find the account with "isDefault" set Collection accounts = accountCache.values(); - int numAccounts = accounts.size(); for (Cursor accountCursor: accounts) { - if (accountCursor.getInt(Account.CONTENT_IS_DEFAULT_COLUMN) == 1 || - numAccounts == 1) { + boolean isDefault = + accountCursor.getInt(Account.CONTENT_IS_DEFAULT_COLUMN) == 1; + // We'll remember this one if it's the default or the first one we see + if (isDefault || accountId == Account.NO_ACCOUNT) { accountId = accountCursor.getLong(Account.CONTENT_ID_COLUMN); - break; + // If it's the default, we're done + if (isDefault) break; } } // Return a cursor with an id projection diff --git a/tests/src/com/android/email/provider/ProviderTests.java b/tests/src/com/android/email/provider/ProviderTests.java index d34bbbb93..4b4ac963c 100644 --- a/tests/src/com/android/email/provider/ProviderTests.java +++ b/tests/src/com/android/email/provider/ProviderTests.java @@ -1444,6 +1444,24 @@ public class ProviderTests extends ProviderTestCase2 { } } + public void testGetDefaultAccountNoneExplicitlySet() { + Account account1 = ProviderTestUtils.setupAccount("account-default-1", false, mMockContext); + account1.mIsDefault = false; + account1.save(mMockContext); + + // We should find account1 as default + long defaultAccountId = Account.getDefaultAccountId(mMockContext); + assertEquals(defaultAccountId, account1.mId); + + Account account2 = ProviderTestUtils.setupAccount("account-default-1", false, mMockContext); + account2.mIsDefault = false; + account2.save(mMockContext); + + // We should find one of the two as default + defaultAccountId = Account.getDefaultAccountId(mMockContext); + assertTrue(defaultAccountId == account1.mId || defaultAccountId == account2.mId); + } + /** * Tests of default account behavior *