Merge "Destroy and reinflate bouncer before showing" into tm-qpr-dev am: d3d710e837 am: f24c87c0e4
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21337997 Change-Id: Ica788bc918ce6459843a118cf4c83309952cde63 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -202,8 +202,11 @@ public class KeyguardHostViewController extends ViewController<KeyguardHostView>
|
||||
mKeyguardSecurityContainerController.onPause();
|
||||
}
|
||||
|
||||
public void resetSecurityContainer() {
|
||||
mKeyguardSecurityContainerController.reset();
|
||||
/**
|
||||
* Reinflate the view flipper child view.
|
||||
*/
|
||||
public void reinflateViewFlipper() {
|
||||
mKeyguardSecurityContainerController.reinflateViewFlipper();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -232,23 +235,19 @@ public class KeyguardHostViewController extends ViewController<KeyguardHostView>
|
||||
/**
|
||||
* Starts the animation when the Keyguard gets shown.
|
||||
*/
|
||||
public void appear(int statusBarHeight) {
|
||||
public void appear() {
|
||||
// We might still be collapsed and the view didn't have time to layout yet or still
|
||||
// be small, let's wait on the predraw to do the animation in that case.
|
||||
if (mView.getHeight() != 0 && mView.getHeight() != statusBarHeight) {
|
||||
mKeyguardSecurityContainerController.startAppearAnimation();
|
||||
} else {
|
||||
mView.getViewTreeObserver().addOnPreDrawListener(
|
||||
new ViewTreeObserver.OnPreDrawListener() {
|
||||
@Override
|
||||
public boolean onPreDraw() {
|
||||
mView.getViewTreeObserver().removeOnPreDrawListener(this);
|
||||
mKeyguardSecurityContainerController.startAppearAnimation();
|
||||
return true;
|
||||
}
|
||||
});
|
||||
mView.requestLayout();
|
||||
}
|
||||
mView.getViewTreeObserver().addOnPreDrawListener(
|
||||
new ViewTreeObserver.OnPreDrawListener() {
|
||||
@Override
|
||||
public boolean onPreDraw() {
|
||||
mView.getViewTreeObserver().removeOnPreDrawListener(this);
|
||||
mKeyguardSecurityContainerController.startAppearAnimation();
|
||||
return true;
|
||||
}
|
||||
});
|
||||
mView.requestLayout();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -744,17 +744,20 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
|
||||
}
|
||||
|
||||
private void reloadColors() {
|
||||
resetViewFlipper();
|
||||
reinflateViewFlipper();
|
||||
mView.reloadColors();
|
||||
}
|
||||
|
||||
/** Handles density or font scale changes. */
|
||||
private void onDensityOrFontScaleChanged() {
|
||||
resetViewFlipper();
|
||||
reinflateViewFlipper();
|
||||
mView.onDensityOrFontScaleChanged();
|
||||
}
|
||||
|
||||
private void resetViewFlipper() {
|
||||
/**
|
||||
* Reinflate the view flipper child view.
|
||||
*/
|
||||
public void reinflateViewFlipper() {
|
||||
mSecurityViewFlipperController.clearViews();
|
||||
mSecurityViewFlipperController.getSecurityView(mCurrentSecurityMode,
|
||||
mKeyguardSecurityCallback);
|
||||
|
||||
@@ -22,7 +22,6 @@ import android.view.ViewGroup
|
||||
import android.window.OnBackAnimationCallback
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import com.android.internal.policy.SystemBarUtils
|
||||
import com.android.keyguard.KeyguardHostViewController
|
||||
import com.android.keyguard.KeyguardSecurityModel
|
||||
import com.android.keyguard.KeyguardUpdateMonitor
|
||||
@@ -98,14 +97,14 @@ object KeyguardBouncerViewBinder {
|
||||
viewModel.setBouncerViewDelegate(delegate)
|
||||
launch {
|
||||
viewModel.show.collect {
|
||||
// Reset Security Container entirely.
|
||||
hostViewController.reinflateViewFlipper()
|
||||
hostViewController.showPromptReason(it.promptReason)
|
||||
it.errorMessage?.let { errorMessage ->
|
||||
hostViewController.showErrorMessage(errorMessage)
|
||||
}
|
||||
hostViewController.showPrimarySecurityScreen()
|
||||
hostViewController.appear(
|
||||
SystemBarUtils.getStatusBarHeight(view.context)
|
||||
)
|
||||
hostViewController.appear()
|
||||
hostViewController.onResume()
|
||||
}
|
||||
}
|
||||
@@ -114,7 +113,6 @@ object KeyguardBouncerViewBinder {
|
||||
viewModel.hide.collect {
|
||||
hostViewController.cancelDismissAction()
|
||||
hostViewController.cleanUp()
|
||||
hostViewController.resetSecurityContainer()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,15 +157,6 @@ object KeyguardBouncerViewBinder {
|
||||
}
|
||||
}
|
||||
|
||||
launch {
|
||||
viewModel.isBouncerVisible
|
||||
.filter { !it }
|
||||
.collect {
|
||||
// Remove existing input for security reasons.
|
||||
hostViewController.resetSecurityContainer()
|
||||
}
|
||||
}
|
||||
|
||||
launch {
|
||||
viewModel.keyguardPosition.collect { position ->
|
||||
hostViewController.updateKeyguardPosition(position)
|
||||
|
||||
@@ -602,6 +602,14 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase {
|
||||
any(KeyguardSecurityCallback.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReinflateViewFlipper() {
|
||||
mKeyguardSecurityContainerController.reinflateViewFlipper();
|
||||
verify(mKeyguardSecurityViewFlipperController).clearViews();
|
||||
verify(mKeyguardSecurityViewFlipperController).getSecurityView(any(SecurityMode.class),
|
||||
any(KeyguardSecurityCallback.class));
|
||||
}
|
||||
|
||||
private KeyguardSecurityContainer.SwipeListener getRegisteredSwipeListener() {
|
||||
mKeyguardSecurityContainerController.onViewAttached();
|
||||
verify(mView).setSwipeListener(mSwipeListenerArgumentCaptor.capture());
|
||||
|
||||
Reference in New Issue
Block a user