From 91f0e463056d4846edce06b6aeb18a6f1c9132ec Mon Sep 17 00:00:00 2001 From: Bill Lin Date: Tue, 5 Jan 2021 17:13:37 +0800 Subject: [PATCH] Refactor OneHanded mode UiEventLogger implementation 1) Move UiEventLogger from static to non-static 2) Rename to OneHandedUiEventLogger to align wm-shell components 3) Remove unused code from OneHandedUiEventLogger 4) Refine the call of stopOneHandedWithUiEvent() 5) Only register TaskStackListenerCallback when enabled 6) Override getId() in the enum to ensure UiEventLoggerImpl can obtain the event corresponding id accordingly Fixes: 176513465 Test: adb shell cmd stats print-logs Test: manual + statsd_testdrive -terse 90 Test: atest WMShellUnitTests Change-Id: Ic2fb1a2bbf87e647b0883d50b64ced53aa37d613 --- .../android/wm/shell/onehanded/OneHanded.java | 4 +- .../shell/onehanded/OneHandedController.java | 99 ++++++++++--------- ...vents.java => OneHandedUiEventLogger.java} | 81 ++++++--------- .../onehanded/OneHandedControllerTest.java | 4 +- .../OneHandedTutorialHandlerTest.java | 5 +- ...t.java => OneHandedUiEventLoggerTest.java} | 39 ++++---- .../recents/OverviewProxyService.java | 4 +- .../com/android/systemui/wmshell/WMShell.java | 11 ++- .../systemui/wmshell/WMShellBaseModule.java | 3 +- 9 files changed, 121 insertions(+), 129 deletions(-) rename libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/{OneHandedEvents.java => OneHandedUiEventLogger.java} (80%) rename libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/{OneHandedEventsTest.java => OneHandedUiEventLoggerTest.java} (67%) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHanded.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHanded.java index 821a00703adf7..e95864873c0c4 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHanded.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHanded.java @@ -49,9 +49,9 @@ public interface OneHanded { void stopOneHanded(); /** - * Exits one handed mode with {@link OneHandedEvents}. + * Exits one handed mode with {@link OneHandedUiEventLogger}. */ - void stopOneHanded(int event); + void stopOneHanded(int uiEvent); /** * Set navigation 3 button mode enabled or disabled by users. diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java index 48d6a7b40ee14..eaa704f22410a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java @@ -37,6 +37,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; +import com.android.internal.logging.UiEventLogger; import com.android.wm.shell.R; import com.android.wm.shell.common.DisplayChangeController; import com.android.wm.shell.common.DisplayController; @@ -47,7 +48,6 @@ import com.android.wm.shell.common.annotations.ExternalThread; import com.android.wm.shell.onehanded.OneHandedGestureHandler.OneHandedGestureEventCallback; import java.io.PrintWriter; -import java.util.concurrent.Executor; /** * Manages and manipulates the one handed states, transitions, and gesture for phones. @@ -73,6 +73,8 @@ public class OneHandedController { private final OneHandedTimeoutHandler mTimeoutHandler; private final OneHandedTouchHandler mTouchHandler; private final OneHandedTutorialHandler mTutorialHandler; + private final OneHandedUiEventLogger mOneHandedUiEventLogger; + private final TaskStackListenerImpl mTaskStackListener; private final IOverlayManager mOverlayManager; private final ShellExecutor mMainExecutor; private final Handler mMainHandler; @@ -117,15 +119,28 @@ public class OneHandedController { } }; + private final TaskStackListenerCallback mTaskStackListenerCallback = + new TaskStackListenerCallback() { + @Override + public void onTaskCreated(int taskId, ComponentName componentName) { + stopOneHanded(OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_APP_TAPS_OUT); + } + + @Override + public void onTaskMovedToFront(int taskId) { + stopOneHanded(OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_APP_TAPS_OUT); + } + }; + + /** * Creates {@link OneHanded}, returns {@code null} if the feature is not supported. */ @Nullable public static OneHanded create( Context context, DisplayController displayController, - TaskStackListenerImpl taskStackListener, - ShellExecutor mainExecutor, - Handler mainHandler) { + TaskStackListenerImpl taskStackListener, UiEventLogger uiEventLogger, + ShellExecutor mainExecutor, Handler mainHandler) { if (!SystemProperties.getBoolean(SUPPORT_ONE_HANDED_MODE, false)) { Slog.w(TAG, "Device doesn't support OneHanded feature"); return null; @@ -145,12 +160,13 @@ public class OneHandedController { OneHandedDisplayAreaOrganizer organizer = new OneHandedDisplayAreaOrganizer( context, displayController, animationController, tutorialHandler, oneHandedBackgroundPanelOrganizer, mainExecutor); + OneHandedUiEventLogger oneHandedUiEventsLogger = new OneHandedUiEventLogger(uiEventLogger); IOverlayManager overlayManager = IOverlayManager.Stub.asInterface( ServiceManager.getService(Context.OVERLAY_SERVICE)); return new OneHandedController(context, displayController, oneHandedBackgroundPanelOrganizer, organizer, touchHandler, tutorialHandler, - gestureHandler, timeoutHandler, overlayManager, taskStackListener, mainExecutor, - mainHandler).mImpl; + gestureHandler, timeoutHandler, oneHandedUiEventsLogger, overlayManager, + taskStackListener, mainExecutor, mainHandler).mImpl; } @VisibleForTesting @@ -162,6 +178,7 @@ public class OneHandedController { OneHandedTutorialHandler tutorialHandler, OneHandedGestureHandler gestureHandler, OneHandedTimeoutHandler timeoutHandler, + OneHandedUiEventLogger uiEventsLogger, IOverlayManager overlayManager, TaskStackListenerImpl taskStackListener, ShellExecutor mainExecutor, @@ -176,6 +193,8 @@ public class OneHandedController { mOverlayManager = overlayManager; mMainExecutor = mainExecutor; mMainHandler = mainHandler; + mOneHandedUiEventLogger = uiEventsLogger; + mTaskStackListener = taskStackListener; final float offsetPercentageConfig = context.getResources().getFraction( R.fraction.config_one_handed_offset, 1, 1); @@ -203,19 +222,6 @@ public class OneHandedController { setupGesturalOverlay(); updateSettings(); - taskStackListener.addListener( - new TaskStackListenerCallback() { - @Override - public void onTaskCreated(int taskId, ComponentName componentName) { - stopOneHanded(OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_APP_TAPS_OUT); - } - - @Override - public void onTaskMovedToFront(int taskId) { - stopOneHanded(OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_APP_TAPS_OUT); - } - }); - mAccessibilityManager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); mAccessibilityManager.addAccessibilityStateChangeListener( @@ -234,6 +240,11 @@ public class OneHandedController { * Set one handed enabled or disabled by when user update settings */ void setTaskChangeToExit(boolean enabled) { + if (enabled) { + mTaskStackListener.addListener(mTaskStackListenerCallback); + } else { + mTaskStackListener.removeListener(mTaskStackListenerCallback); + } mTaskChangeToExit = enabled; } @@ -252,7 +263,8 @@ public class OneHandedController { mDisplayAreaOrganizer.scheduleOffset(0, yOffSet); mTimeoutHandler.resetTimer(); - OneHandedEvents.writeEvent(OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_GESTURE_IN); + mOneHandedUiEventLogger.writeEvent( + OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_GESTURE_IN); } } @@ -264,17 +276,12 @@ public class OneHandedController { } } - private void stopOneHanded(int event) { - if (!mTaskChangeToExit && event == OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_APP_TAPS_OUT) { - //Task change exit not enable, do nothing and return here. - return; - } - + private void stopOneHanded(int uiEvent) { if (mDisplayAreaOrganizer.isInOneHanded()) { - OneHandedEvents.writeEvent(event); + mDisplayAreaOrganizer.scheduleOffset(0, 0); + mTimeoutHandler.removeTimer(); + mOneHandedUiEventLogger.writeEvent(uiEvent); } - - stopOneHanded(); } private void setThreeButtonModeEnabled(boolean enabled) { @@ -292,11 +299,14 @@ public class OneHandedController { private void setupCallback() { mTouchHandler.registerTouchEventListener(() -> - stopOneHanded(OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_OVERSPACE_OUT)); + stopOneHanded(OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_OVERSPACE_OUT)); mDisplayAreaOrganizer.registerTransitionCallback(mTouchHandler); mDisplayAreaOrganizer.registerTransitionCallback(mGestureHandler); mDisplayAreaOrganizer.registerTransitionCallback(mTutorialHandler); mDisplayAreaOrganizer.registerTransitionCallback(mBackgroundPanelOrganizer); + if (mTaskChangeToExit) { + mTaskStackListener.addListener(mTaskStackListenerCallback); + } } private void setupSettingObservers() { @@ -334,9 +344,9 @@ public class OneHandedController { private void onEnabledSettingChanged() { final boolean enabled = OneHandedSettingsUtil.getSettingsOneHandedModeEnabled( mContext.getContentResolver()); - OneHandedEvents.writeEvent(enabled - ? OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_ENABLED_ON - : OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_ENABLED_OFF); + mOneHandedUiEventLogger.writeEvent(enabled + ? OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_ENABLED_ON + : OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_ENABLED_OFF); setOneHandedEnabled(enabled); @@ -349,25 +359,25 @@ public class OneHandedController { private void onTimeoutSettingChanged() { final int newTimeout = OneHandedSettingsUtil.getSettingsOneHandedModeTimeout( mContext.getContentResolver()); - int metricsId = OneHandedEvents.OneHandedSettingsTogglesEvent.INVALID.getId(); + int metricsId = OneHandedUiEventLogger.OneHandedSettingsTogglesEvent.INVALID.getId(); switch (newTimeout) { case OneHandedSettingsUtil.ONE_HANDED_TIMEOUT_NEVER: - metricsId = OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_NEVER; + metricsId = OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_NEVER; break; case OneHandedSettingsUtil.ONE_HANDED_TIMEOUT_SHORT_IN_SECONDS: - metricsId = OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_4; + metricsId = OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_4; break; case OneHandedSettingsUtil.ONE_HANDED_TIMEOUT_MEDIUM_IN_SECONDS: - metricsId = OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_8; + metricsId = OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_8; break; case OneHandedSettingsUtil.ONE_HANDED_TIMEOUT_LONG_IN_SECONDS: - metricsId = OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_12; + metricsId = OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_12; break; default: // do nothing break; } - OneHandedEvents.writeEvent(metricsId); + mOneHandedUiEventLogger.writeEvent(metricsId); if (mTimeoutHandler != null) { mTimeoutHandler.setTimeout(newTimeout); @@ -377,9 +387,9 @@ public class OneHandedController { private void onTaskChangeExitSettingChanged() { final boolean enabled = OneHandedSettingsUtil.getSettingsTapsAppToExit( mContext.getContentResolver()); - OneHandedEvents.writeEvent(enabled - ? OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_APP_TAPS_EXIT_ON - : OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_APP_TAPS_EXIT_OFF); + mOneHandedUiEventLogger.writeEvent(enabled + ? OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_APP_TAPS_EXIT_ON + : OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_APP_TAPS_EXIT_OFF); setTaskChangeToExit(enabled); } @@ -397,9 +407,8 @@ public class OneHandedController { } private void setupTimeoutListener() { - mTimeoutHandler.registerTimeoutListener(timeoutTime -> { - stopOneHanded(OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_TIMEOUT_OUT); - }); + mTimeoutHandler.registerTimeoutListener(timeoutTime -> stopOneHanded( + OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_TIMEOUT_OUT)); } /** diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedEvents.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedUiEventLogger.java similarity index 80% rename from libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedEvents.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedUiEventLogger.java index 79ddd2b11e726..38ffb07aa5a4d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedEvents.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedUiEventLogger.java @@ -19,17 +19,13 @@ package com.android.wm.shell.onehanded; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.UiEvent; import com.android.internal.logging.UiEventLogger; -import com.android.internal.logging.UiEventLoggerImpl; /** - * Interesting events related to the One-Handed. + * Helper class that ends OneHanded mode log to UiEvent, see also go/uievent */ -public class OneHandedEvents { - private static final String TAG = "OneHandedEvents"; - - public static Callback sCallback; - @VisibleForTesting - static UiEventLogger sUiEventLogger = new UiEventLoggerImpl(); +public class OneHandedUiEventLogger { + private static final String TAG = "OneHandedUiEventLogger"; + private final UiEventLogger mUiEventLogger; /** * One-Handed event types @@ -76,6 +72,10 @@ public class OneHandedEvents { "one_handed_settings_timeout_seconds_12" }; + public OneHandedUiEventLogger(UiEventLogger uiEventLogger) { + mUiEventLogger = uiEventLogger; + } + /** * Events definition that related to One-Handed gestures. */ @@ -112,6 +112,7 @@ public class OneHandedEvents { mId = id; } + @Override public int getId() { return mId; } @@ -159,6 +160,7 @@ public class OneHandedEvents { mId = id; } + @Override public int getId() { return mId; } @@ -169,12 +171,8 @@ public class OneHandedEvents { * Logs an event to the system log, to sCallback if present, and to the logEvent destinations. * @param tag One of the EVENT_* codes above. */ - public static void writeEvent(int tag) { - final long time = System.currentTimeMillis(); + public void writeEvent(int tag) { logEvent(tag); - if (sCallback != null) { - sCallback.writeEvent(time, tag); - } } /** @@ -183,94 +181,75 @@ public class OneHandedEvents { * @return String a readable description of the event. Begins "writeEvent " * if the tag is valid. */ - public static String logEvent(int event) { - if (event >= EVENT_TAGS.length) { - return ""; - } - final StringBuilder sb = new StringBuilder("writeEvent ").append(EVENT_TAGS[event]); + private void logEvent(int event) { switch (event) { - // Triggers case EVENT_ONE_HANDED_TRIGGER_GESTURE_IN: - sUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_GESTURE_IN); + mUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_GESTURE_IN); break; case EVENT_ONE_HANDED_TRIGGER_GESTURE_OUT: - sUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_GESTURE_OUT); + mUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_GESTURE_OUT); break; case EVENT_ONE_HANDED_TRIGGER_OVERSPACE_OUT: - sUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_OVERSPACE_OUT); + mUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_OVERSPACE_OUT); break; case EVENT_ONE_HANDED_TRIGGER_POP_IME_OUT: - sUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_POP_IME_OUT); + mUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_POP_IME_OUT); break; case EVENT_ONE_HANDED_TRIGGER_ROTATION_OUT: - sUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_ROTATION_OUT); + mUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_ROTATION_OUT); break; case EVENT_ONE_HANDED_TRIGGER_APP_TAPS_OUT: - sUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_APP_TAPS_OUT); + mUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_APP_TAPS_OUT); break; case EVENT_ONE_HANDED_TRIGGER_TIMEOUT_OUT: - sUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_TIMEOUT_OUT); + mUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_TIMEOUT_OUT); break; case EVENT_ONE_HANDED_TRIGGER_SCREEN_OFF_OUT: - sUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_SCREEN_OFF_OUT); + mUiEventLogger.log(OneHandedTriggerEvent.ONE_HANDED_TRIGGER_SCREEN_OFF_OUT); break; - // Settings case EVENT_ONE_HANDED_SETTINGS_ENABLED_ON: - sUiEventLogger.log(OneHandedSettingsTogglesEvent + mUiEventLogger.log(OneHandedSettingsTogglesEvent .ONE_HANDED_SETTINGS_TOGGLES_ENABLED_ON); break; case EVENT_ONE_HANDED_SETTINGS_ENABLED_OFF: - sUiEventLogger.log(OneHandedSettingsTogglesEvent + mUiEventLogger.log(OneHandedSettingsTogglesEvent .ONE_HANDED_SETTINGS_TOGGLES_ENABLED_OFF); break; case EVENT_ONE_HANDED_SETTINGS_APP_TAPS_EXIT_ON: - sUiEventLogger.log(OneHandedSettingsTogglesEvent + mUiEventLogger.log(OneHandedSettingsTogglesEvent .ONE_HANDED_SETTINGS_TOGGLES_APP_TAPS_EXIT_ON); break; case EVENT_ONE_HANDED_SETTINGS_APP_TAPS_EXIT_OFF: - sUiEventLogger.log(OneHandedSettingsTogglesEvent + mUiEventLogger.log(OneHandedSettingsTogglesEvent .ONE_HANDED_SETTINGS_TOGGLES_APP_TAPS_EXIT_OFF); break; case EVENT_ONE_HANDED_SETTINGS_TIMEOUT_EXIT_ON: - sUiEventLogger.log(OneHandedSettingsTogglesEvent + mUiEventLogger.log(OneHandedSettingsTogglesEvent .ONE_HANDED_SETTINGS_TOGGLES_TIMEOUT_EXIT_ON); break; case EVENT_ONE_HANDED_SETTINGS_TIMEOUT_EXIT_OFF: - sUiEventLogger.log(OneHandedSettingsTogglesEvent + mUiEventLogger.log(OneHandedSettingsTogglesEvent .ONE_HANDED_SETTINGS_TOGGLES_TIMEOUT_EXIT_OFF); break; case EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_NEVER: - sUiEventLogger.log(OneHandedSettingsTogglesEvent + mUiEventLogger.log(OneHandedSettingsTogglesEvent .ONE_HANDED_SETTINGS_TOGGLES_TIMEOUT_SECONDS_NEVER); break; case EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_4: - sUiEventLogger.log(OneHandedSettingsTogglesEvent + mUiEventLogger.log(OneHandedSettingsTogglesEvent .ONE_HANDED_SETTINGS_TOGGLES_TIMEOUT_SECONDS_4); break; case EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_8: - sUiEventLogger.log(OneHandedSettingsTogglesEvent + mUiEventLogger.log(OneHandedSettingsTogglesEvent .ONE_HANDED_SETTINGS_TOGGLES_TIMEOUT_SECONDS_8); break; case EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_12: - sUiEventLogger.log(OneHandedSettingsTogglesEvent + mUiEventLogger.log(OneHandedSettingsTogglesEvent .ONE_HANDED_SETTINGS_TOGGLES_TIMEOUT_SECONDS_12); break; default: // Do nothing break; } - return sb.toString(); - } - - /** - * An interface for logging an event to the system log, if Callback present. - */ - public interface Callback { - /** - * - * @param time System current time. - * @param tag Event tag. - */ - void writeEvent(long time, int tag); } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java index 16d13f40f840a..f141167178a15 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java @@ -28,7 +28,6 @@ import android.content.om.IOverlayManager; import android.os.Handler; import android.provider.Settings; import android.testing.AndroidTestingRunner; -import android.testing.TestableLooper; import android.view.Display; import androidx.test.filters.SmallTest; @@ -67,6 +66,8 @@ public class OneHandedControllerTest extends OneHandedTestCase { @Mock OneHandedTimeoutHandler mMockTimeoutHandler; @Mock + OneHandedUiEventLogger mMockUiEventLogger; + @Mock IOverlayManager mMockOverlayManager; @Mock TaskStackListenerImpl mMockTaskStackListener; @@ -89,6 +90,7 @@ public class OneHandedControllerTest extends OneHandedTestCase { mMockTutorialHandler, mMockGestureHandler, mTimeoutHandler, + mMockUiEventLogger, mMockOverlayManager, mMockTaskStackListener, mMockShellMainExecutor, diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTutorialHandlerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTutorialHandlerTest.java index c451b8b2d2d76..c3e6bf376bda7 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTutorialHandlerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedTutorialHandlerTest.java @@ -21,7 +21,6 @@ import static org.mockito.Mockito.verify; import android.content.om.IOverlayManager; import android.os.Handler; import android.testing.AndroidTestingRunner; -import android.testing.TestableLooper; import androidx.test.filters.SmallTest; @@ -58,6 +57,9 @@ public class OneHandedTutorialHandlerTest extends OneHandedTestCase { ShellExecutor mMockShellMainExecutor; @Mock Handler mMockShellMainHandler; + @Mock + OneHandedUiEventLogger mMockUiEventLogger; + @Before public void setUp() { @@ -75,6 +77,7 @@ public class OneHandedTutorialHandlerTest extends OneHandedTestCase { mTutorialHandler, mGestureHandler, mTimeoutHandler, + mMockUiEventLogger, mMockOverlayManager, mMockTaskStackListener, mMockShellMainExecutor, diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedEventsTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedUiEventLoggerTest.java similarity index 67% rename from libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedEventsTest.java rename to libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedUiEventLoggerTest.java index 492c34e10ed54..e29fc6a919331 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedEventsTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedUiEventLoggerTest.java @@ -33,7 +33,7 @@ import java.util.Collection; @RunWith(Parameterized.class) @SmallTest -public class OneHandedEventsTest extends OneHandedTestCase { +public class OneHandedUiEventLoggerTest extends OneHandedTestCase { private UiEventLoggerFake mUiEventLogger; @@ -48,7 +48,6 @@ public class OneHandedEventsTest extends OneHandedTestCase { @Before public void setFakeLoggers() { mUiEventLogger = new UiEventLoggerFake(); - OneHandedEvents.sUiEventLogger = mUiEventLogger; } @Test @@ -63,42 +62,42 @@ public class OneHandedEventsTest extends OneHandedTestCase { public static Collection data() { return Arrays.asList(new Object[][]{ // Triggers - {OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_GESTURE_IN, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_GESTURE_IN, "writeEvent one_handed_trigger_gesture_in"}, - {OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_GESTURE_OUT, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_GESTURE_OUT, "writeEvent one_handed_trigger_gesture_out"}, - {OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_OVERSPACE_OUT, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_OVERSPACE_OUT, "writeEvent one_handed_trigger_overspace_out"}, - {OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_POP_IME_OUT, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_POP_IME_OUT, "writeEvent one_handed_trigger_pop_ime_out"}, - {OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_ROTATION_OUT, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_ROTATION_OUT, "writeEvent one_handed_trigger_rotation_out"}, - {OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_APP_TAPS_OUT, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_APP_TAPS_OUT, "writeEvent one_handed_trigger_app_taps_out"}, - {OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_TIMEOUT_OUT, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_TIMEOUT_OUT, "writeEvent one_handed_trigger_timeout_out"}, - {OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_SCREEN_OFF_OUT, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_SCREEN_OFF_OUT, "writeEvent one_handed_trigger_screen_off_out"}, // Settings toggles - {OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_ENABLED_ON, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_ENABLED_ON, "writeEvent one_handed_settings_enabled_on"}, - {OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_ENABLED_OFF, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_ENABLED_OFF, "writeEvent one_handed_settings_enabled_off"}, - {OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_APP_TAPS_EXIT_ON, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_APP_TAPS_EXIT_ON, "writeEvent one_handed_settings_app_taps_exit_on"}, - {OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_APP_TAPS_EXIT_OFF, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_APP_TAPS_EXIT_OFF, "writeEvent one_handed_settings_app_taps_exit_off"}, - {OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_EXIT_ON, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_EXIT_ON, "writeEvent one_handed_settings_timeout_exit_on"}, - {OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_EXIT_OFF, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_EXIT_OFF, "writeEvent one_handed_settings_timeout_exit_off"}, - {OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_NEVER, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_NEVER, "writeEvent one_handed_settings_timeout_seconds_never"}, - {OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_4, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_4, "writeEvent one_handed_settings_timeout_seconds_4"}, - {OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_8, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_8, "writeEvent one_handed_settings_timeout_seconds_8"}, - {OneHandedEvents.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_12, + {OneHandedUiEventLogger.EVENT_ONE_HANDED_SETTINGS_TIMEOUT_SECONDS_12, "writeEvent one_handed_settings_timeout_seconds_12"} }); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index 54e30af675ab5..e6191419f14bc 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -93,7 +93,6 @@ import com.android.systemui.statusbar.phone.StatusBarWindowCallback; import com.android.systemui.statusbar.policy.CallbackController; import com.android.wm.shell.legacysplitscreen.LegacySplitScreen; import com.android.wm.shell.onehanded.OneHanded; -import com.android.wm.shell.onehanded.OneHandedEvents; import com.android.wm.shell.pip.Pip; import com.android.wm.shell.pip.PipAnimationController; @@ -463,8 +462,7 @@ public class OverviewProxyService extends CurrentUserTracker implements } final long token = Binder.clearCallingIdentity(); try { - mOneHandedOptional.ifPresent(oneHanded -> oneHanded.stopOneHanded( - OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_GESTURE_OUT)); + mOneHandedOptional.ifPresent(oneHanded -> oneHanded.stopOneHanded()); } finally { Binder.restoreCallingIdentity(token); } diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java index 715b0a25e4617..81ac21c008234 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java @@ -55,14 +55,14 @@ import com.android.systemui.tracing.ProtoTracer; import com.android.systemui.tracing.nano.SystemUiTraceProto; import com.android.wm.shell.ShellCommandHandler; import com.android.wm.shell.hidedisplaycutout.HideDisplayCutout; +import com.android.wm.shell.legacysplitscreen.LegacySplitScreen; import com.android.wm.shell.nano.WmShellTraceProto; import com.android.wm.shell.onehanded.OneHanded; -import com.android.wm.shell.onehanded.OneHandedEvents; import com.android.wm.shell.onehanded.OneHandedGestureHandler.OneHandedGestureEventCallback; import com.android.wm.shell.onehanded.OneHandedTransitionCallback; +import com.android.wm.shell.onehanded.OneHandedUiEventLogger; import com.android.wm.shell.pip.Pip; import com.android.wm.shell.protolog.ShellProtoLogImpl; -import com.android.wm.shell.legacysplitscreen.LegacySplitScreen; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -253,7 +253,7 @@ public final class WMShell extends SystemUI mSysUiMainExecutor.execute(() -> { if (oneHanded.isOneHandedEnabled()) { oneHanded.stopOneHanded( - OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_GESTURE_OUT); + OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_GESTURE_OUT); } else if (oneHanded.isSwipeToNotificationEnabled()) { mCommandQueue.handleSystemKey(KeyEvent.KEYCODE_SYSTEM_NAVIGATION_UP); } @@ -280,7 +280,7 @@ public final class WMShell extends SystemUI @Override public void onScreenTurningOff() { oneHanded.stopOneHanded( - OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_SCREEN_OFF_OUT); + OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_SCREEN_OFF_OUT); } }); @@ -294,7 +294,8 @@ public final class WMShell extends SystemUI public void setImeWindowStatus(int displayId, IBinder token, int vis, int backDisposition, boolean showImeSwitcher) { if (displayId == DEFAULT_DISPLAY && (vis & InputMethodService.IME_VISIBLE) != 0) { - oneHanded.stopOneHanded(OneHandedEvents.EVENT_ONE_HANDED_TRIGGER_POP_IME_OUT); + oneHanded.stopOneHanded( + OneHandedUiEventLogger.EVENT_ONE_HANDED_TRIGGER_POP_IME_OUT); } } }); diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java index 1b5877f9da660..bbc238a35cbd2 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java @@ -350,10 +350,11 @@ public abstract class WMShellBaseModule { @Provides static Optional provideOneHandedController(Context context, DisplayController displayController, TaskStackListenerImpl taskStackListener, + UiEventLogger uiEventLogger, @ShellMainThread ShellExecutor mainExecutor, @ShellMainThread Handler mainHandler) { return Optional.ofNullable(OneHandedController.create(context, displayController, - taskStackListener, mainExecutor, mainHandler)); + taskStackListener, uiEventLogger, mainExecutor, mainHandler)); } @WMSingleton