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

Commit 472a79e4 authored by Mariia Sandrikova's avatar Mariia Sandrikova
Browse files

Fix RuntimeException in GestureDetector for Letterbox.

RuntimeException in GestureDetector happened because GestureDetector constructor may only be used from android.os.Looper thread which wasn't always true. Fixing by explicitly providing the UI thread handler in GestureDetector constructor.

Also, fix tests that were incorrectly changed in ag/15731742 due to this exception.

Fix: 199596390
Test: manual - double tap now works for all apps.
Change-Id: I622474bf2635d7d183b9e04994d0b6f25b1b1e94
parent 7fce162a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -247,7 +247,8 @@ public class Letterbox {
        TapEventReceiver(InputChannel inputChannel, Context context) {
            super(inputChannel, UiThread.getHandler().getLooper());
            mDoubleTapListener = new DoubleTapListener();
            mDoubleTapDetector = new GestureDetector(context, mDoubleTapListener);
            mDoubleTapDetector = new GestureDetector(
                    context, mDoubleTapListener, UiThread.getHandler());
        }

        @Override
+0 −4
Original line number Diff line number Diff line
@@ -1171,7 +1171,6 @@ public class SizeCompatTests extends WindowTestsBase {
        final WindowState w = addWindowToActivity(mActivity);
        // Compute the frames of the window and invoke {@link ActivityRecord#layoutLetterbox}.
        mActivity.mRootWindowContainer.performSurfacePlacement();
        mActivity.layoutLetterbox(null);
        // The letterbox insets should be [450, 0 - 250, 0].
        assertEquals(new Rect(mActivity.getBounds().left, 0, dh - mActivity.getBounds().right, 0),
                mActivity.getLetterboxInsets());
@@ -1833,9 +1832,6 @@ public class SizeCompatTests extends WindowTestsBase {
    }

    private void assertLetterboxSurfacesDrawnBetweenActivityAndParentBounds(Rect parentBounds) {
        // Ensure Letterbox is updated.
        mActivity.layoutLetterbox(null);

        // Letterbox should fill the gap between the parent bounds and the letterboxed activity.
        final Rect letterboxedBounds = new Rect(mActivity.getBounds());
        assertTrue(parentBounds.contains(letterboxedBounds));