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

Commit 1ee8ad31 authored by Jean Chen's avatar Jean Chen Committed by Android (Google) Code Review
Browse files

Merge "feat(MultiFingerMultiTap): Log two finger triple tap shortcut type" into main

parents a839ab28 625ede99
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_FLOATING_MENU;
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__A11Y_GESTURE;
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__TRIPLE_TAP;
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__TWO_FINGER_TRIPLE_TAP;
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__UNKNOWN_TYPE;
import static com.android.internal.util.FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__VOLUME_KEY;
import static com.android.internal.util.FrameworkStatsLog.MAGNIFICATION_USAGE_REPORTED__ACTIVATED_MODE__MAGNIFICATION_ALL;
@@ -130,6 +131,18 @@ public final class AccessibilityStatsLogUtils {
                convertToLoggingServiceStatus(enabled));
    }

    /**
     * Logs magnification that is assigned to the two finger triple tap shortcut. Calls this when
     * triggering the magnification two finger triple tap shortcut.
     */
    public static void logMagnificationTwoFingerTripleTap(boolean enabled) {
        FrameworkStatsLog.write(FrameworkStatsLog.ACCESSIBILITY_SHORTCUT_REPORTED,
                MAGNIFICATION_COMPONENT_NAME.flattenToString(),
                // jean update
                ACCESSIBILITY_SHORTCUT_REPORTED__SHORTCUT_TYPE__TWO_FINGER_TRIPLE_TAP,
                convertToLoggingServiceStatus(enabled));
    }

    /**
     * Logs accessibility feature name that is assigned to the long pressed accessibility button
     * shortcut. Calls this when clicking the long pressed accessibility button shortcut.
+39 −5
Original line number Diff line number Diff line
@@ -258,6 +258,11 @@ public class FullScreenMagnificationGestureHandler extends MagnificationGestureH
                public void logMagnificationTripleTap(boolean enabled) {
                    AccessibilityStatsLogUtils.logMagnificationTripleTap(enabled);
                }

                @Override
                public void logMagnificationTwoFingerTripleTap(boolean enabled) {
                    AccessibilityStatsLogUtils.logMagnificationTwoFingerTripleTap(enabled);
                }
            };
        }

@@ -419,6 +424,7 @@ public class FullScreenMagnificationGestureHandler extends MagnificationGestureH
    /** An interface that allows testing magnification log events. */
    interface MagnificationLogger {
        void logMagnificationTripleTap(boolean enabled);
        void logMagnificationTwoFingerTripleTap(boolean enabled);
    }

    interface State {
@@ -987,12 +993,14 @@ public class FullScreenMagnificationGestureHandler extends MagnificationGestureH
                            mDisplayId, event.getX(), event.getY())) {
                        transitionToDelegatingStateAndClear();

                    } else if (isMultiTapTriggered(3 /* taps */)) {
                        onTripleTap(/* up */ event);

                    } else if (isMultiFingerMultiTapTriggered(/* targetTapCount= */ 3, event)) {
                        // Placing multiple fingers before a single finger, because achieving a
                        // multi finger multi tap also means achieving a single finger triple tap
                        onTripleTap(event);

                    } else if (isMultiTapTriggered(3 /* taps */)) {
                        onTripleTap(/* up */ event);

                    } else if (
                            // Possible to be false on: 3tap&drag -> scale -> PTR_UP -> UP
                            isFingerDown()
@@ -1026,6 +1034,11 @@ public class FullScreenMagnificationGestureHandler extends MagnificationGestureH
                mCompletedTapCount++;
                mIsTwoFingerCountReached = false;
            }

            if (mDetectTwoFingerTripleTap && mCompletedTapCount > 2) {
                final boolean enabled = !isActivated();
                mMagnificationLogger.logMagnificationTwoFingerTripleTap(enabled);
            }
            return mDetectTwoFingerTripleTap && mCompletedTapCount == targetTapCount;
        }

@@ -1037,6 +1050,29 @@ public class FullScreenMagnificationGestureHandler extends MagnificationGestureH
            mFirstPointerDownLocation.set(Float.NaN, Float.NaN);
            mSecondPointerDownLocation.set(Float.NaN, Float.NaN);
        }

        void transitionToViewportDraggingStateAndClear(MotionEvent down) {

            if (DEBUG_DETECTING) Slog.i(mLogTag, "onTripleTapAndHold()");
            final boolean shortcutTriggered = mShortcutTriggered;

            // Only log the 3tap and hold event
            if (!shortcutTriggered) {
                final boolean enabled = !isActivated();
                if (mCompletedTapCount == 2) {
                    // Two finger triple tap and hold
                    mMagnificationLogger.logMagnificationTwoFingerTripleTap(enabled);
                } else {
                    // Triple tap and hold also belongs to triple tap event
                    mMagnificationLogger.logMagnificationTripleTap(enabled);
                }
            }
            clear();

            mViewportDraggingState.prepareForZoomInTemporary(shortcutTriggered);
            zoomInTemporary(down.getX(), down.getY(), shortcutTriggered);
            transitionTo(mViewportDraggingState);
        }
    }

    /**
@@ -1416,8 +1452,6 @@ public class FullScreenMagnificationGestureHandler extends MagnificationGestureH

            // Only log the 3tap and hold event
            if (!shortcutTriggered) {
                // TODO:(b/309534286): Add metrics for two-finger triple-tap and fix
                //  the log two-finger bug before enabling the flag
                // Triple tap and hold also belongs to triple tap event
                final boolean enabled = !isActivated();
                mMagnificationLogger.logMagnificationTripleTap(enabled);
+9 −0
Original line number Diff line number Diff line
@@ -540,18 +540,23 @@ public class FullScreenMagnificationGestureHandlerTest {
        twoFingerTap();

        assertIn(STATE_ACTIVATED);
        verify(mMockMagnificationLogger, never()).logMagnificationTripleTap(anyBoolean());
        verify(mMockMagnificationLogger).logMagnificationTwoFingerTripleTap(true);
    }

    @Test
    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_MAGNIFICATION_MULTIPLE_FINGER_MULTIPLE_TAP_GESTURE)
    public void testTwoFingerTripleTap_StateIsActivated_shouldInIdle() {
        goFromStateIdleTo(STATE_ACTIVATED);
        reset(mMockMagnificationLogger);

        twoFingerTap();
        twoFingerTap();
        twoFingerTap();

        assertIn(STATE_IDLE);
        verify(mMockMagnificationLogger, never()).logMagnificationTripleTap(anyBoolean());
        verify(mMockMagnificationLogger).logMagnificationTwoFingerTripleTap(false);
    }

    @Test
@@ -564,6 +569,8 @@ public class FullScreenMagnificationGestureHandlerTest {
        twoFingerTapAndHold();

        assertIn(STATE_NON_ACTIVATED_ZOOMED_TMP);
        verify(mMockMagnificationLogger, never()).logMagnificationTripleTap(anyBoolean());
        verify(mMockMagnificationLogger).logMagnificationTwoFingerTripleTap(true);
    }

    @Test
@@ -576,6 +583,8 @@ public class FullScreenMagnificationGestureHandlerTest {
        twoFingerSwipeAndHold();

        assertIn(STATE_NON_ACTIVATED_ZOOMED_TMP);
        verify(mMockMagnificationLogger, never()).logMagnificationTripleTap(anyBoolean());
        verify(mMockMagnificationLogger).logMagnificationTwoFingerTripleTap(true);
    }

    @Test