Hardware Search button doesn't work

b/11689324

In Jelly Bean, the hardware button has been redirected to always open Google Now by default. But
Email does run on Ice Cream Sandwich and on that platform the hardware search button should invoke
a local search of Email. The issue at play here was that IMAP accounts weren't reporting themselves
as being capable of a remote server search, even though they are in practice. Adjusting this
capability fixes the issue.

Change-Id: I0027d9641564dec72d7f9dfbc66f18cb7f675499
diff --git a/src/com/android/mail/providers/Account.java b/src/com/android/mail/providers/Account.java
index ebda1aa..17d7a4e 100644
--- a/src/com/android/mail/providers/Account.java
+++ b/src/com/android/mail/providers/Account.java
@@ -482,6 +482,16 @@
         return (capabilities & capability) != 0;
     }
 
+    /**
+     * @return <tt>true</tt> if this mail account can be searched in any way (locally on the device,
+     *      remotely on the server, or remotely on the server within the current folder)
+     */
+    public boolean supportsSearch() {
+        return supportsCapability(AccountCapabilities.LOCAL_SEARCH)
+                || supportsCapability(AccountCapabilities.SERVER_SEARCH)
+                || supportsCapability(AccountCapabilities.FOLDER_SERVER_SEARCH);
+    }
+
     public boolean isAccountSyncRequired() {
         return (syncStatus & SyncStatus.INITIAL_SYNC_NEEDED) == SyncStatus.INITIAL_SYNC_NEEDED;
     }
diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java
index c44e598..20528ec 100644
--- a/src/com/android/mail/ui/AbstractActivityController.java
+++ b/src/com/android/mail/ui/AbstractActivityController.java
@@ -3144,8 +3144,7 @@
             LogUtils.d(LOG_TAG, "AbstractActivityController.startSearch(): null account");
             return;
         }
-        if (mAccount.supportsCapability(UIProvider.AccountCapabilities.LOCAL_SEARCH)
-                || mAccount.supportsCapability(UIProvider.AccountCapabilities.SERVER_SEARCH)) {
+        if (mAccount.supportsSearch()) {
             mActionBarView.expandSearch();
         } else {
             Toast.makeText(mActivity.getActivityContext(), mActivity.getActivityContext()
diff --git a/src/com/android/mail/ui/MailActionBarView.java b/src/com/android/mail/ui/MailActionBarView.java
index b07324c..5db87f1 100644
--- a/src/com/android/mail/ui/MailActionBarView.java
+++ b/src/com/android/mail/ui/MailActionBarView.java
@@ -424,10 +424,8 @@
                 reorderMenu(getContext(), mAccount, menu, totalItems);
                 break;
             case ViewMode.CONVERSATION_LIST:
-                // Show compose and search based on the account
-                // The only option that needs to be disabled is search
-                Utils.setMenuItemVisibility(menu, R.id.search,
-                        mAccount.supportsCapability(AccountCapabilities.FOLDER_SERVER_SEARCH));
+                // Show search if the account supports it
+                Utils.setMenuItemVisibility(menu, R.id.search, mAccount.supportsSearch());
                 break;
             case ViewMode.SEARCH_RESULTS_LIST:
                 // Hide compose and search