[Central Surfaces] Make StatusBarInitializer a singleton.
Bug: 277762009 Test: compiles Test: status bar still works; LetterboxAppearanceCalculator still notified of status bar initialization Test: atest CentralSurfacesImplTest Change-Id: I041c844d06a3022ade7aa49969efc8cd64757d26 Merged-In: I041c844d06a3022ade7aa49969efc8cd64757d26
This commit is contained in:
@@ -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. */
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -191,10 +191,10 @@ import com.android.systemui.shade.QuickSettingsController;
|
||||
import com.android.systemui.shade.ShadeController;
|
||||
import com.android.systemui.shade.ShadeExpansionChangeEvent;
|
||||
import com.android.systemui.shade.ShadeExpansionStateManager;
|
||||
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;
|
||||
@@ -454,6 +454,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
|
||||
@@ -722,6 +723,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
|
||||
FragmentService fragmentService,
|
||||
LightBarController lightBarController,
|
||||
AutoHideController autoHideController,
|
||||
StatusBarInitializer statusBarInitializer,
|
||||
StatusBarWindowController statusBarWindowController,
|
||||
StatusBarWindowStateController statusBarWindowStateController,
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
||||
@@ -816,6 +818,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
|
||||
mFragmentService = fragmentService;
|
||||
mLightBarController = lightBarController;
|
||||
mAutoHideController = autoHideController;
|
||||
mStatusBarInitializer = statusBarInitializer;
|
||||
mStatusBarWindowController = statusBarWindowController;
|
||||
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
|
||||
mPulseExpansionHandler = pulseExpansionHandler;
|
||||
@@ -1260,8 +1263,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;
|
||||
@@ -1277,7 +1279,8 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
|
||||
setBouncerShowingForStatusBarComponents(mBouncerShowing);
|
||||
checkBarModes();
|
||||
});
|
||||
initializer.initializeStatusBar(mCentralSurfacesComponent);
|
||||
mStatusBarInitializer.initializeStatusBar(
|
||||
mCentralSurfacesComponent::createCollapsedStatusBarFragment);
|
||||
|
||||
mStatusBarTouchableRegionManager.setup(this, mNotificationShadeWindowView);
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
@@ -149,11 +148,6 @@ public interface CentralSurfacesComponent {
|
||||
@Named(STATUS_BAR_FRAGMENT)
|
||||
CollapsedStatusBarFragment createCollapsedStatusBarFragment();
|
||||
|
||||
/**
|
||||
* Creates a StatusBarInitializer
|
||||
*/
|
||||
StatusBarInitializer getStatusBarInitializer();
|
||||
|
||||
/**
|
||||
* Set of startables to be run after a CentralSurfacesComponent has been constructed.
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
@@ -274,12 +272,6 @@ public abstract class StatusBarViewModule {
|
||||
return notificationShadeWindowView.findViewById(R.id.notification_container_parent);
|
||||
}
|
||||
|
||||
@Binds
|
||||
@IntoSet
|
||||
abstract OnStatusBarViewInitializedListener statusBarInitializedListener(
|
||||
LetterboxAppearanceCalculator letterboxAppearanceCalculator
|
||||
);
|
||||
|
||||
@Binds
|
||||
@IntoSet
|
||||
abstract StatusBarBoundsProvider.BoundsChangeListener sysBarAttrsListenerAsBoundsListener(
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user