Introduce StatusBarPhoneModule
This CL is the 2nd in the series of CLs which intend to "unbind" StatusBar on TV. In order to make StatusBar really optional and thus to allow us to unbind it, we also need to make some of the classes that depends on it optional as well. For all these cases we need to move from @Inject-annotated contructors to @Provides annotated methods. For this we are introducing StatusBarNotificationModule. Change-Id: Id56f970d21323f49e859715b6874f5cd773aa62a Test: make SystemUI; atest SystemUITests Bug: 146188087
This commit is contained in:
@@ -22,6 +22,7 @@ import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.os.PowerManager;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.view.IWindowManager;
|
||||
|
||||
import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
@@ -33,6 +34,7 @@ import com.android.systemui.bubbles.BubbleController;
|
||||
import com.android.systemui.car.CarServiceProvider;
|
||||
import com.android.systemui.car.SystemUIPrimaryWindowController;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.keyguard.DismissCallbackRegistry;
|
||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||
@@ -67,6 +69,7 @@ import com.android.systemui.statusbar.notification.VisualStabilityManager;
|
||||
import com.android.systemui.statusbar.notification.init.NotificationsController;
|
||||
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
|
||||
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
|
||||
import com.android.systemui.statusbar.notification.row.RowContentBindStage;
|
||||
import com.android.systemui.statusbar.phone.AutoHideController;
|
||||
import com.android.systemui.statusbar.phone.BiometricUnlockController;
|
||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||
@@ -79,6 +82,7 @@ import com.android.systemui.statusbar.phone.LightBarController;
|
||||
import com.android.systemui.statusbar.phone.LightsOutNotifController;
|
||||
import com.android.systemui.statusbar.phone.LockscreenLockIconController;
|
||||
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
|
||||
import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
|
||||
import com.android.systemui.statusbar.phone.NotificationGroupManager;
|
||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
||||
import com.android.systemui.statusbar.phone.ScrimController;
|
||||
@@ -281,4 +285,24 @@ public class CarStatusBarModule {
|
||||
carNavigationBarController,
|
||||
flingAnimationUtilsBuilder);
|
||||
}
|
||||
|
||||
|
||||
/** */
|
||||
@Singleton
|
||||
@Provides
|
||||
static AutoHideController newAutoHideController(Context context,
|
||||
@Main Handler handler,
|
||||
NotificationRemoteInputManager notificationRemoteInputManager,
|
||||
IWindowManager iWindowManager) {
|
||||
return new AutoHideController(context, handler, notificationRemoteInputManager,
|
||||
iWindowManager);
|
||||
}
|
||||
|
||||
/** */
|
||||
@Singleton
|
||||
@Provides
|
||||
static NotificationGroupAlertTransferHelper provideNotificationGroupAlertTransferHelper(
|
||||
RowContentBindStage bindStage) {
|
||||
return new NotificationGroupAlertTransferHelper(bindStage);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,6 @@ import android.os.HandlerThread;
|
||||
import android.os.ServiceManager;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.view.Choreographer;
|
||||
import android.view.IWindowManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.WindowManager;
|
||||
|
||||
@@ -46,8 +45,6 @@ import com.android.systemui.shared.system.ActivityManagerWrapper;
|
||||
import com.android.systemui.shared.system.DevicePolicyManagerWrapper;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.NavigationBarController;
|
||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||
import com.android.systemui.statusbar.phone.AutoHideController;
|
||||
import com.android.systemui.statusbar.phone.ConfigurationControllerImpl;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.DataSaverController;
|
||||
@@ -160,16 +157,6 @@ public class DependencyProvider {
|
||||
return new ConfigurationControllerImpl(context);
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
public AutoHideController provideAutoHideController(Context context,
|
||||
@Main Handler mainHandler,
|
||||
NotificationRemoteInputManager notificationRemoteInputManager,
|
||||
IWindowManager iWindowManager) {
|
||||
return new AutoHideController(context, mainHandler, notificationRemoteInputManager,
|
||||
iWindowManager);
|
||||
}
|
||||
|
||||
@Singleton
|
||||
@Provides
|
||||
public ActivityManagerWrapper provideActivityManagerWrapper() {
|
||||
|
||||
@@ -35,7 +35,7 @@ import com.android.systemui.stackdivider.Divider;
|
||||
import com.android.systemui.statusbar.notification.InstantAppNotifier;
|
||||
import com.android.systemui.statusbar.notification.dagger.NotificationsModule;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.phone.StatusBarModule;
|
||||
import com.android.systemui.statusbar.phone.dagger.StatusBarPhoneModule;
|
||||
import com.android.systemui.statusbar.tv.TvStatusBar;
|
||||
import com.android.systemui.theme.ThemeOverlayController;
|
||||
import com.android.systemui.toast.ToastUI;
|
||||
@@ -50,7 +50,7 @@ import dagger.multibindings.IntoMap;
|
||||
/**
|
||||
* SystemUI objects that are injectable should go here.
|
||||
*/
|
||||
@Module(includes = {RecentsModule.class, StatusBarModule.class, NotificationsModule.class})
|
||||
@Module(includes = {RecentsModule.class, StatusBarPhoneModule.class, NotificationsModule.class})
|
||||
public abstract class SystemUIBinder {
|
||||
/** Inject into AuthController. */
|
||||
@Binds
|
||||
@@ -143,7 +143,7 @@ public abstract class SystemUIBinder {
|
||||
@ClassKey(StatusBar.class)
|
||||
public abstract SystemUI bindsStatusBar(StatusBar sysui);
|
||||
|
||||
/** Inject into SystemActions. */
|
||||
/** Inject into SystemActions. */
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ClassKey(SystemActions.class)
|
||||
|
||||
@@ -25,8 +25,7 @@ import android.view.MotionEvent;
|
||||
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.statusbar.NotificationRemoteInputManager;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import com.android.systemui.statusbar.phone.dagger.StatusBarPhoneModule;
|
||||
|
||||
/** A controller to control all auto-hide things. */
|
||||
public class AutoHideController {
|
||||
@@ -51,7 +50,9 @@ public class AutoHideController {
|
||||
}
|
||||
};
|
||||
|
||||
@Inject
|
||||
/**
|
||||
* Injected constructor. See {@link StatusBarPhoneModule}.
|
||||
*/
|
||||
public AutoHideController(Context context, @Main Handler handler,
|
||||
NotificationRemoteInputManager notificationRemoteInputManager,
|
||||
IWindowManager iWindowManager) {
|
||||
|
||||
@@ -36,21 +36,18 @@ import com.android.systemui.statusbar.notification.row.RowContentBindParams;
|
||||
import com.android.systemui.statusbar.notification.row.RowContentBindStage;
|
||||
import com.android.systemui.statusbar.phone.NotificationGroupManager.NotificationGroup;
|
||||
import com.android.systemui.statusbar.phone.NotificationGroupManager.OnGroupChangeListener;
|
||||
import com.android.systemui.statusbar.phone.dagger.StatusBarPhoneModule;
|
||||
import com.android.systemui.statusbar.policy.HeadsUpManager;
|
||||
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
/**
|
||||
* A helper class dealing with the alert interactions between {@link NotificationGroupManager} and
|
||||
* {@link HeadsUpManager}. In particular, this class deals with keeping
|
||||
* the correct notification in a group alerting based off the group suppression.
|
||||
*/
|
||||
@Singleton
|
||||
public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedListener,
|
||||
StateListener {
|
||||
|
||||
@@ -76,7 +73,9 @@ public class NotificationGroupAlertTransferHelper implements OnHeadsUpChangedLis
|
||||
|
||||
private boolean mIsDozing;
|
||||
|
||||
@Inject
|
||||
/**
|
||||
* Injected constructor. See {@link StatusBarPhoneModule}.
|
||||
*/
|
||||
public NotificationGroupAlertTransferHelper(RowContentBindStage bindStage) {
|
||||
Dependency.get(StatusBarStateController.class).addCallback(this);
|
||||
mRowContentBindStage = bindStage;
|
||||
|
||||
@@ -199,6 +199,7 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
|
||||
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
|
||||
import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
|
||||
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
|
||||
import com.android.systemui.statusbar.phone.dagger.StatusBarPhoneModule;
|
||||
import com.android.systemui.statusbar.policy.BatteryController;
|
||||
import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback;
|
||||
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
|
||||
@@ -597,7 +598,7 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
* Public constructor for StatusBar.
|
||||
*
|
||||
* StatusBar is considered optional, and therefore can not be marked as @Inject directly.
|
||||
* Instead, an @Provide method is included.
|
||||
* Instead, an @Provide method is included. See {@link StatusBarPhoneModule}.
|
||||
*/
|
||||
@SuppressWarnings("OptionalUsedAsFieldOrParameterType")
|
||||
public StatusBar(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.statusbar.phone;
|
||||
package com.android.systemui.statusbar.phone.dagger;
|
||||
|
||||
import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME;
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.os.PowerManager;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.view.IWindowManager;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
@@ -33,6 +34,7 @@ import com.android.systemui.assist.AssistManager;
|
||||
import com.android.systemui.broadcast.BroadcastDispatcher;
|
||||
import com.android.systemui.bubbles.BubbleController;
|
||||
import com.android.systemui.colorextraction.SysuiColorExtractor;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.dagger.qualifiers.UiBackground;
|
||||
import com.android.systemui.keyguard.DismissCallbackRegistry;
|
||||
import com.android.systemui.keyguard.KeyguardViewMediator;
|
||||
@@ -65,7 +67,29 @@ import com.android.systemui.statusbar.notification.VisualStabilityManager;
|
||||
import com.android.systemui.statusbar.notification.init.NotificationsController;
|
||||
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
|
||||
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
|
||||
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
|
||||
import com.android.systemui.statusbar.notification.row.RowContentBindStage;
|
||||
import com.android.systemui.statusbar.phone.AutoHideController;
|
||||
import com.android.systemui.statusbar.phone.BiometricUnlockController;
|
||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||
import com.android.systemui.statusbar.phone.DozeScrimController;
|
||||
import com.android.systemui.statusbar.phone.DozeServiceHost;
|
||||
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
|
||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||
import com.android.systemui.statusbar.phone.KeyguardDismissUtil;
|
||||
import com.android.systemui.statusbar.phone.KeyguardLiftController;
|
||||
import com.android.systemui.statusbar.phone.LightBarController;
|
||||
import com.android.systemui.statusbar.phone.LightsOutNotifController;
|
||||
import com.android.systemui.statusbar.phone.LockscreenLockIconController;
|
||||
import com.android.systemui.statusbar.phone.LockscreenWallpaper;
|
||||
import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
|
||||
import com.android.systemui.statusbar.phone.NotificationGroupManager;
|
||||
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
|
||||
import com.android.systemui.statusbar.phone.ScrimController;
|
||||
import com.android.systemui.statusbar.phone.ShadeController;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
||||
import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter;
|
||||
import com.android.systemui.statusbar.policy.BatteryController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
|
||||
@@ -92,7 +116,7 @@ import dagger.Provides;
|
||||
* Dagger Module providing {@link StatusBar}.
|
||||
*/
|
||||
@Module(includes = {StatusBarDependenciesModule.class})
|
||||
public class StatusBarModule {
|
||||
public interface StatusBarPhoneModule {
|
||||
/**
|
||||
* Provides our instance of StatusBar which is considered optional.
|
||||
*/
|
||||
@@ -250,4 +274,23 @@ public class StatusBarModule {
|
||||
userInfoControllerImpl,
|
||||
dismissCallbackRegistry);
|
||||
}
|
||||
|
||||
/** */
|
||||
@Singleton
|
||||
@Provides
|
||||
static AutoHideController newAutoHideController(Context context,
|
||||
@Main Handler handler,
|
||||
NotificationRemoteInputManager notificationRemoteInputManager,
|
||||
IWindowManager iWindowManager) {
|
||||
return new AutoHideController(context, handler, notificationRemoteInputManager,
|
||||
iWindowManager);
|
||||
}
|
||||
|
||||
/** */
|
||||
@Singleton
|
||||
@Provides
|
||||
static NotificationGroupAlertTransferHelper provideNotificationGroupAlertTransferHelper(
|
||||
RowContentBindStage bindStage) {
|
||||
return new NotificationGroupAlertTransferHelper(bindStage);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user