Merge "Finish removing NEW_FOOTER flag" into tm-dev am: 28b4f74b80 am: 676f86c807 am: ea53dd35d7

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17407522

Change-Id: I76a1c4d20953e844caa62f00de9a4d62ed1430e6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/packages/SystemUI/res-keyguard/layout/fgs_footer.xml b/packages/SystemUI/res-keyguard/layout/fgs_footer.xml
index 9d801d2..9ffafbc 100644
--- a/packages/SystemUI/res-keyguard/layout/fgs_footer.xml
+++ b/packages/SystemUI/res-keyguard/layout/fgs_footer.xml
@@ -16,8 +16,9 @@
 -->
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
+    android:layout_width="0dp"
     android:layout_height="@dimen/qs_security_footer_single_line_height"
+    android:layout_weight="1"
     android:gravity="center"
     android:clickable="true"
     android:visibility="gone">
@@ -26,7 +27,7 @@
         android:id="@+id/fgs_text_container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_marginEnd="@dimen/new_qs_footer_action_inset"
+        android:layout_marginEnd="@dimen/qs_footer_action_inset"
         android:background="@drawable/qs_security_footer_background"
         android:layout_gravity="end"
         android:gravity="center"
@@ -86,7 +87,7 @@
             android:layout_height="12dp"
             android:scaleType="fitCenter"
             android:layout_gravity="bottom|end"
-            android:src="@drawable/new_fgs_dot"
+            android:src="@drawable/fgs_dot"
             android:contentDescription="@string/fgs_dot_content_description"
             />
     </FrameLayout>
diff --git a/packages/SystemUI/res-keyguard/layout/footer_actions.xml b/packages/SystemUI/res-keyguard/layout/footer_actions.xml
index fb401ee..6a1d62d 100644
--- a/packages/SystemUI/res-keyguard/layout/footer_actions.xml
+++ b/packages/SystemUI/res-keyguard/layout/footer_actions.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-** Copyright 2021, The Android Open Source Project
+** Copyright 2022, 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.
@@ -18,65 +18,80 @@
 <!-- Action buttons for footer in QS/QQS, containing settings button, power off button etc -->
 <com.android.systemui.qs.FooterActionsView
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/qs_footer_height"
+    android:layout_height="@dimen/footer_actions_height"
+    android:elevation="@dimen/qs_panel_elevation"
+    android:paddingTop="8dp"
+    android:paddingBottom="4dp"
+    android:background="@drawable/qs_footer_actions_background"
     android:gravity="center_vertical"
     android:layout_gravity="bottom"
 >
 
-    <com.android.systemui.statusbar.phone.MultiUserSwitch
-        android:id="@+id/multi_user_switch"
-        android:layout_width="0dp"
+    <LinearLayout
+        android:id="@+id/security_footers_container"
+        android:orientation="horizontal"
         android:layout_height="@dimen/qs_footer_action_button_size"
-        android:layout_marginEnd="@dimen/qs_tile_margin_horizontal"
-        android:layout_weight="1"
-        android:background="@drawable/qs_footer_action_chip_background"
-        android:focusable="true">
-
-        <ImageView
-            android:id="@+id/multi_user_avatar"
-            android:layout_width="@dimen/multi_user_avatar_expanded_size"
-            android:layout_height="@dimen/multi_user_avatar_expanded_size"
-            android:layout_gravity="center"
-            android:scaleType="centerInside" />
-    </com.android.systemui.statusbar.phone.MultiUserSwitch>
-
-    <com.android.systemui.statusbar.AlphaOptimizedImageView
-        android:id="@+id/pm_lite"
         android:layout_width="0dp"
-        android:layout_height="@dimen/qs_footer_action_button_size"
-        android:layout_marginEnd="@dimen/qs_tile_margin_horizontal"
         android:layout_weight="1"
-        android:background="@drawable/qs_footer_action_chip_background"
-        android:clickable="true"
-        android:clipToPadding="false"
-        android:focusable="true"
-        android:padding="@dimen/qs_footer_icon_padding"
-        android:src="@*android:drawable/ic_lock_power_off"
-        android:contentDescription="@string/accessibility_quick_settings_power_menu"
-        android:tint="?android:attr/textColorPrimary" />
+    />
 
-    <com.android.systemui.statusbar.AlphaOptimizedFrameLayout
-        android:id="@+id/settings_button_container"
-        android:layout_width="0dp"
-        android:layout_height="@dimen/qs_footer_action_button_size"
-        android:background="@drawable/qs_footer_action_chip_background"
-        android:layout_weight="1"
-        android:clipChildren="false"
-        android:clipToPadding="false">
+    <!-- Negative margin equal to -->
+    <LinearLayout
+        android:layout_height="match_parent"
+        android:layout_width="wrap_content"
+        android:layout_marginEnd="@dimen/qs_footer_action_inset_negative"
+        >
 
-        <com.android.systemui.statusbar.phone.SettingsButton
-            android:id="@+id/settings_button"
-            android:layout_width="match_parent"
+        <com.android.systemui.statusbar.phone.MultiUserSwitch
+            android:id="@+id/multi_user_switch"
+            android:layout_width="@dimen/qs_footer_action_button_size"
             android:layout_height="@dimen/qs_footer_action_button_size"
-            android:layout_gravity="center"
-            android:contentDescription="@string/accessibility_quick_settings_settings"
-            android:background="@drawable/qs_footer_action_chip_background_borderless"
+            android:background="@drawable/qs_footer_action_circle"
+            android:focusable="true">
+
+            <ImageView
+                android:id="@+id/multi_user_avatar"
+                android:layout_width="@dimen/qs_footer_icon_size"
+                android:layout_height="@dimen/qs_footer_icon_size"
+                android:layout_gravity="center"
+                android:scaleType="centerInside" />
+        </com.android.systemui.statusbar.phone.MultiUserSwitch>
+
+        <com.android.systemui.statusbar.AlphaOptimizedFrameLayout
+            android:id="@+id/settings_button_container"
+            android:layout_width="@dimen/qs_footer_action_button_size"
+            android:layout_height="@dimen/qs_footer_action_button_size"
+            android:background="@drawable/qs_footer_action_circle"
+            android:clipChildren="false"
+            android:clipToPadding="false">
+
+            <com.android.systemui.statusbar.phone.SettingsButton
+                android:id="@+id/settings_button"
+                android:layout_width="@dimen/qs_footer_icon_size"
+                android:layout_height="@dimen/qs_footer_icon_size"
+                android:layout_gravity="center"
+                android:background="@android:color/transparent"
+                android:contentDescription="@string/accessibility_quick_settings_settings"
+                android:scaleType="centerInside"
+                android:src="@drawable/ic_settings"
+                android:tint="?android:attr/textColorPrimary" />
+
+        </com.android.systemui.statusbar.AlphaOptimizedFrameLayout>
+
+        <com.android.systemui.statusbar.AlphaOptimizedImageView
+            android:id="@+id/pm_lite"
+            android:layout_width="@dimen/qs_footer_action_button_size"
+            android:layout_height="@dimen/qs_footer_action_button_size"
+            android:background="@drawable/qs_footer_action_circle_color"
+            android:clickable="true"
+            android:clipToPadding="false"
+            android:focusable="true"
             android:padding="@dimen/qs_footer_icon_padding"
-            android:scaleType="centerInside"
-            android:src="@drawable/ic_settings"
-            android:tint="?android:attr/textColorPrimary" />
+            android:src="@*android:drawable/ic_lock_power_off"
+            android:contentDescription="@string/accessibility_quick_settings_power_menu"
+            android:tint="?androidprv:attr/textColorOnAccent" />
 
-    </com.android.systemui.statusbar.AlphaOptimizedFrameLayout>
-
+    </LinearLayout>
 </com.android.systemui.qs.FooterActionsView>
\ No newline at end of file
diff --git a/packages/SystemUI/res-keyguard/layout/new_footer_actions.xml b/packages/SystemUI/res-keyguard/layout/new_footer_actions.xml
deleted file mode 100644
index 59712c0..0000000
--- a/packages/SystemUI/res-keyguard/layout/new_footer_actions.xml
+++ /dev/null
@@ -1,97 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-** Copyright 2022, 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.
--->
-
-<!-- Action buttons for footer in QS/QQS, containing settings button, power off button etc -->
-<com.android.systemui.qs.FooterActionsView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/new_footer_height"
-    android:elevation="@dimen/qs_panel_elevation"
-    android:paddingTop="8dp"
-    android:paddingBottom="4dp"
-    android:background="@drawable/qs_footer_actions_background"
-    android:gravity="center_vertical"
-    android:layout_gravity="bottom"
->
-
-    <LinearLayout
-        android:id="@+id/security_footers_container"
-        android:orientation="horizontal"
-        android:layout_height="@dimen/qs_footer_action_button_size"
-        android:layout_width="0dp"
-        android:layout_weight="1"
-    />
-
-    <!-- Negative margin equal to -->
-    <LinearLayout
-        android:layout_height="match_parent"
-        android:layout_width="wrap_content"
-        android:layout_marginEnd="@dimen/new_qs_footer_action_inset_negative"
-        >
-
-        <com.android.systemui.statusbar.phone.MultiUserSwitch
-            android:id="@+id/multi_user_switch"
-            android:layout_width="@dimen/qs_footer_action_button_size"
-            android:layout_height="@dimen/qs_footer_action_button_size"
-            android:background="@drawable/qs_footer_action_circle"
-            android:focusable="true">
-
-            <ImageView
-                android:id="@+id/multi_user_avatar"
-                android:layout_width="@dimen/qs_footer_icon_size"
-                android:layout_height="@dimen/qs_footer_icon_size"
-                android:layout_gravity="center"
-                android:scaleType="centerInside" />
-        </com.android.systemui.statusbar.phone.MultiUserSwitch>
-
-        <com.android.systemui.statusbar.AlphaOptimizedFrameLayout
-            android:id="@+id/settings_button_container"
-            android:layout_width="@dimen/qs_footer_action_button_size"
-            android:layout_height="@dimen/qs_footer_action_button_size"
-            android:background="@drawable/qs_footer_action_circle"
-            android:clipChildren="false"
-            android:clipToPadding="false">
-
-            <com.android.systemui.statusbar.phone.SettingsButton
-                android:id="@+id/settings_button"
-                android:layout_width="@dimen/qs_footer_icon_size"
-                android:layout_height="@dimen/qs_footer_icon_size"
-                android:layout_gravity="center"
-                android:background="@android:color/transparent"
-                android:contentDescription="@string/accessibility_quick_settings_settings"
-                android:scaleType="centerInside"
-                android:src="@drawable/ic_settings"
-                android:tint="?android:attr/textColorPrimary" />
-
-        </com.android.systemui.statusbar.AlphaOptimizedFrameLayout>
-
-        <com.android.systemui.statusbar.AlphaOptimizedImageView
-            android:id="@+id/pm_lite"
-            android:layout_width="@dimen/qs_footer_action_button_size"
-            android:layout_height="@dimen/qs_footer_action_button_size"
-            android:background="@drawable/qs_footer_action_circle_color"
-            android:clickable="true"
-            android:clipToPadding="false"
-            android:focusable="true"
-            android:padding="@dimen/qs_footer_icon_padding"
-            android:src="@*android:drawable/ic_lock_power_off"
-            android:contentDescription="@string/accessibility_quick_settings_power_menu"
-            android:tint="?androidprv:attr/textColorOnAccent" />
-
-    </LinearLayout>
-</com.android.systemui.qs.FooterActionsView>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/new_fgs_dot.xml b/packages/SystemUI/res/drawable/fgs_dot.xml
similarity index 100%
rename from packages/SystemUI/res/drawable/new_fgs_dot.xml
rename to packages/SystemUI/res/drawable/fgs_dot.xml
diff --git a/packages/SystemUI/res/drawable/qs_footer_action_chip_background.xml b/packages/SystemUI/res/drawable/qs_footer_action_chip_background.xml
deleted file mode 100644
index 9076da7..0000000
--- a/packages/SystemUI/res/drawable/qs_footer_action_chip_background.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2021 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.
-  -->
-<inset xmlns:android="http://schemas.android.com/apk/res/android"
-    android:insetTop="@dimen/qs_footer_action_inset"
-    android:insetBottom="@dimen/qs_footer_action_inset">
-    <ripple
-        android:color="?android:attr/colorControlHighlight"
-        android:height="44dp">
-        <item android:id="@android:id/mask">
-            <shape android:shape="rectangle">
-                <solid android:color="@android:color/white"/>
-                <corners android:radius="@dimen/qs_footer_action_corner_radius"/>
-            </shape>
-        </item>
-        <item>
-            <shape android:shape="rectangle">
-                <solid android:color="?attr/underSurfaceColor"/>
-                <corners android:radius="@dimen/qs_footer_action_corner_radius"/>
-            </shape>
-        </item>
-        <item>
-            <shape android:shape="rectangle">
-                <stroke android:width="1dp" android:color="?android:attr/colorBackground"/>
-                <corners android:radius="@dimen/qs_footer_action_corner_radius"/>
-            </shape>
-        </item>
-    </ripple>
-</inset>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/qs_footer_action_chip_background_borderless.xml b/packages/SystemUI/res/drawable/qs_footer_action_chip_background_borderless.xml
deleted file mode 100644
index bbcfb15..0000000
--- a/packages/SystemUI/res/drawable/qs_footer_action_chip_background_borderless.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 2021 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.
-  -->
-<inset xmlns:android="http://schemas.android.com/apk/res/android"
-    android:insetTop="@dimen/qs_footer_action_inset"
-    android:insetBottom="@dimen/qs_footer_action_inset">
-    <ripple
-        android:color="?android:attr/colorControlHighlight">
-        <item android:id="@android:id/mask">
-            <shape android:shape="rectangle">
-                <solid android:color="@android:color/white"/>
-                <corners android:radius="@dimen/qs_footer_action_corner_radius"/>
-            </shape>
-        </item>
-        <item>
-            <shape android:shape="rectangle">
-                <solid android:color="@android:color/transparent"/>
-                <corners android:radius="@dimen/qs_footer_action_corner_radius"/>
-            </shape>
-        </item>
-    </ripple>
-</inset>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/qs_footer_action_circle.xml b/packages/SystemUI/res/drawable/qs_footer_action_circle.xml
index 31a8c3b..c8c36b0 100644
--- a/packages/SystemUI/res/drawable/qs_footer_action_circle.xml
+++ b/packages/SystemUI/res/drawable/qs_footer_action_circle.xml
@@ -15,7 +15,7 @@
   ~ limitations under the License.
   -->
 <inset xmlns:android="http://schemas.android.com/apk/res/android"
-       android:inset="@dimen/new_qs_footer_action_inset">
+       android:inset="@dimen/qs_footer_action_inset">
     <ripple
         android:color="?android:attr/colorControlHighlight">
         <item android:id="@android:id/mask">
diff --git a/packages/SystemUI/res/drawable/qs_footer_action_circle_color.xml b/packages/SystemUI/res/drawable/qs_footer_action_circle_color.xml
index 021a85f..6a365000 100644
--- a/packages/SystemUI/res/drawable/qs_footer_action_circle_color.xml
+++ b/packages/SystemUI/res/drawable/qs_footer_action_circle_color.xml
@@ -15,7 +15,7 @@
   ~ limitations under the License.
   -->
 <inset xmlns:android="http://schemas.android.com/apk/res/android"
-    android:inset="@dimen/new_qs_footer_action_inset">
+    android:inset="@dimen/qs_footer_action_inset">
     <ripple
         android:color="?android:attr/colorControlHighlight">
         <item android:id="@android:id/mask">
diff --git a/packages/SystemUI/res/layout/qs_footer_impl.xml b/packages/SystemUI/res/layout/qs_footer_impl.xml
index b6e3499..b1d3ed05 100644
--- a/packages/SystemUI/res/layout/qs_footer_impl.xml
+++ b/packages/SystemUI/res/layout/qs_footer_impl.xml
@@ -29,11 +29,6 @@
     android:clipChildren="false"
     android:clipToPadding="false">
 
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="@dimen/qs_footer_height"
@@ -80,14 +75,4 @@
 
         </LinearLayout>
 
-        <ViewStub
-            android:id="@+id/footer_stub"
-            android:inflatedId="@+id/qs_footer_actions"
-            android:layout="@layout/footer_actions"
-            android:layout_height="@dimen/qs_footer_height"
-            android:layout_width="match_parent"
-        />
-
-    </LinearLayout>
-
 </com.android.systemui.qs.QSFooterView>
diff --git a/packages/SystemUI/res/layout/qs_panel.xml b/packages/SystemUI/res/layout/qs_panel.xml
index 2040051..1eb05bf 100644
--- a/packages/SystemUI/res/layout/qs_panel.xml
+++ b/packages/SystemUI/res/layout/qs_panel.xml
@@ -47,11 +47,10 @@
 
     <include layout="@layout/quick_status_bar_expanded_header" />
 
-    <ViewStub
-        android:id="@+id/container_stub"
-        android:inflatedId="@+id/qs_footer_actions"
-        android:layout="@layout/new_footer_actions"
-        android:layout_height="@dimen/new_footer_height"
+    <include
+        layout="@layout/footer_actions"
+        android:id="@+id/qs_footer_actions"
+        android:layout_height="@dimen/footer_actions_height"
         android:layout_width="match_parent"
         android:layout_gravity="bottom"
         />
diff --git a/packages/SystemUI/res/layout/quick_settings_security_footer.xml b/packages/SystemUI/res/layout/quick_settings_security_footer.xml
index 08bd71c..1b11816 100644
--- a/packages/SystemUI/res/layout/quick_settings_security_footer.xml
+++ b/packages/SystemUI/res/layout/quick_settings_security_footer.xml
@@ -14,19 +14,18 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.systemui.util.DualHeightHorizontalLinearLayout
+<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:systemui="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/qs_security_footer_height"
+    android:layout_width="0dp"
+    android:layout_height="@dimen/qs_security_footer_single_line_height"
+    android:layout_weight="1"
     android:clickable="true"
-    android:padding="@dimen/qs_footer_padding"
+    android:orientation="horizontal"
+    android:paddingHorizontal="@dimen/qs_footer_padding"
     android:gravity="center_vertical"
     android:layout_gravity="center_vertical|center_horizontal"
-    android:layout_marginBottom="@dimen/qs_footers_margin_bottom"
+    android:layout_marginEnd="@dimen/qs_footer_action_inset"
     android:background="@drawable/qs_security_footer_background"
-    systemui:singleLineHeight="@dimen/qs_security_footer_single_line_height"
-    systemui:textViewId="@id/footer_text"
     >
 
     <ImageView
@@ -43,7 +42,7 @@
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_weight="1"
-        android:maxLines="@integer/qs_security_footer_maxLines"
+        android:singleLine="true"
         android:ellipsize="end"
         android:textAppearance="@style/TextAppearance.QS.SecurityFooter"
         android:textColor="?android:attr/textColorSecondary"/>
@@ -58,4 +57,4 @@
         android:autoMirrored="true"
         android:tint="?android:attr/textColorSecondary" />
 
-</com.android.systemui.util.DualHeightHorizontalLinearLayout>
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/quick_status_bar_header_date_privacy.xml b/packages/SystemUI/res/layout/quick_status_bar_header_date_privacy.xml
index b1e8c38..60bc373 100644
--- a/packages/SystemUI/res/layout/quick_status_bar_header_date_privacy.xml
+++ b/packages/SystemUI/res/layout/quick_status_bar_header_date_privacy.xml
@@ -52,7 +52,6 @@
     <!-- We want this to be centered (to align with notches). In order to do that, the following
          has to hold (in portrait):
          * date_container and privacy_container must have the same width and weight
-         * header_text_container must be gone
          -->
     <android.widget.Space
         android:id="@+id/space"
@@ -61,17 +60,6 @@
         android:layout_gravity="center_vertical|center_horizontal"
         android:visibility="gone" />
 
-    <!-- Will hold security footer in landscape with media -->
-    <FrameLayout
-        android:id="@+id/header_text_container"
-        android:layout_height="match_parent"
-        android:layout_width="0dp"
-        android:layout_weight="1"
-        android:paddingStart="16dp"
-        android:paddingEnd="16dp"
-        android:gravity="center"
-    />
-
     <FrameLayout
         android:id="@+id/privacy_container"
         android:layout_width="0dp"
diff --git a/packages/SystemUI/res/values/attrs.xml b/packages/SystemUI/res/values/attrs.xml
index 62903d5..3228c3c 100644
--- a/packages/SystemUI/res/values/attrs.xml
+++ b/packages/SystemUI/res/values/attrs.xml
@@ -188,12 +188,6 @@
         <attr name="borderColor" format="color" />
     </declare-styleable>
 
-    <declare-styleable name="DualHeightHorizontalLinearLayout">
-        <attr name="singleLineHeight" format="dimension" />
-        <attr name="singleLineVerticalPadding" format="dimension" />
-        <attr name="textViewId" format="reference" />
-    </declare-styleable>
-
     <attr name="overlayButtonTextColor" format="color" />
 
     <declare-styleable name="DreamOverlayDotImageView">
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 851c6dd..7672251 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -327,23 +327,20 @@
          car setting. -->
     <dimen name="car_qs_header_system_icons_area_height">54dp</dimen>
 
-    <!-- The height of the quick settings footer that holds the user switcher, settings icon,
-         etc. -->
+    <!-- The height of the quick settings footer that holds the pagination dots and edit button -->
     <dimen name="qs_footer_height">48dp</dimen>
 
     <!-- 40dp (circles) + 8dp (circle padding) + 8dp (top) + 4dp (bottom) -->
-    <dimen name="new_footer_height">60dp</dimen>
+    <dimen name="footer_actions_height">60dp</dimen>
 
     <!-- The size of each of the icon buttons in the QS footer -->
     <dimen name="qs_footer_action_button_size">48dp</dimen>
 
     <dimen name="qs_footer_action_corner_radius">20dp</dimen>
 
-    <!-- (48dp - 44dp) / 2 -->
-    <dimen name="qs_footer_action_inset">2dp</dimen>
     <!-- (48dp - 40dp) / 2 -->
-    <dimen name="new_qs_footer_action_inset">4dp</dimen>
-    <dimen name="new_qs_footer_action_inset_negative">-4dp</dimen>
+    <dimen name="qs_footer_action_inset">4dp</dimen>
+    <dimen name="qs_footer_action_inset_negative">-4dp</dimen>
 
     <!-- Margins on each side of QS Footer -->
     <dimen name="qs_footer_margin">2dp</dimen>
@@ -495,7 +492,7 @@
     <dimen name="qs_panel_padding">16dp</dimen>
     <dimen name="qs_dual_tile_padding_horizontal">6dp</dimen>
     <dimen name="qs_panel_elevation">4dp</dimen>
-    <dimen name="qs_panel_padding_bottom">@dimen/new_footer_height</dimen>
+    <dimen name="qs_panel_padding_bottom">@dimen/footer_actions_height</dimen>
     <dimen name="qs_panel_padding_top">48dp</dimen>
 
     <dimen name="qs_data_usage_text_size">14sp</dimen>
diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.java b/packages/SystemUI/src/com/android/systemui/flags/Flags.java
index 9356b16..c9a61a8 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/Flags.java
+++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.java
@@ -112,6 +112,10 @@
     public static final ResourceBooleanFlag QS_USER_DETAIL_SHORTCUT =
             new ResourceBooleanFlag(503, R.bool.flag_lockscreen_qs_user_detail_shortcut);
 
+    /**
+     * @deprecated Not needed anymore
+     */
+    @Deprecated
     public static final BooleanFlag NEW_FOOTER = new BooleanFlag(504, true);
 
     public static final BooleanFlag NEW_HEADER = new BooleanFlag(505, false);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/FooterActionsController.kt b/packages/SystemUI/src/com/android/systemui/qs/FooterActionsController.kt
index 44ef2b6..3f394e7 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/FooterActionsController.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/FooterActionsController.kt
@@ -23,7 +23,6 @@
 import android.provider.Settings.Global.USER_SWITCHER_ENABLED
 import android.view.View
 import android.view.ViewGroup
-import android.widget.LinearLayout
 import androidx.annotation.VisibleForTesting
 import com.android.internal.jank.InteractionJankMonitor
 import com.android.internal.logging.MetricsLogger
@@ -32,8 +31,6 @@
 import com.android.keyguard.KeyguardUpdateMonitor
 import com.android.systemui.R
 import com.android.systemui.animation.ActivityLaunchAnimator
-import com.android.systemui.flags.FeatureFlags
-import com.android.systemui.flags.Flags
 import com.android.systemui.globalactions.GlobalActionsDialogLite
 import com.android.systemui.plugins.ActivityStarter
 import com.android.systemui.plugins.FalsingManager
@@ -45,7 +42,6 @@
 import com.android.systemui.statusbar.policy.DeviceProvisionedController
 import com.android.systemui.statusbar.policy.UserInfoController
 import com.android.systemui.statusbar.policy.UserInfoController.OnUserInfoChangedListener
-import com.android.systemui.util.DualHeightHorizontalLinearLayout
 import com.android.systemui.util.ViewController
 import com.android.systemui.util.settings.GlobalSettings
 import javax.inject.Inject
@@ -74,8 +70,7 @@
     private val uiEventLogger: UiEventLogger,
     @Named(PM_LITE_ENABLED) private val showPMLiteButton: Boolean,
     private val globalSetting: GlobalSettings,
-    private val handler: Handler,
-    private val featureFlags: FeatureFlags
+    private val handler: Handler
 ) : ViewController<FooterActionsView>(view) {
 
     private var globalActionsDialog: GlobalActionsDialogLite? = null
@@ -100,7 +95,9 @@
         view.findViewById(R.id.security_footers_container)
     private val powerMenuLite: View = view.findViewById(R.id.pm_lite)
     private val multiUserSwitchController = multiUserSwitchControllerFactory.create(view)
-    private val securityFootersSeparator = View(context).apply {
+
+    @VisibleForTesting
+    internal val securityFootersSeparator = View(context).apply {
         visibility = View.GONE
     }
 
@@ -171,48 +168,30 @@
         }
         settingsButton.setOnClickListener(onClickListener)
         multiUserSetting.isListening = true
-        if (featureFlags.isEnabled(Flags.NEW_FOOTER)) {
-            val securityFooter = securityFooterController.view as DualHeightHorizontalLinearLayout
-            securityFootersContainer?.addView(securityFooter)
-            val separatorWidth = resources.getDimensionPixelSize(R.dimen.new_qs_footer_action_inset)
-            securityFootersContainer?.addView(securityFootersSeparator, separatorWidth, 1)
-            reformatForNewFooter(securityFooter)
-            val fgsFooter = fgsManagerFooterController.view
-            securityFootersContainer?.addView(fgsFooter)
-            (fgsFooter.layoutParams as LinearLayout.LayoutParams).apply {
-                width = 0
-                weight = 1f
-            }
 
-            val visibilityListener =
-                VisibilityChangedDispatcher.OnVisibilityChangedListener { visibility ->
-                    if (visibility == View.GONE) {
-                        securityFootersSeparator.visibility = View.GONE
-                    } else if (securityFooter.visibility == View.VISIBLE &&
-                        fgsFooter.visibility == View.VISIBLE) {
-                        securityFootersSeparator.visibility = View.VISIBLE
-                    } else {
-                        securityFootersSeparator.visibility = View.GONE
-                    }
-                    fgsManagerFooterController
-                        .setCollapsed(securityFooter.visibility == View.VISIBLE)
+        val securityFooter = securityFooterController.view
+        securityFootersContainer?.addView(securityFooter)
+        val separatorWidth = resources.getDimensionPixelSize(R.dimen.qs_footer_action_inset)
+        securityFootersContainer?.addView(securityFootersSeparator, separatorWidth, 1)
+
+        val fgsFooter = fgsManagerFooterController.view
+        securityFootersContainer?.addView(fgsFooter)
+
+        val visibilityListener =
+            VisibilityChangedDispatcher.OnVisibilityChangedListener { visibility ->
+                if (securityFooter.visibility == View.VISIBLE &&
+                    fgsFooter.visibility == View.VISIBLE) {
+                    securityFootersSeparator.visibility = View.VISIBLE
+                } else {
+                    securityFootersSeparator.visibility = View.GONE
                 }
-            securityFooterController.setOnVisibilityChangedListener(visibilityListener)
-            fgsManagerFooterController.setOnVisibilityChangedListener(visibilityListener)
-        }
-        updateView()
-    }
+                fgsManagerFooterController
+                    .setCollapsed(securityFooter.visibility == View.VISIBLE)
+            }
+        securityFooterController.setOnVisibilityChangedListener(visibilityListener)
+        fgsManagerFooterController.setOnVisibilityChangedListener(visibilityListener)
 
-    private fun reformatForNewFooter(view: DualHeightHorizontalLinearLayout) {
-        // This is only necessary while things are flagged as the view could be attached in two
-        // different locations.
-        (view.layoutParams as LinearLayout.LayoutParams).apply {
-            bottomMargin = 0
-            width = 0
-            weight = 1f
-            marginEnd = resources.getDimensionPixelSize(R.dimen.new_qs_footer_action_inset)
-        }
-        view.alwaysSingleLine = true
+        updateView()
     }
 
     private fun updateView() {
@@ -237,10 +216,9 @@
         } else {
             userInfoController.removeCallback(onUserInfoChangedListener)
         }
-        if (featureFlags.isEnabled(Flags.NEW_FOOTER)) {
-            fgsManagerFooterController.setListening(listening)
-            securityFooterController.setListening(listening)
-        }
+
+        fgsManagerFooterController.setListening(listening)
+        securityFooterController.setListening(listening)
     }
 
     fun disable(state2: Int) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java
index 4640205..56298fa 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java
@@ -81,8 +81,6 @@
     private final QSPanelController mQsPanelController;
     private final QuickQSPanelController mQuickQSPanelController;
     private final QuickStatusBarHeader mQuickStatusBarHeader;
-    private final QSFgsManagerFooter mFgsManagerFooter;
-    private final QSSecurityFooter mSecurityFooter;
     private final QS mQs;
 
     @Nullable
@@ -105,7 +103,7 @@
     private TouchAnimator mNonfirstPageAlphaAnimator;
     // TranslatesY the QS Tile layout using QS.getHeightDiff()
     private TouchAnimator mQSTileLayoutTranslatorAnimator;
-    // This animates fading of SecurityFooter and media divider
+    // This animates fading of media player
     private TouchAnimator mAllPagesDelayedAnimator;
     // Animator for brightness slider(s)
     @Nullable
@@ -146,7 +144,6 @@
     public QSAnimator(QS qs, QuickQSPanel quickPanel, QuickStatusBarHeader quickStatusBarHeader,
             QSPanelController qsPanelController,
             QuickQSPanelController quickQSPanelController, QSTileHost qsTileHost,
-            QSFgsManagerFooter fgsManagerFooter, QSSecurityFooter securityFooter,
             @Main Executor executor, TunerService tunerService,
             QSExpansionPathInterpolator qsExpansionPathInterpolator) {
         mQs = qs;
@@ -154,8 +151,6 @@
         mQsPanelController = qsPanelController;
         mQuickQSPanelController = quickQSPanelController;
         mQuickStatusBarHeader = quickStatusBarHeader;
-        mFgsManagerFooter = fgsManagerFooter;
-        mSecurityFooter = securityFooter;
         mHost = qsTileHost;
         mExecutor = executor;
         mTunerService = tunerService;
@@ -472,10 +467,8 @@
                     .setListener(this)
                     .build();
 
-            // Fade in the security footer and the divider as we reach the final position
+            // Fade in the media player as we reach the final position
             Builder builder = new Builder().setStartDelay(EXPANDED_TILE_DELAY);
-            builder.addFloat(mFgsManagerFooter.getView(), "alpha", 0, 1);
-            builder.addFloat(mSecurityFooter.getView(), "alpha", 0, 1);
             if (mQsPanelController.shouldUseHorizontalLayout()
                     && mQsPanelController.mMediaHost.hostView != null) {
                 builder.addFloat(mQsPanelController.mMediaHost.hostView, "alpha", 0, 1);
@@ -484,8 +477,6 @@
                 mQsPanelController.mMediaHost.hostView.setAlpha(1.0f);
             }
             mAllPagesDelayedAnimator = builder.build();
-            mAllViews.add(mFgsManagerFooter.getView());
-            mAllViews.add(mSecurityFooter.getView());
             translationYBuilder.setInterpolator(mQSExpansionPathInterpolator.getYInterpolator());
             qqsTranslationYBuilder.setInterpolator(mQSExpansionPathInterpolator.getYInterpolator());
             translationXBuilder.setInterpolator(mQSExpansionPathInterpolator.getXInterpolator());
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
index 519ed5c..6658441 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
@@ -138,12 +138,8 @@
     }
 
     void updateResources(QSPanelController qsPanelController,
-            QuickStatusBarHeaderController quickStatusBarHeaderController,
-            boolean newFooter) {
-        int bottomPadding = 0;
-        if (newFooter) {
-            bottomPadding = getResources().getDimensionPixelSize(R.dimen.qs_panel_padding_bottom);
-        }
+            QuickStatusBarHeaderController quickStatusBarHeaderController) {
+        int bottomPadding = getResources().getDimensionPixelSize(R.dimen.qs_panel_padding_bottom);
         mQSPanelContainer.setPaddingRelative(
                 mQSPanelContainer.getPaddingStart(),
                 QSUtils.getQsHeaderSystemIconsAreaHeight(mContext),
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java
index 61da182..7d61991 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java
@@ -18,8 +18,6 @@
 
 import android.content.res.Configuration;
 
-import com.android.systemui.flags.FeatureFlags;
-import com.android.systemui.flags.Flags;
 import com.android.systemui.qs.dagger.QSScope;
 import com.android.systemui.statusbar.policy.ConfigurationController;
 import com.android.systemui.util.ViewController;
@@ -32,26 +30,23 @@
     private final QSPanelController mQsPanelController;
     private final QuickStatusBarHeaderController mQuickStatusBarHeaderController;
     private final ConfigurationController mConfigurationController;
-    private final boolean mNewFooter;
 
     private final ConfigurationController.ConfigurationListener mConfigurationListener =
             new ConfigurationController.ConfigurationListener() {
         @Override
         public void onConfigChanged(Configuration newConfig) {
-            mView.updateResources(mQsPanelController, mQuickStatusBarHeaderController, mNewFooter);
+            mView.updateResources(mQsPanelController, mQuickStatusBarHeaderController);
         }
     };
 
     @Inject
     QSContainerImplController(QSContainerImpl view, QSPanelController qsPanelController,
             QuickStatusBarHeaderController quickStatusBarHeaderController,
-            ConfigurationController configurationController,
-            FeatureFlags featureFlags) {
+            ConfigurationController configurationController) {
         super(view);
         mQsPanelController = qsPanelController;
         mQuickStatusBarHeaderController = quickStatusBarHeaderController;
         mConfigurationController = configurationController;
-        mNewFooter = featureFlags.isEnabled(Flags.NEW_FOOTER);
     }
 
     @Override
@@ -65,7 +60,7 @@
 
     @Override
     protected void onViewAttached() {
-        mView.updateResources(mQsPanelController, mQuickStatusBarHeaderController, mNewFooter);
+        mView.updateResources(mQsPanelController, mQuickStatusBarHeaderController);
         mConfigurationController.addCallback(mConfigurationListener);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java
index 795a606..4fa05c8 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java
@@ -211,7 +211,6 @@
                     }
         });
         mHeader = view.findViewById(R.id.header);
-        mQSPanelController.setHeaderContainer(view.findViewById(R.id.header_text_container));
         mFooter = qsFragmentComponent.getQSFooter();
 
         mQSContainerImplController = qsFragmentComponent.getQSContainerImplController();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index 8c4dedc..9fbdd3c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -75,7 +75,6 @@
     @Nullable
     protected BrightnessSliderController mToggleSliderController;
 
-    private final H mHandler = new H();
     /** Whether or not the QS media player feature is enabled. */
     protected boolean mUsingMediaPlayer;
 
@@ -87,16 +86,9 @@
             new ArrayList<>();
 
     @Nullable
-    protected View mFgsManagerFooter;
-    @Nullable
-    protected View mSecurityFooter;
-
-    @Nullable
     protected View mFooter;
 
     @Nullable
-    private ViewGroup mHeaderContainer;
-    @Nullable
     private PageIndicator mFooterPageIndicator;
     private int mContentMarginStart;
     private int mContentMarginEnd;
@@ -112,7 +104,6 @@
     private float mSquishinessFraction = 1f;
     private final ArrayMap<View, Integer> mChildrenLayoutTop = new ArrayMap<>();
     private final Rect mClippingRect = new Rect();
-    private boolean mUseNewFooter = false;
     private ViewGroup mMediaHostView;
     private boolean mShouldMoveMediaOnExpansion = true;
 
@@ -156,10 +147,6 @@
         }
     }
 
-    void setUseNewFooter(boolean useNewFooter) {
-        mUseNewFooter = useNewFooter;
-    }
-
     protected void setHorizontalContentContainerClipping() {
         mHorizontalContentContainer.setClipChildren(true);
         mHorizontalContentContainer.setClipToPadding(false);
@@ -444,27 +431,6 @@
         }
     }
 
-    /** Switch the security footer between top and bottom of QS depending on orientation. */
-    public void switchSecurityFooter(boolean shouldUseSplitNotificationShade) {
-        if (mSecurityFooter == null) return;
-
-        if (!shouldUseSplitNotificationShade
-                && mContext.getResources().getConfiguration().orientation
-                == Configuration.ORIENTATION_LANDSCAPE && mHeaderContainer != null) {
-            // Adding the security view to the header, that enables us to avoid scrolling
-            switchToParent(mSecurityFooter, mHeaderContainer, 0);
-        } else {
-            // Add after the footer
-            int index;
-            if (mFgsManagerFooter != null) {
-                index = indexOfChild(mFgsManagerFooter);
-            } else {
-                index = indexOfChild(mFooter);
-            }
-            switchToParent(mSecurityFooter, this, index + 1);
-        }
-    }
-
     private void switchToParent(View child, ViewGroup parent, int index) {
         switchToParent(child, parent, index, getDumpableTag());
     }
@@ -609,38 +575,10 @@
         }
     }
 
-    /**
-     * Set the header container of quick settings.
-     */
-    public void setHeaderContainer(@NonNull ViewGroup headerContainer) {
-        mHeaderContainer = headerContainer;
-    }
-
     public boolean isListening() {
         return mListening;
     }
 
-    /**
-     * Set the security footer view and switch it into the right place
-     * @param view the view in question
-     * @param shouldUseSplitNotificationShade if QS is in split shade mode
-     */
-    public void setSecurityFooter(View view, boolean shouldUseSplitNotificationShade) {
-        mSecurityFooter = view;
-        switchSecurityFooter(shouldUseSplitNotificationShade);
-    }
-
-    /**
-     * Set the fgs manager footer view and switch it into the right place
-     * @param view the view in question
-     */
-    public void setFgsManagerFooter(View view) {
-        mFgsManagerFooter = view;
-        // Add after the footer
-        int index = indexOfChild(mFooter);
-        switchToParent(mFgsManagerFooter, this, index + 1);
-    }
-
     protected void setPageMargin(int pageMargin) {
         if (mTileLayout instanceof PagedTileLayout) {
             ((PagedTileLayout) mTileLayout).setPageMargin(pageMargin);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
index b46f9c3..5670836 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
@@ -21,18 +21,14 @@
 import static com.android.systemui.qs.QSPanel.QS_SHOW_BRIGHTNESS;
 import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER;
 
-import android.annotation.NonNull;
 import android.content.res.Configuration;
 import android.view.MotionEvent;
 import android.view.View;
-import android.view.ViewGroup;
 
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.UiEventLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.systemui.dump.DumpManager;
-import com.android.systemui.flags.FeatureFlags;
-import com.android.systemui.flags.Flags;
 import com.android.systemui.media.MediaHierarchyManager;
 import com.android.systemui.media.MediaHost;
 import com.android.systemui.media.MediaHostState;
@@ -56,8 +52,6 @@
 @QSScope
 public class QSPanelController extends QSPanelControllerBase<QSPanel> {
 
-    private final QSFgsManagerFooter mQSFgsManagerFooter;
-    private final QSSecurityFooter mQsSecurityFooter;
     private final TunerService mTunerService;
     private final QSCustomizerController mQsCustomizerController;
     private final QSTileRevealController.Factory mQsTileRevealControllerFactory;
@@ -65,7 +59,6 @@
     private final BrightnessController mBrightnessController;
     private final BrightnessSliderController mBrightnessSliderController;
     private final BrightnessMirrorHandler mBrightnessMirrorHandler;
-    private final FeatureFlags mFeatureFlags;
     private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
 
     private boolean mGridContentVisible = true;
@@ -75,11 +68,9 @@
         @Override
         public void onConfigurationChange(Configuration newConfig) {
             mView.updateResources();
-            mQsSecurityFooter.onConfigurationChanged();
             if (mView.isListening()) {
                 refreshAllTiles();
             }
-            mView.switchSecurityFooter(mShouldUseSplitNotificationShade);
         }
     };
 
@@ -94,8 +85,7 @@
     };
 
     @Inject
-    QSPanelController(QSPanel view, QSFgsManagerFooter qsFgsManagerFooter,
-            QSSecurityFooter qsSecurityFooter, TunerService tunerService,
+    QSPanelController(QSPanel view, TunerService tunerService,
             QSTileHost qstileHost, QSCustomizerController qsCustomizerController,
             @Named(QS_USING_MEDIA_PLAYER) boolean usingMediaPlayer,
             @Named(QS_PANEL) MediaHost mediaHost,
@@ -103,12 +93,10 @@
             DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger,
             QSLogger qsLogger, BrightnessController.Factory brightnessControllerFactory,
             BrightnessSliderController.Factory brightnessSliderFactory,
-            FalsingManager falsingManager, FeatureFlags featureFlags,
+            FalsingManager falsingManager,
             StatusBarKeyguardViewManager statusBarKeyguardViewManager) {
         super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost,
                 metricsLogger, uiEventLogger, qsLogger, dumpManager);
-        mQSFgsManagerFooter = qsFgsManagerFooter;
-        mQsSecurityFooter = qsSecurityFooter;
         mTunerService = tunerService;
         mQsCustomizerController = qsCustomizerController;
         mQsTileRevealControllerFactory = qsTileRevealControllerFactory;
@@ -119,9 +107,7 @@
 
         mBrightnessController = brightnessControllerFactory.create(mBrightnessSliderController);
         mBrightnessMirrorHandler = new BrightnessMirrorHandler(mBrightnessController);
-        mFeatureFlags = featureFlags;
         mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
-        view.setUseNewFooter(featureFlags.isEnabled(Flags.NEW_FOOTER));
     }
 
     @Override
@@ -132,7 +118,6 @@
         mMediaHost.init(MediaHierarchyManager.LOCATION_QS);
         mQsCustomizerController.init();
         mBrightnessSliderController.init();
-        mQSFgsManagerFooter.init();
     }
 
     @Override
@@ -147,10 +132,6 @@
             refreshAllTiles();
         }
         mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener);
-        if (!mFeatureFlags.isEnabled(Flags.NEW_FOOTER)) {
-            mView.setSecurityFooter(mQsSecurityFooter.getView(), mShouldUseSplitNotificationShade);
-            mView.setFgsManagerFooter(mQSFgsManagerFooter.getView());
-        }
         switchTileLayout(true);
         mBrightnessMirrorHandler.onQsPanelAttached();
 
@@ -172,13 +153,6 @@
         super.onViewDetached();
     }
 
-    /**
-     * Set the header container of quick settings.
-     */
-    public void setHeaderContainer(@NonNull ViewGroup headerContainer) {
-        mView.setHeaderContainer(headerContainer);
-    }
-
     /** */
     public void setVisibility(int visibility) {
         mView.setVisibility(visibility);
@@ -191,11 +165,6 @@
             refreshAllTiles();
         }
 
-        if (!mFeatureFlags.isEnabled(Flags.NEW_FOOTER)) {
-            mQSFgsManagerFooter.setListening(listening);
-            mQsSecurityFooter.setListening(listening);
-        }
-
         // Set the listening as soon as the QS fragment starts listening regardless of the
         //expansion, so it will update the current brightness before the slider is visible.
         if (listening) {
@@ -224,8 +193,6 @@
     public void refreshAllTiles() {
         mBrightnessController.checkRestrictionAndSetEnabled();
         super.refreshAllTiles();
-        mQSFgsManagerFooter.refreshState();
-        mQsSecurityFooter.refreshState();
     }
 
     /** Start customizing the Quick Settings. */
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
index c5ca285..264edb1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java
@@ -70,7 +70,6 @@
     private View mDateView;
     // DateView next to clock. Visible on QQS
     private VariableDateView mClockDateView;
-    private View mSecurityHeaderView;
     private View mStatusIconsView;
     private View mContainer;
 
@@ -137,7 +136,6 @@
         mPrivacyChip = findViewById(R.id.privacy_chip);
         mDateView = findViewById(R.id.date);
         mClockDateView = findViewById(R.id.date_clock);
-        mSecurityHeaderView = findViewById(R.id.header_text_container);
         mClockIconsSeparator = findViewById(R.id.separator);
         mRightLayout = findViewById(R.id.rightLayout);
         mDateContainer = findViewById(R.id.date_container);
@@ -152,8 +150,6 @@
         updateResources();
         Configuration config = mContext.getResources().getConfiguration();
         setDatePrivacyContainersWidth(config.orientation == Configuration.ORIENTATION_LANDSCAPE);
-        setSecurityHeaderContainerVisibility(
-                config.orientation == Configuration.ORIENTATION_LANDSCAPE);
 
         // QS will always show the estimate, and BatteryMeterView handles the case where
         // it's unavailable or charging
@@ -207,8 +203,6 @@
         super.onConfigurationChanged(newConfig);
         updateResources();
         setDatePrivacyContainersWidth(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE);
-        setSecurityHeaderContainerVisibility(
-                newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE);
     }
 
     @Override
@@ -229,10 +223,6 @@
         mPrivacyContainer.setLayoutParams(lp);
     }
 
-    private void setSecurityHeaderContainerVisibility(boolean landscape) {
-        mSecurityHeaderView.setVisibility(landscape ? VISIBLE : GONE);
-    }
-
     private void updateBatteryMode() {
         if (mConfigShowBatteryEstimate && !mHasCenterCutout) {
             mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE);
@@ -337,7 +327,6 @@
             return;
         }
         TouchAnimator.Builder builder = new TouchAnimator.Builder()
-                .addFloat(mSecurityHeaderView, "alpha", 0, 1)
                 // These views appear on expanding down
                 .addFloat(mDateView, "alpha", 0, 0, 1)
                 .addFloat(mClockDateView, "alpha", 1, 0, 0)
diff --git a/packages/SystemUI/src/com/android/systemui/qs/dagger/QSFragmentModule.java b/packages/SystemUI/src/com/android/systemui/qs/dagger/QSFragmentModule.java
index 2780b16..aa505fb 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/dagger/QSFragmentModule.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/dagger/QSFragmentModule.java
@@ -22,13 +22,10 @@
 import android.content.Context;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.view.ViewStub;
 
 import com.android.systemui.R;
 import com.android.systemui.battery.BatteryMeterView;
 import com.android.systemui.dagger.qualifiers.RootView;
-import com.android.systemui.flags.FeatureFlags;
-import com.android.systemui.flags.Flags;
 import com.android.systemui.plugins.qs.QS;
 import com.android.systemui.privacy.OngoingPrivacyChip;
 import com.android.systemui.qs.FooterActionsView;
@@ -128,15 +125,7 @@
      * This will replace a ViewStub either in {@link QSFooterView} or in {@link QSContainerImpl}.
      */
     @Provides
-    static FooterActionsView providesQSFooterActionsView(@RootView View view,
-            FeatureFlags featureFlags) {
-        ViewStub stub;
-        if (featureFlags.isEnabled(Flags.NEW_FOOTER)) {
-            stub = view.requireViewById(R.id.container_stub);
-        } else {
-            stub = view.requireViewById(R.id.footer_stub);
-        }
-        stub.inflate();
+    static FooterActionsView providesQSFooterActionsView(@RootView View view) {
         return view.findViewById(R.id.qs_footer_actions);
     }
 
@@ -161,9 +150,10 @@
     @Named(QS_SECURITY_FOOTER_VIEW)
     static View providesQSSecurityFooterView(
             @QSThemedContext LayoutInflater layoutInflater,
-            QSPanel qsPanel
+            FooterActionsView footerActionsView
     ) {
-        return layoutInflater.inflate(R.layout.quick_settings_security_footer, qsPanel, false);
+        return layoutInflater.inflate(R.layout.quick_settings_security_footer, footerActionsView,
+                false);
     }
 
     /** */
@@ -200,8 +190,8 @@
     @Named(QS_FGS_MANAGER_FOOTER_VIEW)
     static View providesQSFgsManagerFooterView(
             @QSThemedContext LayoutInflater layoutInflater,
-            QSPanel qsPanel
+            FooterActionsView footerActionsView
     ) {
-        return layoutInflater.inflate(R.layout.fgs_footer, qsPanel, false);
+        return layoutInflater.inflate(R.layout.fgs_footer, footerActionsView, false);
     }
 }
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQSContainerController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQSContainerController.kt
index 745228e..491e9fd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQSContainerController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQSContainerController.kt
@@ -168,14 +168,7 @@
     private fun updateBottomSpacing() {
         val (containerPadding, notificationsMargin) = calculateBottomSpacing()
         var qsScrollPaddingBottom = 0
-        val newFooter = featureFlags.isEnabled(Flags.NEW_FOOTER)
-        if (!newFooter && !(splitShadeEnabled || isQSCustomizing || isQSDetailShowing ||
-                        isGestureNavigation || taskbarVisible)) {
-            // no taskbar, portrait, navigation buttons enabled:
-            // padding is needed so QS can scroll up over bottom insets - to reach the point when
-            // the whole QS is above bottom insets
-            qsScrollPaddingBottom = bottomStableInsets
-        } else if (newFooter && !(isQSCustomizing || isQSDetailShowing)) {
+        if (!(isQSCustomizing || isQSDetailShowing)) {
             // With the new footer, we also want this padding in the bottom in these cases
             qsScrollPaddingBottom = if (splitShadeEnabled) {
                 notificationsMargin - scrimShadeBottomMargin
@@ -185,11 +178,7 @@
         }
         mView.setPadding(0, 0, 0, containerPadding)
         mView.setNotificationsMarginBottom(notificationsMargin)
-        if (newFooter) {
-            mView.setQSContainerPaddingBottom(qsScrollPaddingBottom)
-        } else {
-            mView.setQSScrollPaddingBottom(qsScrollPaddingBottom)
-        }
+        mView.setQSContainerPaddingBottom(qsScrollPaddingBottom)
     }
 
     private fun calculateBottomSpacing(): Pair<Int, Int> {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java
index 7caea06..2446cf7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationsQuickSettingsContainer.java
@@ -103,16 +103,6 @@
         mStackScroller.setLayoutParams(params);
     }
 
-    public void setQSScrollPaddingBottom(int paddingBottom) {
-        if (mQSScrollView != null) {
-            mQSScrollView.setPaddingRelative(
-                    mQSScrollView.getPaddingLeft(),
-                    mQSScrollView.getPaddingTop(),
-                    mQSScrollView.getPaddingRight(),
-                    paddingBottom);
-        }
-    }
-
     public void setQSContainerPaddingBottom(int paddingBottom) {
         if (mQSContainer != null) {
             mQSContainer.setPadding(
diff --git a/packages/SystemUI/src/com/android/systemui/util/DualHeightHorizontalLinearLayout.kt b/packages/SystemUI/src/com/android/systemui/util/DualHeightHorizontalLinearLayout.kt
deleted file mode 100644
index cfceefa..0000000
--- a/packages/SystemUI/src/com/android/systemui/util/DualHeightHorizontalLinearLayout.kt
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (C) 2021 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.
- */
-
-package com.android.systemui.util
-
-import android.content.Context
-import android.content.res.Configuration
-import android.util.AttributeSet
-import android.util.DisplayMetrics
-import android.util.TypedValue
-import android.widget.LinearLayout
-import android.widget.TextView
-import com.android.systemui.R
-
-/**
- * Horizontal [LinearLayout] to contain some text.
- *
- * The height of this container can alternate between two different heights, depending on whether
- * the text takes one line or more.
- *
- * When the text takes multiple lines, it will use the values in the regular attributes (`padding`,
- * `layout_height`). The single line behavior must be set in XML.
- *
- * XML attributes for single line behavior:
- * * `systemui:textViewId`: set the id for the [TextView] that determines the height of the
- *   container
- * * `systemui:singleLineHeight`: sets the height of the view when the text takes up only one line.
- *   By default, it will use [getMinimumHeight].
- * * `systemui:singleLineVerticalPadding`: sets the padding (top and bottom) when then text takes up
- * only one line. By default, it is 0.
- *
- * All dimensions are updated when configuration changes.
- */
-class DualHeightHorizontalLinearLayout @JvmOverloads constructor(
-    context: Context,
-    attrs: AttributeSet? = null,
-    defStyleAttrs: Int = 0,
-    defStyleRes: Int = 0
-) : LinearLayout(context, attrs, defStyleAttrs, defStyleRes) {
-
-    private val singleLineHeightValue: TypedValue?
-    private var singleLineHeightPx = 0
-
-    private val singleLineVerticalPaddingValue: TypedValue?
-    private var singleLineVerticalPaddingPx = 0
-
-    private val textViewId: Int
-    private var textView: TextView? = null
-
-    private val displayMetrics: DisplayMetrics
-        get() = context.resources.displayMetrics
-
-    private var initialPadding = mPaddingTop // All vertical padding is the same
-
-    private var originalMaxLines = 1
-    var alwaysSingleLine: Boolean = false
-        set(value) {
-            field = value
-            if (field) {
-                textView?.setSingleLine()
-            } else {
-                textView?.maxLines = originalMaxLines
-            }
-        }
-
-    init {
-        if (orientation != HORIZONTAL) {
-            throw IllegalStateException("This view should always have horizontal orientation")
-        }
-
-        val ta = context.obtainStyledAttributes(
-                attrs,
-                R.styleable.DualHeightHorizontalLinearLayout, defStyleAttrs, defStyleRes
-        )
-
-        val tempHeight = TypedValue()
-        singleLineHeightValue = if (
-                ta.hasValue(R.styleable.DualHeightHorizontalLinearLayout_singleLineHeight)
-        ) {
-            ta.getValue(R.styleable.DualHeightHorizontalLinearLayout_singleLineHeight, tempHeight)
-            tempHeight
-        } else {
-            null
-        }
-
-        val tempPadding = TypedValue()
-        singleLineVerticalPaddingValue = if (
-                ta.hasValue(R.styleable.DualHeightHorizontalLinearLayout_singleLineVerticalPadding)
-        ) {
-            ta.getValue(
-                    R.styleable.DualHeightHorizontalLinearLayout_singleLineVerticalPadding,
-                    tempPadding
-            )
-            tempPadding
-        } else {
-            null
-        }
-
-        textViewId = ta.getResourceId(R.styleable.DualHeightHorizontalLinearLayout_textViewId, 0)
-
-        ta.recycle()
-    }
-
-    init {
-        updateResources()
-    }
-
-    override fun setPadding(left: Int, top: Int, right: Int, bottom: Int) {
-        super.setPadding(left, top, right, bottom)
-        initialPadding = top
-    }
-
-    override fun setPaddingRelative(start: Int, top: Int, end: Int, bottom: Int) {
-        super.setPaddingRelative(start, top, end, bottom)
-        initialPadding = top
-    }
-
-    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
-        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
-        textView?.let { tv ->
-            if (tv.lineCount < 2 || alwaysSingleLine) {
-                setMeasuredDimension(measuredWidth, singleLineHeightPx)
-                mPaddingBottom = 0
-                mPaddingTop = 0
-            } else {
-                mPaddingBottom = initialPadding
-                mPaddingTop = initialPadding
-            }
-        }
-    }
-
-    override fun onFinishInflate() {
-        super.onFinishInflate()
-        textView = findViewById<TextView>(textViewId)?.also {
-            originalMaxLines = it.maxLines
-        }
-    }
-
-    override fun onConfigurationChanged(newConfig: Configuration?) {
-        super.onConfigurationChanged(newConfig)
-        updateResources()
-    }
-
-    override fun setOrientation(orientation: Int) {
-        if (orientation == VERTICAL) {
-            throw IllegalStateException("This view should always have horizontal orientation")
-        }
-        super.setOrientation(orientation)
-    }
-
-    private fun updateResources() {
-        updateDimensionValue(singleLineHeightValue, minimumHeight, ::singleLineHeightPx::set)
-        updateDimensionValue(singleLineVerticalPaddingValue, 0, ::singleLineVerticalPaddingPx::set)
-    }
-
-    private inline fun updateDimensionValue(
-        tv: TypedValue?,
-        defaultValue: Int,
-        propertySetter: (Int) -> Unit
-    ) {
-        val value = tv?.let {
-            if (it.resourceId != 0) {
-                context.resources.getDimensionPixelSize(it.resourceId)
-            } else {
-                it.getDimension(displayMetrics).toInt()
-            }
-        } ?: defaultValue
-        propertySetter(value)
-    }
-}
\ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/FooterActionsControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/FooterActionsControllerTest.kt
index 7b17c36..35d0024 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/FooterActionsControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/FooterActionsControllerTest.kt
@@ -8,20 +8,20 @@
 import android.testing.ViewUtils
 import android.view.LayoutInflater
 import android.view.View
+import android.view.ViewGroup
 import androidx.test.filters.SmallTest
 import com.android.internal.logging.MetricsLogger
 import com.android.internal.logging.UiEventLogger
 import com.android.internal.logging.testing.FakeMetricsLogger
 import com.android.systemui.R
 import com.android.systemui.classifier.FalsingManagerFake
-import com.android.systemui.flags.FeatureFlags
-import com.android.systemui.flags.Flags
 import com.android.systemui.globalactions.GlobalActionsDialogLite
 import com.android.systemui.plugins.ActivityStarter
 import com.android.systemui.settings.UserTracker
 import com.android.systemui.statusbar.phone.MultiUserSwitchController
 import com.android.systemui.statusbar.policy.DeviceProvisionedController
 import com.android.systemui.statusbar.policy.UserInfoController
+import com.android.systemui.util.mockito.capture
 import com.android.systemui.util.settings.FakeSettings
 import com.android.systemui.utils.leaks.LeakCheckedTest
 import com.google.common.truth.Truth.assertThat
@@ -29,10 +29,14 @@
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.ArgumentCaptor
 import org.mockito.ArgumentMatchers.any
 import org.mockito.ArgumentMatchers.anyBoolean
+import org.mockito.Captor
 import org.mockito.Mock
 import org.mockito.Mockito
+import org.mockito.Mockito.atLeastOnce
+import org.mockito.Mockito.clearInvocations
 import org.mockito.Mockito.never
 import org.mockito.Mockito.reset
 import org.mockito.Mockito.verify
@@ -65,11 +69,12 @@
     @Mock
     private lateinit var uiEventLogger: UiEventLogger
     @Mock
-    private lateinit var featureFlags: FeatureFlags
-    @Mock
     private lateinit var securityFooterController: QSSecurityFooter
     @Mock
     private lateinit var fgsManagerController: QSFgsManagerFooter
+    @Captor
+    private lateinit var visibilityChangedCaptor:
+        ArgumentCaptor<VisibilityChangedDispatcher.OnVisibilityChangedListener>
 
     private lateinit var controller: FooterActionsController
 
@@ -78,6 +83,8 @@
     private val falsingManager: FalsingManagerFake = FalsingManagerFake()
     private lateinit var testableLooper: TestableLooper
     private lateinit var fakeSettings: FakeSettings
+    private lateinit var securityFooter: View
+    private lateinit var fgsFooter: View
 
     @Before
     fun setUp() {
@@ -87,9 +94,14 @@
 
         whenever(multiUserSwitchControllerFactory.create(any()))
                 .thenReturn(multiUserSwitchController)
-        whenever(featureFlags.isEnabled(Flags.NEW_FOOTER)).thenReturn(false)
         whenever(globalActionsDialogProvider.get()).thenReturn(globalActionsDialog)
 
+        securityFooter = View(mContext)
+        fgsFooter = View(mContext)
+
+        whenever(securityFooterController.view).thenReturn(securityFooter)
+        whenever(fgsManagerController.view).thenReturn(fgsFooter)
+
         view = inflateView()
 
         controller = constructFooterActionsController(view)
@@ -107,6 +119,13 @@
     }
 
     @Test
+    fun testInitializesControllers() {
+        verify(multiUserSwitchController).init()
+        verify(fgsManagerController).init()
+        verify(securityFooterController).init()
+    }
+
+    @Test
     fun testLogPowerMenuClick() {
         controller.visible = true
         falsingManager.setFalseTap(false)
@@ -182,6 +201,10 @@
     @Test
     fun testCleanUpGAD() {
         reset(globalActionsDialogProvider)
+        // We are creating a new controller, so detach the views from it
+        (securityFooter.parent as ViewGroup).removeView(securityFooter)
+        (fgsFooter.parent as ViewGroup).removeView(fgsFooter)
+
         whenever(globalActionsDialogProvider.get()).thenReturn(globalActionsDialog)
         val view = inflateView()
         controller = constructFooterActionsController(view)
@@ -198,6 +221,80 @@
         verify(globalActionsDialog).destroy()
     }
 
+    @Test
+    fun testSeparatorVisibility_noneVisible_gone() {
+        verify(securityFooterController)
+            .setOnVisibilityChangedListener(capture(visibilityChangedCaptor))
+        val listener = visibilityChangedCaptor.value
+        val separator = controller.securityFootersSeparator
+
+        setVisibilities(securityFooterVisible = false, fgsFooterVisible = false, listener)
+        assertThat(separator.visibility).isEqualTo(View.GONE)
+    }
+
+    @Test
+    fun testSeparatorVisibility_onlySecurityFooterVisible_gone() {
+        verify(securityFooterController)
+            .setOnVisibilityChangedListener(capture(visibilityChangedCaptor))
+        val listener = visibilityChangedCaptor.value
+        val separator = controller.securityFootersSeparator
+
+        setVisibilities(securityFooterVisible = true, fgsFooterVisible = false, listener)
+        assertThat(separator.visibility).isEqualTo(View.GONE)
+    }
+
+    @Test
+    fun testSeparatorVisibility_onlyFgsFooterVisible_gone() {
+        verify(securityFooterController)
+            .setOnVisibilityChangedListener(capture(visibilityChangedCaptor))
+        val listener = visibilityChangedCaptor.value
+        val separator = controller.securityFootersSeparator
+
+        setVisibilities(securityFooterVisible = false, fgsFooterVisible = true, listener)
+        assertThat(separator.visibility).isEqualTo(View.GONE)
+    }
+
+    @Test
+    fun testSeparatorVisibility_bothVisible_visible() {
+        verify(securityFooterController)
+            .setOnVisibilityChangedListener(capture(visibilityChangedCaptor))
+        val listener = visibilityChangedCaptor.value
+        val separator = controller.securityFootersSeparator
+
+        setVisibilities(securityFooterVisible = true, fgsFooterVisible = true, listener)
+        assertThat(separator.visibility).isEqualTo(View.VISIBLE)
+    }
+
+    @Test
+    fun testFgsFooterCollapsed() {
+        verify(securityFooterController)
+            .setOnVisibilityChangedListener(capture(visibilityChangedCaptor))
+        val listener = visibilityChangedCaptor.value
+
+        val booleanCaptor = ArgumentCaptor.forClass(Boolean::class.java)
+
+        clearInvocations(fgsManagerController)
+        setVisibilities(securityFooterVisible = false, fgsFooterVisible = true, listener)
+        verify(fgsManagerController, atLeastOnce()).setCollapsed(capture(booleanCaptor))
+        assertThat(booleanCaptor.allValues.last()).isFalse()
+
+        clearInvocations(fgsManagerController)
+        setVisibilities(securityFooterVisible = true, fgsFooterVisible = true, listener)
+        verify(fgsManagerController, atLeastOnce()).setCollapsed(capture(booleanCaptor))
+        assertThat(booleanCaptor.allValues.last()).isTrue()
+    }
+
+    private fun setVisibilities(
+        securityFooterVisible: Boolean,
+        fgsFooterVisible: Boolean,
+        listener: VisibilityChangedDispatcher.OnVisibilityChangedListener
+    ) {
+        securityFooter.visibility = if (securityFooterVisible) View.VISIBLE else View.GONE
+        listener.onVisibilityChanged(securityFooter.visibility)
+        fgsFooter.visibility = if (fgsFooterVisible) View.VISIBLE else View.GONE
+        listener.onVisibilityChanged(fgsFooter.visibility)
+    }
+
     private fun inflateView(): FooterActionsView {
         return LayoutInflater.from(context)
                 .inflate(R.layout.footer_actions, null) as FooterActionsView
@@ -208,6 +305,6 @@
                 activityStarter, userManager, userTracker, userInfoController,
                 deviceProvisionedController, securityFooterController, fgsManagerController,
                 falsingManager, metricsLogger, globalActionsDialogProvider, uiEventLogger,
-                showPMLiteButton = true, fakeSettings, Handler(testableLooper.looper), featureFlags)
+                showPMLiteButton = true, fakeSettings, Handler(testableLooper.looper))
     }
 }
\ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSContainerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSContainerImplTest.kt
index bf82e90..489c8c8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSContainerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSContainerImplTest.kt
@@ -59,22 +59,14 @@
     fun testContainerBottomPadding() {
         qsContainer.updateResources(
             qsPanelController,
-            quickStatusBarHeaderController,
-            /* newFooter */ false
-        )
-        verify(qsPanelContainer).setPaddingRelative(anyInt(), anyInt(), anyInt(), eq(0))
-
-        qsContainer.updateResources(
-            qsPanelController,
-            quickStatusBarHeaderController,
-            /* newFooter */ true
+            quickStatusBarHeaderController
         )
         verify(qsPanelContainer)
             .setPaddingRelative(
                 anyInt(),
                 anyInt(),
                 anyInt(),
-                eq(mContext.resources.getDimensionPixelSize(R.dimen.new_footer_height))
+                eq(mContext.resources.getDimensionPixelSize(R.dimen.footer_actions_height))
             )
     }
 }
\ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt
index 58a070d..689de50 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt
@@ -6,7 +6,6 @@
 import com.android.internal.logging.UiEventLogger
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.dump.DumpManager
-import com.android.systemui.flags.FeatureFlags
 import com.android.systemui.media.MediaHost
 import com.android.systemui.media.MediaHostState
 import com.android.systemui.plugins.FalsingManager
@@ -35,8 +34,6 @@
 class QSPanelControllerTest : SysuiTestCase() {
 
     @Mock private lateinit var qsPanel: QSPanel
-    @Mock private lateinit var qsFgsManagerFooter: QSFgsManagerFooter
-    @Mock private lateinit var qsSecurityFooter: QSSecurityFooter
     @Mock private lateinit var tunerService: TunerService
     @Mock private lateinit var qsTileHost: QSTileHost
     @Mock private lateinit var qsCustomizerController: QSCustomizerController
@@ -50,7 +47,6 @@
     @Mock private lateinit var brightnessSlider: BrightnessSliderController
     @Mock private lateinit var brightnessSliderFactory: BrightnessSliderController.Factory
     @Mock private lateinit var falsingManager: FalsingManager
-    @Mock private lateinit var featureFlags: FeatureFlags
     @Mock private lateinit var mediaHost: MediaHost
     @Mock private lateinit var tile: QSTile
     @Mock private lateinit var otherTile: QSTile
@@ -69,8 +65,6 @@
 
         controller = QSPanelController(
             qsPanel,
-            qsFgsManagerFooter,
-            qsSecurityFooter,
             tunerService,
             qsTileHost,
             qsCustomizerController,
@@ -84,7 +78,6 @@
             brightnessControllerFactory,
             brightnessSliderFactory,
             falsingManager,
-            featureFlags,
             statusBarKeyguardViewManager
         )
     }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt
index ba02a82..e237a5c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt
@@ -13,9 +13,6 @@
  */
 package com.android.systemui.qs
 
-import android.content.res.Configuration
-import android.content.res.Configuration.ORIENTATION_LANDSCAPE
-import android.content.res.Configuration.ORIENTATION_PORTRAIT
 import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
 import android.testing.TestableLooper.RunWithLooper
@@ -59,8 +56,6 @@
             mFooter = LinearLayout(mContext).apply { id = R.id.qs_footer }
             mQsPanel.addView(mFooter)
             mQsPanel.onFinishInflate()
-            mQsPanel.setSecurityFooter(View(mContext), false)
-            mQsPanel.setHeaderContainer(LinearLayout(mContext))
             // Provides a parent with non-zero size for QSPanel
             mParentView = FrameLayout(mContext).apply {
                 addView(mQsPanel)
@@ -69,49 +64,6 @@
     }
 
     @Test
-    fun testSecurityFooter_appearsOnBottomOnSplitShade() {
-        mQsPanel.onConfigurationChanged(getNewOrientationConfig(ORIENTATION_LANDSCAPE))
-        mQsPanel.switchSecurityFooter(true)
-
-        mTestableLooper.runWithLooper {
-            mQsPanel.isExpanded = true
-        }
-
-        // After mFooter
-        assertThat(mQsPanel.indexOfChild(mQsPanel.mSecurityFooter)).isEqualTo(
-                mQsPanel.indexOfChild(mFooter) + 1
-        )
-    }
-
-    @Test
-    fun testSecurityFooter_appearsOnBottomIfPortrait() {
-        mQsPanel.onConfigurationChanged(getNewOrientationConfig(ORIENTATION_PORTRAIT))
-        mQsPanel.switchSecurityFooter(false)
-
-        mTestableLooper.runWithLooper {
-            mQsPanel.isExpanded = true
-        }
-
-        // After mFooter
-        assertThat(mQsPanel.indexOfChild(mQsPanel.mSecurityFooter)).isEqualTo(
-                mQsPanel.indexOfChild(mFooter) + 1
-        )
-    }
-
-    @Test
-    fun testSecurityFooter_appearsOnTopIfSmallScreenAndLandscape() {
-        mQsPanel.onConfigurationChanged(getNewOrientationConfig(ORIENTATION_LANDSCAPE))
-        mQsPanel.switchSecurityFooter(false)
-
-        mTestableLooper.runWithLooper {
-            mQsPanel.isExpanded = true
-        }
-
-        // -1 means that it is part of the mHeaderContainer
-        assertThat(mQsPanel.indexOfChild(mQsPanel.mSecurityFooter)).isEqualTo(-1)
-    }
-
-    @Test
     fun testHasCollapseAccessibilityAction() {
         val info = AccessibilityNodeInfo(mQsPanel)
         mQsPanel.onInitializeAccessibilityNodeInfo(info)
@@ -128,7 +80,4 @@
         mQsPanel.performAccessibilityAction(AccessibilityNodeInfo.ACTION_COLLAPSE, null)
         verify(mockRunnable).run()
     }
-
-    private fun getNewOrientationConfig(@Configuration.Orientation newOrientation: Int) =
-            context.resources.configuration.apply { orientation = newOrientation }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickQSPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickQSPanelTest.kt
index 60c2bde..a6a584d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QuickQSPanelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QuickQSPanelTest.kt
@@ -2,11 +2,9 @@
 
 import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper
-import android.view.View
 import android.view.ViewGroup
 import android.view.accessibility.AccessibilityNodeInfo
 import android.widget.FrameLayout
-import android.widget.LinearLayout
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.google.common.truth.Truth
@@ -37,8 +35,6 @@
             quickQSPanel.initialize()
 
             quickQSPanel.onFinishInflate()
-            quickQSPanel.setSecurityFooter(View(mContext), false)
-            quickQSPanel.setHeaderContainer(LinearLayout(mContext))
             // Provides a parent with non-zero size for QSPanel
             parentView = FrameLayout(mContext).apply {
                 addView(quickQSPanel)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationQSContainerControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationQSContainerControllerTest.kt
index 05a21db..e2fabbd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationQSContainerControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationQSContainerControllerTest.kt
@@ -13,7 +13,6 @@
 import com.android.systemui.R
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.flags.FeatureFlags
-import com.android.systemui.flags.Flags
 import com.android.systemui.navigationbar.NavigationModeController
 import com.android.systemui.navigationbar.NavigationModeController.ModeChangedListener
 import com.android.systemui.recents.OverviewProxyService
@@ -114,25 +113,6 @@
     @Test
     fun testTaskbarVisibleInSplitShade() {
         enableSplitShade()
-        useNewFooter(false)
-
-        given(taskbarVisible = true,
-                navigationMode = GESTURES_NAVIGATION,
-                insets = windowInsets().withStableBottom())
-        then(expectedContainerPadding = 0, // taskbar should disappear when shade is expanded
-                expectedNotificationsMargin = NOTIFICATIONS_MARGIN)
-
-        given(taskbarVisible = true,
-                navigationMode = BUTTONS_NAVIGATION,
-                insets = windowInsets().withStableBottom())
-        then(expectedContainerPadding = STABLE_INSET_BOTTOM,
-                expectedNotificationsMargin = NOTIFICATIONS_MARGIN)
-    }
-
-    @Test
-    fun testTaskbarVisibleInSplitShade_newFooter() {
-        enableSplitShade()
-        useNewFooter(true)
 
         given(taskbarVisible = true,
                 navigationMode = GESTURES_NAVIGATION,
@@ -153,25 +133,6 @@
     fun testTaskbarNotVisibleInSplitShade() {
         // when taskbar is not visible, it means we're on the home screen
         enableSplitShade()
-        useNewFooter(false)
-
-        given(taskbarVisible = false,
-                navigationMode = GESTURES_NAVIGATION,
-                insets = windowInsets().withStableBottom())
-        then(expectedContainerPadding = 0)
-
-        given(taskbarVisible = false,
-                navigationMode = BUTTONS_NAVIGATION,
-                insets = windowInsets().withStableBottom())
-        then(expectedContainerPadding = 0, // qs goes full height as it's not obscuring nav buttons
-                expectedNotificationsMargin = STABLE_INSET_BOTTOM + NOTIFICATIONS_MARGIN)
-    }
-
-    @Test
-    fun testTaskbarNotVisibleInSplitShade_newFooter() {
-        // when taskbar is not visible, it means we're on the home screen
-        enableSplitShade()
-        useNewFooter(true)
 
         given(taskbarVisible = false,
                 navigationMode = GESTURES_NAVIGATION,
@@ -190,24 +151,6 @@
     @Test
     fun testTaskbarNotVisibleInSplitShadeWithCutout() {
         enableSplitShade()
-        useNewFooter(false)
-
-        given(taskbarVisible = false,
-                navigationMode = GESTURES_NAVIGATION,
-                insets = windowInsets().withCutout())
-        then(expectedContainerPadding = CUTOUT_HEIGHT)
-
-        given(taskbarVisible = false,
-                navigationMode = BUTTONS_NAVIGATION,
-                insets = windowInsets().withCutout().withStableBottom())
-        then(expectedContainerPadding = 0,
-                expectedNotificationsMargin = STABLE_INSET_BOTTOM + NOTIFICATIONS_MARGIN)
-    }
-
-    @Test
-    fun testTaskbarNotVisibleInSplitShadeWithCutout_newFooter() {
-        enableSplitShade()
-        useNewFooter(true)
 
         given(taskbarVisible = false,
                 navigationMode = GESTURES_NAVIGATION,
@@ -226,23 +169,6 @@
     @Test
     fun testTaskbarVisibleInSinglePaneShade() {
         disableSplitShade()
-        useNewFooter(false)
-
-        given(taskbarVisible = true,
-                navigationMode = GESTURES_NAVIGATION,
-                insets = windowInsets().withStableBottom())
-        then(expectedContainerPadding = 0)
-
-        given(taskbarVisible = true,
-                navigationMode = BUTTONS_NAVIGATION,
-                insets = windowInsets().withStableBottom())
-        then(expectedContainerPadding = STABLE_INSET_BOTTOM)
-    }
-
-    @Test
-    fun testTaskbarVisibleInSinglePaneShade_newFooter() {
-        disableSplitShade()
-        useNewFooter(true)
 
         given(taskbarVisible = true,
                 navigationMode = GESTURES_NAVIGATION,
@@ -260,28 +186,6 @@
     @Test
     fun testTaskbarNotVisibleInSinglePaneShade() {
         disableSplitShade()
-        useNewFooter(false)
-
-        given(taskbarVisible = false,
-                navigationMode = GESTURES_NAVIGATION,
-                insets = emptyInsets())
-        then(expectedContainerPadding = 0)
-
-        given(taskbarVisible = false,
-                navigationMode = GESTURES_NAVIGATION,
-                insets = windowInsets().withCutout().withStableBottom())
-        then(expectedContainerPadding = CUTOUT_HEIGHT)
-
-        given(taskbarVisible = false,
-                navigationMode = BUTTONS_NAVIGATION,
-                insets = windowInsets().withStableBottom())
-        then(expectedContainerPadding = 0, expectedQsPadding = STABLE_INSET_BOTTOM)
-    }
-
-    @Test
-    fun testTaskbarNotVisibleInSinglePaneShade_newFooter() {
-        disableSplitShade()
-        useNewFooter(true)
 
         given(taskbarVisible = false,
                 navigationMode = GESTURES_NAVIGATION,
@@ -303,27 +207,6 @@
     fun testCustomizingInSinglePaneShade() {
         disableSplitShade()
         controller.setCustomizerShowing(true)
-        useNewFooter(false)
-
-        // always sets spacings to 0
-        given(taskbarVisible = false,
-                navigationMode = GESTURES_NAVIGATION,
-                insets = windowInsets().withStableBottom())
-        then(expectedContainerPadding = 0,
-                expectedNotificationsMargin = 0)
-
-        given(taskbarVisible = false,
-                navigationMode = BUTTONS_NAVIGATION,
-                insets = emptyInsets())
-        then(expectedContainerPadding = 0,
-                expectedNotificationsMargin = 0)
-    }
-
-    @Test
-    fun testCustomizingInSinglePaneShade_newFooter() {
-        disableSplitShade()
-        controller.setCustomizerShowing(true)
-        useNewFooter(true)
 
         // always sets spacings to 0
         given(taskbarVisible = false,
@@ -343,27 +226,6 @@
     fun testDetailShowingInSinglePaneShade() {
         disableSplitShade()
         controller.setDetailShowing(true)
-        useNewFooter(false)
-
-        // always sets spacings to 0
-        given(taskbarVisible = false,
-                navigationMode = GESTURES_NAVIGATION,
-                insets = windowInsets().withStableBottom())
-        then(expectedContainerPadding = 0,
-                expectedNotificationsMargin = 0)
-
-        given(taskbarVisible = false,
-                navigationMode = BUTTONS_NAVIGATION,
-                insets = emptyInsets())
-        then(expectedContainerPadding = 0,
-                expectedNotificationsMargin = 0)
-    }
-
-    @Test
-    fun testDetailShowingInSinglePaneShade_newFooter() {
-        disableSplitShade()
-        controller.setDetailShowing(true)
-        useNewFooter(true)
 
         // always sets spacings to 0
         given(taskbarVisible = false,
@@ -383,25 +245,6 @@
     fun testDetailShowingInSplitShade() {
         enableSplitShade()
         controller.setDetailShowing(true)
-        useNewFooter(false)
-
-        given(taskbarVisible = false,
-                navigationMode = GESTURES_NAVIGATION,
-                insets = windowInsets().withStableBottom())
-        then(expectedContainerPadding = 0)
-
-        // should not influence spacing
-        given(taskbarVisible = false,
-                navigationMode = BUTTONS_NAVIGATION,
-                insets = emptyInsets())
-        then(expectedContainerPadding = 0)
-    }
-
-    @Test
-    fun testDetailShowingInSplitShade_newFooter() {
-        enableSplitShade()
-        controller.setDetailShowing(true)
-        useNewFooter(true)
 
         given(taskbarVisible = false,
                 navigationMode = GESTURES_NAVIGATION,
@@ -531,7 +374,6 @@
     @Test
     fun testWindowInsetDebounce() {
         disableSplitShade()
-        useNewFooter(true)
 
         given(taskbarVisible = false,
             navigationMode = GESTURES_NAVIGATION,
@@ -596,13 +438,8 @@
         verify(notificationsQSContainer)
                 .setPadding(anyInt(), anyInt(), anyInt(), eq(expectedContainerPadding))
         verify(notificationsQSContainer).setNotificationsMarginBottom(expectedNotificationsMargin)
-        val newFooter = featureFlags.isEnabled(Flags.NEW_FOOTER)
-        if (newFooter) {
-            verify(notificationsQSContainer)
+        verify(notificationsQSContainer)
                     .setQSContainerPaddingBottom(expectedQsPadding)
-        } else {
-            verify(notificationsQSContainer).setQSScrollPaddingBottom(expectedQsPadding)
-        }
         Mockito.clearInvocations(notificationsQSContainer)
     }
 
@@ -620,10 +457,6 @@
         return this
     }
 
-    private fun useNewFooter(useNewFooter: Boolean) {
-        whenever(featureFlags.isEnabled(Flags.NEW_FOOTER)).thenReturn(useNewFooter)
-    }
-
     private fun getConstraintSetLayout(@IdRes id: Int): ConstraintSet.Layout {
         return constraintSetCaptor.value.getConstraint(id).layout
     }