Merge changes Ie8264c4d,Ic83ac0f1 into mnc-dr-dev

* changes:
  Fix jank in wake-and-unlock while pulsing
  Don't call authenticate immediately after getting valid fingerprint
This commit is contained in:
Jorim Jaggi
2015-08-20 02:18:20 +00:00
committed by Android (Google) Code Review
4 changed files with 41 additions and 15 deletions

View File

@@ -147,6 +147,12 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
private int mRingMode;
private int mPhoneState;
private boolean mKeyguardIsVisible;
/**
* If true, fingerprint was already authenticated and we don't need to start listening again
* until the Keyguard has been dismissed.
*/
private boolean mFingerprintAlreadyAuthenticated;
private boolean mBouncer;
private boolean mBootCompleted;
private boolean mUserHasAuthenticatedSinceBoot;
@@ -373,6 +379,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
private void onFingerprintAuthenticated(int userId) {
mUserFingerprintAuthenticated.put(userId, true);
// If fingerprint unlocking is allowed, this event will lead to a Keyguard dismiss or to a
// wake-up (if Keyguard is not showing), so we don't need to listen until Keyguard is
// fully gone.
mFingerprintAlreadyAuthenticated = isUnlockingWithFingerprintAllowed();
for (int i = 0; i < mCallbacks.size(); i++) {
KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
if (cb != null) {
@@ -818,6 +829,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
cb.onFinishedGoingToSleep(arg1);
}
}
mFingerprintAlreadyAuthenticated = false;
updateFingerprintListeningState();
}
@@ -951,13 +963,14 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
}
private boolean shouldListenForFingerprint() {
return (mKeyguardIsVisible || !mDeviceInteractive) && !mSwitchingUser;
return (mKeyguardIsVisible || !mDeviceInteractive) && !mSwitchingUser
&& !mFingerprintAlreadyAuthenticated;
}
private void startListeningForFingerprint() {
if (DEBUG) Log.v(TAG, "startListeningForFingerprint()");
int userId = ActivityManager.getCurrentUser();
if (!mFingerprintDetectionRunning && isUnlockWithFingerprintPossible(userId)) {
if (isUnlockWithFingerprintPossible(userId)) {
mUserHasAuthenticatedSinceBoot = mTrustManager.hasUserAuthenticatedSinceBoot(
ActivityManager.getCurrentUser());
if (mFingerprintCancelSignal != null) {
@@ -1249,6 +1262,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
cb.onKeyguardVisibilityChangedRaw(isShowing);
}
}
if (!isShowing) {
mFingerprintAlreadyAuthenticated = false;
}
updateFingerprintListeningState();
}

View File

@@ -2388,4 +2388,9 @@ public class NotificationPanelView extends PanelView implements
protected boolean isPanelVisibleBecauseOfHeadsUp() {
return mHeadsUpManager.hasPinnedHeadsUp() || mHeadsUpAnimatingAway;
}
@Override
public boolean hasOverlappingRendering() {
return !mDozing;
}
}

View File

@@ -232,7 +232,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
public static final int FADE_KEYGUARD_START_DELAY = 100;
public static final int FADE_KEYGUARD_DURATION = 300;
public static final int FADE_KEYGUARD_DURATION_PULSING = 120;
public static final int FADE_KEYGUARD_DURATION_PULSING = 96;
/** Allow some time inbetween the long press for back and recents. */
private static final int LOCK_TO_APP_GESTURE_TOLERENCE = 200;
@@ -3441,16 +3441,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
.alpha(0f)
.setStartDelay(0)
.setDuration(FADE_KEYGUARD_DURATION_PULSING)
.setInterpolator(ScrimController.KEYGUARD_FADE_OUT_INTERPOLATOR)
.withLayer()
.withEndAction(new Runnable() {
@Override
public void run() {
mNotificationPanel.setAlpha(1f);
hideKeyguard();
}
})
.start();
.setInterpolator(ScrimController.KEYGUARD_FADE_OUT_INTERPOLATOR);
}
/**
@@ -3516,6 +3507,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
mQSPanel.refreshAllTiles();
}
mHandler.removeMessages(MSG_LAUNCH_TRANSITION_TIMEOUT);
mNotificationPanel.setAlpha(1f);
return staying;
}

View File

@@ -279,10 +279,15 @@ public class StatusBarKeyguardViewManager {
if (mFingerprintUnlockController.getMode()
== FingerprintUnlockController.MODE_WAKE_AND_UNLOCK_PULSING) {
mFingerprintUnlockController.startKeyguardFadingAway();
mPhoneStatusBar.setKeyguardFadingAway(startTime, 0, 250);
mPhoneStatusBar.setKeyguardFadingAway(startTime, 0, 240);
mStatusBarWindowManager.setKeyguardFadingAway(true);
mPhoneStatusBar.fadeKeyguardWhilePulsing();
animateScrimControllerKeyguardFadingOut(0, 250);
animateScrimControllerKeyguardFadingOut(0, 240, new Runnable() {
@Override
public void run() {
mPhoneStatusBar.hideKeyguard();
}
});
} else {
mFingerprintUnlockController.startKeyguardFadingAway();
mPhoneStatusBar.setKeyguardFadingAway(startTime, delay, fadeoutDuration);
@@ -316,10 +321,18 @@ public class StatusBarKeyguardViewManager {
}
private void animateScrimControllerKeyguardFadingOut(long delay, long duration) {
animateScrimControllerKeyguardFadingOut(delay, duration, null /* endRunnable */);
}
private void animateScrimControllerKeyguardFadingOut(long delay, long duration,
final Runnable endRunnable) {
Trace.asyncTraceBegin(Trace.TRACE_TAG_VIEW, "Fading out", 0);
mScrimController.animateKeyguardFadingOut(delay, duration, new Runnable() {
@Override
public void run() {
if (endRunnable != null) {
endRunnable.run();
}
mStatusBarWindowManager.setKeyguardFadingAway(false);
mPhoneStatusBar.finishKeyguardFadingAway();
mFingerprintUnlockController.finishKeyguardFadingAway();