Merge "[Keyguard] Fix unlock animation for occluded LS." into tm-qpr-dev

This commit is contained in:
Aaron Liu
2022-07-13 15:16:17 +00:00
committed by Android (Google) Code Review
2 changed files with 25 additions and 1 deletions

View File

@@ -2532,8 +2532,13 @@ public class CentralSurfacesImpl extends CoreStartable implements
callback.onActivityStarted(ActivityManager.START_CANCELED);
}
};
// Do not deferKeyguard when occluded because, when keyguard is occluded,
// we do not launch the activity until keyguard is done.
boolean occluded = mStatusBarKeyguardViewManager.isShowing()
&& mStatusBarKeyguardViewManager.isOccluded();
boolean deferred = !occluded;
executeRunnableDismissingKeyguard(runnable, cancelRunnable, dismissShadeDirectly,
willLaunchResolverActivity, true /* deferred */, animate);
willLaunchResolverActivity, deferred /* deferred */, animate);
}
@Nullable

View File

@@ -19,6 +19,8 @@ package com.android.systemui.statusbar.phone;
import static android.app.NotificationManager.IMPORTANCE_HIGH;
import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_PEEK;
import static com.google.common.truth.Truth.assertThat;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
import static junit.framework.TestCase.fail;
@@ -44,6 +46,7 @@ import android.app.WallpaperManager;
import android.app.trust.TrustManager;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.devicestate.DeviceStateManager;
import android.hardware.display.AmbientDisplayConfiguration;
@@ -984,6 +987,22 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
verify(mStatusBarStateController, never()).setLeaveOpenOnKeyguardHide(true);
}
@Test
public void startActivityDismissingKeyguard_isShowingandIsOccluded() {
when(mStatusBarKeyguardViewManager.isShowing()).thenReturn(true);
when(mStatusBarKeyguardViewManager.isOccluded()).thenReturn(true);
mCentralSurfaces.startActivityDismissingKeyguard(
new Intent(),
/* onlyProvisioned = */false,
/* dismissShade = */false);
verify(mStatusBarKeyguardViewManager).addAfterKeyguardGoneRunnable(any(Runnable.class));
ArgumentCaptor<OnDismissAction> onDismissActionCaptor =
ArgumentCaptor.forClass(OnDismissAction.class);
verify(mStatusBarKeyguardViewManager)
.dismissWithAction(onDismissActionCaptor.capture(), any(Runnable.class), eq(true));
assertThat(onDismissActionCaptor.getValue().onDismiss()).isFalse();
}
private void setDeviceState(int state) {
ArgumentCaptor<DeviceStateManager.DeviceStateCallback> callbackCaptor =
ArgumentCaptor.forClass(DeviceStateManager.DeviceStateCallback.class);