Inset nav drawer correctly for cutout

Test: launched the app and verified that the drawer is offset correctly
on device with cutout.

BUG: 74423733

Change-Id: I49ac886937453bc4f0160743c3f50ee246a0bd38
diff --git a/res/layout/drawer_fragment.xml b/res/layout/drawer_fragment.xml
index 907fb92..bd55d6a 100644
--- a/res/layout/drawer_fragment.xml
+++ b/res/layout/drawer_fragment.xml
@@ -29,5 +29,6 @@
         android:background="@color/navigation_drawer_background_color"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:clipToPadding="false"
         android:divider="@null" />
-</FrameLayout>
\ No newline at end of file
+</FrameLayout>
diff --git a/res/layout/nav_header_main.xml b/res/layout/nav_header_main.xml
deleted file mode 100644
index 7a2e3cb..0000000
--- a/res/layout/nav_header_main.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  Copyright (C) 2016 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.
-  -->
-
-<View
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/nav_status_bar_spacer"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/nav_header_height"
-    android:background="@color/contacts_accent_color"
-    android:importantForAccessibility="no"/>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index f92cf79..6d100ac 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -188,9 +188,6 @@
 
     <dimen name="contact_browser_list_item_height">56dp</dimen>
 
-    <!-- Navigation drawer header height, the same as the status bar in landscape and portrait modes -->
-    <dimen name="nav_header_height">24dp</dimen>
-
     <!-- Default activity margins, per the Android Material Design guidelines. -->
     <dimen name="activity_horizontal_margin">16dp</dimen>
     <dimen name="activity_vertical_margin">16dp</dimen>
diff --git a/src/com/android/contacts/drawer/DrawerAdapter.java b/src/com/android/contacts/drawer/DrawerAdapter.java
index ef5df1b..9ff2139 100644
--- a/src/com/android/contacts/drawer/DrawerAdapter.java
+++ b/src/com/android/contacts/drawer/DrawerAdapter.java
@@ -48,8 +48,7 @@
     private static final int VIEW_TYPE_ACCOUNT_ENTRY = 4;
     private static final int VIEW_TYPE_CREATE_LABEL = 5;
     private static final int VIEW_TYPE_NAV_SPACER = 6;
-    private static final int VIEW_TYPE_STATUS_SPACER = 7;
-    private static final int VIEW_TYPE_NAV_DIVIDER = 8;
+    private static final int VIEW_TYPE_NAV_DIVIDER = 7;
 
     // This count must be updated if we add more view types.
     private static final int VIEW_TYPE_COUNT = 9;
@@ -67,7 +66,6 @@
     private ContactListFilter mSelectedAccount;
 
     // Adapter elements, ordered in this way mItemsList. The ordering is based on:
-    //  [Status bar spacer item]
     //  [Navigation spacer item]
     //  [Primary items] (Contacts, Suggestions)
     //  [Group Header]
@@ -77,7 +75,6 @@
     //  [Accounts]
     //  [Misc items] (a divider, Settings, Help & Feedback)
     //  [Navigation spacer item]
-    private StatusBarSpacerItem mStatusBarSpacerItem = null;
     private NavSpacerItem mNavSpacerItem = null;
     private List<PrimaryItem> mPrimaryItems = new ArrayList<>();
     private HeaderItem mGroupHeader = null;
@@ -100,7 +97,6 @@
     private void initializeDrawerMenuItems() {
         // Spacer item for dividing sections in drawer
         mNavSpacerItem = new NavSpacerItem(R.id.nav_drawer_spacer);
-        mStatusBarSpacerItem = new StatusBarSpacerItem(R.id.nav_status_bar_spacer);
         // Primary items
         mPrimaryItems.add(new PrimaryItem(R.id.nav_all_contacts, R.string.contactsList,
                 R.drawable.quantum_ic_account_circle_vd_theme_24, ContactsView.ALL_CONTACTS));
@@ -128,7 +124,6 @@
 
     private void rebuildItemsList() {
         mItemsList.clear();
-        mItemsList.add(mStatusBarSpacerItem);
         mItemsList.add(mNavSpacerItem);
         mItemsList.addAll(mPrimaryItems);
         if (mAreGroupWritableAccountsAvailable || !mGroupEntries.isEmpty()) {
@@ -193,8 +188,6 @@
     public View getView(int position, View view, ViewGroup viewGroup) {
         final BaseDrawerItem drawerItem = getItem(position);
         switch (drawerItem.viewType) {
-            case VIEW_TYPE_STATUS_SPACER:
-                return getBaseItemView(R.layout.nav_header_main, view, viewGroup);
             case VIEW_TYPE_PRIMARY_ITEM:
                 return getPrimaryItemView((PrimaryItem) drawerItem, view, viewGroup);
             case VIEW_TYPE_HEADER_ITEM:
@@ -405,15 +398,6 @@
         }
     }
 
-
-    // Navigation drawer item for status bar spacer item to take up the height of status bar in the
-    // drawer.
-    public static class StatusBarSpacerItem extends BaseDrawerItem {
-        public StatusBarSpacerItem(int id) {
-            super(VIEW_TYPE_STATUS_SPACER, id, /* textResId */ 0, /* iconResId */ 0);
-        }
-    }
-
     // Navigation drawer item for spacer item for dividing sections in the drawer.
     public static class NavSpacerItem extends BaseDrawerItem {
         public NavSpacerItem(int id) {
diff --git a/src/com/android/contacts/drawer/DrawerFragment.java b/src/com/android/contacts/drawer/DrawerFragment.java
index 854f0e6..485513a 100644
--- a/src/com/android/contacts/drawer/DrawerFragment.java
+++ b/src/com/android/contacts/drawer/DrawerFragment.java
@@ -297,6 +297,14 @@
         }
     }
 
+    private void applyTopInset(int insetTop) {
+        // set height of the scrim
+        mScrimDrawable.setIntrinsicHeight(insetTop);
+        mDrawerListView.setPadding(mDrawerListView.getPaddingLeft(),
+                insetTop, mDrawerListView.getPaddingRight(),
+                mDrawerListView.getPaddingBottom());
+    }
+
     public interface DrawerFragmentListener {
         void onDrawerItemClicked();
         void onContactsViewSelected(ContactsView mode);
@@ -311,8 +319,7 @@
         @Override
         public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
             final int insetTop = insets.getSystemWindowInsetTop();
-            // set height of the scrim
-            mScrimDrawable.setIntrinsicHeight(insetTop);
+            applyTopInset(insetTop);
             return insets;
         }
     }