Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be29d507 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Hook WakefulnessLifecycle for best timing of LockedDisabled" into...

Merge "Hook WakefulnessLifecycle for best timing of LockedDisabled" into sc-dev am: aadedc76 am: 9c2c1fac

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15002670

Change-Id: I59c1c299a6678309a1d7c1966602e4971cf9fbd4
parents 231d6661 9c2c1fac
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -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);
}
}
+13 −1
Original line number Original line Diff line number Diff line
@@ -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);
            });
        }
    }
    }


    /**
    /**
+24 −14
Original line number Original line Diff line number Diff line
@@ -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;
@@ -116,6 +117,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;


@@ -124,6 +126,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,
@@ -140,6 +143,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;
@@ -153,6 +157,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;
@@ -283,30 +288,35 @@ public final class WMShell extends SystemUI


        mOneHandedKeyguardCallback = new KeyguardUpdateMonitorCallback() {
        mOneHandedKeyguardCallback = new KeyguardUpdateMonitorCallback() {
            @Override
            @Override
            public void onKeyguardBouncerChanged(boolean bouncer) {
            public void onKeyguardVisibilityChanged(boolean showing) {
                if (bouncer) {
                oneHanded.onKeyguardVisibilityChanged(showing);
                oneHanded.stopOneHanded();
                oneHanded.stopOneHanded();
            }
            }

            @Override
            public void onUserSwitchComplete(int userId) {
                oneHanded.onUserSwitch(userId);
            }
            }
        };
        mKeyguardUpdateMonitor.registerCallback(mOneHandedKeyguardCallback);


        mWakefulnessObserver =
                new WakefulnessLifecycle.Observer() {
                    @Override
                    @Override
            public void onKeyguardVisibilityChanged(boolean showing) {
                    public void onFinishedWakingUp() {
                if (showing) {
                        // Reset locked for the case keyguard not shown.
                    // 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.setLockedDisabled(false /* locked */, false /* enabled */);
                    }
                    }
                oneHanded.stopOneHanded();
            }


                    @Override
                    @Override
            public void onUserSwitchComplete(int userId) {
                    public void onStartedGoingToSleep() {
                oneHanded.onUserSwitch(userId);
                        oneHanded.stopOneHanded();
                        // When user press power button going to sleep, temperory lock OHM disabled
                        // to avoid mis-trigger.
                        oneHanded.setLockedDisabled(true /* locked */, false /* enabled */);
                    }
                    }
                };
                };
        mKeyguardUpdateMonitor.registerCallback(mOneHandedKeyguardCallback);
        mWakefulnessLifecycle.addObserver(mWakefulnessObserver);


        mScreenLifecycle.addObserver(new ScreenLifecycle.Observer() {
        mScreenLifecycle.addObserver(new ScreenLifecycle.Observer() {
            @Override
            @Override
+4 −1
Original line number Original line Diff line number Diff line
@@ -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;
@@ -72,6 +73,7 @@ public class WMShellTest extends SysuiTestCase {
    @Mock SplitScreen mSplitScreen;
    @Mock SplitScreen mSplitScreen;
    @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;
@@ -84,7 +86,8 @@ public class WMShellTest extends SysuiTestCase {
                Optional.of(mSplitScreen), Optional.of(mOneHanded), Optional.of(mHideDisplayCutout),
                Optional.of(mSplitScreen), 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