Merge "Hook WakefulnessLifecycle for best timing of LockedDisabled" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
aadedc76b6
@@ -87,4 +87,9 @@ public interface OneHanded {
|
|||||||
* Notifies when user switch complete
|
* Notifies when user switch complete
|
||||||
*/
|
*/
|
||||||
void onUserSwitch(int userId);
|
void onUserSwitch(int userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notifies when keyguard visibility changed
|
||||||
|
*/
|
||||||
|
void onKeyguardVisibilityChanged(boolean showing);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ public class OneHandedController implements RemoteCallable<OneHandedController>
|
|||||||
private volatile boolean mIsSwipeToNotificationEnabled;
|
private volatile boolean mIsSwipeToNotificationEnabled;
|
||||||
private boolean mTaskChangeToExit;
|
private boolean mTaskChangeToExit;
|
||||||
private boolean mLockedDisabled;
|
private boolean mLockedDisabled;
|
||||||
|
private boolean mKeyguardShowing;
|
||||||
private int mUserId;
|
private int mUserId;
|
||||||
private float mOffSetFraction;
|
private float mOffSetFraction;
|
||||||
|
|
||||||
@@ -357,7 +358,7 @@ public class OneHandedController implements RemoteCallable<OneHandedController>
|
|||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void startOneHanded() {
|
void startOneHanded() {
|
||||||
if (isLockedDisabled()) {
|
if (isLockedDisabled() || mKeyguardShowing) {
|
||||||
Slog.d(TAG, "Temporary lock disabled");
|
Slog.d(TAG, "Temporary lock disabled");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -692,6 +693,10 @@ public class OneHandedController implements RemoteCallable<OneHandedController>
|
|||||||
mTutorialHandler.onConfigurationChanged();
|
mTutorialHandler.onConfigurationChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onKeyguardVisibilityChanged(boolean showing) {
|
||||||
|
mKeyguardShowing = showing;
|
||||||
|
}
|
||||||
|
|
||||||
private void onUserSwitch(int newUserId) {
|
private void onUserSwitch(int newUserId) {
|
||||||
unregisterSettingObservers();
|
unregisterSettingObservers();
|
||||||
mUserId = newUserId;
|
mUserId = newUserId;
|
||||||
@@ -838,6 +843,13 @@ public class OneHandedController implements RemoteCallable<OneHandedController>
|
|||||||
OneHandedController.this.onUserSwitch(userId);
|
OneHandedController.this.onUserSwitch(userId);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onKeyguardVisibilityChanged(boolean showing) {
|
||||||
|
mMainExecutor.execute(() -> {
|
||||||
|
OneHandedController.this.onKeyguardVisibilityChanged(showing);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ import com.android.systemui.dagger.SysUISingleton;
|
|||||||
import com.android.systemui.dagger.WMComponent;
|
import com.android.systemui.dagger.WMComponent;
|
||||||
import com.android.systemui.dagger.qualifiers.Main;
|
import com.android.systemui.dagger.qualifiers.Main;
|
||||||
import com.android.systemui.keyguard.ScreenLifecycle;
|
import com.android.systemui.keyguard.ScreenLifecycle;
|
||||||
|
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
||||||
import com.android.systemui.model.SysUiState;
|
import com.android.systemui.model.SysUiState;
|
||||||
import com.android.systemui.navigationbar.NavigationModeController;
|
import com.android.systemui.navigationbar.NavigationModeController;
|
||||||
import com.android.systemui.shared.tracing.ProtoTraceable;
|
import com.android.systemui.shared.tracing.ProtoTraceable;
|
||||||
@@ -114,6 +115,7 @@ public final class WMShell extends SystemUI
|
|||||||
private final NavigationModeController mNavigationModeController;
|
private final NavigationModeController mNavigationModeController;
|
||||||
private final ScreenLifecycle mScreenLifecycle;
|
private final ScreenLifecycle mScreenLifecycle;
|
||||||
private final SysUiState mSysUiState;
|
private final SysUiState mSysUiState;
|
||||||
|
private final WakefulnessLifecycle mWakefulnessLifecycle;
|
||||||
private final ProtoTracer mProtoTracer;
|
private final ProtoTracer mProtoTracer;
|
||||||
private final Executor mSysUiMainExecutor;
|
private final Executor mSysUiMainExecutor;
|
||||||
|
|
||||||
@@ -121,6 +123,7 @@ public final class WMShell extends SystemUI
|
|||||||
private KeyguardUpdateMonitorCallback mSplitScreenKeyguardCallback;
|
private KeyguardUpdateMonitorCallback mSplitScreenKeyguardCallback;
|
||||||
private KeyguardUpdateMonitorCallback mPipKeyguardCallback;
|
private KeyguardUpdateMonitorCallback mPipKeyguardCallback;
|
||||||
private KeyguardUpdateMonitorCallback mOneHandedKeyguardCallback;
|
private KeyguardUpdateMonitorCallback mOneHandedKeyguardCallback;
|
||||||
|
private WakefulnessLifecycle.Observer mWakefulnessObserver;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public WMShell(Context context,
|
public WMShell(Context context,
|
||||||
@@ -136,6 +139,7 @@ public final class WMShell extends SystemUI
|
|||||||
ScreenLifecycle screenLifecycle,
|
ScreenLifecycle screenLifecycle,
|
||||||
SysUiState sysUiState,
|
SysUiState sysUiState,
|
||||||
ProtoTracer protoTracer,
|
ProtoTracer protoTracer,
|
||||||
|
WakefulnessLifecycle wakefulnessLifecycle,
|
||||||
@Main Executor sysUiMainExecutor) {
|
@Main Executor sysUiMainExecutor) {
|
||||||
super(context);
|
super(context);
|
||||||
mCommandQueue = commandQueue;
|
mCommandQueue = commandQueue;
|
||||||
@@ -148,6 +152,7 @@ public final class WMShell extends SystemUI
|
|||||||
mSplitScreenOptional = splitScreenOptional;
|
mSplitScreenOptional = splitScreenOptional;
|
||||||
mOneHandedOptional = oneHandedOptional;
|
mOneHandedOptional = oneHandedOptional;
|
||||||
mHideDisplayCutoutOptional = hideDisplayCutoutOptional;
|
mHideDisplayCutoutOptional = hideDisplayCutoutOptional;
|
||||||
|
mWakefulnessLifecycle = wakefulnessLifecycle;
|
||||||
mProtoTracer = protoTracer;
|
mProtoTracer = protoTracer;
|
||||||
mShellCommandHandler = shellCommandHandler;
|
mShellCommandHandler = shellCommandHandler;
|
||||||
mSysUiMainExecutor = sysUiMainExecutor;
|
mSysUiMainExecutor = sysUiMainExecutor;
|
||||||
@@ -265,22 +270,9 @@ public final class WMShell extends SystemUI
|
|||||||
});
|
});
|
||||||
|
|
||||||
mOneHandedKeyguardCallback = new KeyguardUpdateMonitorCallback() {
|
mOneHandedKeyguardCallback = new KeyguardUpdateMonitorCallback() {
|
||||||
@Override
|
|
||||||
public void onKeyguardBouncerChanged(boolean bouncer) {
|
|
||||||
if (bouncer) {
|
|
||||||
oneHanded.stopOneHanded();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onKeyguardVisibilityChanged(boolean showing) {
|
public void onKeyguardVisibilityChanged(boolean showing) {
|
||||||
if (showing) {
|
oneHanded.onKeyguardVisibilityChanged(showing);
|
||||||
// When keyguard shown, temperory lock OHM disabled to avoid mis-trigger.
|
|
||||||
oneHanded.setLockedDisabled(true /* locked */, false /* enabled */);
|
|
||||||
} else {
|
|
||||||
// Reset locked.
|
|
||||||
oneHanded.setLockedDisabled(false /* locked */, false /* enabled */);
|
|
||||||
}
|
|
||||||
oneHanded.stopOneHanded();
|
oneHanded.stopOneHanded();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -291,6 +283,24 @@ public final class WMShell extends SystemUI
|
|||||||
};
|
};
|
||||||
mKeyguardUpdateMonitor.registerCallback(mOneHandedKeyguardCallback);
|
mKeyguardUpdateMonitor.registerCallback(mOneHandedKeyguardCallback);
|
||||||
|
|
||||||
|
mWakefulnessObserver =
|
||||||
|
new WakefulnessLifecycle.Observer() {
|
||||||
|
@Override
|
||||||
|
public void onFinishedWakingUp() {
|
||||||
|
// Reset locked for the case keyguard not shown.
|
||||||
|
oneHanded.setLockedDisabled(false /* locked */, false /* enabled */);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStartedGoingToSleep() {
|
||||||
|
oneHanded.stopOneHanded();
|
||||||
|
// When user press power button going to sleep, temperory lock OHM disabled
|
||||||
|
// to avoid mis-trigger.
|
||||||
|
oneHanded.setLockedDisabled(true /* locked */, false /* enabled */);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
mWakefulnessLifecycle.addObserver(mWakefulnessObserver);
|
||||||
|
|
||||||
mScreenLifecycle.addObserver(new ScreenLifecycle.Observer() {
|
mScreenLifecycle.addObserver(new ScreenLifecycle.Observer() {
|
||||||
@Override
|
@Override
|
||||||
public void onScreenTurningOff() {
|
public void onScreenTurningOff() {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import com.android.keyguard.KeyguardUpdateMonitor;
|
|||||||
import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
import com.android.keyguard.KeyguardUpdateMonitorCallback;
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
import com.android.systemui.keyguard.ScreenLifecycle;
|
import com.android.systemui.keyguard.ScreenLifecycle;
|
||||||
|
import com.android.systemui.keyguard.WakefulnessLifecycle;
|
||||||
import com.android.systemui.model.SysUiState;
|
import com.android.systemui.model.SysUiState;
|
||||||
import com.android.systemui.navigationbar.NavigationModeController;
|
import com.android.systemui.navigationbar.NavigationModeController;
|
||||||
import com.android.systemui.statusbar.CommandQueue;
|
import com.android.systemui.statusbar.CommandQueue;
|
||||||
@@ -70,6 +71,7 @@ public class WMShellTest extends SysuiTestCase {
|
|||||||
@Mock LegacySplitScreen mLegacySplitScreen;
|
@Mock LegacySplitScreen mLegacySplitScreen;
|
||||||
@Mock OneHanded mOneHanded;
|
@Mock OneHanded mOneHanded;
|
||||||
@Mock HideDisplayCutout mHideDisplayCutout;
|
@Mock HideDisplayCutout mHideDisplayCutout;
|
||||||
|
@Mock WakefulnessLifecycle mWakefulnessLifecycle;
|
||||||
@Mock ProtoTracer mProtoTracer;
|
@Mock ProtoTracer mProtoTracer;
|
||||||
@Mock ShellCommandHandler mShellCommandHandler;
|
@Mock ShellCommandHandler mShellCommandHandler;
|
||||||
@Mock ShellExecutor mSysUiMainExecutor;
|
@Mock ShellExecutor mSysUiMainExecutor;
|
||||||
@@ -82,7 +84,8 @@ public class WMShellTest extends SysuiTestCase {
|
|||||||
Optional.of(mOneHanded), Optional.of(mHideDisplayCutout),
|
Optional.of(mOneHanded), Optional.of(mHideDisplayCutout),
|
||||||
Optional.of(mShellCommandHandler), mCommandQueue, mConfigurationController,
|
Optional.of(mShellCommandHandler), mCommandQueue, mConfigurationController,
|
||||||
mKeyguardUpdateMonitor, mNavigationModeController,
|
mKeyguardUpdateMonitor, mNavigationModeController,
|
||||||
mScreenLifecycle, mSysUiState, mProtoTracer, mSysUiMainExecutor);
|
mScreenLifecycle, mSysUiState, mProtoTracer, mWakefulnessLifecycle,
|
||||||
|
mSysUiMainExecutor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user