Loading core/java/com/android/internal/accessibility/util/AccessibilityStatsLogUtils.java +13 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler.java +39 −5 Original line number Diff line number Diff line Loading @@ -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); } }; } Loading Loading @@ -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 { Loading Loading @@ -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() Loading Loading @@ -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; } Loading @@ -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); } } /** Loading Loading @@ -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); Loading services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandlerTest.java +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -564,6 +569,8 @@ public class FullScreenMagnificationGestureHandlerTest { twoFingerTapAndHold(); assertIn(STATE_NON_ACTIVATED_ZOOMED_TMP); verify(mMockMagnificationLogger, never()).logMagnificationTripleTap(anyBoolean()); verify(mMockMagnificationLogger).logMagnificationTwoFingerTripleTap(true); } @Test Loading @@ -576,6 +583,8 @@ public class FullScreenMagnificationGestureHandlerTest { twoFingerSwipeAndHold(); assertIn(STATE_NON_ACTIVATED_ZOOMED_TMP); verify(mMockMagnificationLogger, never()).logMagnificationTripleTap(anyBoolean()); verify(mMockMagnificationLogger).logMagnificationTwoFingerTripleTap(true); } @Test Loading Loading
core/java/com/android/internal/accessibility/util/AccessibilityStatsLogUtils.java +13 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading
services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandler.java +39 −5 Original line number Diff line number Diff line Loading @@ -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); } }; } Loading Loading @@ -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 { Loading Loading @@ -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() Loading Loading @@ -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; } Loading @@ -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); } } /** Loading Loading @@ -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); Loading
services/tests/servicestests/src/com/android/server/accessibility/magnification/FullScreenMagnificationGestureHandlerTest.java +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -564,6 +569,8 @@ public class FullScreenMagnificationGestureHandlerTest { twoFingerTapAndHold(); assertIn(STATE_NON_ACTIVATED_ZOOMED_TMP); verify(mMockMagnificationLogger, never()).logMagnificationTripleTap(anyBoolean()); verify(mMockMagnificationLogger).logMagnificationTwoFingerTripleTap(true); } @Test Loading @@ -576,6 +583,8 @@ public class FullScreenMagnificationGestureHandlerTest { twoFingerSwipeAndHold(); assertIn(STATE_NON_ACTIVATED_ZOOMED_TMP); verify(mMockMagnificationLogger, never()).logMagnificationTripleTap(anyBoolean()); verify(mMockMagnificationLogger).logMagnificationTwoFingerTripleTap(true); } @Test Loading