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/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;
}