mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-05 10:26:52 +00:00
Do not perform invisible transitions while the screen is off.
This change caches whether launcher was active at the time of the screen off, and assumes this last state when the screen is actually off. While trying to understand the code, I renamed a couple class-internal methods and flags, plus added comments. If they are not accurate, its due to a misunderstanding on my part, and I will gladly revisit and check whether all the assumptions I made still hold. Bug: 261418621 Test: manually Change-Id: I2ad25caf478100781a063c356c5fd2d20d3e1917 Merged-In: I2ad25caf478100781a063c356c5fd2d20d3e1917
This commit is contained in:
@@ -1,19 +1,20 @@
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SCREEN_STATE_OFF;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BACK_DISABLED;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DEVICE_DOZING;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_HOME_DISABLED;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_ON;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_STATE_MASK;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
|
||||
|
||||
import android.app.KeyguardManager;
|
||||
|
||||
import com.android.launcher3.AbstractFloatingView;
|
||||
import com.android.launcher3.util.ScreenOnTracker;
|
||||
import com.android.launcher3.util.ScreenOnTracker.ScreenOnListener;
|
||||
import com.android.systemui.shared.system.QuickStepContract;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
@@ -23,36 +24,35 @@ import java.io.PrintWriter;
|
||||
*/
|
||||
public class TaskbarKeyguardController implements TaskbarControllers.LoggableTaskbarController {
|
||||
|
||||
private static final int KEYGUARD_SYSUI_FLAGS = SYSUI_STATE_BOUNCER_SHOWING |
|
||||
SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING | SYSUI_STATE_DEVICE_DOZING |
|
||||
SYSUI_STATE_OVERVIEW_DISABLED | SYSUI_STATE_HOME_DISABLED |
|
||||
SYSUI_STATE_BACK_DISABLED | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED;
|
||||
private static final int KEYGUARD_SYSUI_FLAGS = SYSUI_STATE_BOUNCER_SHOWING
|
||||
| SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING | SYSUI_STATE_DEVICE_DOZING
|
||||
| SYSUI_STATE_OVERVIEW_DISABLED | SYSUI_STATE_HOME_DISABLED
|
||||
| SYSUI_STATE_BACK_DISABLED | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED
|
||||
| SYSUI_STATE_SCREEN_STATE_MASK;
|
||||
|
||||
private final ScreenOnListener mScreenOnListener;
|
||||
private final TaskbarActivityContext mContext;
|
||||
private int mKeyguardSysuiFlags;
|
||||
private boolean mBouncerShowing;
|
||||
private NavbarButtonsViewController mNavbarButtonsViewController;
|
||||
private final KeyguardManager mKeyguardManager;
|
||||
private boolean mIsScreenOff;
|
||||
|
||||
public TaskbarKeyguardController(TaskbarActivityContext context) {
|
||||
mContext = context;
|
||||
mScreenOnListener = isOn -> {
|
||||
if (!isOn) {
|
||||
mIsScreenOff = true;
|
||||
AbstractFloatingView.closeOpenViews(mContext, false, TYPE_ALL);
|
||||
}
|
||||
};
|
||||
mKeyguardManager = mContext.getSystemService(KeyguardManager.class);
|
||||
}
|
||||
|
||||
public void init(NavbarButtonsViewController navbarButtonUIController) {
|
||||
mNavbarButtonsViewController = navbarButtonUIController;
|
||||
ScreenOnTracker.INSTANCE.get(mContext).addListener(mScreenOnListener);
|
||||
}
|
||||
|
||||
public void updateStateForSysuiFlags(int systemUiStateFlags) {
|
||||
int interestingKeyguardFlags = systemUiStateFlags & KEYGUARD_SYSUI_FLAGS;
|
||||
if (interestingKeyguardFlags == mKeyguardSysuiFlags) {
|
||||
// No change in keyguard relevant flags
|
||||
return;
|
||||
}
|
||||
mKeyguardSysuiFlags = interestingKeyguardFlags;
|
||||
|
||||
boolean bouncerShowing = (systemUiStateFlags & SYSUI_STATE_BOUNCER_SHOWING) != 0;
|
||||
boolean keyguardShowing = (systemUiStateFlags & SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING)
|
||||
!= 0;
|
||||
@@ -60,11 +60,6 @@ public class TaskbarKeyguardController implements TaskbarControllers.LoggableTas
|
||||
(systemUiStateFlags & SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED) != 0;
|
||||
boolean dozing = (systemUiStateFlags & SYSUI_STATE_DEVICE_DOZING) != 0;
|
||||
|
||||
int interestingKeyguardFlags = systemUiStateFlags & KEYGUARD_SYSUI_FLAGS;
|
||||
if (interestingKeyguardFlags == mKeyguardSysuiFlags) {
|
||||
return;
|
||||
}
|
||||
mKeyguardSysuiFlags = interestingKeyguardFlags;
|
||||
|
||||
mBouncerShowing = bouncerShowing;
|
||||
|
||||
@@ -72,19 +67,17 @@ public class TaskbarKeyguardController implements TaskbarControllers.LoggableTas
|
||||
keyguardOccluded);
|
||||
updateIconsForBouncer();
|
||||
|
||||
if (keyguardShowing) {
|
||||
AbstractFloatingView.closeOpenViews(mContext, true, TYPE_ALL);
|
||||
boolean screenOffOrTransitioningOff = (systemUiStateFlags & SYSUI_STATE_SCREEN_ON) == 0;
|
||||
boolean closeFloatingViews = keyguardShowing || screenOffOrTransitioningOff;
|
||||
|
||||
if (closeFloatingViews) {
|
||||
// animate the closing of the views, unless the screen is already fully turned off.
|
||||
boolean animateViewClosing =
|
||||
(systemUiStateFlags & SYSUI_STATE_SCREEN_STATE_MASK) != SCREEN_STATE_OFF;
|
||||
AbstractFloatingView.closeOpenViews(mContext, animateViewClosing, TYPE_ALL);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isScreenOff() {
|
||||
return mIsScreenOff;
|
||||
}
|
||||
|
||||
public void setScreenOn() {
|
||||
mIsScreenOff = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hides/shows taskbar when keyguard is up
|
||||
*/
|
||||
@@ -95,9 +88,6 @@ public class TaskbarKeyguardController implements TaskbarControllers.LoggableTas
|
||||
mNavbarButtonsViewController.setBackForBouncer(showBackForBouncer);
|
||||
}
|
||||
|
||||
public void onDestroy() {
|
||||
ScreenOnTracker.INSTANCE.get(mContext).removeListener(mScreenOnListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dumpLogs(String prefix, PrintWriter pw) {
|
||||
@@ -106,6 +96,5 @@ public class TaskbarKeyguardController implements TaskbarControllers.LoggableTas
|
||||
pw.println(prefix + "\tmKeyguardSysuiFlags=" + QuickStepContract.getSystemUiStateString(
|
||||
mKeyguardSysuiFlags));
|
||||
pw.println(prefix + "\tmBouncerShowing=" + mBouncerShowing);
|
||||
pw.println(prefix + "\tmIsScreenOff=" + mIsScreenOff);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user