Merge "Change search fab to search bar."
diff --git a/res/layout/settings_homepage.xml b/res/layout/settings_homepage.xml
index 035e8b4..83c771c 100644
--- a/res/layout/settings_homepage.xml
+++ b/res/layout/settings_homepage.xml
@@ -19,4 +19,4 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/card_container"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content" />
+    android:layout_height="match_parent" />
diff --git a/res/layout/settings_homepage_container.xml b/res/layout/settings_homepage_container.xml
index b35b4ce..ba8b48a 100644
--- a/res/layout/settings_homepage_container.xml
+++ b/res/layout/settings_homepage_container.xml
@@ -15,11 +15,34 @@
      limitations under the License.
 -->
 
-<RelativeLayout
+<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <androidx.coordinatorlayout.widget.CoordinatorLayout
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1">
+
+        <com.google.android.material.appbar.AppBarLayout
+            android:id="@+id/homepage_appbar"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:elevation="0dp">
+
+            <include layout="@layout/search_bar"/>
+
+        </com.google.android.material.appbar.AppBarLayout>
+
+        <FrameLayout
+            android:id="@id/main_content"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
+    </androidx.coordinatorlayout.widget.CoordinatorLayout>
 
     <com.google.android.material.bottomnavigation.BottomNavigationView
         android:id="@+id/bottom_nav"
@@ -28,25 +51,8 @@
         android:layout_marginEnd="0dp"
         android:layout_marginStart="0dp"
         android:background="?android:attr/windowBackground"
-        android:layout_alignParentBottom="true"
         app:itemIconTint="@color/bottom_navigation_colors"
         app:itemTextColor="@color/bottom_navigation_colors"
-        app:menu="@menu/home_bottom_navigation" />
+        app:menu="@menu/home_bottom_navigation"/>
 
-    <FrameLayout
-        android:id="@id/main_content"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_above="@+id/bottom_nav" />
-
-    <com.google.android.material.floatingactionbutton.FloatingActionButton
-        android:id="@+id/search_fab"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:src="@drawable/ic_search_24dp"
-        android:layout_margin="24dp"
-        android:layout_above="@id/bottom_nav"
-        android:layout_alignParentRight="true"
-        app:backgroundTint="?android:attr/colorAccent"
-        app:tint="@android:color/white" />
-</RelativeLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/res/values-night/themes.xml b/res/values-night/themes.xml
index eb0a749..725fe17 100644
--- a/res/values-night/themes.xml
+++ b/res/values-night/themes.xml
@@ -18,6 +18,7 @@
 <resources>
 
     <style name="Theme.Settings.Home" parent="Theme.Settings.HomeBase">
+        <item name="colorPrimary">@*android:color/primary_device_default_settings</item>
         <item name="colorPrimaryDark">@*android:color/primary_dark_device_default_settings</item>
     </style>
 
diff --git a/res/values/themes.xml b/res/values/themes.xml
index df490f2..4050cb2 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -170,6 +170,9 @@
         <item name="colorPrimary">@*android:color/primary_device_default_settings_light</item>
         <item name="colorAccent">@*android:color/accent_device_default_light</item>
         <item name="preferenceTheme">@style/PreferenceTheme</item>
+
+        <!-- action bar, needed for search bar icon tinting -->
+        <item name="android:actionBarTheme">@*android:style/ThemeOverlay.DeviceDefault.ActionBar.Accent</item>
     </style>
 
     <style name="Theme.Settings.Home" parent="Theme.Settings.HomeBase">
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index a51d45f..9106fe4 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -299,15 +299,6 @@
             FeatureFactory.getFactory(this).getSearchFeatureProvider()
                     .initSearchToolbar(this, toolbar);
             setActionBar(toolbar);
-
-            // Please forgive me for what I am about to do.
-            //
-            // Need to make the navigation icon non-clickable so that the entire card is clickable
-            // and goes to the search UI. Also set the background to null so there's no ripple.
-            View navView = toolbar.getNavigationView();
-            navView.setClickable(false);
-            navView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
-            navView.setBackground(null);
         }
 
         ActionBar actionBar = getActionBar();
diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java
index 35b45a4..bfd8c4d 100644
--- a/src/com/android/settings/homepage/SettingsHomepageActivity.java
+++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java
@@ -20,6 +20,7 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.util.FeatureFlagUtils;
+import android.widget.Toolbar;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.fragment.app.Fragment;
@@ -32,7 +33,6 @@
 import com.android.settings.overlay.FeatureFactory;
 
 import com.google.android.material.bottomnavigation.BottomNavigationView;
-import com.google.android.material.floatingactionbutton.FloatingActionButton;
 
 public class SettingsHomepageActivity extends SettingsBaseActivity {
 
@@ -54,9 +54,9 @@
 
         setContentView(R.layout.settings_homepage_container);
 
-        final FloatingActionButton searchButton = findViewById(R.id.search_fab);
+        final Toolbar toolbar = findViewById(R.id.search_action_bar);
         FeatureFactory.getFactory(this).getSearchFeatureProvider()
-                .initSearchToolbar(this, searchButton);
+                .initSearchToolbar(this, toolbar);
 
         final BottomNavigationView navigation = findViewById(R.id.bottom_nav);
         navigation.setOnNavigationItemSelectedListener(item -> {
diff --git a/src/com/android/settings/search/SearchFeatureProvider.java b/src/com/android/settings/search/SearchFeatureProvider.java
index caddb1f..27e8349 100644
--- a/src/com/android/settings/search/SearchFeatureProvider.java
+++ b/src/com/android/settings/search/SearchFeatureProvider.java
@@ -16,12 +16,15 @@
  */
 package com.android.settings.search;
 
+import static android.view.View.IMPORTANT_FOR_ACCESSIBILITY_NO;
+
 import android.annotation.NonNull;
 import android.app.Activity;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.view.View;
+import android.widget.Toolbar;
 
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.overlay.FeatureFactory;
@@ -53,15 +56,23 @@
         return "com.android.settings.intelligence";
     }
 
-
     /**
      * Initializes the search toolbar.
      */
-    default void initSearchToolbar(Activity activity, View view) {
-        if (activity == null || view == null) {
+    default void initSearchToolbar(Activity activity, Toolbar toolbar) {
+        if (activity == null || toolbar == null) {
             return;
         }
-        view.setOnClickListener(tb -> {
+        // Please forgive me for what I am about to do.
+        //
+        // Need to make the navigation icon non-clickable so that the entire card is clickable
+        // and goes to the search UI. Also set the background to null so there's no ripple.
+        final View navView = toolbar.getNavigationView();
+        navView.setClickable(false);
+        navView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
+        navView.setBackground(null);
+
+        toolbar.setOnClickListener(tb -> {
             final Intent intent = SEARCH_UI_INTENT;
             intent.setPackage(getSettingsIntelligencePkgName());
             final Context context = activity.getApplicationContext();
diff --git a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
index 7b66a6b..adb5e43 100644
--- a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
@@ -44,7 +44,7 @@
     @Before
     public void setUp() {
         FakeFeatureFactory.setupForTest();
-        mActivity = Robolectric.buildActivity(Activity.class).create().visible().get();
+        mActivity = Robolectric.setupActivity(Activity.class);
         mProvider = spy(new SearchFeatureProviderImpl());
     }
 
@@ -54,6 +54,8 @@
         // Should not crash.
 
         final Toolbar toolbar = new Toolbar(mActivity);
+        // This ensures navigationView is created.
+        toolbar.setNavigationContentDescription("test");
         mProvider.initSearchToolbar(mActivity, toolbar);
 
         toolbar.performClick();