Merge "Fix padding problem between search bar and homepage cards"
diff --git a/res/layout/settings_homepage_container.xml b/res/layout/settings_homepage_container.xml
index 1e5bdce..45d0861 100644
--- a/res/layout/settings_homepage_container.xml
+++ b/res/layout/settings_homepage_container.xml
@@ -28,12 +28,11 @@
         app:layout_behavior="com.android.settings.widget.FloatingAppBarScrollingViewBehavior">
 
         <LinearLayout
+            android:id="@+id/homepage_container"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="vertical"
-            android:descendantFocusability="blocksDescendants"
-            android:paddingTop="104dp">
-            <!-- height of status bar(24dp) + height of action bar(48dp) + top/bottom margins(16dp) -->
+            android:descendantFocusability="blocksDescendants">
 
             <FrameLayout
                 android:id="@+id/contextual_cards_content"
diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java
index 9acda68..ff27ff2 100644
--- a/src/com/android/settings/homepage/SettingsHomepageActivity.java
+++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java
@@ -23,6 +23,7 @@
 import android.widget.ImageView;
 import android.widget.Toolbar;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentManager;
 import androidx.fragment.app.FragmentTransaction;
@@ -50,6 +51,7 @@
 
         updateWindowProperties();
         setContentView(R.layout.settings_homepage_container);
+        setHomepageContainerPaddingTop();
 
         final Toolbar toolbar = findViewById(R.id.search_action_bar);
         FeatureFactory.getFactory(this).getSearchFeatureProvider()
@@ -86,4 +88,19 @@
 
         getWindow().setStatusBarColor(getResources().getColor(R.color.homepage_status_bar_color));
     }
+
+    @VisibleForTesting
+    void setHomepageContainerPaddingTop() {
+        final View view = this.findViewById(R.id.homepage_container);
+
+        final int statusBarHeight = getResources().getDimensionPixelSize(
+                com.android.internal.R.dimen.status_bar_height);
+        final int searchBarHeight = getResources().getDimensionPixelSize(R.dimen.search_bar_height);
+        final int searchBarMargin = getResources().getDimensionPixelSize(R.dimen.search_bar_margin);
+
+        // The top padding is the height of status bar + height of action bar(48dp) + top/bottom
+        // margins(16dp)
+        final int paddingTop = statusBarHeight + searchBarHeight + searchBarMargin * 2;
+        view.setPadding(0 /* left */, paddingTop, 0 /* right */, 0 /* bottom */);
+    }
 }
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
index 1af8c32..b100460 100644
--- a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
@@ -19,7 +19,9 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.util.FeatureFlagUtils;
+import android.view.View;
 
+import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.core.FeatureFlags;
 
@@ -44,4 +46,23 @@
         assertThat(shadowActivity.getNextStartedActivity().getComponent().getClassName())
                 .isEqualTo(SettingsActivity.class.getName());
     }
+
+    @Test
+    public void setHomepageContainerPaddingTop_shouldBeSetPaddingTop() {
+        final SettingsHomepageActivity activity = Robolectric.buildActivity(
+                SettingsHomepageActivity.class).create().get();
+        final int statusBarHeight = activity.getResources().getDimensionPixelSize(
+                com.android.internal.R.dimen.status_bar_height);
+        final int searchBarHeight = activity.getResources().getDimensionPixelSize(
+                R.dimen.search_bar_height);
+        final int searchBarMargin = activity.getResources().getDimensionPixelSize(
+                R.dimen.search_bar_margin);
+        final View view = activity.findViewById(R.id.homepage_container);
+
+        activity.setHomepageContainerPaddingTop();
+
+        final int actualPaddingTop = view.getPaddingTop();
+        assertThat(actualPaddingTop).isEqualTo(
+                statusBarHeight + searchBarHeight + searchBarMargin * 2);
+    }
 }