Make StatusBarKeyguardViewManager injectable
There is a circular dependency between KeyguardViewMediator and
StatusBarKeyguardViewManager which is addressed via Lazy<> for the
ViewMediatorCallback.
Test: manual (sdk_gphone_x86 and hawk), atest SystemUITests
Change-Id: I10e37a40ba966a9f458155fff2957f5534cb9f91
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java
index be4b889..c35303e 100644
--- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java
+++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java
@@ -18,12 +18,8 @@
import android.content.Context;
-import com.android.internal.widget.LockPatternUtils;
-import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.dagger.SystemUIRootComponent;
import com.android.systemui.navigationbar.car.CarFacetButtonController;
-import com.android.systemui.statusbar.car.CarStatusBarKeyguardViewManager;
-import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import javax.inject.Singleton;
@@ -50,11 +46,6 @@
return mCarDependencyComponent;
}
- public StatusBarKeyguardViewManager createStatusBarKeyguardViewManager(Context context,
- ViewMediatorCallback viewMediatorCallback, LockPatternUtils lockPatternUtils) {
- return new CarStatusBarKeyguardViewManager(context, viewMediatorCallback, lockPatternUtils);
- }
-
@Singleton
@Component(modules = ContextHolder.class)
public interface CarDependencyComponent {
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
index a6377b03..3b63e79 100644
--- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
+++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
@@ -35,12 +35,14 @@
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
import com.android.systemui.statusbar.car.CarStatusBar;
+import com.android.systemui.statusbar.car.CarStatusBarKeyguardViewManager;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
import com.android.systemui.statusbar.notification.collection.NotificationData;
import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar;
+import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.volume.CarVolumeDialogComponent;
import com.android.systemui.volume.VolumeDialogComponent;
@@ -122,4 +124,8 @@
@Binds
abstract VolumeDialogComponent bindVolumeDialogComponent(
CarVolumeDialogComponent carVolumeDialogComponent);
+
+ @Binds
+ abstract StatusBarKeyguardViewManager bindStatusBarKeyguardViewManager(
+ CarStatusBarKeyguardViewManager keyguardViewManager);
}
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarKeyguardViewManager.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarKeyguardViewManager.java
index 5921868..0ad0992 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarKeyguardViewManager.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarKeyguardViewManager.java
@@ -20,18 +20,43 @@
import android.view.View;
import com.android.internal.widget.LockPatternUtils;
+import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.R;
+import com.android.systemui.dock.DockManager;
+import com.android.systemui.statusbar.NotificationMediaManager;
+import com.android.systemui.statusbar.SysuiStatusBarStateController;
+import com.android.systemui.statusbar.phone.NavigationModeController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
+import com.android.systemui.statusbar.phone.StatusBarWindowController;
+import com.android.systemui.statusbar.policy.ConfigurationController;
+import com.android.systemui.statusbar.policy.KeyguardStateController;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/** Car implementation of the {@link StatusBarKeyguardViewManager}. */
+@Singleton
public class CarStatusBarKeyguardViewManager extends StatusBarKeyguardViewManager {
protected boolean mShouldHideNavBar;
+ @Inject
public CarStatusBarKeyguardViewManager(Context context,
ViewMediatorCallback callback,
- LockPatternUtils lockPatternUtils) {
- super(context, callback, lockPatternUtils);
+ LockPatternUtils lockPatternUtils,
+ SysuiStatusBarStateController sysuiStatusBarStateController,
+ ConfigurationController configurationController,
+ KeyguardUpdateMonitor keyguardUpdateMonitor,
+ NavigationModeController navigationModeController,
+ DockManager dockManager,
+ StatusBarWindowController statusBarWindowController,
+ KeyguardStateController keyguardStateController,
+ NotificationMediaManager notificationMediaManager) {
+ super(context, callback, lockPatternUtils, sysuiStatusBarStateController,
+ configurationController, keyguardUpdateMonitor, navigationModeController,
+ dockManager, statusBarWindowController, keyguardStateController,
+ notificationMediaManager);
mShouldHideNavBar = context.getResources()
.getBoolean(R.bool.config_hideNavWhenKeyguardBouncerShown);
}
diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
index b524597..0d400fe 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java
@@ -43,7 +43,6 @@
import com.android.systemui.statusbar.phone.LockIcon;
import com.android.systemui.statusbar.phone.NotificationIconAreaController;
import com.android.systemui.statusbar.phone.StatusBar;
-import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import dagger.Module;
@@ -120,11 +119,6 @@
return mRootComponent;
}
- public StatusBarKeyguardViewManager createStatusBarKeyguardViewManager(Context context,
- ViewMediatorCallback viewMediatorCallback, LockPatternUtils lockPatternUtils) {
- return new StatusBarKeyguardViewManager(context, viewMediatorCallback, lockPatternUtils);
- }
-
/**
* Creates an instance of ScreenshotNotificationSmartActionsProvider.
* This method is overridden in vendor specific implementation of Sys UI.
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
index 6d61b2f..741c95f 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
@@ -35,12 +35,14 @@
import com.android.internal.logging.MetricsLogger;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.widget.LockPatternUtils;
+import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.qualifiers.BgHandler;
import com.android.systemui.dagger.qualifiers.BgLooper;
import com.android.systemui.dagger.qualifiers.MainHandler;
import com.android.systemui.dagger.qualifiers.MainLooper;
import com.android.systemui.doze.AlwaysOnDisplayPolicy;
+import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.plugins.PluginInitializerImpl;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.shared.plugins.PluginManagerImpl;
@@ -249,4 +251,10 @@
public UserManager providesUserManager(Context context) {
return context.getSystemService(UserManager.class);
}
+
+ /** */
+ @Provides
+ public ViewMediatorCallback providesViewMediatorCallback(KeyguardViewMediator viewMediator) {
+ return viewMediator.getViewMediatorCallback();
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 3b1edcc..3566db6 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -68,7 +68,6 @@
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
-import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.policy.IKeyguardDismissCallback;
import com.android.internal.policy.IKeyguardDrawnCallback;
import com.android.internal.policy.IKeyguardExitCallback;
@@ -104,6 +103,8 @@
import javax.inject.Inject;
import javax.inject.Singleton;
+import dagger.Lazy;
+
/**
* Mediates requests related to the keyguard. This includes queries about the
* state of the keyguard, power management events that effect whether the keyguard
@@ -236,7 +237,7 @@
*/
private PowerManager.WakeLock mShowKeyguardWakeLock;
- private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
+ private final Lazy<StatusBarKeyguardViewManager> mStatusBarKeyguardViewManagerLazy;
// these are protected by synchronized (this)
@@ -587,7 +588,7 @@
@Override
public void setNeedsInput(boolean needsInput) {
- mStatusBarKeyguardViewManager.setNeedsInput(needsInput);
+ mStatusBarKeyguardViewManagerLazy.get().setNeedsInput(needsInput);
}
@Override
@@ -601,7 +602,8 @@
mKeyguardDonePending = true;
mHideAnimationRun = true;
mHideAnimationRunning = true;
- mStatusBarKeyguardViewManager.startPreHideAnimation(mHideAnimationFinishedRunnable);
+ mStatusBarKeyguardViewManagerLazy.get()
+ .startPreHideAnimation(mHideAnimationFinishedRunnable);
mHandler.sendEmptyMessageDelayed(KEYGUARD_DONE_PENDING_TIMEOUT,
KEYGUARD_DONE_PENDING_TIMEOUT_MS);
Trace.endSection();
@@ -631,7 +633,7 @@
@Override
public void onCancelClicked() {
- mStatusBarKeyguardViewManager.onCancelClicked();
+ mStatusBarKeyguardViewManagerLazy.get().onCancelClicked();
}
@Override
@@ -688,26 +690,13 @@
Context context,
FalsingManager falsingManager,
LockPatternUtils lockPatternUtils,
- BroadcastDispatcher broadcastDispatcher) {
- this(context, falsingManager, lockPatternUtils, broadcastDispatcher,
- SystemUIFactory.getInstance());
- }
-
- @VisibleForTesting
- KeyguardViewMediator(
- Context context,
- FalsingManager falsingManager,
- LockPatternUtils lockPatternUtils,
BroadcastDispatcher broadcastDispatcher,
- SystemUIFactory systemUIFactory) {
+ Lazy<StatusBarKeyguardViewManager> statusBarKeyguardViewManagerLazy) {
super(context);
mFalsingManager = falsingManager;
mLockPatternUtils = lockPatternUtils;
mBroadcastDispatcher = broadcastDispatcher;
- mStatusBarKeyguardViewManager = systemUIFactory.createStatusBarKeyguardViewManager(
- mContext,
- mViewMediatorCallback,
- mLockPatternUtils);
+ mStatusBarKeyguardViewManagerLazy = statusBarKeyguardViewManagerLazy;
}
public void userActivity() {
@@ -1259,7 +1248,7 @@
if (mOccluded != isOccluded) {
mOccluded = isOccluded;
mUpdateMonitor.setKeyguardOccluded(isOccluded);
- mStatusBarKeyguardViewManager.setOccluded(isOccluded, animate
+ mStatusBarKeyguardViewManagerLazy.get().setOccluded(isOccluded, animate
&& mDeviceInteractive);
adjustStatusBarLocked();
}
@@ -1330,7 +1319,7 @@
}
// if the keyguard is already showing, don't bother
- if (mStatusBarKeyguardViewManager.isShowing()) {
+ if (mStatusBarKeyguardViewManagerLazy.get().isShowing()) {
if (DEBUG) Log.d(TAG, "doKeyguard: not showing because it is already showing");
resetStateLocked();
return;
@@ -1394,7 +1383,7 @@
mDismissCallbackRegistry.addCallback(callback);
}
mCustomMessage = message;
- mStatusBarKeyguardViewManager.dismissAndCollapse();
+ mStatusBarKeyguardViewManagerLazy.get().dismissAndCollapse();
} else if (callback != null) {
new DismissCallbackWrapper(callback).notifyDismissError();
}
@@ -1661,7 +1650,8 @@
} else if (!mHideAnimationRun) {
mHideAnimationRun = true;
mHideAnimationRunning = true;
- mStatusBarKeyguardViewManager.startPreHideAnimation(mHideAnimationFinishedRunnable);
+ mStatusBarKeyguardViewManagerLazy.get()
+ .startPreHideAnimation(mHideAnimationFinishedRunnable);
}
}
@@ -1817,7 +1807,7 @@
mHiding = false;
mWakeAndUnlocking = false;
setShowingLocked(true);
- mStatusBarKeyguardViewManager.show(options);
+ mStatusBarKeyguardViewManagerLazy.get().show(options);
resetKeyguardDonePendingLocked();
mHideAnimationRun = false;
adjustStatusBarLocked();
@@ -1835,22 +1825,22 @@
public void run() {
Trace.beginSection("KeyguardViewMediator.mKeyGuardGoingAwayRunnable");
if (DEBUG) Log.d(TAG, "keyguardGoingAway");
- mStatusBarKeyguardViewManager.keyguardGoingAway();
+ mStatusBarKeyguardViewManagerLazy.get().keyguardGoingAway();
int flags = 0;
- if (mStatusBarKeyguardViewManager.shouldDisableWindowAnimationsForUnlock()
+ if (mStatusBarKeyguardViewManagerLazy.get().shouldDisableWindowAnimationsForUnlock()
|| (mWakeAndUnlocking && !mPulsing)) {
flags |= WindowManagerPolicyConstants
.KEYGUARD_GOING_AWAY_FLAG_NO_WINDOW_ANIMATIONS;
}
- if (mStatusBarKeyguardViewManager.isGoingToNotificationShade()
+ if (mStatusBarKeyguardViewManagerLazy.get().isGoingToNotificationShade()
|| (mWakeAndUnlocking && mPulsing)) {
flags |= WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG_TO_SHADE;
}
- if (mStatusBarKeyguardViewManager.isUnlockWithWallpaper()) {
+ if (mStatusBarKeyguardViewManagerLazy.get().isUnlockWithWallpaper()) {
flags |= WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG_WITH_WALLPAPER;
}
- if (mStatusBarKeyguardViewManager.shouldSubtleWindowAnimationsForUnlock()) {
+ if (mStatusBarKeyguardViewManagerLazy.get().shouldSubtleWindowAnimationsForUnlock()) {
flags |= WindowManagerPolicyConstants
.KEYGUARD_GOING_AWAY_FLAG_SUBTLE_WINDOW_ANIMATIONS;
}
@@ -1936,7 +1926,7 @@
// Hack level over 9000: To speed up wake-and-unlock sequence, force it to report
// the next draw from here so we don't have to wait for window manager to signal
// this to our ViewRootImpl.
- mStatusBarKeyguardViewManager.getViewRootImpl().setReportNextDraw();
+ mStatusBarKeyguardViewManagerLazy.get().getViewRootImpl().setReportNextDraw();
notifyDrawn(mDrawnCallback);
mDrawnCallback = null;
}
@@ -1950,7 +1940,7 @@
setShowingLocked(false);
mWakeAndUnlocking = false;
mDismissCallbackRegistry.notifyDismissSucceeded();
- mStatusBarKeyguardViewManager.hide(startTime, fadeoutDuration);
+ mStatusBarKeyguardViewManagerLazy.get().hide(startTime, fadeoutDuration);
resetKeyguardDonePendingLocked();
mHideAnimationRun = false;
adjustStatusBarLocked();
@@ -1996,7 +1986,7 @@
private void handleReset() {
synchronized (KeyguardViewMediator.this) {
if (DEBUG) Log.d(TAG, "handleReset");
- mStatusBarKeyguardViewManager.reset(true /* hideBouncerWhenShowing */);
+ mStatusBarKeyguardViewManagerLazy.get().reset(true /* hideBouncerWhenShowing */);
}
}
@@ -2009,7 +1999,7 @@
synchronized (KeyguardViewMediator.this) {
if (DEBUG) Log.d(TAG, "handleVerifyUnlock");
setShowingLocked(true);
- mStatusBarKeyguardViewManager.dismissAndCollapse();
+ mStatusBarKeyguardViewManagerLazy.get().dismissAndCollapse();
}
Trace.endSection();
}
@@ -2017,7 +2007,7 @@
private void handleNotifyStartedGoingToSleep() {
synchronized (KeyguardViewMediator.this) {
if (DEBUG) Log.d(TAG, "handleNotifyStartedGoingToSleep");
- mStatusBarKeyguardViewManager.onStartedGoingToSleep();
+ mStatusBarKeyguardViewManagerLazy.get().onStartedGoingToSleep();
}
}
@@ -2028,7 +2018,7 @@
private void handleNotifyFinishedGoingToSleep() {
synchronized (KeyguardViewMediator.this) {
if (DEBUG) Log.d(TAG, "handleNotifyFinishedGoingToSleep");
- mStatusBarKeyguardViewManager.onFinishedGoingToSleep();
+ mStatusBarKeyguardViewManagerLazy.get().onFinishedGoingToSleep();
}
}
@@ -2036,7 +2026,7 @@
Trace.beginSection("KeyguardViewMediator#handleMotifyStartedWakingUp");
synchronized (KeyguardViewMediator.this) {
if (DEBUG) Log.d(TAG, "handleNotifyWakingUp");
- mStatusBarKeyguardViewManager.onStartedWakingUp();
+ mStatusBarKeyguardViewManagerLazy.get().onStartedWakingUp();
}
Trace.endSection();
}
@@ -2045,7 +2035,7 @@
Trace.beginSection("KeyguardViewMediator#handleNotifyScreenTurningOn");
synchronized (KeyguardViewMediator.this) {
if (DEBUG) Log.d(TAG, "handleNotifyScreenTurningOn");
- mStatusBarKeyguardViewManager.onScreenTurningOn();
+ mStatusBarKeyguardViewManagerLazy.get().onScreenTurningOn();
if (callback != null) {
if (mWakeAndUnlocking) {
mDrawnCallback = callback;
@@ -2064,7 +2054,7 @@
}
synchronized (this) {
if (DEBUG) Log.d(TAG, "handleNotifyScreenTurnedOn");
- mStatusBarKeyguardViewManager.onScreenTurnedOn();
+ mStatusBarKeyguardViewManagerLazy.get().onScreenTurnedOn();
}
Trace.endSection();
}
@@ -2113,10 +2103,10 @@
ViewGroup container, NotificationPanelView panelView,
BiometricUnlockController biometricUnlockController, ViewGroup lockIconContainer,
View notificationContainer, KeyguardBypassController bypassController) {
- mStatusBarKeyguardViewManager.registerStatusBar(statusBar, container, panelView,
+ mStatusBarKeyguardViewManagerLazy.get().registerStatusBar(statusBar, container, panelView,
biometricUnlockController, mDismissCallbackRegistry, lockIconContainer,
notificationContainer, bypassController, mFalsingManager);
- return mStatusBarKeyguardViewManager;
+ return mStatusBarKeyguardViewManagerLazy.get();
}
public void startKeyguardExitAnimation(long startTime, long fadeoutDuration) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index 8683586..31d0362 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -42,7 +42,6 @@
import com.android.keyguard.ViewMediatorCallback;
import com.android.settingslib.animation.AppearAnimationUtils;
import com.android.systemui.DejankUtils;
-import com.android.systemui.Dependency;
import com.android.systemui.SystemUIFactory;
import com.android.systemui.dock.DockManager;
import com.android.systemui.keyguard.DismissCallbackRegistry;
@@ -63,12 +62,16 @@
import java.io.PrintWriter;
import java.util.ArrayList;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Manages creating, showing, hiding and resetting the keyguard within the status bar. Calls back
* via {@link ViewMediatorCallback} to poke the wake lock and report that the keyguard is done,
* which is in turn, reported to this class by the current
* {@link com.android.keyguard.KeyguardViewBase}.
*/
+@Singleton
public class StatusBarKeyguardViewManager implements RemoteInputController.Callback,
StatusBarStateController.StateListener, ConfigurationController.ConfigurationListener,
PanelExpansionListener, NavigationModeController.ModeChangedListener {
@@ -167,13 +170,11 @@
// Dismiss action to be launched when we stop dozing or the keyguard is gone.
private DismissWithActionRequest mPendingWakeupAction;
- private final KeyguardStateController mKeyguardStateController = Dependency.get(
- KeyguardStateController.class);
- private final NotificationMediaManager mMediaManager =
- Dependency.get(NotificationMediaManager.class);
- private final SysuiStatusBarStateController mStatusBarStateController =
- (SysuiStatusBarStateController) Dependency.get(StatusBarStateController.class);
+ private final KeyguardStateController mKeyguardStateController;
+ private final NotificationMediaManager mMediaManager;
+ private final SysuiStatusBarStateController mStatusBarStateController;
private final DockManager mDockManager;
+ private final KeyguardUpdateMonitor mKeyguardUpdateManager;
private KeyguardBypassController mBypassController;
private final KeyguardUpdateMonitorCallback mUpdateMonitorCallback =
@@ -189,18 +190,33 @@
}
};
- public StatusBarKeyguardViewManager(Context context, ViewMediatorCallback callback,
- LockPatternUtils lockPatternUtils) {
+ @Inject
+ public StatusBarKeyguardViewManager(
+ Context context,
+ ViewMediatorCallback callback,
+ LockPatternUtils lockPatternUtils,
+ SysuiStatusBarStateController sysuiStatusBarStateController,
+ ConfigurationController configurationController,
+ KeyguardUpdateMonitor keyguardUpdateMonitor,
+ NavigationModeController navigationModeController,
+ DockManager dockManager,
+ StatusBarWindowController statusBarWindowController,
+ KeyguardStateController keyguardStateController,
+ NotificationMediaManager notificationMediaManager) {
mContext = context;
mViewMediatorCallback = callback;
mLockPatternUtils = lockPatternUtils;
- mStatusBarWindowController = Dependency.get(StatusBarWindowController.class);
- Dependency.get(KeyguardUpdateMonitor.class).registerCallback(mUpdateMonitorCallback);
+ mStatusBarWindowController = statusBarWindowController;
+ mKeyguardStateController = keyguardStateController;
+ mMediaManager = notificationMediaManager;
+ mKeyguardUpdateManager = keyguardUpdateMonitor;
+ mKeyguardUpdateManager.registerCallback(mUpdateMonitorCallback);
+ mStatusBarStateController = sysuiStatusBarStateController;
mStatusBarStateController.addCallback(this);
- Dependency.get(ConfigurationController.class).addCallback(this);
+ configurationController.addCallback(this);
mGesturalNav = QuickStepContract.isGesturalMode(
- Dependency.get(NavigationModeController.class).addListener(this));
- mDockManager = Dependency.get(DockManager.class);
+ navigationModeController.addListener(this));
+ mDockManager = dockManager;
if (mDockManager != null) {
mDockManager.addListener(mDockEventListener);
mIsDocked = mDockManager.isDocked();
@@ -409,7 +425,7 @@
} else {
showBouncerOrKeyguard(hideBouncerWhenShowing);
}
- Dependency.get(KeyguardUpdateMonitor.class).sendKeyguardReset();
+ mKeyguardUpdateManager.sendKeyguardReset();
updateStates();
}
}
@@ -547,7 +563,7 @@
mKeyguardStateController.isOccluded());
launchPendingWakeupAction();
- if (Dependency.get(KeyguardUpdateMonitor.class).needsSlowUnlockTransition()) {
+ if (mKeyguardUpdateManager.needsSlowUnlockTransition()) {
fadeoutDuration = KEYGUARD_DISMISS_DURATION_LOCKED;
}
long uptimeMillis = SystemClock.uptimeMillis();
@@ -800,12 +816,11 @@
updateLockIcon();
}
- KeyguardUpdateMonitor updateMonitor = Dependency.get(KeyguardUpdateMonitor.class);
if ((showing && !occluded) != (mLastShowing && !mLastOccluded) || mFirstUpdate) {
- updateMonitor.onKeyguardVisibilityChanged(showing && !occluded);
+ mKeyguardUpdateManager.onKeyguardVisibilityChanged(showing && !occluded);
}
if (bouncerShowing != mLastBouncerShowing || mFirstUpdate) {
- updateMonitor.sendKeyguardBouncerChanged(bouncerShowing);
+ mKeyguardUpdateManager.sendKeyguardBouncerChanged(bouncerShowing);
}
mFirstUpdate = false;
@@ -889,8 +904,7 @@
}
public boolean isGoingToNotificationShade() {
- return ((SysuiStatusBarStateController) Dependency.get(StatusBarStateController.class))
- .leaveOpenOnKeyguardHide();
+ return mStatusBarStateController.leaveOpenOnKeyguardHide();
}
public boolean isSecure(int userId) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
index c815279..3b47cce 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
@@ -18,14 +18,12 @@
import static android.view.WindowManagerPolicyConstants.OFF_BECAUSE_OF_USER;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.admin.DevicePolicyManager;
-import android.content.Context;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
import android.testing.TestableLooper.RunWithLooper;
@@ -34,8 +32,6 @@
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor;
-import com.android.keyguard.ViewMediatorCallback;
-import com.android.systemui.SystemUIFactory;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.classifier.FalsingManagerFake;
@@ -60,7 +56,6 @@
private @Mock KeyguardUpdateMonitor mUpdateMonitor;
private @Mock StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
private @Mock StatusBarWindowController mStatusBarWindowController;
- private @Mock SystemUIFactory mSystemUIFactory;
private @Mock BroadcastDispatcher mBroadcastDispatcher;
private FalsingManagerFake mFalsingManager;
@@ -76,15 +71,11 @@
mStatusBarWindowController);
when(mLockPatternUtils.getDevicePolicyManager()).thenReturn(mDevicePolicyManager);
- when(mSystemUIFactory.createStatusBarKeyguardViewManager(
- any(Context.class),
- any(ViewMediatorCallback.class),
- any(LockPatternUtils.class))).thenReturn(mStatusBarKeyguardViewManager);
TestableLooper.get(this).runWithLooper(() -> {
mViewMediator = new KeyguardViewMediator(
mContext, mFalsingManager, mLockPatternUtils, mBroadcastDispatcher,
- mSystemUIFactory);
+ () -> mStatusBarKeyguardViewManager);
});
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java
index 3e07cff..61e5058 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java
@@ -41,12 +41,13 @@
import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.classifier.FalsingManagerFake;
+import com.android.systemui.dock.DockManager;
import com.android.systemui.keyguard.DismissCallbackRegistry;
import com.android.systemui.plugins.ActivityStarter.OnDismissAction;
import com.android.systemui.plugins.FalsingManager;
-import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationMediaManager;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
+import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import org.junit.Before;
@@ -91,16 +92,21 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- mDependency.injectMockDependency(StatusBarWindowController.class);
- mDependency.injectMockDependency(KeyguardUpdateMonitor.class);
- mDependency.injectMockDependency(NotificationMediaManager.class);
- mDependency.injectTestDependency(StatusBarStateController.class, mStatusBarStateController);
- mDependency.injectTestDependency(KeyguardStateController.class, mKeyguardStateController);
when(mLockIconContainer.getParent()).thenReturn(mock(ViewGroup.class));
when(mLockIconContainer.animate()).thenReturn(mock(ViewPropertyAnimator.class,
RETURNS_DEEP_STUBS));
- mStatusBarKeyguardViewManager = new TestableStatusBarKeyguardViewManager(getContext(),
- mViewMediatorCallback, mLockPatternUtils);
+ mStatusBarKeyguardViewManager = new TestableStatusBarKeyguardViewManager(
+ getContext(),
+ mViewMediatorCallback,
+ mLockPatternUtils,
+ mStatusBarStateController,
+ mock(ConfigurationController.class),
+ mock(KeyguardUpdateMonitor.class),
+ mock(NavigationModeController.class),
+ mock(DockManager.class),
+ mock(StatusBarWindowController.class),
+ mKeyguardStateController,
+ mock(NotificationMediaManager.class));
mStatusBarKeyguardViewManager.registerStatusBar(mStatusBar, mContainer,
mNotificationPanelView, mBiometrucUnlockController, mDismissCallbackRegistry,
mLockIconContainer, mNotificationContainer, mBypassController,
@@ -258,8 +264,19 @@
public TestableStatusBarKeyguardViewManager(Context context,
ViewMediatorCallback callback,
- LockPatternUtils lockPatternUtils) {
- super(context, callback, lockPatternUtils);
+ LockPatternUtils lockPatternUtils,
+ SysuiStatusBarStateController sysuiStatusBarStateController,
+ ConfigurationController configurationController,
+ KeyguardUpdateMonitor keyguardUpdateMonitor,
+ NavigationModeController navigationModeController,
+ DockManager dockManager,
+ StatusBarWindowController statusBarWindowController,
+ KeyguardStateController keyguardStateController,
+ NotificationMediaManager notificationMediaManager) {
+ super(context, callback, lockPatternUtils, sysuiStatusBarStateController,
+ configurationController, keyguardUpdateMonitor, navigationModeController,
+ dockManager, statusBarWindowController, keyguardStateController,
+ notificationMediaManager);
}
@Override