diff options
5 files changed, 194 insertions, 160 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/DependencyBinder.java b/packages/SystemUI/src/com/android/systemui/DependencyBinder.java index 818b5e1c69f4..c4dce1e70051 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.QSHost; 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 @@ public abstract class DependencyBinder { */ @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 d2a9c750bbc6..f159d8c1d431 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.io.PrintWriter; 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 @@ import javax.inject.Inject; * 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 5fc2d9beab89..e79f14175377 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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, private final Object mQueueLock = new Object(); - protected StatusBarIconController mIconController; + @Inject StatusBarIconController mIconController; @Inject DozeLog mDozeLog; @Inject @@ -400,7 +400,7 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, // 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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, }; 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 @@ public class StatusBar extends SystemUI implements DemoMode, } }; 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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, @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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, .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 @@ public class StatusBar extends SystemUI implements DemoMode, } }); - 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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, // 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 @@ public class StatusBar extends SystemUI implements DemoMode, 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 @@ public class StatusBar extends SystemUI implements DemoMode, protected NotificationShelf mNotificationShelf; protected EmptyShadeView mEmptyShadeView; - protected AssistManager mAssistManager; + @Inject AssistManager mAssistManager; public boolean isDeviceInteractive() { return mDeviceInteractive; @@ -4326,7 +4285,7 @@ public class StatusBar extends SystemUI implements DemoMode, } } - protected NotificationListener mNotificationListener; + @Inject NotificationListener mNotificationListener; public void setNotificationSnoozed(StatusBarNotification sbn, SnoozeOption snoozeOption) { if (snoozeOption.getSnoozeCriterion() != null) { @@ -4462,8 +4421,7 @@ public class StatusBar extends SystemUI implements DemoMode, 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 0bff5aa9e991..237f6ac0f420 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.Mock; 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 @@ public class NavigationBarFragmentTest extends SysuiBaseFragmentTest { // 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 @@ public class NavigationBarFragmentTest extends SysuiBaseFragmentTest { // 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 7de7f9e23813..f163886193b4 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.support.test.metricshelper.MetricsAsserts; 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.Dependency; 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.NotificationPresenter; 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.notification.stack.NotificationStackScroll 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 @@ public class StatusBarTest extends SysuiTestCase { @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 @@ public class StatusBarTest extends SysuiTestCase { @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 @@ public class StatusBarTest extends SysuiTestCase { 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 @@ public class StatusBarTest extends SysuiTestCase { 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 @@ public class StatusBarTest extends SysuiTestCase { 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 @@ public class StatusBarTest extends SysuiTestCase { 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 @@ public class StatusBarTest extends SysuiTestCase { mState = state; } - void setHeadsUpManager(HeadsUpManagerPhone headsUpManager) { - mHeadsUpManager = headsUpManager; - } - public void setUserSetupForTest(boolean userSetup) { mUserSetup = userSetup; } |