Add logging to KeyguardVisibilityHelper
This also cleans up an edge case where VISIBLE isn't always set to the view by the callback runnable. This shouldn't be nessecary though and shouldn't cause a user-facing change. Bug: 262112441 Test: Manually checked the transitions Change-Id: I9b275720ad8b7a108328197833b12efd6951371a
This commit is contained in:
@@ -20,6 +20,7 @@ import android.graphics.Rect;
|
||||
import android.util.Slog;
|
||||
|
||||
import com.android.keyguard.KeyguardClockSwitch.ClockSize;
|
||||
import com.android.keyguard.logging.KeyguardLogger;
|
||||
import com.android.systemui.flags.FeatureFlags;
|
||||
import com.android.systemui.flags.Flags;
|
||||
import com.android.systemui.plugins.ClockAnimations;
|
||||
@@ -62,14 +63,16 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV
|
||||
ConfigurationController configurationController,
|
||||
DozeParameters dozeParameters,
|
||||
FeatureFlags featureFlags,
|
||||
ScreenOffAnimationController screenOffAnimationController) {
|
||||
ScreenOffAnimationController screenOffAnimationController,
|
||||
KeyguardLogger logger) {
|
||||
super(keyguardStatusView);
|
||||
mKeyguardSliceViewController = keyguardSliceViewController;
|
||||
mKeyguardClockSwitchController = keyguardClockSwitchController;
|
||||
mKeyguardUpdateMonitor = keyguardUpdateMonitor;
|
||||
mConfigurationController = configurationController;
|
||||
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, keyguardStateController,
|
||||
dozeParameters, screenOffAnimationController, /* animateYPos= */ true);
|
||||
dozeParameters, screenOffAnimationController, /* animateYPos= */ true,
|
||||
logger.getBuffer());
|
||||
mKeyguardVisibilityHelper.setOcclusionTransitionFlagEnabled(
|
||||
featureFlags.isEnabled(Flags.UNOCCLUSION_TRANSITION));
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@ import android.view.View;
|
||||
import android.view.ViewPropertyAnimator;
|
||||
|
||||
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.notification.AnimatableProperty;
|
||||
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.policy.KeyguardStateController;
|
||||
|
||||
import com.google.errorprone.annotations.CompileTimeConstant;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
public class KeyguardVisibilityHelper {
|
||||
private static final String TAG = "KeyguardVisibilityHelper";
|
||||
|
||||
private View mView;
|
||||
private final KeyguardStateController mKeyguardStateController;
|
||||
@@ -46,17 +51,26 @@ public class KeyguardVisibilityHelper {
|
||||
private boolean mLastOccludedState = false;
|
||||
private boolean mIsUnoccludeTransitionFlagEnabled = false;
|
||||
private final AnimationProperties mAnimationProperties = new AnimationProperties();
|
||||
private final LogBuffer mLogBuffer;
|
||||
|
||||
public KeyguardVisibilityHelper(View view,
|
||||
KeyguardStateController keyguardStateController,
|
||||
DozeParameters dozeParameters,
|
||||
ScreenOffAnimationController screenOffAnimationController,
|
||||
boolean animateYPos) {
|
||||
boolean animateYPos,
|
||||
LogBuffer logBuffer) {
|
||||
mView = view;
|
||||
mKeyguardStateController = keyguardStateController;
|
||||
mDozeParameters = dozeParameters;
|
||||
mScreenOffAnimationController = screenOffAnimationController;
|
||||
mAnimateYPos = animateYPos;
|
||||
mLogBuffer = logBuffer;
|
||||
}
|
||||
|
||||
private void log(@CompileTimeConstant String message) {
|
||||
if (mLogBuffer != null) {
|
||||
mLogBuffer.log(TAG, LogLevel.DEBUG, message);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isVisibilityAnimating() {
|
||||
@@ -94,6 +108,9 @@ public class KeyguardVisibilityHelper {
|
||||
.setStartDelay(mKeyguardStateController.getKeyguardFadingAwayDelay())
|
||||
.setDuration(mKeyguardStateController.getShortenedFadingAwayDuration())
|
||||
.start();
|
||||
log("goingToFullShade && keyguardFadingAway");
|
||||
} else {
|
||||
log("goingToFullShade && !keyguardFadingAway");
|
||||
}
|
||||
} else if (oldStatusBarState == StatusBarState.SHADE_LOCKED && statusBarState == KEYGUARD) {
|
||||
mView.setVisibility(View.VISIBLE);
|
||||
@@ -105,6 +122,7 @@ public class KeyguardVisibilityHelper {
|
||||
.setDuration(320)
|
||||
.setInterpolator(Interpolators.ALPHA_IN)
|
||||
.withEndAction(mAnimateKeyguardStatusViewVisibleEndRunnable);
|
||||
log("keyguardFadingAway transition w/ Y Aniamtion");
|
||||
} else if (statusBarState == KEYGUARD) {
|
||||
if (keyguardFadingAway) {
|
||||
mKeyguardViewVisibilityAnimating = true;
|
||||
@@ -125,9 +143,13 @@ public class KeyguardVisibilityHelper {
|
||||
true /* animate */);
|
||||
animator.setDuration(duration)
|
||||
.setStartDelay(delay);
|
||||
log("keyguardFadingAway transition w/ Y Aniamtion");
|
||||
} else {
|
||||
log("keyguardFadingAway transition w/o Y Animation");
|
||||
}
|
||||
animator.start();
|
||||
} else if (mScreenOffAnimationController.shouldAnimateInKeyguard()) {
|
||||
log("ScreenOff transition");
|
||||
mKeyguardViewVisibilityAnimating = true;
|
||||
|
||||
// Ask the screen off animation controller to animate the keyguard visibility for us
|
||||
@@ -136,6 +158,7 @@ public class KeyguardVisibilityHelper {
|
||||
mView, mAnimateKeyguardStatusViewVisibleEndRunnable);
|
||||
} else if (!mIsUnoccludeTransitionFlagEnabled && mLastOccludedState && !isOccluded) {
|
||||
// An activity was displayed over the lock screen, and has now gone away
|
||||
log("Unoccluded transition");
|
||||
mView.setVisibility(View.VISIBLE);
|
||||
mView.setAlpha(0f);
|
||||
|
||||
@@ -146,12 +169,14 @@ public class KeyguardVisibilityHelper {
|
||||
.withEndAction(mAnimateKeyguardStatusViewVisibleEndRunnable)
|
||||
.start();
|
||||
} else {
|
||||
log("Direct set Visibility to VISIBLE");
|
||||
mView.setVisibility(View.VISIBLE);
|
||||
if (!mIsUnoccludeTransitionFlagEnabled) {
|
||||
mView.setAlpha(1f);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
log("Direct set Visibility to GONE");
|
||||
mView.setVisibility(View.GONE);
|
||||
mView.setAlpha(1f);
|
||||
}
|
||||
@@ -162,14 +187,18 @@ public class KeyguardVisibilityHelper {
|
||||
private final Runnable mAnimateKeyguardStatusViewInvisibleEndRunnable = () -> {
|
||||
mKeyguardViewVisibilityAnimating = false;
|
||||
mView.setVisibility(View.INVISIBLE);
|
||||
log("Callback Set Visibility to INVISIBLE");
|
||||
};
|
||||
|
||||
private final Runnable mAnimateKeyguardStatusViewGoneEndRunnable = () -> {
|
||||
mKeyguardViewVisibilityAnimating = false;
|
||||
mView.setVisibility(View.GONE);
|
||||
log("CallbackSet Visibility to GONE");
|
||||
};
|
||||
|
||||
private final Runnable mAnimateKeyguardStatusViewVisibleEndRunnable = () -> {
|
||||
mKeyguardViewVisibilityAnimating = false;
|
||||
mView.setVisibility(View.VISIBLE);
|
||||
log("Callback Set Visibility to VISIBLE");
|
||||
};
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ private const val TAG = "KeyguardLog"
|
||||
* temporary logs or logs for smaller classes when creating whole new [LogBuffer] wrapper might be
|
||||
* an overkill.
|
||||
*/
|
||||
class KeyguardLogger @Inject constructor(@KeyguardLog private val buffer: LogBuffer) :
|
||||
class KeyguardLogger @Inject constructor(@KeyguardLog val buffer: LogBuffer) :
|
||||
ConstantStringsLogger by ConstantStringsLoggerImpl(buffer, TAG) {
|
||||
|
||||
fun logException(ex: Exception, @CompileTimeConstant logMsg: String) {
|
||||
|
||||
@@ -160,7 +160,7 @@ public class KeyguardQsUserSwitchController extends ViewController<FrameLayout>
|
||||
mStatusBarStateController = statusBarStateController;
|
||||
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView,
|
||||
keyguardStateController, dozeParameters,
|
||||
screenOffAnimationController, /* animateYPos= */ false);
|
||||
screenOffAnimationController, /* animateYPos= */ false, /* logBuffer= */ null);
|
||||
mUserSwitchDialogController = userSwitchDialogController;
|
||||
mUiEventLogger = uiEventLogger;
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ public class KeyguardUserSwitcherController extends ViewController<KeyguardUserS
|
||||
mUserSwitcherController, this);
|
||||
mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView,
|
||||
keyguardStateController, dozeParameters,
|
||||
screenOffAnimationController, /* animateYPos= */ false);
|
||||
screenOffAnimationController, /* animateYPos= */ false, /* logBuffer= */ null);
|
||||
mBackground = new KeyguardUserSwitcherScrim(context);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.graphics.Rect;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
|
||||
import com.android.keyguard.logging.KeyguardLogger;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.flags.FeatureFlags;
|
||||
import com.android.systemui.plugins.ClockAnimations;
|
||||
@@ -65,6 +66,8 @@ public class KeyguardStatusViewControllerTest extends SysuiTestCase {
|
||||
ScreenOffAnimationController mScreenOffAnimationController;
|
||||
@Captor
|
||||
private ArgumentCaptor<KeyguardUpdateMonitorCallback> mKeyguardUpdateMonitorCallbackCaptor;
|
||||
@Mock
|
||||
KeyguardLogger mKeyguardLogger;
|
||||
|
||||
private KeyguardStatusViewController mController;
|
||||
|
||||
@@ -81,7 +84,8 @@ public class KeyguardStatusViewControllerTest extends SysuiTestCase {
|
||||
mConfigurationController,
|
||||
mDozeParameters,
|
||||
mFeatureFlags,
|
||||
mScreenOffAnimationController);
|
||||
mScreenOffAnimationController,
|
||||
mKeyguardLogger);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user