diff --git a/src/com/android/email/activity/RecentMailboxManager.java b/src/com/android/email/activity/RecentMailboxManager.java index dabfac50f..e7ffd5b28 100644 --- a/src/com/android/email/activity/RecentMailboxManager.java +++ b/src/com/android/email/activity/RecentMailboxManager.java @@ -16,17 +16,16 @@ package com.android.email.activity; -import com.google.common.annotations.VisibleForTesting; - import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import com.android.email.Clock; import com.android.emailcommon.provider.EmailContent; -import com.android.emailcommon.provider.Mailbox; import com.android.emailcommon.provider.EmailContent.MailboxColumns; +import com.android.emailcommon.provider.Mailbox; import com.android.emailcommon.utility.EmailAsyncTask; +import com.google.common.annotations.VisibleForTesting; import java.util.ArrayList; @@ -49,6 +48,7 @@ public class RecentMailboxManager { "( SELECT " + MailboxColumns.ID + " FROM " + Mailbox.TABLE_NAME + " WHERE ( " + MailboxColumns.ACCOUNT_KEY + "=? " + + " AND " + Mailbox.USER_VISIBLE_MAILBOX_SELECTION + " AND " + MailboxColumns.LAST_TOUCHED_TIME + ">0 )" + " ORDER BY " + MailboxColumns.LAST_TOUCHED_TIME + " DESC" + " LIMIT ? )"; @@ -58,6 +58,7 @@ public class RecentMailboxManager { "( SELECT " + MailboxColumns.ID + " FROM " + Mailbox.TABLE_NAME + " WHERE ( " + MailboxColumns.ACCOUNT_KEY + "=? " + + " AND " + Mailbox.USER_VISIBLE_MAILBOX_SELECTION + " AND " + MailboxColumns.TYPE + "=" + Mailbox.TYPE_MAIL + " AND " + MailboxColumns.LAST_TOUCHED_TIME + ">0 )" + " ORDER BY " + MailboxColumns.LAST_TOUCHED_TIME + " DESC" diff --git a/tests/src/com/android/email/activity/RecentMailboxManagerTest.java b/tests/src/com/android/email/activity/RecentMailboxManagerTest.java index 38c177f6c..adcaacbe6 100644 --- a/tests/src/com/android/email/activity/RecentMailboxManagerTest.java +++ b/tests/src/com/android/email/activity/RecentMailboxManagerTest.java @@ -16,6 +16,7 @@ package com.android.email.activity; +import android.content.ContentValues; import android.content.Context; import android.test.AndroidTestCase; @@ -23,6 +24,7 @@ import com.android.email.DBTestHelper; import com.android.email.MockClock; import com.android.email.provider.ContentCache; import com.android.email.provider.ProviderTestUtils; +import com.android.emailcommon.provider.EmailContent.MailboxColumns; import com.android.emailcommon.provider.Mailbox; import java.util.ArrayList; @@ -62,7 +64,7 @@ public class RecentMailboxManagerTest extends AndroidTestCase { ProviderTestUtils.setupMailbox("costello", 1L, true, mMockContext, Mailbox.TYPE_MAIL), ProviderTestUtils.setupMailbox("bud_lou", 1L, true, mMockContext, Mailbox.TYPE_MAIL), ProviderTestUtils.setupMailbox("laurel", 1L, true, mMockContext, Mailbox.TYPE_MAIL), - ProviderTestUtils.setupMailbox("hardy", 1L, true, mMockContext, Mailbox.TYPE_MAIL), + ProviderTestUtils.setupMailbox("hardy", 1L, true, mMockContext, Mailbox.TYPE_MAIL) }; // Invalidate all caches, since we reset the database for each test ContentCache.invalidateAllCaches(); @@ -216,4 +218,24 @@ public class RecentMailboxManagerTest extends AndroidTestCase { assertEquals(mMailboxArray[10].mId, (long) testList.get(3)); assertEquals(mMailboxArray[9].mId, (long) testList.get(4)); } + + public void testDoesNotIncludeExtraMailboxes() throws Exception { + ArrayList testList; + + // The search mailbox should not be visible. + Mailbox searchMailbox = ProviderTestUtils.setupMailbox( + "search", 1L, true, mMockContext, Mailbox.TYPE_SEARCH); + ContentValues cv = new ContentValues(); + cv.put(MailboxColumns.FLAG_VISIBLE, false); + searchMailbox.mFlagVisible = false; + searchMailbox.update(mMockContext, cv); + + mMockClock.advance(1000L); mManager.touch(searchMailbox.mId).get(); + + // Ensure search mailbox isn't returned + testList = mManager.getMostRecent(1L, false); + assertFalse(testList.contains(searchMailbox.mId)); + testList = mManager.getMostRecent(1L, true); + assertFalse(testList.contains(searchMailbox.mId)); + } }