Fix overlapping problem on notification screen

If we didn't set view and lifecycle for EntityHeaderController,
it only sets "z-order" as 0 for action bar.

So, user sees overlapped problem while user is scrolling view.

For now, we set view and lifecycle as parameter for EntityHeaderController,
then EntityHeaderController can change "z-order" while scrolling view.

Test: visual, robotest
Fixes: 132819126
Change-Id: Ieb01b26e4d6ca4d82f72371620938665de8149a0
diff --git a/src/com/android/settings/notification/HeaderPreferenceController.java b/src/com/android/settings/notification/HeaderPreferenceController.java
index d942113..be5f45e 100644
--- a/src/com/android/settings/notification/HeaderPreferenceController.java
+++ b/src/com/android/settings/notification/HeaderPreferenceController.java
@@ -25,13 +25,14 @@
 import android.text.TextUtils;
 import android.view.View;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.lifecycle.LifecycleObserver;
 import androidx.lifecycle.OnLifecycleEvent;
 import androidx.preference.Preference;
-import androidx.preference.PreferenceFragmentCompat;
 
 import com.android.settings.R;
 import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.widget.EntityHeaderController;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.widget.LayoutPreference;
@@ -39,11 +40,11 @@
 public class HeaderPreferenceController extends NotificationPreferenceController
         implements PreferenceControllerMixin, LifecycleObserver {
 
-    private final PreferenceFragmentCompat mFragment;
+    private final DashboardFragment mFragment;
     private EntityHeaderController mHeaderController;
     private boolean mStarted = false;
 
-    public HeaderPreferenceController(Context context, PreferenceFragmentCompat fragment) {
+    public HeaderPreferenceController(Context context, DashboardFragment fragment) {
         super(context, null);
         mFragment = fragment;
     }
@@ -83,18 +84,12 @@
                     .setButtonActions(EntityHeaderController.ActionType.ACTION_NOTIF_PREFERENCE,
                             EntityHeaderController.ActionType.ACTION_NONE)
                     .setHasAppInfoLink(true)
+                    .setRecyclerView(mFragment.getListView(), mFragment.getSettingsLifecycle())
                     .done(activity, mContext);
             pref.findViewById(R.id.entity_header).setVisibility(View.VISIBLE);
         }
     }
 
-    CharSequence getLabel() {
-        return (mChannel != null && !isDefaultChannel()) ? mChannel.getName()
-                : mChannelGroup != null
-                        ? mChannelGroup.getName()
-                        : mAppRow.label;
-    }
-
     @Override
     public CharSequence getSummary() {
         if (mChannel != null && !isDefaultChannel()) {
@@ -124,4 +119,12 @@
             mHeaderController.styleActionBar(mFragment.getActivity());
         }
     }
+
+    @VisibleForTesting
+    CharSequence getLabel() {
+        return (mChannel != null && !isDefaultChannel()) ? mChannel.getName()
+                : mChannelGroup != null
+                        ? mChannelGroup.getName()
+                        : mAppRow.label;
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/notification/HeaderPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/HeaderPreferenceControllerTest.java
index de84f07..7f6ecae 100644
--- a/tests/robotests/src/com/android/settings/notification/HeaderPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/HeaderPreferenceControllerTest.java
@@ -21,7 +21,6 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
-
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
@@ -35,8 +34,8 @@
 import android.view.View;
 
 import androidx.fragment.app.FragmentActivity;
-import androidx.preference.PreferenceFragmentCompat;
 
+import com.android.settings.dashboard.DashboardFragment;
 import com.android.settingslib.widget.LayoutPreference;
 
 import org.junit.Before;
@@ -70,7 +69,7 @@
         shadowApplication.setSystemService(Context.NOTIFICATION_SERVICE, mNm);
         shadowApplication.setSystemService(Context.USER_SERVICE, mUm);
         mContext = RuntimeEnvironment.application;
-        PreferenceFragmentCompat fragment = mock(PreferenceFragmentCompat.class);
+        DashboardFragment fragment = mock(DashboardFragment.class);
         when(fragment.getContext()).thenReturn(mContext);
         FragmentActivity activity = mock(FragmentActivity.class);
         when(activity.getApplicationContext()).thenReturn(mContext);