From a12859ac8d2176676fa5306cfefabb2c6c4de2a1 Mon Sep 17 00:00:00 2001 From: Caitlin Cassidy Date: Fri, 10 Dec 2021 16:27:06 +0000 Subject: [PATCH] [Status Bar Refactor] Move PhoneStatusBarTransitions to the dagger component and out of an unrelated notification class. Bug: 209005990 Test: atest SystemUITests Test: manual Change-Id: Ie36cd31a521ce0dbc26f29a3305ac4f515e2784a --- .../statusbar/core/StatusBarInitializer.kt | 15 +++++++------- ...NotificationShadeWindowViewController.java | 10 ---------- .../systemui/statusbar/phone/StatusBar.java | 20 ++++++++----------- .../statusbar/phone/StatusBarDemoMode.java | 16 ++++----------- .../dagger/StatusBarFragmentComponent.java | 8 ++++++++ .../dagger/StatusBarFragmentModule.java | 12 +++++++++++ 6 files changed, 40 insertions(+), 41 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializer.kt b/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializer.kt index 55d549ddf60be..d65fa3acfa37c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializer.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializer.kt @@ -18,6 +18,7 @@ package com.android.systemui.statusbar.core import android.app.Fragment import com.android.systemui.R import com.android.systemui.fragments.FragmentHostManager +import com.android.systemui.statusbar.phone.PhoneStatusBarTransitions import com.android.systemui.statusbar.phone.PhoneStatusBarView import com.android.systemui.statusbar.phone.PhoneStatusBarViewController import com.android.systemui.statusbar.phone.dagger.StatusBarComponent @@ -50,12 +51,11 @@ class StatusBarInitializer @Inject constructor( override fun onFragmentViewCreated(tag: String, fragment: Fragment) { val statusBarFragmentComponent = (fragment as CollapsedStatusBarFragment) .statusBarFragmentComponent ?: throw IllegalStateException() - val statusBarView = statusBarFragmentComponent.phoneStatusBarView - val sbViewController = - statusBarFragmentComponent.phoneStatusBarViewController - - statusBarViewUpdatedListener - ?.onStatusBarViewUpdated(statusBarView, sbViewController) + statusBarViewUpdatedListener?.onStatusBarViewUpdated( + statusBarFragmentComponent.phoneStatusBarView, + statusBarFragmentComponent.phoneStatusBarViewController, + statusBarFragmentComponent.phoneStatusBarTransitions + ) } override fun onFragmentViewDestroyed(tag: String?, fragment: Fragment?) { @@ -72,7 +72,8 @@ class StatusBarInitializer @Inject constructor( interface OnStatusBarViewUpdatedListener { fun onStatusBarViewUpdated( statusBarView: PhoneStatusBarView, - statusBarViewController: PhoneStatusBarViewController + statusBarViewController: PhoneStatusBarViewController, + statusBarTransitions: PhoneStatusBarTransitions ) } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java index 55f14500f8fc8..81d4bbf1e3c85 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java @@ -98,7 +98,6 @@ public class NotificationShadeWindowViewController { private boolean mExpandAnimationRunning; private NotificationStackScrollLayout mStackScrollLayout; private PhoneStatusBarView mStatusBarView; - private PhoneStatusBarTransitions mBarTransitions; private StatusBar mService; private NotificationShadeWindowController mNotificationShadeWindowController; private DragDownHelper mDragDownHelper; @@ -497,17 +496,8 @@ public class NotificationShadeWindowViewController { } } - public PhoneStatusBarTransitions getBarTransitions() { - return mBarTransitions; - } - public void setStatusBarView(PhoneStatusBarView statusBarView) { mStatusBarView = statusBarView; - if (statusBarView != null) { - mBarTransitions = new PhoneStatusBarTransitions( - statusBarView, - mStatusBarWindowController.getBackgroundView()); - } } public void setService(StatusBar statusBar, NotificationShadeWindowController controller) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 331299628f614..1ca297abb414e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -458,6 +458,7 @@ public class StatusBar extends CoreStartable implements protected NotificationShadeWindowView mNotificationShadeWindowView; protected PhoneStatusBarView mStatusBarView; private PhoneStatusBarViewController mPhoneStatusBarViewController; + private PhoneStatusBarTransitions mStatusBarTransitions; private AuthRippleController mAuthRippleController; private int mStatusBarWindowState = WINDOW_STATE_SHOWING; protected NotificationShadeWindowController mNotificationShadeWindowController; @@ -1124,9 +1125,10 @@ public class StatusBar extends CoreStartable implements // Set up CollapsedStatusBarFragment and PhoneStatusBarView StatusBarInitializer initializer = mStatusBarComponent.getStatusBarInitializer(); initializer.setStatusBarViewUpdatedListener( - (statusBarView, statusBarViewController) -> { + (statusBarView, statusBarViewController, statusBarTransitions) -> { mStatusBarView = statusBarView; mPhoneStatusBarViewController = statusBarViewController; + mStatusBarTransitions = statusBarTransitions; mNotificationShadeWindowViewController.setStatusBarView(mStatusBarView); // Ensure we re-propagate panel expansion values to the panel controller and // any listeners it may have, such as PanelBar. This will also ensure we @@ -2185,14 +2187,10 @@ public class StatusBar extends CoreStartable implements }, false, sUiEventLogger).show(animationDelay); } - protected BarTransitions getStatusBarTransitions() { - return mNotificationShadeWindowViewController.getBarTransitions(); - } - public void checkBarModes() { if (mDemoModeController.isInDemoMode()) return; - if (mNotificationShadeWindowViewController != null && getStatusBarTransitions() != null) { - checkBarMode(mStatusBarMode, mStatusBarWindowState, getStatusBarTransitions()); + if (mStatusBarTransitions != null) { + checkBarMode(mStatusBarMode, mStatusBarWindowState, mStatusBarTransitions); } mNavigationBarController.checkNavBarModes(mDisplayId); mNoAnimationOnNextBarModeChange = false; @@ -2219,9 +2217,8 @@ public class StatusBar extends CoreStartable implements } private void finishBarAnimations() { - if (mNotificationShadeWindowController != null - && mNotificationShadeWindowViewController.getBarTransitions() != null) { - mNotificationShadeWindowViewController.getBarTransitions().finishAnimations(); + if (mStatusBarTransitions != null) { + mStatusBarTransitions.finishAnimations(); } mNavigationBarController.finishBarAnimations(mDisplayId); } @@ -2275,8 +2272,7 @@ public class StatusBar extends CoreStartable implements pw.println(" ShadeWindowView: "); if (mNotificationShadeWindowViewController != null) { mNotificationShadeWindowViewController.dump(fd, pw, args); - dumpBarTransitions(pw, "PhoneStatusBarTransitions", - mNotificationShadeWindowViewController.getBarTransitions()); + dumpBarTransitions(pw, "PhoneStatusBarTransitions", mStatusBarTransitions); } pw.println(" mMediaManager: "); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarDemoMode.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarDemoMode.java index 3c09b78740a36..29c13723ca892 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarDemoMode.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarDemoMode.java @@ -32,7 +32,6 @@ import com.android.systemui.demomode.DemoMode; import com.android.systemui.demomode.DemoModeCommandReceiver; import com.android.systemui.demomode.DemoModeController; import com.android.systemui.navigationbar.NavigationBarController; -import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentScope; import com.android.systemui.statusbar.policy.Clock; import com.android.systemui.util.ViewController; @@ -54,8 +53,7 @@ public class StatusBarDemoMode extends ViewController implements DemoMode private final Clock mClockView; private final View mOperatorNameView; private final DemoModeController mDemoModeController; - private final NotificationShadeWindowController mNotificationShadeWindowController; - private final NotificationShadeWindowViewController mNotificationShadeWindowViewController; + private final PhoneStatusBarTransitions mPhoneStatusBarTransitions; private final NavigationBarController mNavigationBarController; private final int mDisplayId; @@ -64,16 +62,14 @@ public class StatusBarDemoMode extends ViewController implements DemoMode Clock clockView, @Named(OPERATOR_NAME_VIEW) View operatorNameView, DemoModeController demoModeController, - NotificationShadeWindowController notificationShadeWindowController, - NotificationShadeWindowViewController notificationShadeWindowViewController, + PhoneStatusBarTransitions phoneStatusBarTransitions, NavigationBarController navigationBarController, @DisplayId int displayId) { super(clockView); mClockView = clockView; mOperatorNameView = operatorNameView; mDemoModeController = demoModeController; - mNotificationShadeWindowController = notificationShadeWindowController; - mNotificationShadeWindowViewController = notificationShadeWindowViewController; + mPhoneStatusBarTransitions = phoneStatusBarTransitions; mNavigationBarController = navigationBarController; mDisplayId = displayId; } @@ -128,11 +124,7 @@ public class StatusBarDemoMode extends ViewController implements DemoMode -1; if (barMode != -1) { boolean animate = true; - if (mNotificationShadeWindowController != null - && mNotificationShadeWindowViewController.getBarTransitions() != null) { - mNotificationShadeWindowViewController.getBarTransitions().transitionTo( - barMode, animate); - } + mPhoneStatusBarTransitions.transitionTo(barMode, animate); mNavigationBarController.transitionTo(mDisplayId, barMode, animate); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/StatusBarFragmentComponent.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/StatusBarFragmentComponent.java index a4ebab9b763c0..22b7f649775e3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/StatusBarFragmentComponent.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/StatusBarFragmentComponent.java @@ -20,6 +20,7 @@ import com.android.systemui.battery.BatteryMeterViewController; import com.android.systemui.dagger.qualifiers.RootView; import com.android.systemui.statusbar.phone.HeadsUpAppearanceController; import com.android.systemui.statusbar.phone.LightsOutNotifController; +import com.android.systemui.statusbar.phone.PhoneStatusBarTransitions; import com.android.systemui.statusbar.phone.PhoneStatusBarView; import com.android.systemui.statusbar.phone.PhoneStatusBarViewController; import com.android.systemui.statusbar.phone.StatusBarDemoMode; @@ -36,6 +37,9 @@ import dagger.Subcomponent; * controllers need access to that view, so those controllers will be re-created whenever the * fragment is recreated. * + * Anything that depends on {@link CollapsedStatusBarFragment} or {@link PhoneStatusBarView} + * should be included here or in {@link StatusBarFragmentModule}. + * * Note that this is completely separate from * {@link com.android.systemui.statusbar.phone.dagger.StatusBarComponent}. This component gets * re-created on each new fragment creation, whereas @@ -90,4 +94,8 @@ public interface StatusBarFragmentComponent { /** */ @StatusBarFragmentScope StatusBarDemoMode getStatusBarDemoMode(); + + /** */ + @StatusBarFragmentScope + PhoneStatusBarTransitions getPhoneStatusBarTransitions(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/StatusBarFragmentModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/StatusBarFragmentModule.java index 0cbd401916b70..dea1b43f579f1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/StatusBarFragmentModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/dagger/StatusBarFragmentModule.java @@ -22,10 +22,12 @@ import com.android.systemui.R; import com.android.systemui.battery.BatteryMeterView; import com.android.systemui.dagger.qualifiers.RootView; import com.android.systemui.statusbar.phone.NotificationPanelViewController; +import com.android.systemui.statusbar.phone.PhoneStatusBarTransitions; import com.android.systemui.statusbar.phone.PhoneStatusBarView; import com.android.systemui.statusbar.phone.PhoneStatusBarViewController; import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment; import com.android.systemui.statusbar.policy.Clock; +import com.android.systemui.statusbar.window.StatusBarWindowController; import javax.inject.Named; @@ -89,4 +91,14 @@ public interface StatusBarFragmentModule { phoneStatusBarView, notificationPanelViewController.getStatusBarTouchEventHandler()); } + + /** */ + @Provides + @StatusBarFragmentScope + static PhoneStatusBarTransitions providePhoneStatusBarTransitions( + @RootView PhoneStatusBarView view, + StatusBarWindowController statusBarWindowController + ) { + return new PhoneStatusBarTransitions(view, statusBarWindowController.getBackgroundView()); + } }