Merge "Enable easier burn in testing" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
781fa1804b
@@ -19,8 +19,10 @@ package com.android.systemui.biometrics;
|
||||
import android.content.Context;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.systemui.R;
|
||||
|
||||
@@ -33,6 +35,7 @@ public abstract class UdfpsAnimation extends Drawable {
|
||||
|
||||
@NonNull protected final Context mContext;
|
||||
@NonNull protected final Drawable mFingerprintDrawable;
|
||||
@Nullable private View mView;
|
||||
|
||||
public UdfpsAnimation(@NonNull Context context) {
|
||||
mContext = context;
|
||||
@@ -53,6 +56,10 @@ public abstract class UdfpsAnimation extends Drawable {
|
||||
mFingerprintDrawable.setAlpha(alpha);
|
||||
}
|
||||
|
||||
public void setAnimationView(UdfpsAnimationView view) {
|
||||
mView = view;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The amount of padding that's needed on each side of the sensor, in pixels.
|
||||
*/
|
||||
@@ -66,4 +73,10 @@ public abstract class UdfpsAnimation extends Drawable {
|
||||
public int getPaddingY() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
protected void postInvalidateView() {
|
||||
if (mView != null) {
|
||||
mView.postInvalidate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.ColorFilter;
|
||||
import android.util.MathUtils;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -42,7 +41,6 @@ public class UdfpsAnimationKeyguard extends UdfpsAnimation implements DozeReceiv
|
||||
|
||||
private static final String TAG = "UdfpsAnimationKeyguard";
|
||||
|
||||
@NonNull private final View mParent;
|
||||
@NonNull private final Context mContext;
|
||||
private final int mMaxBurnInOffsetX;
|
||||
private final int mMaxBurnInOffsetY;
|
||||
@@ -52,10 +50,9 @@ public class UdfpsAnimationKeyguard extends UdfpsAnimation implements DozeReceiv
|
||||
private float mBurnInOffsetX;
|
||||
private float mBurnInOffsetY;
|
||||
|
||||
UdfpsAnimationKeyguard(@NonNull View parent, @NonNull Context context,
|
||||
UdfpsAnimationKeyguard(@NonNull Context context,
|
||||
@NonNull StatusBarStateController statusBarStateController) {
|
||||
super(context);
|
||||
mParent = parent;
|
||||
mContext = context;
|
||||
|
||||
mMaxBurnInOffsetX = context.getResources()
|
||||
@@ -73,10 +70,10 @@ public class UdfpsAnimationKeyguard extends UdfpsAnimation implements DozeReceiv
|
||||
mInterpolatedDarkAmount);
|
||||
mBurnInOffsetY = MathUtils.lerp(0f,
|
||||
getBurnInOffset(mMaxBurnInOffsetY * 2, false /* xAxis */)
|
||||
- 0.5f * mMaxBurnInOffsetY,
|
||||
- mMaxBurnInOffsetY,
|
||||
mInterpolatedDarkAmount);
|
||||
updateColor();
|
||||
mParent.postInvalidate();
|
||||
postInvalidateView();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -74,7 +74,14 @@ public class UdfpsAnimationView extends View implements DozeReceiver,
|
||||
}
|
||||
|
||||
void setAnimation(@Nullable UdfpsAnimation animation) {
|
||||
if (mUdfpsAnimation != null) {
|
||||
mUdfpsAnimation.setAnimationView(null);
|
||||
}
|
||||
|
||||
mUdfpsAnimation = animation;
|
||||
if (mUdfpsAnimation != null) {
|
||||
mUdfpsAnimation.setAnimationView(this);
|
||||
}
|
||||
}
|
||||
|
||||
void onSensorRectUpdated(@NonNull RectF sensorRect) {
|
||||
|
||||
@@ -44,7 +44,6 @@ import com.android.systemui.dagger.SysUISingleton;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.doze.DozeReceiver;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.statusbar.phone.ScrimController;
|
||||
import com.android.systemui.statusbar.phone.StatusBar;
|
||||
import com.android.systemui.util.concurrency.DelayableExecutor;
|
||||
|
||||
@@ -324,7 +323,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback {
|
||||
case IUdfpsOverlayController.REASON_ENROLL_ENROLLING:
|
||||
return new UdfpsAnimationEnroll(mContext);
|
||||
case IUdfpsOverlayController.REASON_AUTH_FPM_KEYGUARD:
|
||||
return new UdfpsAnimationKeyguard(mView, mContext, mStatusBarStateController);
|
||||
return new UdfpsAnimationKeyguard(mContext, mStatusBarStateController);
|
||||
case IUdfpsOverlayController.REASON_AUTH_FPM_OTHER:
|
||||
return new UdfpsAnimationFpmOther(mContext);
|
||||
default:
|
||||
|
||||
@@ -113,6 +113,7 @@ public class UdfpsView extends FrameLayout implements DozeReceiver, UdfpsIllumin
|
||||
|
||||
void setExtras(@Nullable UdfpsAnimation animation, @Nullable UdfpsEnrollHelper enrollHelper) {
|
||||
mAnimationView.setAnimation(animation);
|
||||
|
||||
mEnrollHelper = enrollHelper;
|
||||
|
||||
if (enrollHelper != null) {
|
||||
|
||||
@@ -32,6 +32,7 @@ import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.systemui.doze.dagger.DozeScope;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||
import com.android.systemui.tuner.TunerService;
|
||||
import com.android.systemui.util.AlarmTimeout;
|
||||
@@ -41,12 +42,15 @@ import java.util.Calendar;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import dagger.Lazy;
|
||||
|
||||
/**
|
||||
* The policy controlling doze.
|
||||
*/
|
||||
@DozeScope
|
||||
public class DozeUi implements DozeMachine.Part, TunerService.Tunable {
|
||||
|
||||
// if enabled, calls dozeTimeTick() whenever the time changes:
|
||||
private static final boolean BURN_IN_TESTING_ENABLED = false;
|
||||
private static final long TIME_TICK_DEADLINE_MILLIS = 90 * 1000; // 1.5min
|
||||
private final Context mContext;
|
||||
private final DozeHost mHost;
|
||||
@@ -57,16 +61,28 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable {
|
||||
private final boolean mCanAnimateTransition;
|
||||
private final DozeParameters mDozeParameters;
|
||||
private final DozeLog mDozeLog;
|
||||
private final Lazy<StatusBarStateController> mStatusBarStateController;
|
||||
|
||||
private boolean mKeyguardShowing;
|
||||
private final KeyguardUpdateMonitorCallback mKeyguardVisibilityCallback =
|
||||
new KeyguardUpdateMonitorCallback() {
|
||||
|
||||
@Override
|
||||
public void onKeyguardVisibilityChanged(boolean showing) {
|
||||
mKeyguardShowing = showing;
|
||||
updateAnimateScreenOff();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimeChanged() {
|
||||
if (BURN_IN_TESTING_ENABLED && mStatusBarStateController != null
|
||||
&& mStatusBarStateController.get().isDozing()) {
|
||||
// update whenever the time changes for manual burn in testing
|
||||
mHost.dozeTimeTick();
|
||||
|
||||
// Keep wakelock until a frame has been pushed.
|
||||
mHandler.post(mWakeLock.wrap(() -> {}));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private long mLastTimeTickElapsed = 0;
|
||||
@@ -75,7 +91,8 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable {
|
||||
public DozeUi(Context context, AlarmManager alarmManager,
|
||||
WakeLock wakeLock, DozeHost host, @Main Handler handler,
|
||||
DozeParameters params, KeyguardUpdateMonitor keyguardUpdateMonitor,
|
||||
DozeLog dozeLog, TunerService tunerService) {
|
||||
DozeLog dozeLog, TunerService tunerService,
|
||||
Lazy<StatusBarStateController> statusBarStateController) {
|
||||
mContext = context;
|
||||
mWakeLock = wakeLock;
|
||||
mHost = host;
|
||||
@@ -85,8 +102,8 @@ public class DozeUi implements DozeMachine.Part, TunerService.Tunable {
|
||||
mTimeTicker = new AlarmTimeout(alarmManager, this::onTimeTick, "doze_time_tick", handler);
|
||||
keyguardUpdateMonitor.registerCallback(mKeyguardVisibilityCallback);
|
||||
mDozeLog = dozeLog;
|
||||
|
||||
tunerService.addTunable(this, Settings.Secure.DOZE_ALWAYS_ON);
|
||||
mStatusBarStateController = statusBarStateController;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -41,6 +41,7 @@ import androidx.test.runner.AndroidJUnit4;
|
||||
|
||||
import com.android.keyguard.KeyguardUpdateMonitor;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController;
|
||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
||||
import com.android.systemui.tuner.TunerService;
|
||||
import com.android.systemui.util.wakelock.WakeLockFake;
|
||||
@@ -74,6 +75,8 @@ public class DozeUiTest extends SysuiTestCase {
|
||||
private Handler mHandler;
|
||||
private HandlerThread mHandlerThread;
|
||||
private DozeUi mDozeUi;
|
||||
@Mock
|
||||
private StatusBarStateController mStatusBarStateController;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
@@ -85,7 +88,8 @@ public class DozeUiTest extends SysuiTestCase {
|
||||
mHandler = mHandlerThread.getThreadHandler();
|
||||
|
||||
mDozeUi = new DozeUi(mContext, mAlarmManager, mWakeLock, mHost, mHandler,
|
||||
mDozeParameters, mKeyguardUpdateMonitor, mDozeLog, mTunerService);
|
||||
mDozeParameters, mKeyguardUpdateMonitor, mDozeLog, mTunerService,
|
||||
() -> mStatusBarStateController);
|
||||
mDozeUi.setDozeMachine(mMachine);
|
||||
}
|
||||
|
||||
@@ -141,7 +145,8 @@ public class DozeUiTest extends SysuiTestCase {
|
||||
reset(mHost);
|
||||
when(mDozeParameters.getDisplayNeedsBlanking()).thenReturn(true);
|
||||
mDozeUi = new DozeUi(mContext, mAlarmManager, mWakeLock, mHost, mHandler,
|
||||
mDozeParameters, mKeyguardUpdateMonitor, mDozeLog, mTunerService);
|
||||
mDozeParameters, mKeyguardUpdateMonitor, mDozeLog, mTunerService,
|
||||
() -> mStatusBarStateController);
|
||||
mDozeUi.setDozeMachine(mMachine);
|
||||
|
||||
// Never animate if display doesn't support it.
|
||||
|
||||
Reference in New Issue
Block a user