Remove many (most) of the calls to Dependency.get() from StatusBar.

This reverts commit 82679b58c1135f7459aca913f79277ae442053ab.

Reason for revert: Found bug in original code. Updating to fix http://b/141882822.

Bug: 141882822
Test: atest SystemUITests
Change-Id: Iaf2f719512c2bb16f098a99c2d269f2f1a8ea2b3
diff --git a/packages/SystemUI/src/com/android/systemui/DependencyBinder.java b/packages/SystemUI/src/com/android/systemui/DependencyBinder.java
index 818b5e1..c4dce1e 100644
--- a/packages/SystemUI/src/com/android/systemui/DependencyBinder.java
+++ b/packages/SystemUI/src/com/android/systemui/DependencyBinder.java
@@ -30,6 +30,7 @@
 import com.android.systemui.qs.QSTileHost;
 import com.android.systemui.statusbar.NotificationRemoteInputManager;
 import com.android.systemui.statusbar.StatusBarStateControllerImpl;
+import com.android.systemui.statusbar.SysuiStatusBarStateController;
 import com.android.systemui.statusbar.phone.DarkIconDispatcherImpl;
 import com.android.systemui.statusbar.phone.ManagedProfileController;
 import com.android.systemui.statusbar.phone.ManagedProfileControllerImpl;
@@ -234,4 +235,10 @@
      */
     @Binds
     public abstract FalsingManager provideFalsingmanager(FalsingManagerProxy falsingManagerImpl);
+
+    /**
+     */
+    @Binds
+    public abstract SysuiStatusBarStateController providesSysuiStatusBarStateController(
+            StatusBarStateControllerImpl statusBarStateControllerImpl);
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index d2a9c75..f159d8c 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -100,6 +100,7 @@
 import java.util.ArrayList;
 
 import javax.inject.Inject;
+import javax.inject.Singleton;
 
 /**
  * Mediates requests related to the keyguard.  This includes queries about the
@@ -142,6 +143,7 @@
  * directly to the keyguard UI is posted to a {@link android.os.Handler} to ensure it is taken on the UI
  * thread of the keyguard.
  */
+@Singleton
 public class KeyguardViewMediator extends SystemUI {
     private static final int KEYGUARD_DISPLAY_TIMEOUT_DELAY_DEFAULT = 30000;
     private static final long KEYGUARD_DONE_PENDING_TIMEOUT_MS = 3000;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 5fc2d9b..e79f141 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -347,10 +347,10 @@
     private BrightnessMirrorController mBrightnessMirrorController;
     private boolean mBrightnessMirrorVisible;
     protected BiometricUnlockController mBiometricUnlockController;
-    private LightBarController mLightBarController;
+    @Inject LightBarController mLightBarController;
     protected LockscreenWallpaper mLockscreenWallpaper;
     @VisibleForTesting
-    protected AutoHideController mAutoHideController;
+    @Inject AutoHideController mAutoHideController;
 
     private int mNaturalBarHeight = -1;
 
@@ -361,7 +361,7 @@
     private int mStatusBarWindowState = WINDOW_STATE_SHOWING;
     protected StatusBarWindowController mStatusBarWindowController;
     @VisibleForTesting
-    KeyguardUpdateMonitor mKeyguardUpdateMonitor;
+    @Inject KeyguardUpdateMonitor mKeyguardUpdateMonitor;
     @VisibleForTesting
     DozeServiceHost mDozeServiceHost = new DozeServiceHost();
     private boolean mWakeUpComingFromTouch;
@@ -369,7 +369,7 @@
 
     private final Object mQueueLock = new Object();
 
-    protected StatusBarIconController mIconController;
+    @Inject StatusBarIconController mIconController;
     @Inject
     DozeLog mDozeLog;
     @Inject
@@ -400,7 +400,7 @@
     protected FalsingManager mFalsingManager;
 
     @VisibleForTesting
-    BroadcastDispatcher mBroadcastDispatcher;
+    @Inject BroadcastDispatcher mBroadcastDispatcher;
 
     // expanded notifications
     protected NotificationPanelView mNotificationPanel; // the sliding/resizing panel within the notification window
@@ -413,8 +413,7 @@
     // RemoteInputView to be activated after unlock
     private View mPendingRemoteInputView;
 
-    private RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler =
-            Dependency.get(RemoteInputQuickSettingsDisabler.class);
+    @Inject RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
 
     private View mReportRejectedTouch;
 
@@ -423,18 +422,17 @@
     private final int[] mAbsPos = new int[2];
     private final ArrayList<Runnable> mPostCollapseRunnables = new ArrayList<>();
 
-    private NotificationGutsManager mGutsManager;
-    protected NotificationLogger mNotificationLogger;
-    protected NotificationEntryManager mEntryManager;
+    @Inject NotificationGutsManager mGutsManager;
+    @Inject NotificationLogger mNotificationLogger;
+    @Inject NotificationEntryManager mEntryManager;
     private NotificationListController mNotificationListController;
-    private NotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
-    protected NotificationViewHierarchyManager mViewHierarchyManager;
-    protected ForegroundServiceController mForegroundServiceController;
-    protected AppOpsController mAppOpsController;
-    protected KeyguardViewMediator mKeyguardViewMediator;
-    private ZenModeController mZenController;
-    private final NotificationAlertingManager mNotificationAlertingManager =
-            Dependency.get(NotificationAlertingManager.class);
+    @Inject NotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
+    @Inject NotificationViewHierarchyManager mViewHierarchyManager;
+    @Inject ForegroundServiceController mForegroundServiceController;
+    @Inject AppOpsController mAppOpsController;
+    @Inject KeyguardViewMediator mKeyguardViewMediator;
+    @Inject ZenModeController mZenController;
+    @Inject NotificationAlertingManager mNotificationAlertingManager;
 
     // for disabling the status bar
     private int mDisabled1 = 0;
@@ -445,7 +443,7 @@
     private final Rect mLastFullscreenStackBounds = new Rect();
     private final Rect mLastDockedStackBounds = new Rect();
 
-    private final DisplayMetrics mDisplayMetrics = Dependency.get(DisplayMetrics.class);
+    @Inject DisplayMetrics mDisplayMetrics;
 
     // XXX: gesture research
     private final GestureRecorder mGestureRec = DEBUG_GESTURES
@@ -454,7 +452,7 @@
 
     private ScreenPinningRequest mScreenPinningRequest;
 
-    private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
+    @Inject MetricsLogger mMetricsLogger;
 
     // ensure quick settings is disabled until the current user makes it through the setup wizard
     @VisibleForTesting
@@ -491,14 +489,14 @@
     private ViewMediatorCallback mKeyguardViewMediatorCallback;
     protected ScrimController mScrimController;
     protected DozeScrimController mDozeScrimController;
-    private final UiOffloadThread mUiOffloadThread = Dependency.get(UiOffloadThread.class);
+    @Inject UiOffloadThread mUiOffloadThread;
 
     protected boolean mDozing;
     private boolean mDozingRequested;
 
-    private NotificationMediaManager mMediaManager;
-    protected NotificationLockscreenUserManager mLockscreenUserManager;
-    protected NotificationRemoteInputManager mRemoteInputManager;
+    @Inject NotificationMediaManager mMediaManager;
+    @Inject NotificationLockscreenUserManager mLockscreenUserManager;
+    @Inject NotificationRemoteInputManager mRemoteInputManager;
     private boolean mWallpaperSupported;
 
     private final BroadcastReceiver mWallpaperChangedReceiver = new BroadcastReceiver() {
@@ -569,18 +567,18 @@
     };
 
     private KeyguardUserSwitcher mKeyguardUserSwitcher;
-    protected UserSwitcherController mUserSwitcherController;
-    private NetworkController mNetworkController;
-    private BatteryController mBatteryController;
+    @Inject UserSwitcherController mUserSwitcherController;
+    @Inject NetworkController mNetworkController;
+    @Inject BatteryController mBatteryController;
     protected boolean mPanelExpanded;
     private UiModeManager mUiModeManager;
     protected boolean mIsKeyguard;
     private LogMaker mStatusBarStateLog;
     protected NotificationIconAreaController mNotificationIconAreaController;
     @Nullable private View mAmbientIndicationContainer;
-    private SysuiColorExtractor mColorExtractor;
-    private ScreenLifecycle mScreenLifecycle;
-    @VisibleForTesting WakefulnessLifecycle mWakefulnessLifecycle;
+    @Inject SysuiColorExtractor mColorExtractor;
+    @Inject ScreenLifecycle mScreenLifecycle;
+    @Inject @VisibleForTesting WakefulnessLifecycle mWakefulnessLifecycle;
 
     private final View.OnClickListener mGoToLockedShadeListener = v -> {
         if (mState == StatusBarState.KEYGUARD) {
@@ -589,8 +587,7 @@
         }
     };
     private boolean mNoAnimationOnNextBarModeChange;
-    private final SysuiStatusBarStateController mStatusBarStateController =
-            (SysuiStatusBarStateController) Dependency.get(StatusBarStateController.class);
+    @Inject SysuiStatusBarStateController mStatusBarStateController;
 
     private final KeyguardUpdateMonitorCallback mUpdateCallback =
             new KeyguardUpdateMonitorCallback() {
@@ -611,19 +608,18 @@
 
     private HeadsUpAppearanceController mHeadsUpAppearanceController;
     private boolean mVibrateOnOpening;
-    private VibratorHelper mVibratorHelper;
+    @Inject VibratorHelper mVibratorHelper;
     private ActivityLaunchAnimator mActivityLaunchAnimator;
     protected StatusBarNotificationPresenter mPresenter;
     private NotificationActivityStarter mNotificationActivityStarter;
     private boolean mPulsing;
-    protected BubbleController mBubbleController;
+    @Inject BubbleController mBubbleController;
     private final BubbleController.BubbleExpandListener mBubbleExpandListener =
             (isExpanding, key) -> {
                 mEntryManager.updateNotifications();
                 updateScrimController();
             };
     private ActivityIntentHelper mActivityIntentHelper;
-    private ShadeController mShadeController;
 
     @Override
     public void onActiveStateChanged(int code, int uid, String packageName, boolean active) {
@@ -641,41 +637,13 @@
 
     @Override
     public void start() {
-        mGroupManager = Dependency.get(NotificationGroupManager.class);
-        mGroupAlertTransferHelper = Dependency.get(NotificationGroupAlertTransferHelper.class);
-        mVisualStabilityManager = Dependency.get(VisualStabilityManager.class);
-        mNotificationLogger = Dependency.get(NotificationLogger.class);
-        mRemoteInputManager = Dependency.get(NotificationRemoteInputManager.class);
-        mNotificationListener =  Dependency.get(NotificationListener.class);
         mNotificationListener.registerAsSystemService();
-        mNetworkController = Dependency.get(NetworkController.class);
-        mUserSwitcherController = Dependency.get(UserSwitcherController.class);
-        mScreenLifecycle = Dependency.get(ScreenLifecycle.class);
         mScreenLifecycle.addObserver(mScreenObserver);
-        mWakefulnessLifecycle = Dependency.get(WakefulnessLifecycle.class);
         mWakefulnessLifecycle.addObserver(mWakefulnessObserver);
-        mBatteryController = Dependency.get(BatteryController.class);
-        mAssistManager = Dependency.get(AssistManager.class);
         mUiModeManager = mContext.getSystemService(UiModeManager.class);
-        mLockscreenUserManager = Dependency.get(NotificationLockscreenUserManager.class);
-        mGutsManager = Dependency.get(NotificationGutsManager.class);
-        mMediaManager = Dependency.get(NotificationMediaManager.class);
-        mEntryManager = Dependency.get(NotificationEntryManager.class);
         mBypassHeadsUpNotifier.setUp(mEntryManager);
-        mNotificationInterruptionStateProvider =
-                Dependency.get(NotificationInterruptionStateProvider.class);
-        mViewHierarchyManager = Dependency.get(NotificationViewHierarchyManager.class);
-        mForegroundServiceController = Dependency.get(ForegroundServiceController.class);
-        mAppOpsController = Dependency.get(AppOpsController.class);
-        mZenController = Dependency.get(ZenModeController.class);
-        mKeyguardViewMediator = getComponent(KeyguardViewMediator.class);
-        mColorExtractor = Dependency.get(SysuiColorExtractor.class);
-        mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class);
-        mNavigationBarController = Dependency.get(NavigationBarController.class);
-        mBubbleController = Dependency.get(BubbleController.class);
         mBubbleController.setExpandListener(mBubbleExpandListener);
         mActivityIntentHelper = new ActivityIntentHelper(mContext);
-        mBroadcastDispatcher = Dependency.get(BroadcastDispatcher.class);
         KeyguardSliceProvider sliceProvider = KeyguardSliceProvider.getAttachedInstance();
         if (sliceProvider != null) {
             sliceProvider.initDependencies(mMediaManager, mStatusBarStateController,
@@ -698,7 +666,6 @@
 
         mVibrateOnOpening = mContext.getResources().getBoolean(
                 R.bool.config_vibrateOnIconAnimation);
-        mVibratorHelper = Dependency.get(VibratorHelper.class);
 
         DateTimeView.setReceiverHandler(Dependency.get(Dependency.TIME_TICK_HANDLER));
         putComponent(StatusBar.class, this);
@@ -712,7 +679,6 @@
                 mContext.getSystemService(Context.ACCESSIBILITY_SERVICE);
 
         mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
-        mKeyguardUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class);
         mKeyguardUpdateMonitor.setKeyguardBypassController(mKeyguardBypassController);
         mBarService = IStatusBarService.Stub.asInterface(
                 ServiceManager.getService(Context.STATUS_BAR_SERVICE));
@@ -901,7 +867,6 @@
                 .replace(R.id.status_bar_container, new CollapsedStatusBarFragment(),
                         CollapsedStatusBarFragment.TAG)
                 .commit();
-        mIconController = Dependency.get(StatusBarIconController.class);
 
         mHeadsUpManager.setUp(mStatusBarWindow, mGroupManager, this, mVisualStabilityManager);
         Dependency.get(ConfigurationController.class).addCallback(mHeadsUpManager);
@@ -947,11 +912,8 @@
             }
         });
 
-        mAutoHideController = Dependency.get(AutoHideController.class);
         mAutoHideController.setStatusBar(this);
 
-        mLightBarController = Dependency.get(LightBarController.class);
-
         ScrimView scrimBehind = mStatusBarWindow.findViewById(R.id.scrim_behind);
         ScrimView scrimInFront = mStatusBarWindow.findViewById(R.id.scrim_in_front);
         ScrimView scrimForBubble = mStatusBarWindow.findViewById(R.id.scrim_for_bubble);
@@ -1123,7 +1085,6 @@
         final StatusBarRemoteInputCallback mStatusBarRemoteInputCallback =
                 (StatusBarRemoteInputCallback) Dependency.get(
                         NotificationRemoteInputManager.Callback.class);
-        mShadeController = Dependency.get(ShadeController.class);
         final ActivityStarter activityStarter = Dependency.get(ActivityStarter.class);
 
         mNotificationActivityStarter = new StatusBarNotificationActivityStarter(mContext,
@@ -1131,7 +1092,7 @@
                 mHeadsUpManager, activityStarter, mActivityLaunchAnimator,
                 mBarService, mStatusBarStateController, mKeyguardManager, mDreamManager,
                 mRemoteInputManager, mStatusBarRemoteInputCallback, mGroupManager,
-                mLockscreenUserManager, mShadeController, mKeyguardStateController,
+                mLockscreenUserManager, this, mKeyguardStateController,
                 mNotificationInterruptionStateProvider, mMetricsLogger,
                 new LockPatternUtils(mContext), Dependency.get(MAIN_HANDLER),
                 Dependency.get(BG_HANDLER), mActivityIntentHelper, mBubbleController);
@@ -1140,7 +1101,7 @@
 
         mEntryManager.setRowBinder(rowBinder);
         rowBinder.setNotificationClicker(new NotificationClicker(
-                this, Dependency.get(BubbleController.class), mNotificationActivityStarter));
+                this, mBubbleController, mNotificationActivityStarter));
 
         mGroupAlertTransferHelper.bind(mEntryManager, mGroupManager);
         mNotificationListController.bind();
@@ -4227,12 +4188,11 @@
     // all notifications
     protected ViewGroup mStackScroller;
 
-    protected NotificationGroupManager mGroupManager;
-
-    protected NotificationGroupAlertTransferHelper mGroupAlertTransferHelper;
+    @Inject NotificationGroupManager mGroupManager;
+    @Inject NotificationGroupAlertTransferHelper mGroupAlertTransferHelper;
 
     // handling reordering
-    protected VisualStabilityManager mVisualStabilityManager;
+    @Inject VisualStabilityManager mVisualStabilityManager;
 
     protected AccessibilityManager mAccessibilityManager;
 
@@ -4248,10 +4208,9 @@
     protected StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
 
     protected KeyguardManager mKeyguardManager;
-    private DeviceProvisionedController mDeviceProvisionedController
-            = Dependency.get(DeviceProvisionedController.class);
+    @Inject DeviceProvisionedController mDeviceProvisionedController;
 
-    protected NavigationBarController mNavigationBarController;
+    @Inject protected NavigationBarController mNavigationBarController;
 
     // UI-specific methods
 
@@ -4267,7 +4226,7 @@
     protected NotificationShelf mNotificationShelf;
     protected EmptyShadeView mEmptyShadeView;
 
-    protected AssistManager mAssistManager;
+    @Inject AssistManager mAssistManager;
 
     public boolean isDeviceInteractive() {
         return mDeviceInteractive;
@@ -4326,7 +4285,7 @@
         }
     }
 
-    protected NotificationListener mNotificationListener;
+    @Inject NotificationListener mNotificationListener;
 
     public void setNotificationSnoozed(StatusBarNotification sbn, SnoozeOption snoozeOption) {
         if (snoozeOption.getSnoozeCriterion() != null) {
@@ -4462,8 +4421,7 @@
         executeActionDismissingKeyguard(() -> {
             try {
                 intent.send(null, 0, null, null, null, null, getActivityOptions(
-                        mActivityLaunchAnimator.getLaunchAnimation(associatedView,
-                                mShadeController.isOccluded())));
+                        mActivityLaunchAnimator.getLaunchAnimation(associatedView, isOccluded())));
             } catch (PendingIntent.CanceledException e) {
                 // the stack trace isn't very helpful here.
                 // Just log the exception message.
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java
index 0bff5aa..237f6ac 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java
@@ -80,7 +80,7 @@
 import org.mockito.MockitoAnnotations;
 
 @RunWith(AndroidTestingRunner.class)
-@RunWithLooper()
+@RunWithLooper(setAsMainLooper = true)
 @SmallTest
 public class NavigationBarFragmentTest extends SysuiBaseFragmentTest {
     private static final int EXTERNAL_DISPLAY_ID = 2;
@@ -217,7 +217,7 @@
         // Set IME window status for default NavBar.
         mCommandQueue.setImeWindowStatus(DEFAULT_DISPLAY, null, IME_VISIBLE,
                 BACK_DISPOSITION_DEFAULT, true, false);
-        Handler.getMain().runWithScissors(() -> { }, 500);
+        processAllMessages();
 
         // Verify IME window state will be updated in default NavBar & external NavBar state reset.
         assertEquals(NAVIGATION_HINT_BACK_ALT | NAVIGATION_HINT_IME_SHOWN,
@@ -228,7 +228,7 @@
         // Set IME window status for external NavBar.
         mCommandQueue.setImeWindowStatus(EXTERNAL_DISPLAY_ID, null,
                 IME_VISIBLE, BACK_DISPOSITION_DEFAULT, true, false);
-        Handler.getMain().runWithScissors(() -> { }, 500);
+        processAllMessages();
 
         // Verify IME window state will be updated in external NavBar & default NavBar state reset.
         assertEquals(NAVIGATION_HINT_BACK_ALT | NAVIGATION_HINT_IME_SHOWN,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
index 7de7f9e..f163886 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
@@ -59,6 +59,7 @@
 import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableLooper.RunWithLooper;
+import android.util.DisplayMetrics;
 import android.util.SparseArray;
 import android.view.ViewGroup.LayoutParams;
 
@@ -73,16 +74,19 @@
 import com.android.systemui.ForegroundServiceController;
 import com.android.systemui.InitController;
 import com.android.systemui.R;
-import com.android.systemui.SystemUIFactory;
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.UiOffloadThread;
 import com.android.systemui.appops.AppOpsController;
 import com.android.systemui.assist.AssistManager;
 import com.android.systemui.broadcast.BroadcastDispatcher;
 import com.android.systemui.bubbles.BubbleController;
+import com.android.systemui.classifier.FalsingManagerFake;
+import com.android.systemui.colorextraction.SysuiColorExtractor;
 import com.android.systemui.doze.DozeEvent;
 import com.android.systemui.doze.DozeHost;
+import com.android.systemui.doze.DozeLog;
 import com.android.systemui.keyguard.KeyguardViewMediator;
+import com.android.systemui.keyguard.ScreenLifecycle;
 import com.android.systemui.keyguard.WakefulnessLifecycle;
 import com.android.systemui.plugins.ActivityStarter.OnDismissAction;
 import com.android.systemui.plugins.FalsingManager;
@@ -98,14 +102,18 @@
 import com.android.systemui.statusbar.NotificationRemoteInputManager;
 import com.android.systemui.statusbar.NotificationShelf;
 import com.android.systemui.statusbar.NotificationViewHierarchyManager;
+import com.android.systemui.statusbar.PulseExpansionHandler;
 import com.android.systemui.statusbar.RemoteInputController;
 import com.android.systemui.statusbar.StatusBarState;
 import com.android.systemui.statusbar.StatusBarStateControllerImpl;
+import com.android.systemui.statusbar.SysuiStatusBarStateController;
+import com.android.systemui.statusbar.notification.BypassHeadsUpNotifier;
 import com.android.systemui.statusbar.notification.NotificationAlertingManager;
 import com.android.systemui.statusbar.notification.NotificationEntryListener;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.NotificationFilter;
 import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
+import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
 import com.android.systemui.statusbar.notification.collection.NotificationData;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
@@ -116,6 +124,7 @@
 import com.android.systemui.statusbar.policy.BatteryController;
 import com.android.systemui.statusbar.policy.DeviceProvisionedController;
 import com.android.systemui.statusbar.policy.KeyguardStateController;
+import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
 import com.android.systemui.statusbar.policy.UserSwitcherController;
 
 import org.junit.Before;
@@ -148,10 +157,7 @@
     @Mock private ArrayList<NotificationEntry> mNotificationList;
     @Mock private BiometricUnlockController mBiometricUnlockController;
     @Mock private NotificationData mNotificationData;
-    @Mock
-    private NotificationInterruptionStateProvider.HeadsUpSuppressor mHeadsUpSuppressor;
-
-    // Mock dependencies:
+    @Mock private NotificationInterruptionStateProvider.HeadsUpSuppressor mHeadsUpSuppressor;
     @Mock private NotificationViewHierarchyManager mViewHierarchyManager;
     @Mock private VisualStabilityManager mVisualStabilityManager;
     @Mock private NotificationListener mNotificationListener;
@@ -163,51 +169,38 @@
     @Mock private BatteryController mBatteryController;
     @Mock private DeviceProvisionedController mDeviceProvisionedController;
     @Mock private StatusBarNotificationPresenter mNotificationPresenter;
-    @Mock
-    private NotificationEntryListener mEntryListener;
-    @Mock
-    private NotificationFilter mNotificationFilter;
-    @Mock
-    private NotificationAlertingManager mNotificationAlertingManager;
-    @Mock
-    private NotificationLogger.ExpansionStateLogger mExpansionStateLogger;
-    @Mock
-    private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
-    @Mock
-    private AmbientDisplayConfiguration mAmbientDisplayConfiguration;
-    @Mock
-    private StatusBarWindowView mStatusBarWindowView;
-    @Mock
-    private BroadcastDispatcher mBroadcastDispatcher;
+    @Mock private NotificationEntryListener mEntryListener;
+    @Mock private NotificationFilter mNotificationFilter;
+    @Mock private NotificationAlertingManager mNotificationAlertingManager;
+    @Mock private NotificationLogger.ExpansionStateLogger mExpansionStateLogger;
+    @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
+    @Mock private AmbientDisplayConfiguration mAmbientDisplayConfiguration;
+    @Mock private StatusBarWindowView mStatusBarWindowView;
+    @Mock private BroadcastDispatcher mBroadcastDispatcher;
+    @Mock private AssistManager mAssistManager;
+    @Mock private NotificationGutsManager mNotificationGutsManager;
+    @Mock private NotificationMediaManager mNotificationMediaManager;
+    @Mock private ForegroundServiceController mForegroundServiceController;
+    @Mock private AppOpsController mAppOpsController;
+    @Mock private NavigationBarController mNavigationBarController;
+    @Mock private BypassHeadsUpNotifier mBypassHeadsUpNotifier;
+    @Mock private SysuiColorExtractor mColorExtractor;
+    @Mock private DozeLog mDozeLog;
+    @Mock private PulseExpansionHandler mPulseExpansionHandler;
+    @Mock private RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
+    @Mock private NotificationWakeUpCoordinator mNotificationWakeUpCoordinator;
+    @Mock private KeyguardBypassController mKeyguardBypassController;
 
     private TestableStatusBar mStatusBar;
     private FakeMetricsLogger mMetricsLogger;
     private PowerManager mPowerManager;
-    private TestableNotificationEntryManager mEntryManager;
     private TestableNotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
-    private NotificationLogger mNotificationLogger;
     private CommandQueue mCommandQueue;
 
     @Before
     public void setup() throws Exception {
         MockitoAnnotations.initMocks(this);
-        mDependency.injectMockDependency(AssistManager.class);
-        mDependency.injectMockDependency(NotificationGutsManager.class);
-        mDependency.injectMockDependency(NotificationMediaManager.class);
-        mDependency.injectMockDependency(ForegroundServiceController.class);
-        mDependency.injectTestDependency(NotificationViewHierarchyManager.class,
-                mViewHierarchyManager);
-        mDependency.injectTestDependency(VisualStabilityManager.class, mVisualStabilityManager);
-        mDependency.injectTestDependency(NotificationListener.class, mNotificationListener);
-        mDependency.injectTestDependency(AppOpsController.class, mock(AppOpsController.class));
-        mDependency.injectTestDependency(StatusBarStateController.class, mStatusBarStateController);
-        mDependency.injectTestDependency(DeviceProvisionedController.class,
-                mDeviceProvisionedController);
-        mDependency.injectMockDependency(BubbleController.class);
         mDependency.injectTestDependency(NotificationFilter.class, mNotificationFilter);
-        mDependency.injectTestDependency(NotificationAlertingManager.class,
-                mNotificationAlertingManager);
-        mDependency.injectTestDependency(BroadcastDispatcher.class, mBroadcastDispatcher);
 
         IPowerManager powerManagerService = mock(IPowerManager.class);
         mPowerManager = new PowerManager(mContext, powerManagerService,
@@ -217,21 +210,17 @@
                 new TestableNotificationInterruptionStateProvider(mContext, mPowerManager,
                         mDreamManager, mAmbientDisplayConfiguration, mNotificationFilter,
                         mStatusBarStateController, mBatteryController);
-        mDependency.injectTestDependency(NotificationInterruptionStateProvider.class,
-                mNotificationInterruptionStateProvider);
-        mDependency.injectMockDependency(NavigationBarController.class);
 
         mContext.addMockSystemService(TrustManager.class, mock(TrustManager.class));
         mContext.addMockSystemService(FingerprintManager.class, mock(FingerprintManager.class));
 
         mMetricsLogger = new FakeMetricsLogger();
-        mDependency.injectTestDependency(MetricsLogger.class, mMetricsLogger);
-        mEntryManager = new TestableNotificationEntryManager(mContext);
-        mNotificationLogger = new NotificationLogger(mNotificationListener,
-                Dependency.get(UiOffloadThread.class), mEntryManager, mStatusBarStateController,
+        TestableNotificationEntryManager entryManager = new TestableNotificationEntryManager(
+                mContext);
+        NotificationLogger notificationLogger = new NotificationLogger(mNotificationListener,
+                Dependency.get(UiOffloadThread.class), entryManager, mStatusBarStateController,
                 mExpansionStateLogger);
-        mNotificationLogger.setVisibilityReporter(mock(Runnable.class));
-        mDependency.injectTestDependency(NotificationLogger.class, mNotificationLogger);
+        notificationLogger.setVisibilityReporter(mock(Runnable.class));
 
         mCommandQueue = mock(CommandQueue.class);
         when(mCommandQueue.asBinder()).thenReturn(new Binder());
@@ -260,32 +249,71 @@
                 mHeadsUpManager, mHeadsUpSuppressor);
 
         when(mRemoteInputManager.getController()).thenReturn(mRemoteInputController);
-        mStatusBar = new TestableStatusBar(mStatusBarKeyguardViewManager,
-                mKeyguardIndicationController, mStackScroller,
-                mPowerManager, mNotificationPanelView, mBarService, mNotificationListener,
-                mNotificationLogger, mVisualStabilityManager, mViewHierarchyManager,
-                mEntryManager, mScrimController, mBiometricUnlockController,
-                mKeyguardViewMediator, mRemoteInputManager, mock(NotificationGroupManager.class),
-                mock(NotificationGroupAlertTransferHelper.class), mock(FalsingManager.class),
-                mock(StatusBarWindowController.class), mock(NotificationIconAreaController.class),
-                mDozeScrimController, mock(NotificationShelf.class),
-                mLockscreenUserManager, mCommandQueue, mNotificationPresenter,
-                mock(BubbleController.class), mock(NavigationBarController.class),
-                mock(AutoHideController.class), mKeyguardUpdateMonitor, mStatusBarWindowView,
-                mBroadcastDispatcher);
+        mStatusBar = new TestableStatusBar(
+                mStatusBarKeyguardViewManager,
+                mKeyguardIndicationController,
+                mStackScroller,
+                mPowerManager,
+                mNotificationPanelView,
+                mBarService,
+                mNotificationListener,
+                notificationLogger,
+                mVisualStabilityManager,
+                mViewHierarchyManager,
+                entryManager,
+                mScrimController,
+                mBiometricUnlockController,
+                mKeyguardViewMediator,
+                mRemoteInputManager,
+                mock(NotificationGroupManager.class),
+                mock(NotificationGroupAlertTransferHelper.class),
+                new FalsingManagerFake(),
+                mock(StatusBarWindowController.class),
+                mock(NotificationIconAreaController.class),
+                mDozeScrimController,
+                mock(NotificationShelf.class),
+                mLockscreenUserManager,
+                mCommandQueue,
+                mNotificationPresenter,
+                mock(BubbleController.class),
+                mNavigationBarController,
+                mock(AutoHideController.class),
+                mKeyguardUpdateMonitor,
+                mStatusBarWindowView,
+                mBroadcastDispatcher,
+                mAssistManager,
+                mNotificationGutsManager,
+                mNotificationMediaManager,
+                mForegroundServiceController,
+                mAppOpsController,
+                mStatusBarStateController,
+                mDeviceProvisionedController,
+                mNotificationAlertingManager,
+                mNotificationInterruptionStateProvider,
+                mMetricsLogger,
+                mHeadsUpManager,
+                mKeyguardStateController,
+                new ScreenLifecycle(),
+                mBypassHeadsUpNotifier,
+                mColorExtractor,
+                new DisplayMetrics(),
+                Dependency.get(UiOffloadThread.class),
+                mDozeLog,
+                mPulseExpansionHandler,
+                new RemoteInputQuickSettingsDisabler(
+                        mContext,
+                        new ConfigurationControllerImpl(mContext)
+                ),
+                mNotificationWakeUpCoordinator,
+                mKeyguardBypassController);
         mStatusBar.mContext = mContext;
         mStatusBar.mComponents = mContext.getComponents();
-        SystemUIFactory.getInstance().getRootComponent()
-                .getStatusBarInjector()
-                .createStatusBar(mStatusBar);
-        mStatusBar.mKeyguardStateController = mKeyguardStateController;
-        mStatusBar.setHeadsUpManager(mHeadsUpManager);
         mStatusBar.putComponent(StatusBar.class, mStatusBar);
         Dependency.get(InitController.class).executePostInitTasks();
-        mEntryManager.setUpForTest(mock(NotificationPresenter.class), mStackScroller,
+        entryManager.setUpForTest(mock(NotificationPresenter.class), mStackScroller,
                 mHeadsUpManager, mNotificationData);
-        mEntryManager.addNotificationEntryListener(mEntryListener);
-        mNotificationLogger.setUpWithContainer(mStackScroller);
+        entryManager.addNotificationEntryListener(mEntryListener);
+        notificationLogger.setUpWithContainer(mStackScroller);
     }
 
     @Test
@@ -821,7 +849,28 @@
                 AutoHideController autoHideController,
                 KeyguardUpdateMonitor keyguardUpdateMonitor,
                 StatusBarWindowView statusBarWindow,
-                BroadcastDispatcher broadcastDispatcher) {
+                BroadcastDispatcher broadcastDispatcher,
+                AssistManager assistManager,
+                NotificationGutsManager notificationGutsManager,
+                NotificationMediaManager notificationMediaManager,
+                ForegroundServiceController foregroundServiceController,
+                AppOpsController appOpsController,
+                SysuiStatusBarStateController statusBarStateController,
+                DeviceProvisionedController deviceProvisionedController,
+                NotificationAlertingManager notificationAlertingManager,
+                NotificationInterruptionStateProvider notificationInterruptionStateProvider,
+                MetricsLogger metricsLogger,
+                HeadsUpManagerPhone headsUpManager,
+                KeyguardStateController keyguardStateController,
+                ScreenLifecycle screenLifecycle,
+                BypassHeadsUpNotifier bypassHeadsUpNotifier,
+                SysuiColorExtractor colorExtractor, DisplayMetrics displayMetrics,
+                UiOffloadThread uiOffloadThread,
+                DozeLog dozeLog,
+                PulseExpansionHandler pulseExpansionHandler,
+                RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler,
+                NotificationWakeUpCoordinator notificationWakeUpCoordinator,
+                KeyguardBypassController keyguardBypassController) {
             mStatusBarKeyguardViewManager = man;
             mKeyguardIndicationController = key;
             mStackScroller = stack;
@@ -856,6 +905,28 @@
             mStatusBarWindow = statusBarWindow;
             mDozeServiceHost.mWakeLockScreenPerformsAuth = false;
             mBroadcastDispatcher = broadcastDispatcher;
+            mAssistManager = assistManager;
+            mGutsManager = notificationGutsManager;
+            mMediaManager = notificationMediaManager;
+            mForegroundServiceController = foregroundServiceController;
+            mAppOpsController = appOpsController;
+            mStatusBarStateController = statusBarStateController;
+            mDeviceProvisionedController = deviceProvisionedController;
+            mNotificationAlertingManager = notificationAlertingManager;
+            mNotificationInterruptionStateProvider = notificationInterruptionStateProvider;
+            mMetricsLogger = metricsLogger;
+            mHeadsUpManager = headsUpManager;
+            mKeyguardStateController = keyguardStateController;
+            mScreenLifecycle = screenLifecycle;
+            mBypassHeadsUpNotifier = bypassHeadsUpNotifier;
+            mColorExtractor = colorExtractor;
+            mDisplayMetrics = displayMetrics;
+            mUiOffloadThread = uiOffloadThread;
+            mDozeLog = dozeLog;
+            mPulseExpansionHandler = pulseExpansionHandler;
+            mRemoteInputQuickSettingsDisabler = remoteInputQuickSettingsDisabler;
+            mWakeUpCoordinator = notificationWakeUpCoordinator;
+            mKeyguardBypassController = keyguardBypassController;
         }
 
         private WakefulnessLifecycle createAwakeWakefulnessLifecycle() {
@@ -874,10 +945,6 @@
             mState = state;
         }
 
-        void setHeadsUpManager(HeadsUpManagerPhone headsUpManager) {
-            mHeadsUpManager = headsUpManager;
-        }
-
         public void setUserSetupForTest(boolean userSetup) {
             mUserSetup = userSetup;
         }