Allow going back to search results

If you went from search results to conversation view, then hit the
back button, we were taking you out of search results to the inbox,
because we didn't know you had search results.

Now, we're tracking this (through the use of a folder type), so we
take you where you should go.

Bug: 10591438
Change-Id: I06c38c84f62016a6b3f52f44d78c3b451e4c6a29
diff --git a/src/com/android/mail/providers/UIProvider.java b/src/com/android/mail/providers/UIProvider.java
index 30d38c9..200d5dd 100644
--- a/src/com/android/mail/providers/UIProvider.java
+++ b/src/com/android/mail/providers/UIProvider.java
@@ -729,6 +729,8 @@
         public static final int INBOX_SECTION = 1 << 10;
         /** A system defined unread folder */
         public static final int UNREAD = 1 << 11;
+        /** A "fake" search folder */
+        public static final int SEARCH = 1 << 12;
     }
 
     public static final class FolderCapabilities {
diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java
index fe38134..4d7b496 100644
--- a/src/com/android/mail/ui/AbstractActivityController.java
+++ b/src/com/android/mail/ui/AbstractActivityController.java
@@ -93,6 +93,7 @@
 import com.android.mail.providers.UIProvider.ConversationColumns;
 import com.android.mail.providers.UIProvider.ConversationOperations;
 import com.android.mail.providers.UIProvider.FolderCapabilities;
+import com.android.mail.providers.UIProvider.FolderType;
 import com.android.mail.ui.ActionableToastBar.ActionClickedListener;
 import com.android.mail.utils.ContentProviderTask;
 import com.android.mail.utils.DrawIdler;
@@ -848,7 +849,14 @@
             exitCabMode();
         }
 
-        changeFolder(folder, null, force);
+        final String query;
+        if (folder != null && folder.isType(FolderType.SEARCH)) {
+            query = mConvListContext.searchQuery;
+        } else {
+            query = null;
+        }
+
+        changeFolder(folder, query, force);
     }
 
     /**
diff --git a/src/com/android/mail/ui/RecentFolderList.java b/src/com/android/mail/ui/RecentFolderList.java
index 25f3568..d225f94 100644
--- a/src/com/android/mail/ui/RecentFolderList.java
+++ b/src/com/android/mail/ui/RecentFolderList.java
@@ -26,6 +26,7 @@
 import com.android.mail.providers.AccountObserver;
 import com.android.mail.providers.Folder;
 import com.android.mail.providers.Settings;
+import com.android.mail.providers.UIProvider.FolderType;
 import com.android.mail.utils.FolderUri;
 import com.android.mail.utils.LogUtils;
 import com.android.mail.utils.LruCache;
@@ -200,8 +201,8 @@
         }
         assert (folder != null);
 
-        if (folder.isProviderFolder()) {
-            LogUtils.d(TAG, "Not touching recent folder because it's provider folder");
+        if (folder.isProviderFolder() || folder.isType(FolderType.SEARCH)) {
+            LogUtils.d(TAG, "Not touching recent folder because it's provider or search folder");
             return;
         }