Move SB.StateListener from LockIcon to Controller.
Remove StatusBarStateController from LockIcon constructor. Bug: 150393918 Test: atest SystemUITests Change-Id: I43579f0a1d32b1dc9d8cdd06f59878081d456013
This commit is contained in:
@@ -22,7 +22,6 @@ import android.annotation.IntDef;
|
||||
import android.content.Context;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.Animatable2;
|
||||
import android.graphics.drawable.AnimatedVectorDrawable;
|
||||
@@ -32,7 +31,6 @@ import android.os.Trace;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
|
||||
@@ -45,13 +43,11 @@ 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.plugins.statusbar.StatusBarStateController;
|
||||
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.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController;
|
||||
import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
|
||||
|
||||
@@ -65,7 +61,6 @@ import javax.inject.Named;
|
||||
* Manages the different states and animations of the unlock icon.
|
||||
*/
|
||||
public class LockIcon extends KeyguardAffordanceView implements
|
||||
StatusBarStateController.StateListener, ConfigurationController.ConfigurationListener,
|
||||
KeyguardStateController.Callback, NotificationWakeUpCoordinator.WakeUpListener,
|
||||
ViewTreeObserver.OnPreDrawListener, OnHeadsUpChangedListener {
|
||||
|
||||
@@ -73,8 +68,6 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
private static final int STATE_LOCK_OPEN = 1;
|
||||
private static final int STATE_SCANNING_FACE = 2;
|
||||
private static final int STATE_BIOMETRICS_ERROR = 3;
|
||||
private final ConfigurationController mConfigurationController;
|
||||
private final StatusBarStateController mStatusBarStateController;
|
||||
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
private final AccessibilityController mAccessibilityController;
|
||||
private final DockManager mDockManager;
|
||||
@@ -102,6 +95,7 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
private boolean mKeyguardJustShown;
|
||||
private boolean mUpdatePending;
|
||||
private boolean mBouncerPreHideAnimation;
|
||||
private int mStatusBarState = StatusBarState.SHADE;
|
||||
|
||||
private final KeyguardStateController.Callback mKeyguardMonitorCallback =
|
||||
new KeyguardStateController.Callback() {
|
||||
@@ -176,8 +170,6 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
|
||||
@Inject
|
||||
public LockIcon(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
|
||||
StatusBarStateController statusBarStateController,
|
||||
ConfigurationController configurationController,
|
||||
AccessibilityController accessibilityController,
|
||||
KeyguardBypassController bypassController,
|
||||
NotificationWakeUpCoordinator wakeUpCoordinator,
|
||||
@@ -188,8 +180,6 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
mContext = context;
|
||||
mKeyguardUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class);
|
||||
mAccessibilityController = accessibilityController;
|
||||
mConfigurationController = configurationController;
|
||||
mStatusBarStateController = statusBarStateController;
|
||||
mBypassController = bypassController;
|
||||
mWakeUpCoordinator = wakeUpCoordinator;
|
||||
mKeyguardStateController = keyguardStateController;
|
||||
@@ -200,8 +190,6 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
mStatusBarStateController.addCallback(this);
|
||||
mConfigurationController.addCallback(this);
|
||||
mKeyguardStateController.addCallback(mKeyguardMonitorCallback);
|
||||
mKeyguardUpdateMonitor.registerCallback(mUpdateMonitorCallback);
|
||||
mWakeUpCoordinator.addListener(this);
|
||||
@@ -209,15 +197,12 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
if (mDockManager != null) {
|
||||
mDockManager.addListener(mDockEventListener);
|
||||
}
|
||||
onThemeChanged();
|
||||
update();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
mStatusBarStateController.removeCallback(this);
|
||||
mConfigurationController.removeCallback(this);
|
||||
mKeyguardUpdateMonitor.removeCallback(mUpdateMonitorCallback);
|
||||
mKeyguardStateController.removeCallback(mKeyguardMonitorCallback);
|
||||
mWakeUpCoordinator.removeListener(this);
|
||||
@@ -226,15 +211,6 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onThemeChanged() {
|
||||
TypedArray typedArray = mContext.getTheme().obtainStyledAttributes(
|
||||
null, new int[]{ R.attr.wallpaperTextColor }, 0, 0);
|
||||
mIconColor = typedArray.getColor(0, Color.WHITE);
|
||||
typedArray.recycle();
|
||||
updateDarkTint();
|
||||
}
|
||||
|
||||
/**
|
||||
* If we're currently presenting an authentication error message.
|
||||
*/
|
||||
@@ -336,7 +312,7 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
|| mShowingLaunchAffordance;
|
||||
if (mBypassController.getBypassEnabled() && !mBouncerShowingScrimmed) {
|
||||
if ((mHeadsUpManager.isHeadsUpGoingAway() || mHeadsUpManager.hasPinnedHeadsUp()
|
||||
|| mStatusBarStateController.getState() == StatusBarState.KEYGUARD)
|
||||
|| mStatusBarState == StatusBarState.KEYGUARD)
|
||||
&& !mWakeUpCoordinator.getNotificationsFullyHidden()) {
|
||||
invisible = true;
|
||||
}
|
||||
@@ -473,6 +449,11 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
update();
|
||||
}
|
||||
|
||||
void setIconColor(int iconColor) {
|
||||
mIconColor = iconColor;
|
||||
updateDarkTint();
|
||||
}
|
||||
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@IntDef({ERROR, UNLOCK, LOCK, SCANNING})
|
||||
@interface LockAnimIndex {}
|
||||
@@ -532,12 +513,6 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDozeAmountChanged(float linear, float eased) {
|
||||
mDozeAmount = eased;
|
||||
updateDarkTint();
|
||||
}
|
||||
|
||||
/**
|
||||
* When keyguard is in pulsing (AOD2) state.
|
||||
* @param pulsing {@code true} when pulsing.
|
||||
@@ -547,38 +522,11 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
update();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the dozing state of the keyguard.
|
||||
*/
|
||||
@Override
|
||||
public void onDozingChanged(boolean dozing) {
|
||||
mDozing = dozing;
|
||||
update();
|
||||
}
|
||||
|
||||
private void updateDarkTint() {
|
||||
int color = ColorUtils.blendARGB(mIconColor, Color.WHITE, mDozeAmount);
|
||||
setImageTintList(ColorStateList.valueOf(color));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDensityOrFontScaleChanged() {
|
||||
ViewGroup.LayoutParams lp = getLayoutParams();
|
||||
if (lp == null) {
|
||||
return;
|
||||
}
|
||||
lp.width = getResources().getDimensionPixelSize(R.dimen.keyguard_lock_width);
|
||||
lp.height = getResources().getDimensionPixelSize(R.dimen.keyguard_lock_height);
|
||||
setLayoutParams(lp);
|
||||
update(true /* force */);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLocaleListChanged() {
|
||||
setContentDescription(getContext().getText(R.string.accessibility_unlock_button));
|
||||
update(true /* force */);
|
||||
}
|
||||
|
||||
/**
|
||||
* We need to hide the lock whenever there's a fingerprint unlock, otherwise you'll see the
|
||||
* icon on top of the black front scrim.
|
||||
@@ -614,4 +562,20 @@ public class LockIcon extends KeyguardAffordanceView implements
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
void setDozing(boolean dozing) {
|
||||
mDozing = dozing;
|
||||
update();
|
||||
}
|
||||
|
||||
void setDozeAmount(float dozeAmount) {
|
||||
mDozeAmount = dozeAmount;
|
||||
updateDarkTint();
|
||||
}
|
||||
|
||||
/** Set the StatusBarState. */
|
||||
public void setStatusBarState(int statusBarState) {
|
||||
mStatusBarState = statusBarState;
|
||||
updateIconVisibility();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,15 +16,21 @@
|
||||
|
||||
package com.android.systemui.statusbar.phone;
|
||||
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Color;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.KeyguardIndicationController;
|
||||
import com.android.systemui.statusbar.policy.AccessibilityController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
@@ -39,21 +45,93 @@ public class LockscreenLockIconController {
|
||||
private final ShadeController mShadeController;
|
||||
private final AccessibilityController mAccessibilityController;
|
||||
private final KeyguardIndicationController mKeyguardIndicationController;
|
||||
private final StatusBarStateController mStatusBarStateController;
|
||||
private final ConfigurationController mConfigurationController;
|
||||
private LockIcon mLockIcon;
|
||||
|
||||
private View.OnAttachStateChangeListener mOnAttachStateChangeListener =
|
||||
new View.OnAttachStateChangeListener() {
|
||||
@Override
|
||||
public void onViewAttachedToWindow(View v) {
|
||||
mStatusBarStateController.addCallback(mSBStateListener);
|
||||
mConfigurationController.addCallback(mConfigurationListener);
|
||||
|
||||
mConfigurationListener.onThemeChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewDetachedFromWindow(View v) {
|
||||
mStatusBarStateController.removeCallback(mSBStateListener);
|
||||
mConfigurationController.removeCallback(mConfigurationListener);
|
||||
}
|
||||
};
|
||||
|
||||
private final StatusBarStateController.StateListener mSBStateListener =
|
||||
new StatusBarStateController.StateListener() {
|
||||
@Override
|
||||
public void onDozingChanged(boolean isDozing) {
|
||||
mLockIcon.setDozing(isDozing);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDozeAmountChanged(float linear, float eased) {
|
||||
mLockIcon.setDozeAmount(eased);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStateChanged(int newState) {
|
||||
mLockIcon.setStatusBarState(newState);
|
||||
}
|
||||
};
|
||||
|
||||
private final ConfigurationListener mConfigurationListener = new ConfigurationListener() {
|
||||
@Override
|
||||
public void onThemeChanged() {
|
||||
TypedArray typedArray = mLockIcon.getContext().getTheme().obtainStyledAttributes(
|
||||
null, new int[]{ R.attr.wallpaperTextColor }, 0, 0);
|
||||
int iconColor = typedArray.getColor(0, Color.WHITE);
|
||||
typedArray.recycle();
|
||||
mLockIcon.setIconColor(iconColor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDensityOrFontScaleChanged() {
|
||||
ViewGroup.LayoutParams lp = mLockIcon.getLayoutParams();
|
||||
if (lp == null) {
|
||||
return;
|
||||
}
|
||||
lp.width = mLockIcon.getResources().getDimensionPixelSize(R.dimen.keyguard_lock_width);
|
||||
lp.height = mLockIcon.getResources().getDimensionPixelSize(
|
||||
R.dimen.keyguard_lock_height);
|
||||
mLockIcon.setLayoutParams(lp);
|
||||
mLockIcon.update(true /* force */);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLocaleListChanged() {
|
||||
mLockIcon.setContentDescription(
|
||||
mLockIcon.getResources().getText(R.string.accessibility_unlock_button));
|
||||
mLockIcon.update(true /* force */);
|
||||
}
|
||||
};
|
||||
|
||||
@Inject
|
||||
public LockscreenLockIconController(LockscreenGestureLogger lockscreenGestureLogger,
|
||||
KeyguardUpdateMonitor keyguardUpdateMonitor,
|
||||
LockPatternUtils lockPatternUtils,
|
||||
ShadeController shadeController,
|
||||
AccessibilityController accessibilityController,
|
||||
KeyguardIndicationController keyguardIndicationController) {
|
||||
KeyguardIndicationController keyguardIndicationController,
|
||||
StatusBarStateController statusBarStateController,
|
||||
ConfigurationController configurationController) {
|
||||
mLockscreenGestureLogger = lockscreenGestureLogger;
|
||||
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
|
||||
mLockPatternUtils = lockPatternUtils;
|
||||
mShadeController = shadeController;
|
||||
mAccessibilityController = accessibilityController;
|
||||
mKeyguardIndicationController = keyguardIndicationController;
|
||||
mStatusBarStateController = statusBarStateController;
|
||||
mConfigurationController = configurationController;
|
||||
|
||||
mKeyguardIndicationController.setLockIconController(this);
|
||||
}
|
||||
@@ -66,6 +144,12 @@ public class LockscreenLockIconController {
|
||||
|
||||
mLockIcon.setOnClickListener(this::handleClick);
|
||||
mLockIcon.setOnLongClickListener(this::handleLongClick);
|
||||
|
||||
if (mLockIcon.isAttachedToWindow()) {
|
||||
mOnAttachStateChangeListener.onViewAttachedToWindow(mLockIcon);
|
||||
}
|
||||
mLockIcon.addOnAttachStateChangeListener(mOnAttachStateChangeListener);
|
||||
mLockIcon.setStatusBarState(mStatusBarStateController.getState());
|
||||
}
|
||||
|
||||
public LockIcon getView() {
|
||||
|
||||
@@ -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.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.statusbar.KeyguardIndicationController;
|
||||
import com.android.systemui.statusbar.policy.AccessibilityController;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -57,6 +59,10 @@ public class LockscreenIconControllerTest extends SysuiTestCase {
|
||||
private KeyguardIndicationController mKeyguardIndicationController;
|
||||
@Mock
|
||||
private LockIcon mLockIcon; // TODO: make this not a mock once inject is removed.
|
||||
@Mock
|
||||
private StatusBarStateController mStatusBarStateController;
|
||||
@Mock
|
||||
private ConfigurationController mConfigurationController;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
@@ -64,7 +70,8 @@ public class LockscreenIconControllerTest extends SysuiTestCase {
|
||||
|
||||
mLockIconController = new LockscreenLockIconController(
|
||||
mLockscreenGestureLogger, mKeyguardUpdateMonitor, mLockPatternUtils,
|
||||
mShadeController, mAccessibilityController, mKeyguardIndicationController);
|
||||
mShadeController, mAccessibilityController, mKeyguardIndicationController,
|
||||
mStatusBarStateController, mConfigurationController);
|
||||
|
||||
mLockIconController.attach(mLockIcon);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user