Merge "Lazy load BiometricUnlockController" into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-04-28 18:20:16 +00:00
committed by Android (Google) Code Review
3 changed files with 27 additions and 13 deletions

View File

@@ -51,6 +51,8 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import dagger.Lazy;
/** /**
* Automotive implementation of the {@link KeyguardViewController}. It controls the Keyguard View * Automotive implementation of the {@link KeyguardViewController}. It controls the Keyguard View
* that is mounted to the SystemUIOverlayWindow. * that is mounted to the SystemUIOverlayWindow.
@@ -66,9 +68,10 @@ public class CarKeyguardViewController extends OverlayViewController implements
private final CarServiceProvider mCarServiceProvider; private final CarServiceProvider mCarServiceProvider;
private final KeyguardStateController mKeyguardStateController; private final KeyguardStateController mKeyguardStateController;
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
private final Lazy<BiometricUnlockController> mBiometricUnlockControllerLazy;
private final LockPatternUtils mLockPatternUtils; private final LockPatternUtils mLockPatternUtils;
private final FalsingManager mFalsingManager; private final FalsingManager mFalsingManager;
private final KeyguardBypassController mKeyguardBypassController; private final Lazy<KeyguardBypassController> mKeyguardBypassControllerLazy;
private final DismissCallbackRegistry mDismissCallbackRegistry; private final DismissCallbackRegistry mDismissCallbackRegistry;
private final ViewMediatorCallback mViewMediatorCallback; private final ViewMediatorCallback mViewMediatorCallback;
private final CarNavigationBarController mCarNavigationBarController; private final CarNavigationBarController mCarNavigationBarController;
@@ -109,14 +112,14 @@ public class CarKeyguardViewController extends OverlayViewController implements
OverlayViewGlobalStateController overlayViewGlobalStateController, OverlayViewGlobalStateController overlayViewGlobalStateController,
KeyguardStateController keyguardStateController, KeyguardStateController keyguardStateController,
KeyguardUpdateMonitor keyguardUpdateMonitor, KeyguardUpdateMonitor keyguardUpdateMonitor,
BiometricUnlockController biometricUnlockController, Lazy<BiometricUnlockController> biometricUnlockControllerLazy,
ViewMediatorCallback viewMediatorCallback, ViewMediatorCallback viewMediatorCallback,
CarNavigationBarController carNavigationBarController, CarNavigationBarController carNavigationBarController,
/* The params below are only used to reuse KeyguardBouncer */ /* The params below are only used to reuse KeyguardBouncer */
LockPatternUtils lockPatternUtils, LockPatternUtils lockPatternUtils,
DismissCallbackRegistry dismissCallbackRegistry, DismissCallbackRegistry dismissCallbackRegistry,
FalsingManager falsingManager, FalsingManager falsingManager,
KeyguardBypassController keyguardBypassController) { Lazy<KeyguardBypassController> keyguardBypassControllerLazy) {
super(R.id.keyguard_stub, overlayViewGlobalStateController); super(R.id.keyguard_stub, overlayViewGlobalStateController);
@@ -125,14 +128,14 @@ public class CarKeyguardViewController extends OverlayViewController implements
mCarServiceProvider = carServiceProvider; mCarServiceProvider = carServiceProvider;
mKeyguardStateController = keyguardStateController; mKeyguardStateController = keyguardStateController;
mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mBiometricUnlockControllerLazy = biometricUnlockControllerLazy;
mLockPatternUtils = lockPatternUtils; mLockPatternUtils = lockPatternUtils;
mFalsingManager = falsingManager; mFalsingManager = falsingManager;
mKeyguardBypassController = keyguardBypassController; mKeyguardBypassControllerLazy = keyguardBypassControllerLazy;
mDismissCallbackRegistry = dismissCallbackRegistry; mDismissCallbackRegistry = dismissCallbackRegistry;
mViewMediatorCallback = viewMediatorCallback; mViewMediatorCallback = viewMediatorCallback;
mCarNavigationBarController = carNavigationBarController; mCarNavigationBarController = carNavigationBarController;
biometricUnlockController.setKeyguardViewController(this);
registerUserSwitchedListener(); registerUserSwitchedListener();
} }
@@ -142,7 +145,8 @@ public class CarKeyguardViewController extends OverlayViewController implements
mViewMediatorCallback, mLockPatternUtils, mViewMediatorCallback, mLockPatternUtils,
getLayout().findViewById(R.id.keyguard_container), mDismissCallbackRegistry, getLayout().findViewById(R.id.keyguard_container), mDismissCallbackRegistry,
mExpansionCallback, mKeyguardStateController, mFalsingManager, mExpansionCallback, mKeyguardStateController, mFalsingManager,
mKeyguardBypassController); mKeyguardBypassControllerLazy.get());
mBiometricUnlockControllerLazy.get().setKeyguardViewController(this);
} }
@Override @Override

View File

@@ -17,6 +17,7 @@
package com.android.systemui.car.window; package com.android.systemui.car.window;
import android.content.Context; import android.content.Context;
import android.util.Log;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.SystemUI; import com.android.systemui.SystemUI;
@@ -35,7 +36,7 @@ import javax.inject.Singleton;
*/ */
@Singleton @Singleton
public class SystemUIOverlayWindowManager extends SystemUI { public class SystemUIOverlayWindowManager extends SystemUI {
private static final String TAG = "SystemUIOverlayWindowManager"; private static final String TAG = "SystemUIOverlayWM";
private final Map<Class<?>, Provider<OverlayViewMediator>> private final Map<Class<?>, Provider<OverlayViewMediator>>
mContentMediatorCreators; mContentMediatorCreators;
private final OverlayViewGlobalStateController mOverlayViewGlobalStateController; private final OverlayViewGlobalStateController mOverlayViewGlobalStateController;
@@ -59,6 +60,7 @@ public class SystemUIOverlayWindowManager extends SystemUI {
private void startServices(String[] services) { private void startServices(String[] services) {
for (String clsName : services) { for (String clsName : services) {
long ti = System.currentTimeMillis();
try { try {
OverlayViewMediator obj = resolveContentMediator(clsName); OverlayViewMediator obj = resolveContentMediator(clsName);
if (obj == null) { if (obj == null) {
@@ -73,6 +75,12 @@ public class SystemUIOverlayWindowManager extends SystemUI {
| InvocationTargetException ex) { | InvocationTargetException ex) {
throw new RuntimeException(ex); throw new RuntimeException(ex);
} }
// Warn if initialization of component takes too long
ti = System.currentTimeMillis() - ti;
if (ti > 200) {
Log.w(TAG, "Initialization of " + clsName + " took " + ti + " ms");
}
} }
} }

View File

@@ -54,6 +54,8 @@ import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import dagger.Lazy;
@RunWith(AndroidTestingRunner.class) @RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper @TestableLooper.RunWithLooper
public class CarKeyguardViewControllerTest extends SysuiTestCase { public class CarKeyguardViewControllerTest extends SysuiTestCase {
@@ -88,13 +90,13 @@ public class CarKeyguardViewControllerTest extends SysuiTestCase {
mOverlayViewGlobalStateController, mOverlayViewGlobalStateController,
mock(KeyguardStateController.class), mock(KeyguardStateController.class),
mock(KeyguardUpdateMonitor.class), mock(KeyguardUpdateMonitor.class),
mock(BiometricUnlockController.class), () -> mock(BiometricUnlockController.class),
mock(ViewMediatorCallback.class), mock(ViewMediatorCallback.class),
mock(CarNavigationBarController.class), mock(CarNavigationBarController.class),
mock(LockPatternUtils.class), mock(LockPatternUtils.class),
mock(DismissCallbackRegistry.class), mock(DismissCallbackRegistry.class),
mock(FalsingManager.class), mock(FalsingManager.class),
mock(KeyguardBypassController.class) () -> mock(KeyguardBypassController.class)
); );
} }
@@ -186,17 +188,17 @@ public class CarKeyguardViewControllerTest extends SysuiTestCase {
OverlayViewGlobalStateController overlayViewGlobalStateController, OverlayViewGlobalStateController overlayViewGlobalStateController,
KeyguardStateController keyguardStateController, KeyguardStateController keyguardStateController,
KeyguardUpdateMonitor keyguardUpdateMonitor, KeyguardUpdateMonitor keyguardUpdateMonitor,
BiometricUnlockController biometricUnlockController, Lazy<BiometricUnlockController> biometricUnlockControllerLazy,
ViewMediatorCallback viewMediatorCallback, ViewMediatorCallback viewMediatorCallback,
CarNavigationBarController carNavigationBarController, CarNavigationBarController carNavigationBarController,
LockPatternUtils lockPatternUtils, LockPatternUtils lockPatternUtils,
DismissCallbackRegistry dismissCallbackRegistry, DismissCallbackRegistry dismissCallbackRegistry,
FalsingManager falsingManager, FalsingManager falsingManager,
KeyguardBypassController keyguardBypassController) { Lazy<KeyguardBypassController> keyguardBypassControllerLazy) {
super(context, mainHandler, carServiceProvider, overlayViewGlobalStateController, super(context, mainHandler, carServiceProvider, overlayViewGlobalStateController,
keyguardStateController, keyguardUpdateMonitor, biometricUnlockController, keyguardStateController, keyguardUpdateMonitor, biometricUnlockControllerLazy,
viewMediatorCallback, carNavigationBarController, lockPatternUtils, viewMediatorCallback, carNavigationBarController, lockPatternUtils,
dismissCallbackRegistry, falsingManager, keyguardBypassController); dismissCallbackRegistry, falsingManager, keyguardBypassControllerLazy);
} }
@Override @Override