From fcd4e5e8e790d47a61742f47686e4fdd459dc54a Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Fri, 25 Mar 2022 13:15:55 -0400 Subject: Finish removing NEW_FOOTER flag Test: atest SystemUITests Test: manual Fixes: 220344583 Change-Id: I0b188bba6846a4dd935747893232bafa41be3a7d --- .../SystemUI/res-keyguard/layout/fgs_footer.xml | 7 +- .../res-keyguard/layout/footer_actions.xml | 111 +++++++------ .../res-keyguard/layout/new_footer_actions.xml | 97 ----------- packages/SystemUI/res/drawable/fgs_dot.xml | 23 +++ packages/SystemUI/res/drawable/new_fgs_dot.xml | 23 --- .../drawable/qs_footer_action_chip_background.xml | 42 ----- ...qs_footer_action_chip_background_borderless.xml | 35 ---- .../res/drawable/qs_footer_action_circle.xml | 2 +- .../res/drawable/qs_footer_action_circle_color.xml | 2 +- packages/SystemUI/res/layout/qs_footer_impl.xml | 15 -- packages/SystemUI/res/layout/qs_panel.xml | 9 +- .../res/layout/quick_settings_security_footer.xml | 19 +-- .../quick_status_bar_header_date_privacy.xml | 12 -- packages/SystemUI/res/values/attrs.xml | 6 - packages/SystemUI/res/values/dimens.xml | 13 +- .../src/com/android/systemui/flags/Flags.java | 4 + .../android/systemui/qs/FooterActionsController.kt | 78 ++++----- .../src/com/android/systemui/qs/QSAnimator.java | 13 +- .../com/android/systemui/qs/QSContainerImpl.java | 8 +- .../systemui/qs/QSContainerImplController.java | 11 +- .../src/com/android/systemui/qs/QSFragment.java | 1 - .../src/com/android/systemui/qs/QSPanel.java | 62 ------- .../com/android/systemui/qs/QSPanelController.java | 37 +---- .../android/systemui/qs/QuickStatusBarHeader.java | 11 -- .../systemui/qs/dagger/QSFragmentModule.java | 22 +-- .../phone/NotificationsQSContainerController.kt | 15 +- .../phone/NotificationsQuickSettingsContainer.java | 10 -- .../util/DualHeightHorizontalLinearLayout.kt | 183 --------------------- .../systemui/qs/FooterActionsControllerTest.kt | 109 +++++++++++- .../com/android/systemui/qs/QSContainerImplTest.kt | 12 +- .../android/systemui/qs/QSPanelControllerTest.kt | 7 - .../src/com/android/systemui/qs/QSPanelTest.kt | 51 ------ .../com/android/systemui/qs/QuickQSPanelTest.kt | 4 - .../phone/NotificationQSContainerControllerTest.kt | 169 +------------------ 34 files changed, 265 insertions(+), 958 deletions(-) delete mode 100644 packages/SystemUI/res-keyguard/layout/new_footer_actions.xml create mode 100644 packages/SystemUI/res/drawable/fgs_dot.xml delete mode 100644 packages/SystemUI/res/drawable/new_fgs_dot.xml delete mode 100644 packages/SystemUI/res/drawable/qs_footer_action_chip_background.xml delete mode 100644 packages/SystemUI/res/drawable/qs_footer_action_chip_background_borderless.xml delete mode 100644 packages/SystemUI/src/com/android/systemui/util/DualHeightHorizontalLinearLayout.kt (limited to 'packages') diff --git a/packages/SystemUI/res-keyguard/layout/fgs_footer.xml b/packages/SystemUI/res-keyguard/layout/fgs_footer.xml index 9d801d2a0ecf..9ffafbc8cc09 100644 --- a/packages/SystemUI/res-keyguard/layout/fgs_footer.xml +++ b/packages/SystemUI/res-keyguard/layout/fgs_footer.xml @@ -16,8 +16,9 @@ --> @@ -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" /> diff --git a/packages/SystemUI/res-keyguard/layout/footer_actions.xml b/packages/SystemUI/res-keyguard/layout/footer_actions.xml index fb401ee1d918..6a1d62d5c611 100644 --- a/packages/SystemUI/res-keyguard/layout/footer_actions.xml +++ b/packages/SystemUI/res-keyguard/layout/footer_actions.xml @@ -1,6 +1,6 @@ - + /> - - + + - + - + + - + android:background="@drawable/qs_footer_action_circle" + android:clipChildren="false" + android:clipToPadding="false"> + + - + + + + \ 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 59712c088f7a..000000000000 --- a/packages/SystemUI/res-keyguard/layout/new_footer_actions.xml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/SystemUI/res/drawable/fgs_dot.xml b/packages/SystemUI/res/drawable/fgs_dot.xml new file mode 100644 index 000000000000..3669e1d3c374 --- /dev/null +++ b/packages/SystemUI/res/drawable/fgs_dot.xml @@ -0,0 +1,23 @@ + + + + + \ No newline at end of file diff --git a/packages/SystemUI/res/drawable/new_fgs_dot.xml b/packages/SystemUI/res/drawable/new_fgs_dot.xml deleted file mode 100644 index 3669e1d3c374..000000000000 --- a/packages/SystemUI/res/drawable/new_fgs_dot.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - \ No newline at end of file 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 9076da795e71..000000000000 --- a/packages/SystemUI/res/drawable/qs_footer_action_chip_background.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - \ 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 bbcfb15d9226..000000000000 --- a/packages/SystemUI/res/drawable/qs_footer_action_chip_background_borderless.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - \ 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 31a8c3bc2397..c8c36b0081c0 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. --> + android:inset="@dimen/qs_footer_action_inset"> 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 021a85f6a244..6a365000a21c 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. --> + android:inset="@dimen/qs_footer_action_inset"> diff --git a/packages/SystemUI/res/layout/qs_footer_impl.xml b/packages/SystemUI/res/layout/qs_footer_impl.xml index b6e34998a7cd..b1d3ed05333b 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"> - - - - - - diff --git a/packages/SystemUI/res/layout/qs_panel.xml b/packages/SystemUI/res/layout/qs_panel.xml index 20400510a31a..1eb05bfd602d 100644 --- a/packages/SystemUI/res/layout/qs_panel.xml +++ b/packages/SystemUI/res/layout/qs_panel.xml @@ -47,11 +47,10 @@ - diff --git a/packages/SystemUI/res/layout/quick_settings_security_footer.xml b/packages/SystemUI/res/layout/quick_settings_security_footer.xml index 08bd71c12eb1..1b11816465ac 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. --> - @@ -58,4 +57,4 @@ android:autoMirrored="true" android:tint="?android:attr/textColorSecondary" /> - + 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 b1e8c386fe21..60bc3732cde0 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 @@ - - - - - - - - - diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 851c6ddc2f86..767225106f0d 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -327,23 +327,20 @@ car setting. --> 54dp - + 48dp - 60dp + 60dp 48dp 20dp - - 2dp - 4dp - -4dp + 4dp + -4dp 2dp @@ -495,7 +492,7 @@ 16dp 6dp 4dp - @dimen/new_footer_height + @dimen/footer_actions_height 48dp 14sp diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.java b/packages/SystemUI/src/com/android/systemui/flags/Flags.java index 9356b16806f1..c9a61a8a09df 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 class Flags { 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 44ef2b658fe2..3f394e7b5309 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 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.internal.logging.nano.MetricsProto 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.phone.SettingsButton 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 @@ internal class FooterActionsController @Inject constructor( 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(view) { private var globalActionsDialog: GlobalActionsDialogLite? = null @@ -100,7 +95,9 @@ internal class FooterActionsController @Inject constructor( 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 @@ internal class FooterActionsController @Inject constructor( } 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 @@ internal class FooterActionsController @Inject constructor( } 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 4640205c82f5..56298fa155fa 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 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha 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 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha 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 class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha 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 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha mQsPanelController = qsPanelController; mQuickQSPanelController = quickQSPanelController; mQuickStatusBarHeader = quickStatusBarHeader; - mFgsManagerFooter = fgsManagerFooter; - mSecurityFooter = securityFooter; mHost = qsTileHost; mExecutor = executor; mTunerService = tunerService; @@ -472,10 +467,8 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha .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 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha 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 519ed5ceeab4..66584414e291 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 @@ public class QSContainerImpl extends FrameLayout implements Dumpable { } 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 61da18224023..7d61991c910a 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 @@ package com.android.systemui.qs; 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 @@ public class QSContainerImplController extends ViewController { 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 @@ public class QSContainerImplController extends ViewController { @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 795a606fe7e8..4fa05c833f53 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 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca } }); 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 8c4dedc577d1..9fbdd3c873e2 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 @@ public class QSPanel extends LinearLayout implements Tunable { @Nullable protected BrightnessSliderController mToggleSliderController; - private final H mHandler = new H(); /** Whether or not the QS media player feature is enabled. */ protected boolean mUsingMediaPlayer; @@ -86,16 +85,9 @@ public class QSPanel extends LinearLayout implements Tunable { private final List mOnConfigurationChangedListeners = 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; @@ -112,7 +104,6 @@ public class QSPanel extends LinearLayout implements Tunable { private float mSquishinessFraction = 1f; private final ArrayMap mChildrenLayoutTop = new ArrayMap<>(); private final Rect mClippingRect = new Rect(); - private boolean mUseNewFooter = false; private ViewGroup mMediaHostView; private boolean mShouldMoveMediaOnExpansion = true; @@ -156,10 +147,6 @@ public class QSPanel extends LinearLayout implements Tunable { } } - void setUseNewFooter(boolean useNewFooter) { - mUseNewFooter = useNewFooter; - } - protected void setHorizontalContentContainerClipping() { mHorizontalContentContainer.setClipChildren(true); mHorizontalContentContainer.setClipToPadding(false); @@ -444,27 +431,6 @@ public class QSPanel extends LinearLayout implements Tunable { } } - /** 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 @@ public class QSPanel extends LinearLayout implements Tunable { } } - /** - * 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 b46f9c374253..5670836566ab 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.media.dagger.MediaModule.QS_PANEL; 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 @@ import javax.inject.Named; @QSScope public class QSPanelController extends QSPanelControllerBase { - 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 @@ public class QSPanelController extends QSPanelControllerBase { 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 @@ public class QSPanelController extends QSPanelControllerBase { @Override public void onConfigurationChange(Configuration newConfig) { mView.updateResources(); - mQsSecurityFooter.onConfigurationChanged(); if (mView.isListening()) { refreshAllTiles(); } - mView.switchSecurityFooter(mShouldUseSplitNotificationShade); } }; @@ -94,8 +85,7 @@ public class QSPanelController extends QSPanelControllerBase { }; @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 @@ public class QSPanelController extends QSPanelControllerBase { 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 @@ public class QSPanelController extends QSPanelControllerBase { mBrightnessController = brightnessControllerFactory.create(mBrightnessSliderController); mBrightnessMirrorHandler = new BrightnessMirrorHandler(mBrightnessController); - mFeatureFlags = featureFlags; mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; - view.setUseNewFooter(featureFlags.isEnabled(Flags.NEW_FOOTER)); } @Override @@ -132,7 +118,6 @@ public class QSPanelController extends QSPanelControllerBase { mMediaHost.init(MediaHierarchyManager.LOCATION_QS); mQsCustomizerController.init(); mBrightnessSliderController.init(); - mQSFgsManagerFooter.init(); } @Override @@ -147,10 +132,6 @@ public class QSPanelController extends QSPanelControllerBase { 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 @@ public class QSPanelController extends QSPanelControllerBase { 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 @@ public class QSPanelController extends QSPanelControllerBase { 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 class QSPanelController extends QSPanelControllerBase { 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 c5ca285aa312..264edb1ec9e4 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 @@ public class QuickStatusBarHeader extends FrameLayout { 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 @@ public class QuickStatusBarHeader extends FrameLayout { 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 @@ public class QuickStatusBarHeader extends FrameLayout { 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 @@ public class QuickStatusBarHeader extends FrameLayout { super.onConfigurationChanged(newConfig); updateResources(); setDatePrivacyContainersWidth(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE); - setSecurityHeaderContainerVisibility( - newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE); } @Override @@ -229,10 +223,6 @@ public class QuickStatusBarHeader extends FrameLayout { 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 @@ public class QuickStatusBarHeader extends FrameLayout { 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 2780b163e5ca..aa505fb0b6bd 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 static com.android.systemui.util.Utils.useQsMediaPlayer; 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 @@ public interface QSFragmentModule { * 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 @@ public interface QSFragmentModule { @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 @@ public interface QSFragmentModule { @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 745228e72596..491e9fde5c9c 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 @@ class NotificationsQSContainerController @Inject constructor( 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 @@ class NotificationsQSContainerController @Inject constructor( } 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 { 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 7caea06e6359..2446cf7ba412 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 @@ public class NotificationsQuickSettingsContainer extends ConstraintLayout 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 cfceefa2006c..000000000000 --- 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(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 7b17c36aaf16..35d0024b3bf1 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.TestableLooper 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.After 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 @@ class FooterActionsControllerTest : LeakCheckedTest() { @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 private lateinit var controller: FooterActionsController @@ -78,6 +83,8 @@ class FooterActionsControllerTest : LeakCheckedTest() { 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 @@ class FooterActionsControllerTest : LeakCheckedTest() { 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) @@ -106,6 +118,13 @@ class FooterActionsControllerTest : LeakCheckedTest() { } } + @Test + fun testInitializesControllers() { + verify(multiUserSwitchController).init() + verify(fgsManagerController).init() + verify(securityFooterController).init() + } + @Test fun testLogPowerMenuClick() { controller.visible = true @@ -182,6 +201,10 @@ class FooterActionsControllerTest : LeakCheckedTest() { @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 @@ class FooterActionsControllerTest : LeakCheckedTest() { 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 @@ class FooterActionsControllerTest : LeakCheckedTest() { 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 bf82e90e88f6..489c8c86028e 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 @@ class QSContainerImplTest : SysuiTestCase() { 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 58a070db9a95..689de50d5b4a 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.MetricsLogger 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 @@ import org.mockito.Mockito.`when` as whenever 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 @@ class QSPanelControllerTest : SysuiTestCase() { @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 @@ class QSPanelControllerTest : SysuiTestCase() { controller = QSPanelController( qsPanel, - qsFgsManagerFooter, - qsSecurityFooter, tunerService, qsTileHost, qsCustomizerController, @@ -84,7 +78,6 @@ class QSPanelControllerTest : SysuiTestCase() { 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 ba02a828d337..e237a5ce03fe 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 @@ class QSPanelTest : SysuiTestCase() { 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) @@ -68,49 +63,6 @@ class QSPanelTest : SysuiTestCase() { } } - @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) @@ -128,7 +80,4 @@ class QSPanelTest : SysuiTestCase() { 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 60c2bde947a6..a6a584d2e622 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 @@ package com.android.systemui.qs 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 @@ class QuickQSPanelTest : SysuiTestCase() { 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 05a21db310fc..e2fabbd1c270 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 androidx.test.filters.SmallTest 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 @@ class NotificationQSContainerControllerTest : SysuiTestCase() { @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 @@ class NotificationQSContainerControllerTest : SysuiTestCase() { 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 @@ class NotificationQSContainerControllerTest : SysuiTestCase() { @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 @@ class NotificationQSContainerControllerTest : SysuiTestCase() { @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 @@ class NotificationQSContainerControllerTest : SysuiTestCase() { @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 @@ class NotificationQSContainerControllerTest : SysuiTestCase() { 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 @@ class NotificationQSContainerControllerTest : SysuiTestCase() { 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 @@ class NotificationQSContainerControllerTest : SysuiTestCase() { 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 @@ class NotificationQSContainerControllerTest : SysuiTestCase() { @Test fun testWindowInsetDebounce() { disableSplitShade() - useNewFooter(true) given(taskbarVisible = false, navigationMode = GESTURES_NAVIGATION, @@ -596,13 +438,8 @@ class NotificationQSContainerControllerTest : SysuiTestCase() { 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 @@ class NotificationQSContainerControllerTest : SysuiTestCase() { 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 } -- cgit v1.2.3-59-g8ed1b