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
This commit is contained in:
Bill Lin
2021-01-05 17:13:37 +08:00
parent 81895251a2
commit 91f0e46305
9 changed files with 121 additions and 129 deletions

View File

@@ -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.

View File

@@ -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));
}
/**

View File

@@ -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 <tag_description>"
* 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);
}
}

View File

@@ -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,

View File

@@ -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,

View File

@@ -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<Object[]> 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"}
});
}

View File

@@ -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);
}

View File

@@ -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);
}
}
});

View File

@@ -350,10 +350,11 @@ public abstract class WMShellBaseModule {
@Provides
static Optional<OneHanded> 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