diff options
8 files changed, 32 insertions, 31 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt b/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt index 20d690e209af..de84cc22e0e1 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt @@ -31,13 +31,13 @@ import com.android.systemui.dagger.qualifiers.PerUser import com.android.systemui.dreams.AssistantAttentionMonitor import com.android.systemui.dreams.DreamMonitor import com.android.systemui.globalactions.GlobalActionsComponent -import com.android.systemui.keyboard.PhysicalKeyboardCoreStartable import com.android.systemui.keyboard.KeyboardUI +import com.android.systemui.keyboard.PhysicalKeyboardCoreStartable import com.android.systemui.keyguard.KeyguardViewMediator import com.android.systemui.keyguard.data.quickaffordance.MuteQuickAffordanceCoreStartable import com.android.systemui.log.SessionTracker -import com.android.systemui.media.dialog.MediaOutputSwitcherDialogUI import com.android.systemui.media.RingtonePlayer +import com.android.systemui.media.dialog.MediaOutputSwitcherDialogUI import com.android.systemui.media.taptotransfer.MediaTttCommandLineHelper import com.android.systemui.media.taptotransfer.receiver.MediaTttChipControllerReceiver import com.android.systemui.media.taptotransfer.sender.MediaTttSenderCoordinator @@ -48,7 +48,6 @@ import com.android.systemui.settings.dagger.MultiUserUtilsModule import com.android.systemui.shortcut.ShortcutKeyDispatcher import com.android.systemui.statusbar.notification.InstantAppNotifier import com.android.systemui.statusbar.phone.KeyguardLiftController -import com.android.systemui.statusbar.phone.LetterboxModule import com.android.systemui.stylus.StylusUsiPowerStartable import com.android.systemui.temporarydisplay.chipbar.ChipbarCoordinator import com.android.systemui.theme.ThemeOverlayController @@ -68,7 +67,6 @@ import dagger.multibindings.IntoMap @Module(includes = [ MultiUserUtilsModule::class, StartControlsStartableModule::class, - LetterboxModule::class, ]) abstract class SystemUICoreStartableModule { /** Inject into AuthController. */ diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java index 75f70ae8eb7a..0777bb0aa03c 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java @@ -93,6 +93,7 @@ import com.android.systemui.statusbar.notification.row.dagger.ExpandableNotifica import com.android.systemui.statusbar.notification.row.dagger.NotificationRowComponent; import com.android.systemui.statusbar.notification.row.dagger.NotificationShelfComponent; import com.android.systemui.statusbar.phone.CentralSurfaces; +import com.android.systemui.statusbar.phone.LetterboxModule; import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent; import com.android.systemui.statusbar.pipeline.dagger.StatusBarPipelineModule; import com.android.systemui.statusbar.policy.HeadsUpManager; @@ -160,6 +161,7 @@ import javax.inject.Named; FooterActionsModule.class, GarbageMonitorModule.class, KeyboardModule.class, + LetterboxModule.class, LogModule.class, MediaProjectionModule.class, MotionToolModule.class, 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 5351024c2f9f..2ad71e7d989d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializer.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/core/StatusBarInitializer.kt @@ -17,12 +17,11 @@ package com.android.systemui.statusbar.core import android.app.Fragment import com.android.systemui.R +import com.android.systemui.dagger.SysUISingleton 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.CentralSurfacesComponent -import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent.CentralSurfacesScope import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment import com.android.systemui.statusbar.phone.fragment.dagger.StatusBarFragmentComponent import com.android.systemui.statusbar.window.StatusBarWindowController @@ -33,7 +32,7 @@ import javax.inject.Inject * Responsible for creating the status bar window and initializing the root components of that * window (see [CollapsedStatusBarFragment]) */ -@CentralSurfacesScope +@SysUISingleton class StatusBarInitializer @Inject constructor( private val windowController: StatusBarWindowController, private val creationListeners: Set<@JvmSuppressWildcards OnStatusBarViewInitializedListener>, @@ -42,10 +41,12 @@ class StatusBarInitializer @Inject constructor( var statusBarViewUpdatedListener: OnStatusBarViewUpdatedListener? = null /** - * Creates the status bar window and root views, and initializes the component + * Creates the status bar window and root views, and initializes the component. + * + * TODO(b/277762009): Inject StatusBarFragmentCreator and make this class a CoreStartable. */ fun initializeStatusBar( - centralSurfacesComponent: CentralSurfacesComponent + statusBarFragmentCreator: () -> CollapsedStatusBarFragment, ) { windowController.fragmentHostManager.addTagListener( CollapsedStatusBarFragment.TAG, @@ -69,7 +70,7 @@ class StatusBarInitializer @Inject constructor( }).fragmentManager .beginTransaction() .replace(R.id.status_bar_container, - centralSurfacesComponent.createCollapsedStatusBarFragment(), + statusBarFragmentCreator.invoke(), CollapsedStatusBarFragment.TAG) .commit() } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java index 295374766bfd..fee91d431e7d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java @@ -192,10 +192,9 @@ import com.android.systemui.shade.ShadeController; import com.android.systemui.shade.ShadeExpansionChangeEvent; import com.android.systemui.shade.ShadeExpansionStateManager; import com.android.systemui.shade.ShadeLogger; -import com.android.systemui.shared.recents.utilities.Utilities; -import com.android.systemui.shade.ShadeLogger; import com.android.systemui.shade.ShadeSurface; import com.android.systemui.shade.ShadeViewController; +import com.android.systemui.shared.recents.utilities.Utilities; import com.android.systemui.statusbar.AutoHideUiElement; import com.android.systemui.statusbar.BackDropView; import com.android.systemui.statusbar.CircleReveal; @@ -456,6 +455,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { private AuthRippleController mAuthRippleController; @WindowVisibleState private int mStatusBarWindowState = WINDOW_STATE_SHOWING; protected final NotificationShadeWindowController mNotificationShadeWindowController; + private final StatusBarInitializer mStatusBarInitializer; private final StatusBarWindowController mStatusBarWindowController; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; @VisibleForTesting @@ -724,6 +724,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { FragmentService fragmentService, LightBarController lightBarController, AutoHideController autoHideController, + StatusBarInitializer statusBarInitializer, StatusBarWindowController statusBarWindowController, StatusBarWindowStateController statusBarWindowStateController, KeyguardUpdateMonitor keyguardUpdateMonitor, @@ -818,6 +819,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { mFragmentService = fragmentService; mLightBarController = lightBarController; mAutoHideController = autoHideController; + mStatusBarInitializer = statusBarInitializer; mStatusBarWindowController = statusBarWindowController; mKeyguardUpdateMonitor = keyguardUpdateMonitor; mPulseExpansionHandler = pulseExpansionHandler; @@ -1262,8 +1264,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { mPluginDependencyProvider.allowPluginDependency(StatusBarStateController.class); // Set up CollapsedStatusBarFragment and PhoneStatusBarView - StatusBarInitializer initializer = mCentralSurfacesComponent.getStatusBarInitializer(); - initializer.setStatusBarViewUpdatedListener( + mStatusBarInitializer.setStatusBarViewUpdatedListener( (statusBarView, statusBarViewController, statusBarTransitions) -> { mStatusBarView = statusBarView; mPhoneStatusBarViewController = statusBarViewController; @@ -1279,7 +1280,8 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { setBouncerShowingForStatusBarComponents(mBouncerShowing); checkBarModes(); }); - initializer.initializeStatusBar(mCentralSurfacesComponent); + mStatusBarInitializer.initializeStatusBar( + mCentralSurfacesComponent::createCollapsedStatusBarFragment); mStatusBarTouchableRegionManager.setup(this, mNotificationShadeWindowView); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LetterboxModule.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LetterboxModule.kt index 2e3f0d0abc0a..61377e20a9e1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LetterboxModule.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LetterboxModule.kt @@ -18,10 +18,12 @@ package com.android.systemui.statusbar.phone import com.android.systemui.CoreStartable +import com.android.systemui.statusbar.core.StatusBarInitializer import dagger.Binds import dagger.Module import dagger.multibindings.ClassKey import dagger.multibindings.IntoMap +import dagger.multibindings.IntoSet @Module abstract class LetterboxModule { @@ -29,4 +31,10 @@ abstract class LetterboxModule { @IntoMap @ClassKey(LetterboxBackgroundProvider::class) abstract fun bindFeature(impl: LetterboxBackgroundProvider): CoreStartable + + @Binds + @IntoSet + abstract fun statusBarInitializedListener( + letterboxAppearanceCalculator: LetterboxAppearanceCalculator + ): StatusBarInitializer.OnStatusBarViewInitializedListener } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesComponent.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesComponent.java index 8e59a8b62a05..d80e1d3c9f11 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesComponent.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesComponent.java @@ -29,7 +29,6 @@ import com.android.systemui.shade.QuickSettingsController; import com.android.systemui.shade.ShadeHeaderController; import com.android.systemui.statusbar.NotificationPresenter; import com.android.systemui.statusbar.NotificationShelfController; -import com.android.systemui.statusbar.core.StatusBarInitializer; import com.android.systemui.statusbar.notification.NotificationActivityStarter; import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl; import com.android.systemui.statusbar.notification.stack.NotificationListContainer; @@ -42,6 +41,8 @@ import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter import com.android.systemui.statusbar.phone.StatusBarNotificationPresenterModule; import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment; +import dagger.Subcomponent; + import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.util.Set; @@ -49,8 +50,6 @@ import java.util.Set; import javax.inject.Named; import javax.inject.Scope; -import dagger.Subcomponent; - /** * Dagger subcomponent for classes (semi-)related to the status bar. The component is created once * inside {@link CentralSurfacesImpl} and never re-created. @@ -150,11 +149,6 @@ public interface CentralSurfacesComponent { CollapsedStatusBarFragment createCollapsedStatusBarFragment(); /** - * Creates a StatusBarInitializer - */ - StatusBarInitializer getStatusBarInitializer(); - - /** * Set of startables to be run after a CentralSurfacesComponent has been constructed. */ Set<Startable> getStartables(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java index 015ee7b5682a..4cde511e8104 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarViewModule.java @@ -50,14 +50,12 @@ import com.android.systemui.statusbar.LegacyNotificationShelfControllerImpl; import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.NotificationShelfController; import com.android.systemui.statusbar.OperatorNameViewController; -import com.android.systemui.statusbar.core.StatusBarInitializer.OnStatusBarViewInitializedListener; import com.android.systemui.statusbar.events.SystemStatusAnimationScheduler; import com.android.systemui.statusbar.notification.row.dagger.NotificationShelfComponent; import com.android.systemui.statusbar.notification.row.ui.viewmodel.ActivatableNotificationViewModelModule; import com.android.systemui.statusbar.notification.shelf.ui.viewbinder.NotificationShelfViewBinderWrapperControllerImpl; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.phone.KeyguardBottomAreaView; -import com.android.systemui.statusbar.phone.LetterboxAppearanceCalculator; import com.android.systemui.statusbar.phone.NotificationIconAreaController; import com.android.systemui.statusbar.phone.StatusBarBoundsProvider; import com.android.systemui.statusbar.phone.StatusBarHideIconsForBouncerManager; @@ -276,12 +274,6 @@ public abstract class StatusBarViewModule { @Binds @IntoSet - abstract OnStatusBarViewInitializedListener statusBarInitializedListener( - LetterboxAppearanceCalculator letterboxAppearanceCalculator - ); - - @Binds - @IntoSet abstract StatusBarBoundsProvider.BoundsChangeListener sysBarAttrsListenerAsBoundsListener( SystemBarAttributesListener systemBarAttributesListener); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java index ff3cea53f4ad..219e6a995680 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java @@ -44,6 +44,8 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static java.util.Collections.emptySet; + import android.app.ActivityManager; import android.app.IWallpaperManager; import android.app.Notification; @@ -147,6 +149,7 @@ import com.android.systemui.statusbar.OperatorNameViewController; import com.android.systemui.statusbar.PulseExpansionHandler; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.StatusBarStateControllerImpl; +import com.android.systemui.statusbar.core.StatusBarInitializer; import com.android.systemui.statusbar.notification.DynamicPrivacyController; import com.android.systemui.statusbar.notification.NotifPipelineFlags; import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator; @@ -450,6 +453,7 @@ public class CentralSurfacesImplTest extends SysuiTestCase { mock(FragmentService.class), mLightBarController, mAutoHideController, + new StatusBarInitializer(mStatusBarWindowController, emptySet()), mStatusBarWindowController, mStatusBarWindowStateController, mKeyguardUpdateMonitor, |