Merge "Add logging to KeyguardVisibilityHelper" into tm-qpr-dev

This commit is contained in:
Hawkwood Glazier
2023-01-09 21:50:52 +00:00
committed by Android (Google) Code Review
6 changed files with 43 additions and 7 deletions

View File

@@ -20,6 +20,7 @@ import android.graphics.Rect;
import android.util.Slog; import android.util.Slog;
import com.android.keyguard.KeyguardClockSwitch.ClockSize; import com.android.keyguard.KeyguardClockSwitch.ClockSize;
import com.android.keyguard.logging.KeyguardLogger;
import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags; import com.android.systemui.flags.Flags;
import com.android.systemui.plugins.ClockAnimations; import com.android.systemui.plugins.ClockAnimations;
@@ -62,14 +63,16 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
ConfigurationController configurationController, ConfigurationController configurationController,
DozeParameters dozeParameters, DozeParameters dozeParameters,
FeatureFlags featureFlags, FeatureFlags featureFlags,
ScreenOffAnimationController screenOffAnimationController) { ScreenOffAnimationController screenOffAnimationController,
KeyguardLogger logger) {
super(keyguardStatusView); super(keyguardStatusView);
mKeyguardSliceViewController = keyguardSliceViewController; mKeyguardSliceViewController = keyguardSliceViewController;
mKeyguardClockSwitchController = keyguardClockSwitchController; mKeyguardClockSwitchController = keyguardClockSwitchController;
mKeyguardUpdateMonitor = keyguardUpdateMonitor; mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mConfigurationController = configurationController; mConfigurationController = configurationController;
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, keyguardStateController, mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, keyguardStateController,
dozeParameters, screenOffAnimationController, /* animateYPos= */ true); dozeParameters, screenOffAnimationController, /* animateYPos= */ true,
logger.getBuffer());
mKeyguardVisibilityHelper.setOcclusionTransitionFlagEnabled( mKeyguardVisibilityHelper.setOcclusionTransitionFlagEnabled(
featureFlags.isEnabled(Flags.UNOCCLUSION_TRANSITION)); featureFlags.isEnabled(Flags.UNOCCLUSION_TRANSITION));
} }

View File

@@ -22,6 +22,8 @@ import android.view.View;
import android.view.ViewPropertyAnimator; import android.view.ViewPropertyAnimator;
import com.android.systemui.animation.Interpolators; import com.android.systemui.animation.Interpolators;
import com.android.systemui.plugins.log.LogBuffer;
import com.android.systemui.plugins.log.LogLevel;
import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.AnimatableProperty; import com.android.systemui.statusbar.notification.AnimatableProperty;
import com.android.systemui.statusbar.notification.PropertyAnimator; import com.android.systemui.statusbar.notification.PropertyAnimator;
@@ -31,11 +33,14 @@ import com.android.systemui.statusbar.phone.DozeParameters;
import com.android.systemui.statusbar.phone.ScreenOffAnimationController; import com.android.systemui.statusbar.phone.ScreenOffAnimationController;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.google.errorprone.annotations.CompileTimeConstant;
/** /**
* Helper class for updating visibility of keyguard views based on keyguard and status bar state. * Helper class for updating visibility of keyguard views based on keyguard and status bar state.
* This logic is shared by both the keyguard status view and the keyguard user switcher. * This logic is shared by both the keyguard status view and the keyguard user switcher.
*/ */
public class KeyguardVisibilityHelper { public class KeyguardVisibilityHelper {
private static final String TAG = "KeyguardVisibilityHelper";
private View mView; private View mView;
private final KeyguardStateController mKeyguardStateController; private final KeyguardStateController mKeyguardStateController;
@@ -46,17 +51,26 @@ public class KeyguardVisibilityHelper {
private boolean mLastOccludedState = false; private boolean mLastOccludedState = false;
private boolean mIsUnoccludeTransitionFlagEnabled = false; private boolean mIsUnoccludeTransitionFlagEnabled = false;
private final AnimationProperties mAnimationProperties = new AnimationProperties(); private final AnimationProperties mAnimationProperties = new AnimationProperties();
private final LogBuffer mLogBuffer;
public KeyguardVisibilityHelper(View view, public KeyguardVisibilityHelper(View view,
KeyguardStateController keyguardStateController, KeyguardStateController keyguardStateController,
DozeParameters dozeParameters, DozeParameters dozeParameters,
ScreenOffAnimationController screenOffAnimationController, ScreenOffAnimationController screenOffAnimationController,
boolean animateYPos) { boolean animateYPos,
LogBuffer logBuffer) {
mView = view; mView = view;
mKeyguardStateController = keyguardStateController; mKeyguardStateController = keyguardStateController;
mDozeParameters = dozeParameters; mDozeParameters = dozeParameters;
mScreenOffAnimationController = screenOffAnimationController; mScreenOffAnimationController = screenOffAnimationController;
mAnimateYPos = animateYPos; mAnimateYPos = animateYPos;
mLogBuffer = logBuffer;
}
private void log(@CompileTimeConstant String message) {
if (mLogBuffer != null) {
mLogBuffer.log(TAG, LogLevel.DEBUG, message);
}
} }
public boolean isVisibilityAnimating() { public boolean isVisibilityAnimating() {
@@ -94,6 +108,9 @@ public class KeyguardVisibilityHelper {
.setStartDelay(mKeyguardStateController.getKeyguardFadingAwayDelay()) .setStartDelay(mKeyguardStateController.getKeyguardFadingAwayDelay())
.setDuration(mKeyguardStateController.getShortenedFadingAwayDuration()) .setDuration(mKeyguardStateController.getShortenedFadingAwayDuration())
.start(); .start();
log("goingToFullShade && keyguardFadingAway");
} else {
log("goingToFullShade && !keyguardFadingAway");
} }
} else if (oldStatusBarState == StatusBarState.SHADE_LOCKED && statusBarState == KEYGUARD) { } else if (oldStatusBarState == StatusBarState.SHADE_LOCKED && statusBarState == KEYGUARD) {
mView.setVisibility(View.VISIBLE); mView.setVisibility(View.VISIBLE);
@@ -105,6 +122,7 @@ public class KeyguardVisibilityHelper {
.setDuration(320) .setDuration(320)
.setInterpolator(Interpolators.ALPHA_IN) .setInterpolator(Interpolators.ALPHA_IN)
.withEndAction(mAnimateKeyguardStatusViewVisibleEndRunnable); .withEndAction(mAnimateKeyguardStatusViewVisibleEndRunnable);
log("keyguardFadingAway transition w/ Y Aniamtion");
} else if (statusBarState == KEYGUARD) { } else if (statusBarState == KEYGUARD) {
if (keyguardFadingAway) { if (keyguardFadingAway) {
mKeyguardViewVisibilityAnimating = true; mKeyguardViewVisibilityAnimating = true;
@@ -125,9 +143,13 @@ public class KeyguardVisibilityHelper {
true /* animate */); true /* animate */);
animator.setDuration(duration) animator.setDuration(duration)
.setStartDelay(delay); .setStartDelay(delay);
log("keyguardFadingAway transition w/ Y Aniamtion");
} else {
log("keyguardFadingAway transition w/o Y Animation");
} }
animator.start(); animator.start();
} else if (mScreenOffAnimationController.shouldAnimateInKeyguard()) { } else if (mScreenOffAnimationController.shouldAnimateInKeyguard()) {
log("ScreenOff transition");
mKeyguardViewVisibilityAnimating = true; mKeyguardViewVisibilityAnimating = true;
// Ask the screen off animation controller to animate the keyguard visibility for us // Ask the screen off animation controller to animate the keyguard visibility for us
@@ -136,6 +158,7 @@ public class KeyguardVisibilityHelper {
mView, mAnimateKeyguardStatusViewVisibleEndRunnable); mView, mAnimateKeyguardStatusViewVisibleEndRunnable);
} else if (!mIsUnoccludeTransitionFlagEnabled && mLastOccludedState && !isOccluded) { } else if (!mIsUnoccludeTransitionFlagEnabled && mLastOccludedState && !isOccluded) {
// An activity was displayed over the lock screen, and has now gone away // An activity was displayed over the lock screen, and has now gone away
log("Unoccluded transition");
mView.setVisibility(View.VISIBLE); mView.setVisibility(View.VISIBLE);
mView.setAlpha(0f); mView.setAlpha(0f);
@@ -146,12 +169,14 @@ public class KeyguardVisibilityHelper {
.withEndAction(mAnimateKeyguardStatusViewVisibleEndRunnable) .withEndAction(mAnimateKeyguardStatusViewVisibleEndRunnable)
.start(); .start();
} else { } else {
log("Direct set Visibility to VISIBLE");
mView.setVisibility(View.VISIBLE); mView.setVisibility(View.VISIBLE);
if (!mIsUnoccludeTransitionFlagEnabled) { if (!mIsUnoccludeTransitionFlagEnabled) {
mView.setAlpha(1f); mView.setAlpha(1f);
} }
} }
} else { } else {
log("Direct set Visibility to GONE");
mView.setVisibility(View.GONE); mView.setVisibility(View.GONE);
mView.setAlpha(1f); mView.setAlpha(1f);
} }
@@ -162,14 +187,18 @@ public class KeyguardVisibilityHelper {
private final Runnable mAnimateKeyguardStatusViewInvisibleEndRunnable = () -> { private final Runnable mAnimateKeyguardStatusViewInvisibleEndRunnable = () -> {
mKeyguardViewVisibilityAnimating = false; mKeyguardViewVisibilityAnimating = false;
mView.setVisibility(View.INVISIBLE); mView.setVisibility(View.INVISIBLE);
log("Callback Set Visibility to INVISIBLE");
}; };
private final Runnable mAnimateKeyguardStatusViewGoneEndRunnable = () -> { private final Runnable mAnimateKeyguardStatusViewGoneEndRunnable = () -> {
mKeyguardViewVisibilityAnimating = false; mKeyguardViewVisibilityAnimating = false;
mView.setVisibility(View.GONE); mView.setVisibility(View.GONE);
log("CallbackSet Visibility to GONE");
}; };
private final Runnable mAnimateKeyguardStatusViewVisibleEndRunnable = () -> { private final Runnable mAnimateKeyguardStatusViewVisibleEndRunnable = () -> {
mKeyguardViewVisibilityAnimating = false; mKeyguardViewVisibilityAnimating = false;
mView.setVisibility(View.VISIBLE);
log("Callback Set Visibility to VISIBLE");
}; };
} }

View File

@@ -34,7 +34,7 @@ private const val TAG = "KeyguardLog"
* temporary logs or logs for smaller classes when creating whole new [LogBuffer] wrapper might be * temporary logs or logs for smaller classes when creating whole new [LogBuffer] wrapper might be
* an overkill. * an overkill.
*/ */
class KeyguardLogger @Inject constructor(@KeyguardLog private val buffer: LogBuffer) : class KeyguardLogger @Inject constructor(@KeyguardLog val buffer: LogBuffer) :
ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) { ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) {
fun logException(ex: Exception, @CompileTimeConstant logMsg: String) { fun logException(ex: Exception, @CompileTimeConstant logMsg: String) {

View File

@@ -160,7 +160,7 @@ public class KeyguardQsUserSwitchController extends ViewController<FrameLayout>
mStatusBarStateController = statusBarStateController; mStatusBarStateController = statusBarStateController;
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView,
keyguardStateController, dozeParameters, keyguardStateController, dozeParameters,
screenOffAnimationController, /* animateYPos= */ false); screenOffAnimationController, /* animateYPos= */ false, /* logBuffer= */ null);
mUserSwitchDialogController = userSwitchDialogController; mUserSwitchDialogController = userSwitchDialogController;
mUiEventLogger = uiEventLogger; mUiEventLogger = uiEventLogger;
} }

View File

@@ -173,7 +173,7 @@ public class KeyguardUserSwitcherController extends ViewController<KeyguardUserS
mUserSwitcherController, this); mUserSwitcherController, this);
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView,
keyguardStateController, dozeParameters, keyguardStateController, dozeParameters,
screenOffAnimationController, /* animateYPos= */ false); screenOffAnimationController, /* animateYPos= */ false, /* logBuffer= */ null);
mBackground = new KeyguardUserSwitcherScrim(context); mBackground = new KeyguardUserSwitcherScrim(context);
} }

View File

@@ -24,6 +24,7 @@ import android.graphics.Rect;
import android.test.suitebuilder.annotation.SmallTest; import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner; import android.testing.AndroidTestingRunner;
import com.android.keyguard.logging.KeyguardLogger;
import com.android.systemui.SysuiTestCase; import com.android.systemui.SysuiTestCase;
import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.plugins.ClockAnimations; import com.android.systemui.plugins.ClockAnimations;
@@ -65,6 +66,8 @@ public class KeyguardStatusViewControllerTest extends SysuiTestCase {
ScreenOffAnimationController mScreenOffAnimationController; ScreenOffAnimationController mScreenOffAnimationController;
@Captor @Captor
private ArgumentCaptor<KeyguardUpdateMonitorCallback> mKeyguardUpdateMonitorCallbackCaptor; private ArgumentCaptor<KeyguardUpdateMonitorCallback> mKeyguardUpdateMonitorCallbackCaptor;
@Mock
KeyguardLogger mKeyguardLogger;
private KeyguardStatusViewController mController; private KeyguardStatusViewController mController;
@@ -81,7 +84,8 @@ public class KeyguardStatusViewControllerTest extends SysuiTestCase {
mConfigurationController, mConfigurationController,
mDozeParameters, mDozeParameters,
mFeatureFlags, mFeatureFlags,
mScreenOffAnimationController); mScreenOffAnimationController,
mKeyguardLogger);
} }
@Test @Test