From cf7cd933dba6845b365c4bed28ae53580fefbef0 Mon Sep 17 00:00:00 2001 From: Ben Komalo Date: Mon, 11 Jul 2011 12:27:11 -0700 Subject: [PATCH] Filter out Search mailbox from recents. Bug: 5015109 Change-Id: I4e4982bbedc388529eb2f3a9c06ecac47a0a85f0 --- .../email/activity/RecentMailboxManager.java | 7 +++--- .../activity/RecentMailboxManagerTest.java | 24 ++++++++++++++++++- 2 files changed, 27 insertions(+), 4 deletions(-) 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)); + } }