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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user