Merge "Refactor OneHanded mode UiEventLogger implementation"
This commit is contained in:
committed by
Android (Google) Code Review
commit
7ecc9ac716
@@ -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.
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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"}
|
||||
});
|
||||
}
|
||||
@@ -96,7 +96,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;
|
||||
import com.android.wm.shell.transition.Transitions;
|
||||
@@ -469,8 +468,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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user