diff --git a/res/menu-sw600dp/conversation_list_menu.xml b/res/menu-sw600dp/conversation_list_menu.xml
index 439699b..f741b47 100644
--- a/res/menu-sw600dp/conversation_list_menu.xml
+++ b/res/menu-sw600dp/conversation_list_menu.xml
@@ -24,10 +24,12 @@
         android:icon="@drawable/ic_menu_compose_normal_holo_light"
         android:alphabeticShortcut="@string/trigger_compose_char" />
 
-    <item android:id="@+id/search"
-        android:title="@string/menu_search"
-        android:showAsAction="ifRoom"
-        android:icon="@drawable/ic_menu_search_holo_light"/>
+    <!-- Available only for accounts with SERVER_SEARCH and in a folder
+      that supports FOLDER_SERVER_SEARCH -->
+    <item android:id="@+id/search" android:title="@string/menu_search"
+        android:showAsAction="always|collapseActionView"
+        android:icon="@drawable/ic_menu_search_holo_light"
+        android:actionLayout="@layout/mail_actionbar_searchview" />
 
     <item android:id="@+id/refresh"
         android:title="@string/refresh"
diff --git a/res/menu-sw600dp/conversation_search_results_actions.xml b/res/menu-sw600dp/conversation_search_results_actions.xml
new file mode 100644
index 0000000..6bbaffd
--- /dev/null
+++ b/res/menu-sw600dp/conversation_search_results_actions.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2011 Google Inc.
+     Licensed to The Android Open Source Project.
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:id="@+id/compose"
+        android:title="@string/menu_compose"
+        android:showAsAction="always"
+        android:icon="@drawable/ic_menu_compose_normal_holo_light"
+        android:alphabeticShortcut="@string/trigger_compose_char" />
+
+    <item android:id="@+id/search"
+        android:title="@string/menu_search"
+        android:showAsAction="always|collapseActionView"
+        android:icon="@drawable/ic_menu_search_holo_light"
+        android:actionLayout="@layout/mail_actionbar_searchview" />
+
+    <item android:id="@+id/show_all_folders"
+        android:title="@string/show_all_folders"
+        android:showAsAction="ifRoom"
+        android:icon="@drawable/ic_menu_labels_holo_light" />
+
+    <item android:id="@+id/refresh"
+        android:title="@string/refresh"
+        android:showAsAction="ifRoom"
+        android:icon="@drawable/ic_menu_refresh_holo_light"
+        android:alphabeticShortcut="@string/trigger_refresh_char" />
+
+    <item android:id="@+id/settings"
+        android:title="@string/menu_settings"
+        android:showAsAction="never" />
+
+    <item
+        android:id="@+id/help_info_menu_item"
+        android:icon="@android:drawable/ic_menu_help"
+        android:showAsAction="never"
+        android:title="@string/help_and_info" />
+
+    <item
+        android:id="@+id/feedback_menu_item"
+        android:icon="@android:drawable/ic_menu_send"
+        android:showAsAction="never"
+        android:title="@string/feedback" />
+
+</menu>
diff --git a/res/menu/conversation_list_menu.xml b/res/menu/conversation_list_menu.xml
index e7e8e96..a1ef507 100644
--- a/res/menu/conversation_list_menu.xml
+++ b/res/menu/conversation_list_menu.xml
@@ -25,7 +25,7 @@
         android:alphabeticShortcut="@string/trigger_compose_char" />
 
     <!-- Available only for accounts with SERVER_SEARCH and in a folder
-      that suppors FOLDER_SERVER_SEARCH -->
+      that supports FOLDER_SERVER_SEARCH -->
     <item android:id="@+id/search" android:title="@string/menu_search"
     android:showAsAction="always|collapseActionView"
     android:icon="@drawable/ic_menu_search_holo_light"
diff --git a/res/menu/conversation_search_results_actions.xml b/res/menu/conversation_search_results_actions.xml
new file mode 100644
index 0000000..5796491
--- /dev/null
+++ b/res/menu/conversation_search_results_actions.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2011 Google Inc.
+     Licensed to The Android Open Source Project.
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<!-- Copy of conversation_actions -->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- Depends on AccountCapabilities.ARCHIVE -->
+    <item
+        android:id="@+id/y_button"
+        android:title="@string/archive"
+        android:showAsAction="ifRoom"
+        android:icon="@drawable/archive"
+        android:alphabeticShortcut="@string/trigger_y_char" />
+    <!-- Always available -->
+    <item
+        android:id="@+id/delete"
+        android:title="@string/delete"
+        android:showAsAction="ifRoom"
+        android:icon="@drawable/trash" />
+
+    <!-- Always available -->
+    <item
+        android:id="@+id/change_labels"
+        android:title="@string/menu_change_labels"
+        android:showAsAction="ifRoom"
+        android:icon="@drawable/ic_menu_labels_holo_light" />
+
+    <!-- Always available -->
+    <item
+        android:id="@+id/inside_conversation_unread"
+        android:title="@string/mark_unread"
+        android:showAsAction="ifRoom"
+        android:icon="@drawable/ic_menu_mark_unread_holo_light" />
+
+    <!-- Always available -->
+    <item
+        android:id="@+id/mark_important"
+        android:title="@string/mark_important"
+        android:icon="@drawable/ic_email_caret_double" />
+
+    <!-- Always available -->
+    <item
+        android:id="@+id/mark_not_important"
+        android:title="@string/mark_not_important"
+        android:icon="@drawable/ic_email_caret_single"
+        android:visible="false" />
+
+    <!-- Depends on AccountCapabilities.MUTE -->
+    <item
+        android:id="@+id/mute"
+        android:title="@string/mute" />
+    <!-- Depends on AccountCapabilities.REPORT_SPAM -->
+    <item
+        android:id="@+id/report_spam"
+        android:title="@string/report_spam"
+        android:icon="@drawable/ic_spam_normal_holo_light" />
+
+    <!-- Always available -->
+    <item android:id="@+id/settings"
+        android:title="@string/menu_settings" />
+
+    <!-- Always available -->
+    <item
+        android:id="@+id/help_info_menu_item"
+        android:icon="@android:drawable/ic_menu_help"
+        android:title="@string/help_and_info" />
+
+    <!-- Always available -->
+    <item
+        android:id="@+id/feedback_menu_item"
+        android:icon="@android:drawable/ic_menu_send"
+        android:title="@string/feedback" />
+</menu>
diff --git a/src/com/android/mail/providers/Folder.java b/src/com/android/mail/providers/Folder.java
index 72e3227..7f1c900 100644
--- a/src/com/android/mail/providers/Folder.java
+++ b/src/com/android/mail/providers/Folder.java
@@ -235,12 +235,14 @@
 
     public static Folder forSearchResults(Account account, String query) {
         Folder searchFolder = new Folder();
-        Builder searchBuilder = account.searchUri.buildUpon();
-        searchBuilder.appendQueryParameter(UIProvider.SearchQueryParameters.QUERY, query);
-        Uri searchUri = searchBuilder.build();
-        searchFolder.uri = SEARCH_RESULTS_URI;
-        searchFolder.conversationListUri = searchUri;
-        searchFolder.refreshUri = searchUri;
+        if (account.searchUri != null) {
+            Builder searchBuilder = account.searchUri.buildUpon();
+            searchBuilder.appendQueryParameter(UIProvider.SearchQueryParameters.QUERY, query);
+            Uri searchUri = searchBuilder.build();
+            searchFolder.uri = SEARCH_RESULTS_URI;
+            searchFolder.conversationListUri = searchUri;
+            searchFolder.refreshUri = searchUri;
+        }
         return searchFolder;
     }
 
diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java
index 1b5cd0e..03286a1 100644
--- a/src/com/android/mail/ui/AbstractActivityController.java
+++ b/src/com/android/mail/ui/AbstractActivityController.java
@@ -306,10 +306,8 @@
         mResolver = mActivity.getContentResolver();
 
         // All the individual UI components listen for ViewMode changes. This
-        // simplifies the
-        // amount of logic in the AbstractActivityController, but increases the
-        // possibility of
-        // timing-related bugs.
+        // simplifies the amount of logic in the AbstractActivityController, but increases the
+        // possibility of timing-related bugs.
         mViewMode.addListener(this);
         assert (mActionBarView != null);
         mViewMode.addListener(mActionBarView);
@@ -387,7 +385,7 @@
 
     @Override
     public boolean onPrepareOptionsMenu(Menu menu) {
-        mActionBarView.prepareOptionsMenu(menu);
+        mActionBarView.onPrepareOptionsMenu(menu);
         return true;
     }
 
@@ -498,11 +496,13 @@
         if (savedState != null) {
             restoreListContext(savedState);
             mAccount = savedState.getParcelable(SAVED_ACCOUNT);
+            mActionBarView.setAccount(mAccount);
             restartSettingsLoader();
         } else if (intent != null) {
             if (Intent.ACTION_VIEW.equals(intent.getAction())) {
                 if (intent.hasExtra(Utils.EXTRA_ACCOUNT)) {
                     mAccount = ((Account) intent.getParcelableExtra(Utils.EXTRA_ACCOUNT));
+                    mActionBarView.setAccount(mAccount);
                     mActivity.getLoaderManager().restartLoader(ACCOUNT_SETTINGS_LOADER, null, this);
                     mActivity.invalidateOptionsMenu();
                 }
@@ -522,6 +522,7 @@
             } else if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
                 mViewMode.enterSearchResultsListMode();
                 mAccount = ((Account) intent.getParcelableExtra(Utils.EXTRA_ACCOUNT));
+                mActionBarView.setAccount(mAccount);
                 Folder searchFolder = Folder.forSearchResults(mAccount, intent
                         .getStringExtra(ConversationListContext.EXTRA_SEARCH_QUERY));
                 mConvListContext = ConversationListContext.forSearchQuery(mAccount, searchFolder,
diff --git a/src/com/android/mail/ui/ActionBarView.java b/src/com/android/mail/ui/ActionBarView.java
index 97da9b7..c7eea80 100644
--- a/src/com/android/mail/ui/ActionBarView.java
+++ b/src/com/android/mail/ui/ActionBarView.java
@@ -164,7 +164,7 @@
                 // 4: SEARCH_RESULTS_LIST
                 R.menu.conversation_list_search_results_actions,
                 // 5: SEARCH_RESULTS_CONVERSATION
-                R.menu.conversation_actions
+                R.menu.conversation_search_results_actions
         };
         return modeMenu[mMode];
     }
@@ -265,7 +265,7 @@
         item.setVisible(shouldShow);
     }
 
-    public boolean prepareOptionsMenu(Menu menu) {
+    public boolean onPrepareOptionsMenu(Menu menu) {
         // We start out with every option enabled. Based on the current view, we disable actions
         // that are possible.
         if (mSubjectView != null){
@@ -315,16 +315,13 @@
                 break;
             case ViewMode.SEARCH_RESULTS_LIST:
                 mActionBar.setDisplayHomeAsUpEnabled(true);
-                if (mSearch != null) {
-                    mSearch.expandActionView();
-                    ConversationListContext context = mCallback.getCurrentListContext();
-                    if (context != null) {
-                        mSearchWidget.setQuery(context.searchQuery, false);
-                    }
-                }
+                setPopulatedSearchView();
                 break;
             case ViewMode.SEARCH_RESULTS_CONVERSATION:
                 mActionBar.setDisplayHomeAsUpEnabled(true);
+                if (Utils.useTabletUI(mActivity.getActivityContext())) {
+                    setPopulatedSearchView();
+                }
                 break;
             case ViewMode.FOLDER_LIST:
                 break;
@@ -332,6 +329,16 @@
         return false;
     }
 
+    private void setPopulatedSearchView() {
+        if (mSearch != null) {
+            mSearch.expandActionView();
+            ConversationListContext context = mCallback.getCurrentListContext();
+            if (context != null) {
+                mSearchWidget.setQuery(context.searchQuery, false);
+            }
+        }
+    }
+
     public void removeBackButton() {
         if (mActionBar == null) {
             return;
diff --git a/src/com/android/mail/ui/ActivityController.java b/src/com/android/mail/ui/ActivityController.java
index 69781fb..e024bd9 100644
--- a/src/com/android/mail/ui/ActivityController.java
+++ b/src/com/android/mail/ui/ActivityController.java
@@ -239,4 +239,10 @@
      * @return
      */
     Settings getSettings();
+
+    /**
+     * Returns whether the first conversation in the conversation list should be
+     * automatically selected and shown.
+     */
+    boolean shouldShowFirstConversation();
 }
diff --git a/src/com/android/mail/ui/ControllableActivity.java b/src/com/android/mail/ui/ControllableActivity.java
index 5f8f860..5e4ffd0 100644
--- a/src/com/android/mail/ui/ControllableActivity.java
+++ b/src/com/android/mail/ui/ControllableActivity.java
@@ -76,4 +76,10 @@
      * @return
      */
     FolderChangeListener getFolderChangeListener();
+
+    /**
+     * Returns whether the first conversation in the conversation list should be
+     * automatically selected and shown.
+     */
+    boolean shouldShowFirstConversation();
 }
diff --git a/src/com/android/mail/ui/ConversationListFragment.java b/src/com/android/mail/ui/ConversationListFragment.java
index 12afa26..8734ce1 100644
--- a/src/com/android/mail/ui/ConversationListFragment.java
+++ b/src/com/android/mail/ui/ConversationListFragment.java
@@ -524,6 +524,13 @@
         mListAdapter.swapCursor(mConversationListCursor);
         mConversationListCursor.addListener(this);
         updateSearchResultHeader(data != null ? data.getCount() : 0);
+        if (mActivity.shouldShowFirstConversation()) {
+            if (mConversationListCursor.getCount() > 0) {
+                mConversationListCursor.moveToPosition(0);
+                getListView().setItemChecked(0, true);
+                mCallbacks.onConversationSelected(new Conversation(mConversationListCursor));
+            }
+        }
     }
 
     @Override
diff --git a/src/com/android/mail/ui/FolderSelectionActivity.java b/src/com/android/mail/ui/FolderSelectionActivity.java
index 7df84c9..d59690b 100644
--- a/src/com/android/mail/ui/FolderSelectionActivity.java
+++ b/src/com/android/mail/ui/FolderSelectionActivity.java
@@ -273,4 +273,9 @@
     public boolean onSearchRequested(String query) {
         return false;
     }
+
+    @Override
+    public boolean shouldShowFirstConversation() {
+        return false;
+    }
 }
diff --git a/src/com/android/mail/ui/MailActivity.java b/src/com/android/mail/ui/MailActivity.java
index 5b3663e..b069221 100644
--- a/src/com/android/mail/ui/MailActivity.java
+++ b/src/com/android/mail/ui/MailActivity.java
@@ -255,4 +255,9 @@
     public Settings getSettings() {
         return mController.getSettings();
     }
+
+    @Override
+    public boolean shouldShowFirstConversation() {
+        return mController.shouldShowFirstConversation();
+    }
 }
diff --git a/src/com/android/mail/ui/OnePaneController.java b/src/com/android/mail/ui/OnePaneController.java
index e655b27..57616d8 100644
--- a/src/com/android/mail/ui/OnePaneController.java
+++ b/src/com/android/mail/ui/OnePaneController.java
@@ -266,4 +266,9 @@
                 FragmentManager.POP_BACK_STACK_INCLUSIVE);
         resetActionBarIcon();
     }
+
+    @Override
+    public boolean shouldShowFirstConversation() {
+        return false;
+    }
 }
diff --git a/src/com/android/mail/ui/TwoPaneController.java b/src/com/android/mail/ui/TwoPaneController.java
index 36e49bd..2c2650b 100644
--- a/src/com/android/mail/ui/TwoPaneController.java
+++ b/src/com/android/mail/ui/TwoPaneController.java
@@ -52,7 +52,11 @@
      */
     private void initializeConversationListFragment(boolean show) {
         if (show) {
-            mViewMode.enterConversationListMode();
+            if (mConvListContext != null && mConvListContext.isSearchResult()) {
+                mViewMode.enterSearchResultsListMode();
+            } else {
+                mViewMode.enterConversationListMode();
+            }
         }
         renderConversationList();
     }
@@ -149,7 +153,13 @@
 
     @Override
     public void showConversation(Conversation conversation) {
-        mViewMode.enterConversationMode();
+        int mode = mViewMode.getMode();
+        if (mode == ViewMode.SEARCH_RESULTS_LIST || mode == ViewMode.SEARCH_RESULTS_CONVERSATION) {
+            mViewMode.enterSearchResultsConversationMode();
+            unhideConversationList();
+        } else {
+            mViewMode.enterConversationMode();
+        }
         Fragment convFragment = ConversationViewFragment.newInstance(mAccount, conversation);
         FragmentTransaction fragmentTransaction = mActivity.getFragmentManager().beginTransaction();
         fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
@@ -161,11 +171,12 @@
      * Show the conversation list if it can be shown in the current orientation.
      * @return true if the conversation list was shown
      */
-    private boolean unhideConversationList(){
+    private boolean unhideConversationList() {
         // Find if the conversation list can be shown
-        final boolean isConversationListShowable =
-                (mViewMode.getMode() == ViewMode.CONVERSATION &&
-                mLayout.isConversationListCollapsible());
+        int mode = mViewMode.getMode();
+        final boolean isConversationListShowable = (mode == ViewMode.CONVERSATION
+                && mLayout.isConversationListCollapsible()
+                || (mode == ViewMode.SEARCH_RESULTS_CONVERSATION));
         if (isConversationListShowable) {
             return mLayout.uncollapseList();
         }
@@ -191,6 +202,12 @@
             } else {
                 mActivity.onBackPressed();
             }
+        } else if (mode == ViewMode.SEARCH_RESULTS_CONVERSATION) {
+            if (!mLayout.isConversationListVisible()) {
+                unhideConversationList();
+            } else {
+                mActivity.finish();
+            }
         } else if (mode == ViewMode.SEARCH_RESULTS_LIST) {
             mActivity.finish();
         }
@@ -211,11 +228,14 @@
     protected void popView(boolean preventClose) {
         // If the user is in search query entry mode, or the user is viewing search results, exit
         // the mode.
-        if (mConvListContext != null && mConvListContext.isSearchResult()) {
+        int mode = mViewMode.getMode();
+        if (mode == ViewMode.SEARCH_RESULTS_LIST) {
             mActivity.finish();
         } else if (mViewMode.getMode() == ViewMode.CONVERSATION) {
             // Go to conversation list.
             mViewMode.enterConversationListMode();
+        } else if (mode == ViewMode.SEARCH_RESULTS_CONVERSATION) {
+            mViewMode.enterSearchResultsListMode();
         } else {
             // There is nothing else to pop off the stack.
             if (!preventClose) {
@@ -223,4 +243,9 @@
             }
         }
     }
+
+    @Override
+    public boolean shouldShowFirstConversation() {
+        return mConvListContext != null && mConvListContext.isSearchResult();
+    }
 }
diff --git a/src/com/android/mail/ui/TwoPaneLayout.java b/src/com/android/mail/ui/TwoPaneLayout.java
index ec8dfa5..f6240ea 100644
--- a/src/com/android/mail/ui/TwoPaneLayout.java
+++ b/src/com/android/mail/ui/TwoPaneLayout.java
@@ -290,7 +290,9 @@
     private int computeConversationListWidth(int totalWidth) {
         switch (currentMode) {
             case ViewMode.CONVERSATION_LIST:
+            case ViewMode.SEARCH_RESULTS_LIST:
                 return totalWidth - computeFolderListWidth();
+            case ViewMode.SEARCH_RESULTS_CONVERSATION:
             case ViewMode.CONVERSATION:
                 return (int) (totalWidth * sScaledConversationListWeight);
         }
@@ -609,10 +611,12 @@
         }
 
         switch (currentMode) {
+            case ViewMode.SEARCH_RESULTS_LIST:
             case ViewMode.CONVERSATION_LIST:
                 setFolderListWidth(computeFolderListWidth());
                 break;
 
+            case ViewMode.SEARCH_RESULTS_CONVERSATION:
             case ViewMode.CONVERSATION:
                 final int conversationListWidth = computeConversationListWidth(w);
                 setConversationListWidth(conversationListWidth);
@@ -657,18 +661,16 @@
             mOutstandingAnimator.cancel();
         }
         switch (currentMode) {
+            case ViewMode.SEARCH_RESULTS_CONVERSATION:
             case ViewMode.CONVERSATION:
                 enterConversationMode();
                 break;
+            case ViewMode.SEARCH_RESULTS_LIST:
             case ViewMode.CONVERSATION_LIST:
                 enterConversationListMode();
                 break;
             case ViewMode.FOLDER_LIST:
                 break;
-            case ViewMode.SEARCH_RESULTS_LIST:
-            case ViewMode.SEARCH_RESULTS_CONVERSATION:
-                // Show search results here
-                break;
         }
     }
 
