Keep unlock transition in unlocked scene
This commit is contained in:
+3
-1
@@ -5066,7 +5066,9 @@ final class StockLayoutCanvasController {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (runtimeContext.getModeStateRepository().hasSystemUiStatusBarState()) {
|
if (runtimeContext.getModeStateRepository().hasSystemUiStatusBarState()) {
|
||||||
if (isNotificationShadeWindowRoot(root) && isKeyguardLocked(context)) {
|
if (isNotificationShadeWindowRoot(root)
|
||||||
|
&& isKeyguardLocked(context)
|
||||||
|
&& !runtimeContext.getModeStateRepository().isKeyguardGoingAway()) {
|
||||||
NotificationDisplayStyle notificationStyle =
|
NotificationDisplayStyle notificationStyle =
|
||||||
SystemNotificationDisplayStyleDetector.read(context);
|
SystemNotificationDisplayStyleDetector.read(context);
|
||||||
if (isInteractive(context)) {
|
if (isInteractive(context)) {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ public final class ModeStateRepository {
|
|||||||
private SceneKey activeScene = SceneKey.unlocked();
|
private SceneKey activeScene = SceneKey.unlocked();
|
||||||
private boolean systemUiStatusBarStateKnown;
|
private boolean systemUiStatusBarStateKnown;
|
||||||
private int systemUiStatusBarState;
|
private int systemUiStatusBarState;
|
||||||
|
private boolean keyguardGoingAway;
|
||||||
private boolean layoutEnabled;
|
private boolean layoutEnabled;
|
||||||
private final List<LayoutEnabledListener> layoutEnabledListeners = new ArrayList<>();
|
private final List<LayoutEnabledListener> layoutEnabledListeners = new ArrayList<>();
|
||||||
private final List<SceneListener> sceneListeners = new ArrayList<>();
|
private final List<SceneListener> sceneListeners = new ArrayList<>();
|
||||||
@@ -27,6 +28,14 @@ public final class ModeStateRepository {
|
|||||||
return systemUiStatusBarStateKnown && systemUiStatusBarState == 2;
|
return systemUiStatusBarStateKnown && systemUiStatusBarState == 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public synchronized boolean isKeyguardGoingAway() {
|
||||||
|
return keyguardGoingAway;
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void setKeyguardGoingAway(boolean goingAway) {
|
||||||
|
keyguardGoingAway = goingAway;
|
||||||
|
}
|
||||||
|
|
||||||
public synchronized boolean isLayoutEnabled() {
|
public synchronized boolean isLayoutEnabled() {
|
||||||
return layoutEnabled;
|
return layoutEnabled;
|
||||||
}
|
}
|
||||||
|
|||||||
+21
-3
@@ -23,8 +23,10 @@ public final class SystemUiStatusBarStateFeature implements RuntimeFeature {
|
|||||||
"com.android.systemui.statusbar.StatusBarStateControllerImpl";
|
"com.android.systemui.statusbar.StatusBarStateControllerImpl";
|
||||||
private static final String CLASS_KEYGUARD_STATE_CONTROLLER =
|
private static final String CLASS_KEYGUARD_STATE_CONTROLLER =
|
||||||
"com.android.systemui.statusbar.policy.KeyguardStateControllerImpl";
|
"com.android.systemui.statusbar.policy.KeyguardStateControllerImpl";
|
||||||
|
private static final int STATE_SHADE = 0;
|
||||||
|
|
||||||
private boolean installed;
|
private boolean installed;
|
||||||
|
private boolean keyguardGoingAway;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
@@ -78,8 +80,14 @@ public final class SystemUiStatusBarStateFeature implements RuntimeFeature {
|
|||||||
"notifyKeyguardGoingAway",
|
"notifyKeyguardGoingAway",
|
||||||
chain -> {
|
chain -> {
|
||||||
Object result = chain.proceed();
|
Object result = chain.proceed();
|
||||||
if (firstBooleanArg(chain.getArgs())) {
|
Boolean goingAway = firstBooleanArg(chain.getArgs());
|
||||||
|
if (Boolean.TRUE.equals(goingAway)) {
|
||||||
|
keyguardGoingAway = true;
|
||||||
|
context.getModeStateRepository().setKeyguardGoingAway(true);
|
||||||
context.getModeStateRepository().setUnlocked();
|
context.getModeStateRepository().setUnlocked();
|
||||||
|
} else if (Boolean.FALSE.equals(goingAway)) {
|
||||||
|
keyguardGoingAway = false;
|
||||||
|
context.getModeStateRepository().setKeyguardGoingAway(false);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
@@ -92,14 +100,24 @@ public final class SystemUiStatusBarStateFeature implements RuntimeFeature {
|
|||||||
Object rawState = ReflectionSupport.getFieldValue(controller, "mState");
|
Object rawState = ReflectionSupport.getFieldValue(controller, "mState");
|
||||||
int state = rawState instanceof Integer integer ? integer : 0;
|
int state = rawState instanceof Integer integer ? integer : 0;
|
||||||
boolean dozing = ReflectionSupport.getBooleanField(controller, "mIsDozing", false);
|
boolean dozing = ReflectionSupport.getBooleanField(controller, "mIsDozing", false);
|
||||||
|
if (keyguardGoingAway && !dozing) {
|
||||||
|
if (state == STATE_SHADE) {
|
||||||
|
keyguardGoingAway = false;
|
||||||
|
context.getModeStateRepository().setKeyguardGoingAway(false);
|
||||||
|
} else {
|
||||||
|
state = STATE_SHADE;
|
||||||
|
}
|
||||||
|
}
|
||||||
context.getModeStateRepository().setSystemUiStatusBarState(
|
context.getModeStateRepository().setSystemUiStatusBarState(
|
||||||
state,
|
state,
|
||||||
dozing,
|
dozing,
|
||||||
SystemNotificationDisplayStyleDetector.read(systemContext(controller)));
|
SystemNotificationDisplayStyleDetector.read(systemContext(controller)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean firstBooleanArg(List<Object> args) {
|
private Boolean firstBooleanArg(List<Object> args) {
|
||||||
return args != null && !args.isEmpty() && Boolean.TRUE.equals(args.get(0));
|
return args != null && !args.isEmpty() && args.get(0) instanceof Boolean bool
|
||||||
|
? bool
|
||||||
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Context systemContext(Object controller) {
|
private Context systemContext(Object controller) {
|
||||||
|
|||||||
Reference in New Issue
Block a user