Introduce StatusBarModule

This CL is the 3rd 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 StatusBarModule, as well as StatusBarPhoneDependenciesModule and StatusBarDependenciesModule - these two provide dependecies needed to build StatusBar, but not the StatusBar itself

Change-Id: Ie3551bda7056465159f2c7fde4989e009f277304
Test: make SystemUI; atest SystemUITests
Bug: 146188087
This commit is contained in:
Sergey Nikolaienkov
2020-02-10 16:54:31 +01:00
parent 6f157bd670
commit 3d84cb4a45
12 changed files with 283 additions and 131 deletions

View File

@@ -22,7 +22,6 @@ 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;
@@ -34,7 +33,6 @@ 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;
@@ -56,10 +54,10 @@ import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.NotificationViewHierarchyManager;
import com.android.systemui.statusbar.PulseExpansionHandler;
import com.android.systemui.statusbar.StatusBarDependenciesModule;
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.VibratorHelper;
import com.android.systemui.statusbar.dagger.StatusBarDependenciesModule;
import com.android.systemui.statusbar.notification.BypassHeadsUpNotifier;
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
import com.android.systemui.statusbar.notification.NotificationAlertingManager;
@@ -69,7 +67,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.notification.row.NotificationRowModule;
import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.BiometricUnlockController;
import com.android.systemui.statusbar.phone.DozeParameters;
@@ -82,7 +80,6 @@ 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;
@@ -91,6 +88,7 @@ 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.phone.dagger.StatusBarComponent;
import com.android.systemui.statusbar.phone.dagger.StatusBarPhoneDependenciesModule;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
@@ -116,7 +114,8 @@ import dagger.Provides;
/**
* Dagger Module providing {@link CarStatusBar}.
*/
@Module(includes = {StatusBarDependenciesModule.class})
@Module(includes = {StatusBarDependenciesModule.class, StatusBarPhoneDependenciesModule.class,
NotificationRowModule.class})
public class CarStatusBarModule {
/**
* Provides our instance of StatusBar which is considered optional.
@@ -285,24 +284,4 @@ 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);
}
}

View File

@@ -32,10 +32,9 @@ import com.android.systemui.recents.Recents;
import com.android.systemui.recents.RecentsModule;
import com.android.systemui.shortcut.ShortcutKeyDispatcher;
import com.android.systemui.stackdivider.Divider;
import com.android.systemui.statusbar.dagger.StatusBarModule;
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.dagger.StatusBarPhoneModule;
import com.android.systemui.statusbar.tv.TvStatusBar;
import com.android.systemui.theme.ThemeOverlayController;
import com.android.systemui.toast.ToastUI;
@@ -50,7 +49,7 @@ import dagger.multibindings.IntoMap;
/**
* SystemUI objects that are injectable should go here.
*/
@Module(includes = {RecentsModule.class, StatusBarPhoneModule.class, NotificationsModule.class})
@Module(includes = {RecentsModule.class, StatusBarModule.class})
public abstract class SystemUIBinder {
/** Inject into AuthController. */
@Binds

View File

@@ -31,20 +31,17 @@ import android.service.notification.StatusBarNotification;
import android.util.Log;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.statusbar.dagger.StatusBarModule;
import com.android.systemui.statusbar.phone.NotificationListenerWithPlugins;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* This class handles listening to notification updates and passing them along to
* NotificationPresenter to be displayed to the user.
*/
@SuppressLint("OverrideAbstract")
@Singleton
public class NotificationListener extends NotificationListenerWithPlugins {
private static final String TAG = "NotificationListener";
@@ -54,7 +51,9 @@ public class NotificationListener extends NotificationListenerWithPlugins {
private final List<NotificationHandler> mNotificationHandlers = new ArrayList<>();
private final ArrayList<NotificationSettingsListener> mSettingsListeners = new ArrayList<>();
@Inject
/**
* Injected constructor. See {@link StatusBarModule}.
*/
public NotificationListener(
Context context,
NotificationManager notificationManager,

View File

@@ -53,6 +53,7 @@ import com.android.systemui.Dumpable;
import com.android.systemui.Interpolators;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.dagger.StatusBarModule;
import com.android.systemui.statusbar.notification.NotificationEntryListener;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -73,16 +74,12 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.inject.Inject;
import javax.inject.Singleton;
import dagger.Lazy;
/**
* Handles tasks and state related to media notifications. For example, there is a 'current' media
* notification, which this class keeps track of.
*/
@Singleton
public class NotificationMediaManager implements Dumpable {
private static final String TAG = "NotificationMediaManager";
public static final boolean DEBUG_MEDIA = false;
@@ -101,11 +98,10 @@ public class NotificationMediaManager implements Dumpable {
PAUSED_MEDIA_STATES.add(PlaybackState.STATE_ERROR);
}
private final NotificationEntryManager mEntryManager;
@Nullable
private Lazy<NotificationShadeWindowController> mStatusBarWindowController;
private Lazy<NotificationShadeWindowController> mNotificationShadeWindowController;
@Nullable
private BiometricUnlockController mBiometricUnlockController;
@@ -176,11 +172,13 @@ public class NotificationMediaManager implements Dumpable {
}
};
@Inject
/**
* Injected constructor. See {@link StatusBarModule}.
*/
public NotificationMediaManager(
Context context,
Lazy<StatusBar> statusBarLazy,
Lazy<NotificationShadeWindowController> statusBarWindowController,
Lazy<NotificationShadeWindowController> notificationShadeWindowController,
NotificationEntryManager notificationEntryManager,
MediaArtworkProcessor mediaArtworkProcessor,
KeyguardBypassController keyguardBypassController) {
@@ -194,7 +192,7 @@ public class NotificationMediaManager implements Dumpable {
Context.MEDIA_SESSION_SERVICE);
// TODO: use KeyguardStateController#isOccluded to remove this dependency
mStatusBarLazy = statusBarLazy;
mStatusBarWindowController = statusBarWindowController;
mNotificationShadeWindowController = notificationShadeWindowController;
mEntryManager = notificationEntryManager;
notificationEntryManager.addNotificationEntryListener(new NotificationEntryListener() {
@Override
@@ -525,7 +523,8 @@ public class NotificationMediaManager implements Dumpable {
}
}
NotificationShadeWindowController windowController = mStatusBarWindowController.get();
NotificationShadeWindowController windowController =
mNotificationShadeWindowController.get();
boolean hideBecauseOccluded = mStatusBarLazy.get().isOccluded();
final boolean hasArtwork = artworkDrawable != null;

View File

@@ -54,6 +54,7 @@ import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.dagger.StatusBarModule;
import com.android.systemui.statusbar.notification.NotificationEntryListener;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -70,9 +71,6 @@ import java.util.ArrayList;
import java.util.Objects;
import java.util.Set;
import javax.inject.Inject;
import javax.inject.Singleton;
import dagger.Lazy;
/**
@@ -81,7 +79,6 @@ import dagger.Lazy;
* interaction, keeping track of notifications to remove when NotificationPresenter is collapsed,
* and handling clicks on remote views.
*/
@Singleton
public class NotificationRemoteInputManager implements Dumpable {
public static final boolean ENABLE_REMOTE_INPUT =
SystemProperties.getBoolean("debug.enable_remote_input", true);
@@ -257,7 +254,9 @@ public class NotificationRemoteInputManager implements Dumpable {
}
};
@Inject
/**
* Injected constructor. See {@link StatusBarModule}.
*/
public NotificationRemoteInputManager(
Context context,
NotificationLockscreenUserManager lockscreenUserManager,

View File

@@ -29,6 +29,7 @@ import com.android.systemui.R;
import com.android.systemui.bubbles.BubbleController;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.dagger.StatusBarModule;
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.VisualStabilityManager;
@@ -46,9 +47,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Stack;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* NotificationViewHierarchyManager manages updating the view hierarchy of notification views based
* on their group structure. For example, if a notification becomes bundled with another,
@@ -56,7 +54,6 @@ import javax.inject.Singleton;
* tell NotificationListContainer which notifications to display, and inform it of changes to those
* notifications that might affect their display.
*/
@Singleton
public class NotificationViewHierarchyManager implements DynamicPrivacyController.Listener {
private static final String TAG = "NotificationViewHierarchyManager";
@@ -94,8 +91,12 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle
// the problem.
private boolean mIsHandleDynamicPrivacyChangeScheduled;
@Inject
public NotificationViewHierarchyManager(Context context, @Main Handler mainHandler,
/**
* Injected constructor. See {@link StatusBarModule}.
*/
public NotificationViewHierarchyManager(
Context context,
@Main Handler mainHandler,
NotificationLockscreenUserManager notificationLockscreenUserManager,
NotificationGroupManager groupManager,
VisualStabilityManager visualStabilityManager,
@@ -104,8 +105,7 @@ public class NotificationViewHierarchyManager implements DynamicPrivacyControlle
KeyguardBypassController bypassController,
BubbleController bubbleController,
DynamicPrivacyController privacyController,
ForegroundServiceSectionController fgsSectionController
) {
ForegroundServiceSectionController fgsSectionController) {
mContext = context;
mHandler = mainHandler;
mLockscreenUserManager = notificationLockscreenUserManager;

View File

@@ -21,27 +21,26 @@ import android.util.ArraySet;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.NotificationVisibility;
import com.android.systemui.statusbar.dagger.StatusBarModule;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
import java.util.Set;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
* Handles when smart replies are added to a notification
* and clicked upon.
*/
@Singleton
public class SmartReplyController {
private final IStatusBarService mBarService;
private final NotificationEntryManager mEntryManager;
private Set<String> mSendingKeys = new ArraySet<>();
private Callback mCallback;
@Inject
/**
* Injected constructor. See {@link StatusBarModule}.
*/
public SmartReplyController(NotificationEntryManager entryManager,
IStatusBarService statusBarService) {
mBarService = statusBarService;

View File

@@ -1,44 +0,0 @@
/*
* Copyright (C) 2019 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.statusbar;
import android.content.Context;
import com.android.systemui.statusbar.notification.row.NotificationRowModule;
import com.android.systemui.recents.OverviewProxyService;
import com.android.systemui.tracing.ProtoTracer;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
/**
* Dagger Module providing common dependencies of StatusBar.
*/
@Module(includes = {NotificationRowModule.class})
public class StatusBarDependenciesModule {
/**
* Provides our instance of CommandQueue which is considered optional.
*/
@Provides
@Singleton
public CommandQueue provideCommandQueue(Context context, ProtoTracer protoTracer) {
return new CommandQueue(context, protoTracer);
}
}

View File

@@ -0,0 +1,157 @@
/*
* 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.
* 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.statusbar.dagger;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Handler;
import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.bubbles.BubbleController;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.MediaArtworkProcessor;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.NotificationViewHierarchyManager;
import com.android.systemui.statusbar.SmartReplyController;
import com.android.systemui.statusbar.notification.DynamicPrivacyController;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.VisualStabilityManager;
import com.android.systemui.statusbar.notification.stack.ForegroundServiceSectionController;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.policy.RemoteInputUriController;
import com.android.systemui.tracing.ProtoTracer;
import javax.inject.Singleton;
import dagger.Lazy;
import dagger.Module;
import dagger.Provides;
/**
* This module provides instances needed to construct {@link StatusBar}. These are moved to this
* separate from {@link StatusBarModule} module so that components that wish to build their own
* version of StatusBar can include just dependencies, without injecting StatusBar itself.
*/
@Module
public interface StatusBarDependenciesModule {
/** */
@Singleton
@Provides
static NotificationRemoteInputManager provideNotificationRemoteInputManager(
Context context,
NotificationLockscreenUserManager lockscreenUserManager,
SmartReplyController smartReplyController,
NotificationEntryManager notificationEntryManager,
Lazy<StatusBar> statusBarLazy,
StatusBarStateController statusBarStateController,
Handler mainHandler,
RemoteInputUriController remoteInputUriController) {
return new NotificationRemoteInputManager(
context,
lockscreenUserManager,
smartReplyController,
notificationEntryManager,
statusBarLazy,
statusBarStateController,
mainHandler,
remoteInputUriController);
}
/** */
@Singleton
@Provides
static NotificationMediaManager provideNotificationMediaManager(
Context context,
Lazy<StatusBar> statusBarLazy,
Lazy<NotificationShadeWindowController> notificationShadeWindowController,
NotificationEntryManager notificationEntryManager,
MediaArtworkProcessor mediaArtworkProcessor,
KeyguardBypassController keyguardBypassController) {
return new NotificationMediaManager(
context,
statusBarLazy,
notificationShadeWindowController,
notificationEntryManager,
mediaArtworkProcessor,
keyguardBypassController);
}
/** */
@Singleton
@Provides
static NotificationListener provideNotificationListener(
Context context,
NotificationManager notificationManager,
@Main Handler mainHandler) {
return new NotificationListener(
context, notificationManager, mainHandler);
}
/** */
@Singleton
@Provides
static SmartReplyController provideSmartReplyController(
NotificationEntryManager entryManager, IStatusBarService statusBarService) {
return new SmartReplyController(entryManager, statusBarService);
}
/** */
@Singleton
@Provides
static NotificationViewHierarchyManager provideNotificationViewHierarchyManager(
Context context,
@Main Handler mainHandler,
NotificationLockscreenUserManager notificationLockscreenUserManager,
NotificationGroupManager groupManager,
VisualStabilityManager visualStabilityManager,
StatusBarStateController statusBarStateController,
NotificationEntryManager notificationEntryManager,
KeyguardBypassController bypassController,
BubbleController bubbleController,
DynamicPrivacyController privacyController,
ForegroundServiceSectionController fgsSectionController) {
return new NotificationViewHierarchyManager(
context,
mainHandler,
notificationLockscreenUserManager,
groupManager,
visualStabilityManager,
statusBarStateController,
notificationEntryManager,
bypassController,
bubbleController,
privacyController,
fgsSectionController);
}
/**
* Provides our instance of CommandQueue which is considered optional.
*/
@Provides
@Singleton
static CommandQueue provideCommandQueue(Context context, ProtoTracer protoTracer) {
return new CommandQueue(context, protoTracer);
}
}

View File

@@ -0,0 +1,29 @@
/*
* 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.
* 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.statusbar.dagger;
import com.android.systemui.statusbar.notification.dagger.NotificationsModule;
import com.android.systemui.statusbar.notification.row.NotificationRowModule;
import com.android.systemui.statusbar.phone.dagger.StatusBarPhoneModule;
import dagger.Module;
/** */
@Module(includes = {StatusBarPhoneModule.class, StatusBarDependenciesModule.class,
NotificationsModule.class, NotificationRowModule.class})
public interface StatusBarModule {
}

View File

@@ -0,0 +1,60 @@
/*
* 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.
* 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.statusbar.phone.dagger;
import android.content.Context;
import android.os.Handler;
import android.view.IWindowManager;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.notification.row.RowContentBindStage;
import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
import com.android.systemui.statusbar.phone.StatusBar;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
/**
* This module provides instances needed to construct {@link StatusBar}. These are moved to this
* separate from {@link StatusBarPhoneModule} module so that components that wish to build their own
* version of StatusBar can include just dependencies, without injecting StatusBar itself.
*/
@Module
public interface StatusBarPhoneDependenciesModule {
/** */
@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);
}
}

View File

@@ -22,7 +22,6 @@ import android.content.Context;
import android.os.Handler;
import android.os.PowerManager;
import android.util.DisplayMetrics;
import android.view.IWindowManager;
import androidx.annotation.Nullable;
@@ -34,7 +33,6 @@ 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;
@@ -54,7 +52,6 @@ import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.NotificationViewHierarchyManager;
import com.android.systemui.statusbar.PulseExpansionHandler;
import com.android.systemui.statusbar.StatusBarDependenciesModule;
import com.android.systemui.statusbar.SuperStatusBarViewFactory;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.VibratorHelper;
@@ -67,7 +64,6 @@ 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;
@@ -81,7 +77,6 @@ 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;
@@ -115,7 +110,7 @@ import dagger.Provides;
/**
* Dagger Module providing {@link StatusBar}.
*/
@Module(includes = {StatusBarDependenciesModule.class})
@Module(includes = {StatusBarPhoneDependenciesModule.class})
public interface StatusBarPhoneModule {
/**
* Provides our instance of StatusBar which is considered optional.
@@ -274,23 +269,4 @@ public interface StatusBarPhoneModule {
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);
}
}