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

Commit 11c31eac authored by Alexandra-Mara Smau's avatar Alexandra-Mara Smau Committed by Android (Google) Code Review
Browse files

Merge "Fix press HOME logging tests." into main

parents 0891b654 c1845792
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -1983,6 +1983,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            public void run() {
                if (mPendingHomeKeyEvent != null) {
                    handleShortPressOnHome(mPendingHomeKeyEvent);
                    mPendingHomeKeyEvent.recycle();
                    mPendingHomeKeyEvent = null;
                }
            }
@@ -2027,7 +2028,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                    if (mDoubleTapOnHomeBehavior != DOUBLE_TAP_HOME_PIP_MENU
                            || mPictureInPictureVisible) {
                        mHandler.removeCallbacks(mHomeDoubleTapTimeoutRunnable); // just in case
                        mPendingHomeKeyEvent = event;
                        mPendingHomeKeyEvent = KeyEvent.obtain(event);
                        mHandler.postDelayed(mHomeDoubleTapTimeoutRunnable,
                                ViewConfiguration.getDoubleTapTimeout());
                        return true;
@@ -2035,7 +2036,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                }

                // Post to main thread to avoid blocking input pipeline.
                mHandler.post(() -> handleShortPressOnHome(event));
                final KeyEvent shortPressEvent = KeyEvent.obtain(event);
                mHandler.post(() -> {
                    handleShortPressOnHome(shortPressEvent);
                    shortPressEvent.recycle();
                });
                return true;
            }

@@ -2062,9 +2067,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            if (repeatCount == 0) {
                mHomePressed = true;
                if (mPendingHomeKeyEvent != null) {
                    mPendingHomeKeyEvent.recycle();
                    mPendingHomeKeyEvent = null;
                    mHandler.removeCallbacks(mHomeDoubleTapTimeoutRunnable);
                    mHandler.post(() -> handleDoubleTapOnHome(event));
                    final KeyEvent doublePressEvent = KeyEvent.obtain(event);
                    mHandler.post(() -> {
                        handleDoubleTapOnHome(doublePressEvent);
                        doublePressEvent.recycle();
                    });
                // TODO(multi-display): Remove display id check once we support recents on
                // multi-display
                } else if (mDoubleTapOnHomeBehavior == DOUBLE_TAP_HOME_RECENT_SYSTEM_UI
@@ -2074,7 +2084,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            } else if ((event.getFlags() & KeyEvent.FLAG_LONG_PRESS) != 0) {
                if (!keyguardOn) {
                    // Post to main thread to avoid blocking input pipeline.
                    mHandler.post(() -> handleLongPressOnHome(event));
                    final KeyEvent longPressEvent = KeyEvent.obtain(event);
                    mHandler.post(() -> {
                        handleLongPressOnHome(longPressEvent);
                        longPressEvent.recycle();
                    });
                }
            }
            return true;
+0 −5
Original line number Diff line number Diff line
@@ -46,7 +46,6 @@ import static com.android.server.policy.WindowManagerPolicy.ACTION_PASS_TO_USER;
import static java.util.Collections.unmodifiableMap;

import android.content.Context;
import android.os.Looper;
import android.os.SystemClock;
import android.util.ArrayMap;
import android.view.InputDevice;
@@ -99,10 +98,6 @@ class ShortcutKeyTestBase {
     *      settings values.
     */
    protected final void setUpPhoneWindowManager(boolean supportSettingsUpdate) {
        if (Looper.myLooper() == null) {
            Looper.prepare();
        }

        doReturn(mSettingsProviderRule.mockContentResolver(mContext))
                .when(mContext).getContentResolver();
        mPhoneWindowManager = new TestPhoneWindowManager(mContext, supportSettingsUpdate);
+7 −9
Original line number Diff line number Diff line
@@ -70,7 +70,6 @@ import android.hardware.display.DisplayManagerInternal;
import android.hardware.input.InputManager;
import android.media.AudioManagerInternal;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.PowerManager;
import android.os.PowerManagerInternal;
@@ -78,6 +77,7 @@ import android.os.RemoteException;
import android.os.UserHandle;
import android.os.Vibrator;
import android.os.VibratorInfo;
import android.os.test.TestLooper;
import android.service.dreams.DreamManagerInternal;
import android.telecom.TelecomManager;
import android.util.FeatureFlagUtils;
@@ -160,8 +160,8 @@ class TestPhoneWindowManager {
    @Mock private KeyguardServiceDelegate mKeyguardServiceDelegate;

    private StaticMockitoSession mMockitoSession;
    private HandlerThread mHandlerThread;
    private Handler mHandler;
    private TestLooper mTestLooper;

    private class TestInjector extends PhoneWindowManager.Injector {
        TestInjector(Context context, WindowManagerPolicy.WindowManagerFuncs funcs) {
@@ -184,12 +184,11 @@ class TestPhoneWindowManager {

    TestPhoneWindowManager(Context context, boolean supportSettingsUpdate) {
        MockitoAnnotations.initMocks(this);
        mHandlerThread = new HandlerThread("fake window manager");
        mHandlerThread.start();
        mHandler = new Handler(mHandlerThread.getLooper());
        mTestLooper = new TestLooper();
        mHandler = new Handler(mTestLooper.getLooper());
        mContext = mockingDetails(context).isSpy() ? context : spy(context);
        mHandler.runWithScissors(() -> setUp(supportSettingsUpdate),  0 /* timeout */);
        waitForIdle();
        mHandler.post(() -> setUp(supportSettingsUpdate));
        mTestLooper.dispatchAll();
    }

    private void setUp(boolean supportSettingsUpdate) {
@@ -301,7 +300,6 @@ class TestPhoneWindowManager {
    }

    void tearDown() {
        mHandlerThread.quitSafely();
        LocalServices.removeServiceForTest(InputMethodManagerInternal.class);
        Mockito.reset(mPhoneWindowManager);
        mMockitoSession.finishMocking();
@@ -328,7 +326,7 @@ class TestPhoneWindowManager {
    }

    void waitForIdle() {
        mHandler.runWithScissors(() -> { }, 0 /* timeout */);
        mTestLooper.dispatchAll();
    }

    /**