Merge changes from topic "b150393918-lock-icon-controller" into rvc-dev
* changes: Move DockEventListener from LockIcon to Controller Move KeyguardUpdateMonitorCallback from LockIcon to Controller. Remove OnHeadsUpChangedListener from LockIcon. Move WakeUpListener from LockIcon to Controller. Remove KeyguardStateController.Callback from LockIcon.
This commit is contained in:
@@ -26,7 +26,6 @@ import android.graphics.Color;
|
||||
import android.graphics.drawable.Animatable2;
|
||||
import android.graphics.drawable.AnimatedVectorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.hardware.biometrics.BiometricSourceType;
|
||||
import android.os.Trace;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
@@ -34,22 +33,17 @@ import android.util.AttributeSet;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.internal.graphics.ColorUtils;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
||||
import com.android.systemui.Dependency;
|
||||
import com.android.systemui.Interpolators;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.dock.DockManager;
|
||||
import com.android.systemui.statusbar.KeyguardAffordanceView;
|
||||
import com.android.systemui.statusbar.StatusBarState;
|
||||
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
|
||||
import com.android.systemui.statusbar.phone.ScrimController.ScrimVisibility;
|
||||
import com.android.systemui.statusbar.policy.AccessibilityController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
@@ -61,8 +55,7 @@ import javax.inject.Named;
|
||||
* Manages the different states and animations of the unlock icon.
|
||||
*/
|
||||
public class LockIcon extends KeyguardAffordanceView implements
|
||||
KeyguardStateController.Callback, NotificationWakeUpCoordinator.WakeUpListener,
|
||||
ViewTreeObserver.OnPreDrawListener, OnHeadsUpChangedListener {
|
||||
ViewTreeObserver.OnPreDrawListener {
|
||||
|
||||
private static final int STATE_LOCKED = 0;
|
||||
private static final int STATE_LOCK_OPEN = 1;
|
||||
@@ -70,7 +63,6 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
private static final int STATE_BIOMETRICS_ERROR = 3;
|
||||
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
private final AccessibilityController mAccessibilityController;
|
||||
private final DockManager mDockManager;
|
||||
private final KeyguardStateController mKeyguardStateController;
|
||||
private final KeyguardBypassController mBypassController;
|
||||
private final NotificationWakeUpCoordinator mWakeUpCoordinator;
|
||||
@@ -130,43 +122,6 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
update();
|
||||
}
|
||||
};
|
||||
private final DockManager.DockEventListener mDockEventListener =
|
||||
new DockManager.DockEventListener() {
|
||||
@Override
|
||||
public void onEvent(int event) {
|
||||
boolean docked = event == DockManager.STATE_DOCKED
|
||||
|| event == DockManager.STATE_DOCKED_HIDE;
|
||||
if (docked != mDocked) {
|
||||
mDocked = docked;
|
||||
update();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private final KeyguardUpdateMonitorCallback mUpdateMonitorCallback =
|
||||
new KeyguardUpdateMonitorCallback() {
|
||||
@Override
|
||||
public void onSimStateChanged(int subId, int slotId, int simState) {
|
||||
mSimLocked = mKeyguardUpdateMonitor.isSimPinSecure();
|
||||
update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onKeyguardVisibilityChanged(boolean showing) {
|
||||
update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBiometricRunningStateChanged(boolean running,
|
||||
BiometricSourceType biometricSourceType) {
|
||||
update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStrongAuthStateChanged(int userId) {
|
||||
update();
|
||||
}
|
||||
};
|
||||
|
||||
@Inject
|
||||
public LockIcon(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
|
||||
@@ -174,7 +129,6 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
KeyguardBypassController bypassController,
|
||||
NotificationWakeUpCoordinator wakeUpCoordinator,
|
||||
KeyguardStateController keyguardStateController,
|
||||
@Nullable DockManager dockManager,
|
||||
HeadsUpManagerPhone headsUpManager) {
|
||||
super(context, attrs);
|
||||
mContext = context;
|
||||
@@ -183,7 +137,6 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
mBypassController = bypassController;
|
||||
mWakeUpCoordinator = wakeUpCoordinator;
|
||||
mKeyguardStateController = keyguardStateController;
|
||||
mDockManager = dockManager;
|
||||
mHeadsUpManager = headsUpManager;
|
||||
}
|
||||
|
||||
@@ -191,24 +144,14 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
mKeyguardStateController.addCallback(mKeyguardMonitorCallback);
|
||||
mKeyguardUpdateMonitor.registerCallback(mUpdateMonitorCallback);
|
||||
mWakeUpCoordinator.addListener(this);
|
||||
mSimLocked = mKeyguardUpdateMonitor.isSimPinSecure();
|
||||
if (mDockManager != null) {
|
||||
mDockManager.addListener(mDockEventListener);
|
||||
}
|
||||
update();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
mKeyguardUpdateMonitor.removeCallback(mUpdateMonitorCallback);
|
||||
mKeyguardStateController.removeCallback(mKeyguardMonitorCallback);
|
||||
mWakeUpCoordinator.removeListener(this);
|
||||
if (mDockManager != null) {
|
||||
mDockManager.removeListener(mDockEventListener);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -306,7 +249,7 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
* Update the icon visibility
|
||||
* @return true if the visibility changed
|
||||
*/
|
||||
private boolean updateIconVisibility() {
|
||||
boolean updateIconVisibility() {
|
||||
boolean onAodNotPulsingOrDocked = mDozing && (!mPulsing || mDocked);
|
||||
boolean invisible = onAodNotPulsingOrDocked || mWakeAndUnlockRunning
|
||||
|| mShowingLaunchAffordance;
|
||||
@@ -424,16 +367,6 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFullyHiddenChanged(boolean isFullyHidden) {
|
||||
if (mBypassController.getBypassEnabled()) {
|
||||
boolean changed = updateIconVisibility();
|
||||
if (changed) {
|
||||
update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setBouncerShowingScrimmed(boolean bouncerShowing) {
|
||||
mBouncerShowingScrimmed = bouncerShowing;
|
||||
if (mBypassController.getBypassEnabled()) {
|
||||
@@ -454,6 +387,18 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
updateDarkTint();
|
||||
}
|
||||
|
||||
void setSimLocked(boolean simLocked) {
|
||||
mSimLocked = simLocked;
|
||||
}
|
||||
|
||||
/** Set if the device is docked. */
|
||||
public void setDocked(boolean docked) {
|
||||
if (mDocked != docked) {
|
||||
mDocked = docked;
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@IntDef({ERROR, UNLOCK, LOCK, SCANNING})
|
||||
@interface LockAnimIndex {}
|
||||
|
||||
@@ -18,20 +18,29 @@ package com.android.systemui.statusbar.phone;
|
||||
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Color;
|
||||
import android.hardware.biometrics.BiometricSourceType;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.dock.DockManager;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.KeyguardIndicationController;
|
||||
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
|
||||
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator.WakeUpListener;
|
||||
import com.android.systemui.statusbar.policy.AccessibilityController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@@ -47,6 +56,9 @@ public class LockscreenLockIconController {
|
||||
private final KeyguardIndicationController mKeyguardIndicationController;
|
||||
private final StatusBarStateController mStatusBarStateController;
|
||||
private final ConfigurationController mConfigurationController;
|
||||
private final NotificationWakeUpCoordinator mNotificationWakeUpCoordinator;
|
||||
private final KeyguardBypassController mKeyguardBypassController;
|
||||
private final Optional<DockManager> mDockManager;
|
||||
private LockIcon mLockIcon;
|
||||
|
||||
private View.OnAttachStateChangeListener mOnAttachStateChangeListener =
|
||||
@@ -55,6 +67,10 @@ public class LockscreenLockIconController {
|
||||
public void onViewAttachedToWindow(View v) {
|
||||
mStatusBarStateController.addCallback(mSBStateListener);
|
||||
mConfigurationController.addCallback(mConfigurationListener);
|
||||
mNotificationWakeUpCoordinator.addListener(mWakeUpListener);
|
||||
mKeyguardUpdateMonitor.registerCallback(mUpdateMonitorCallback);
|
||||
|
||||
mDockManager.ifPresent(dockManager -> dockManager.addListener(mDockEventListener));
|
||||
|
||||
mConfigurationListener.onThemeChanged();
|
||||
}
|
||||
@@ -63,6 +79,11 @@ public class LockscreenLockIconController {
|
||||
public void onViewDetachedFromWindow(View v) {
|
||||
mStatusBarStateController.removeCallback(mSBStateListener);
|
||||
mConfigurationController.removeCallback(mConfigurationListener);
|
||||
mNotificationWakeUpCoordinator.removeListener(mWakeUpListener);
|
||||
mKeyguardUpdateMonitor.removeCallback(mUpdateMonitorCallback);
|
||||
|
||||
|
||||
mDockManager.ifPresent(dockManager -> dockManager.removeListener(mDockEventListener));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -115,6 +136,47 @@ public class LockscreenLockIconController {
|
||||
}
|
||||
};
|
||||
|
||||
private final WakeUpListener mWakeUpListener = new WakeUpListener() {
|
||||
@Override
|
||||
public void onFullyHiddenChanged(boolean isFullyHidden) {
|
||||
if (mKeyguardBypassController.getBypassEnabled()) {
|
||||
boolean changed = mLockIcon.updateIconVisibility();
|
||||
if (changed) {
|
||||
mLockIcon.update();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private final KeyguardUpdateMonitorCallback mUpdateMonitorCallback =
|
||||
new KeyguardUpdateMonitorCallback() {
|
||||
@Override
|
||||
public void onSimStateChanged(int subId, int slotId, int simState) {
|
||||
mLockIcon.setSimLocked(mKeyguardUpdateMonitor.isSimPinSecure());
|
||||
mLockIcon.update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onKeyguardVisibilityChanged(boolean showing) {
|
||||
mLockIcon.update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBiometricRunningStateChanged(boolean running,
|
||||
BiometricSourceType biometricSourceType) {
|
||||
mLockIcon.update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStrongAuthStateChanged(int userId) {
|
||||
mLockIcon.update();
|
||||
}
|
||||
};
|
||||
|
||||
private final DockManager.DockEventListener mDockEventListener =
|
||||
event -> mLockIcon.setDocked(event == DockManager.STATE_DOCKED
|
||||
|| event == DockManager.STATE_DOCKED_HIDE);
|
||||
|
||||
@Inject
|
||||
public LockscreenLockIconController(LockscreenGestureLogger lockscreenGestureLogger,
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
||||
@@ -123,7 +185,10 @@ public class LockscreenLockIconController {
|
||||
AccessibilityController accessibilityController,
|
||||
KeyguardIndicationController keyguardIndicationController,
|
||||
StatusBarStateController statusBarStateController,
|
||||
ConfigurationController configurationController) {
|
||||
ConfigurationController configurationController,
|
||||
NotificationWakeUpCoordinator notificationWakeUpCoordinator,
|
||||
KeyguardBypassController keyguardBypassController,
|
||||
@Nullable DockManager dockManager) {
|
||||
mLockscreenGestureLogger = lockscreenGestureLogger;
|
||||
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
|
||||
mLockPatternUtils = lockPatternUtils;
|
||||
@@ -132,6 +197,9 @@ public class LockscreenLockIconController {
|
||||
mKeyguardIndicationController = keyguardIndicationController;
|
||||
mStatusBarStateController = statusBarStateController;
|
||||
mConfigurationController = configurationController;
|
||||
mNotificationWakeUpCoordinator = notificationWakeUpCoordinator;
|
||||
mKeyguardBypassController = keyguardBypassController;
|
||||
mDockManager = dockManager == null ? Optional.empty() : Optional.of(dockManager);
|
||||
|
||||
mKeyguardIndicationController.setLockIconController(this);
|
||||
}
|
||||
|
||||
@@ -29,8 +29,10 @@ import androidx.test.runner.AndroidJUnit4;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.dock.DockManager;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.statusbar.KeyguardIndicationController;
|
||||
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
|
||||
import com.android.systemui.statusbar.policy.AccessibilityController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
|
||||
@@ -63,6 +65,13 @@ public class LockscreenIconControllerTest extends SysuiTestCase {
|
||||
private StatusBarStateController mStatusBarStateController;
|
||||
@Mock
|
||||
private ConfigurationController mConfigurationController;
|
||||
@Mock
|
||||
private NotificationWakeUpCoordinator mNotificationWakeUpCoordinator;
|
||||
@Mock
|
||||
private KeyguardBypassController mKeyguardBypassController;
|
||||
@Mock
|
||||
private DockManager mDockManager;
|
||||
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
@@ -71,7 +80,8 @@ public class LockscreenIconControllerTest extends SysuiTestCase {
|
||||
mLockIconController = new LockscreenLockIconController(
|
||||
mLockscreenGestureLogger, mKeyguardUpdateMonitor, mLockPatternUtils,
|
||||
mShadeController, mAccessibilityController, mKeyguardIndicationController,
|
||||
mStatusBarStateController, mConfigurationController);
|
||||
mStatusBarStateController, mConfigurationController, mNotificationWakeUpCoordinator,
|
||||
mKeyguardBypassController, mDockManager);
|
||||
|
||||
mLockIconController.attach(mLockIcon);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user