Add metrics for taskbar 3 button nav
Fixes: 221075063 Test: wwlogcat shows right events, new events show up on aster dashboard Change-Id: I3864ac02ea00f281d33ccb26b95a4916bd8b6be9
This commit is contained in:
@@ -56,6 +56,7 @@ import android.widget.Toast;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
import com.android.launcher3.AbstractFloatingView;
|
import com.android.launcher3.AbstractFloatingView;
|
||||||
import com.android.launcher3.BubbleTextView;
|
import com.android.launcher3.BubbleTextView;
|
||||||
@@ -66,6 +67,7 @@ import com.android.launcher3.dot.DotInfo;
|
|||||||
import com.android.launcher3.folder.Folder;
|
import com.android.launcher3.folder.Folder;
|
||||||
import com.android.launcher3.folder.FolderIcon;
|
import com.android.launcher3.folder.FolderIcon;
|
||||||
import com.android.launcher3.logger.LauncherAtom;
|
import com.android.launcher3.logger.LauncherAtom;
|
||||||
|
import com.android.launcher3.logging.StatsLogManager;
|
||||||
import com.android.launcher3.model.data.AppInfo;
|
import com.android.launcher3.model.data.AppInfo;
|
||||||
import com.android.launcher3.model.data.FolderInfo;
|
import com.android.launcher3.model.data.FolderInfo;
|
||||||
import com.android.launcher3.model.data.ItemInfo;
|
import com.android.launcher3.model.data.ItemInfo;
|
||||||
@@ -249,6 +251,13 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
|
|||||||
mDeviceProfile.updateAllAppsIconSize(1, resources); // Leave all apps unscaled.
|
mDeviceProfile.updateAllAppsIconSize(1, resources); // Leave all apps unscaled.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
@Override
|
||||||
|
public StatsLogManager getStatsLogManager() {
|
||||||
|
// Used to mock, can't mock a default interface method directly
|
||||||
|
return super.getStatsLogManager();
|
||||||
|
}
|
||||||
|
|
||||||
/** Creates LayoutParams for adding a view directly to WindowManager as a new window */
|
/** Creates LayoutParams for adding a view directly to WindowManager as a new window */
|
||||||
public WindowManager.LayoutParams createDefaultWindowLayoutParams() {
|
public WindowManager.LayoutParams createDefaultWindowLayoutParams() {
|
||||||
WindowManager.LayoutParams windowLayoutParams = new WindowManager.LayoutParams(
|
WindowManager.LayoutParams windowLayoutParams = new WindowManager.LayoutParams(
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import android.content.pm.ActivityInfo.Config;
|
|||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.annotation.VisibleForTesting;
|
||||||
|
|
||||||
import com.android.launcher3.taskbar.allapps.TaskbarAllAppsController;
|
import com.android.launcher3.taskbar.allapps.TaskbarAllAppsController;
|
||||||
import com.android.systemui.shared.rotation.RotationButtonController;
|
import com.android.systemui.shared.rotation.RotationButtonController;
|
||||||
@@ -121,6 +122,7 @@ public class TaskbarControllers {
|
|||||||
taskbarForceVisibleImmersiveController.init(this);
|
taskbarForceVisibleImmersiveController.init(this);
|
||||||
taskbarAllAppsController.init(this, sharedState);
|
taskbarAllAppsController.init(this, sharedState);
|
||||||
taskbarRecentAppsController.init(this);
|
taskbarRecentAppsController.init(this);
|
||||||
|
navButtonController.init(this);
|
||||||
|
|
||||||
mControllersToLog = new LoggableTaskbarController[] {
|
mControllersToLog = new LoggableTaskbarController[] {
|
||||||
taskbarDragController, navButtonController, navbarButtonsViewController,
|
taskbarDragController, navButtonController, navbarButtonsViewController,
|
||||||
@@ -158,6 +160,7 @@ public class TaskbarControllers {
|
|||||||
taskbarForceVisibleImmersiveController.onDestroy();
|
taskbarForceVisibleImmersiveController.onDestroy();
|
||||||
taskbarAllAppsController.onDestroy();
|
taskbarAllAppsController.onDestroy();
|
||||||
taskbarRecentAppsController.onDestroy();
|
taskbarRecentAppsController.onDestroy();
|
||||||
|
navButtonController.onDestroy();
|
||||||
|
|
||||||
mControllersToLog = null;
|
mControllersToLog = null;
|
||||||
}
|
}
|
||||||
@@ -190,6 +193,12 @@ public class TaskbarControllers {
|
|||||||
rotationButtonController.dumpLogs(prefix + "\t", pw);
|
rotationButtonController.dumpLogs(prefix + "\t", pw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
TaskbarActivityContext getTaskbarActivityContext() {
|
||||||
|
// Used to mock
|
||||||
|
return taskbarActivityContext;
|
||||||
|
}
|
||||||
|
|
||||||
protected interface LoggableTaskbarController {
|
protected interface LoggableTaskbarController {
|
||||||
void dumpLogs(String prefix, PrintWriter pw);
|
void dumpLogs(String prefix, PrintWriter pw);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,15 +19,27 @@ package com.android.launcher3.taskbar;
|
|||||||
import static com.android.internal.app.AssistUtils.INVOCATION_TYPE_HOME_BUTTON_LONG_PRESS;
|
import static com.android.internal.app.AssistUtils.INVOCATION_TYPE_HOME_BUTTON_LONG_PRESS;
|
||||||
import static com.android.internal.app.AssistUtils.INVOCATION_TYPE_KEY;
|
import static com.android.internal.app.AssistUtils.INVOCATION_TYPE_KEY;
|
||||||
import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
|
import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_A11Y_BUTTON_LONGPRESS;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_A11Y_BUTTON_TAP;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_BACK_BUTTON_LONGPRESS;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_BACK_BUTTON_TAP;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_HOME_BUTTON_LONGPRESS;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_HOME_BUTTON_TAP;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_IME_SWITCHER_BUTTON_TAP;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_OVERVIEW_BUTTON_LONGPRESS;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_OVERVIEW_BUTTON_TAP;
|
||||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;
|
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.IntDef;
|
import androidx.annotation.IntDef;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.StringRes;
|
import androidx.annotation.StringRes;
|
||||||
|
|
||||||
import com.android.launcher3.R;
|
import com.android.launcher3.R;
|
||||||
|
import com.android.launcher3.logging.StatsLogManager;
|
||||||
import com.android.launcher3.testing.TestLogging;
|
import com.android.launcher3.testing.TestLogging;
|
||||||
import com.android.launcher3.testing.TestProtocol;
|
import com.android.launcher3.testing.TestProtocol;
|
||||||
import com.android.quickstep.OverviewCommandHelper;
|
import com.android.quickstep.OverviewCommandHelper;
|
||||||
@@ -49,6 +61,7 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa
|
|||||||
/** Allow some time in between the long press for back and recents. */
|
/** Allow some time in between the long press for back and recents. */
|
||||||
static final int SCREEN_PIN_LONG_PRESS_THRESHOLD = 200;
|
static final int SCREEN_PIN_LONG_PRESS_THRESHOLD = 200;
|
||||||
static final int SCREEN_PIN_LONG_PRESS_RESET = SCREEN_PIN_LONG_PRESS_THRESHOLD + 100;
|
static final int SCREEN_PIN_LONG_PRESS_RESET = SCREEN_PIN_LONG_PRESS_THRESHOLD + 100;
|
||||||
|
private static final String TAG = TaskbarNavButtonController.class.getSimpleName();
|
||||||
|
|
||||||
private long mLastScreenPinLongPress;
|
private long mLastScreenPinLongPress;
|
||||||
private boolean mScreenPinned;
|
private boolean mScreenPinned;
|
||||||
@@ -89,6 +102,7 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa
|
|||||||
private final TouchInteractionService mService;
|
private final TouchInteractionService mService;
|
||||||
private final SystemUiProxy mSystemUiProxy;
|
private final SystemUiProxy mSystemUiProxy;
|
||||||
private final Handler mHandler;
|
private final Handler mHandler;
|
||||||
|
@Nullable private StatsLogManager mStatsLogManager;
|
||||||
|
|
||||||
private final Runnable mResetLongPress = this::resetScreenUnpin;
|
private final Runnable mResetLongPress = this::resetScreenUnpin;
|
||||||
|
|
||||||
@@ -102,18 +116,23 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa
|
|||||||
public void onButtonClick(@TaskbarButton int buttonType) {
|
public void onButtonClick(@TaskbarButton int buttonType) {
|
||||||
switch (buttonType) {
|
switch (buttonType) {
|
||||||
case BUTTON_BACK:
|
case BUTTON_BACK:
|
||||||
|
logEvent(LAUNCHER_TASKBAR_BACK_BUTTON_TAP);
|
||||||
executeBack();
|
executeBack();
|
||||||
break;
|
break;
|
||||||
case BUTTON_HOME:
|
case BUTTON_HOME:
|
||||||
|
logEvent(LAUNCHER_TASKBAR_HOME_BUTTON_TAP);
|
||||||
navigateHome();
|
navigateHome();
|
||||||
break;
|
break;
|
||||||
case BUTTON_RECENTS:
|
case BUTTON_RECENTS:
|
||||||
|
logEvent(LAUNCHER_TASKBAR_OVERVIEW_BUTTON_TAP);
|
||||||
navigateToOverview();
|
navigateToOverview();
|
||||||
break;
|
break;
|
||||||
case BUTTON_IME_SWITCH:
|
case BUTTON_IME_SWITCH:
|
||||||
|
logEvent(LAUNCHER_TASKBAR_IME_SWITCHER_BUTTON_TAP);
|
||||||
showIMESwitcher();
|
showIMESwitcher();
|
||||||
break;
|
break;
|
||||||
case BUTTON_A11Y:
|
case BUTTON_A11Y:
|
||||||
|
logEvent(LAUNCHER_TASKBAR_A11Y_BUTTON_TAP);
|
||||||
notifyA11yClick(false /* longClick */);
|
notifyA11yClick(false /* longClick */);
|
||||||
break;
|
break;
|
||||||
case BUTTON_QUICK_SETTINGS:
|
case BUTTON_QUICK_SETTINGS:
|
||||||
@@ -128,15 +147,19 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa
|
|||||||
public boolean onButtonLongClick(@TaskbarButton int buttonType) {
|
public boolean onButtonLongClick(@TaskbarButton int buttonType) {
|
||||||
switch (buttonType) {
|
switch (buttonType) {
|
||||||
case BUTTON_HOME:
|
case BUTTON_HOME:
|
||||||
|
logEvent(LAUNCHER_TASKBAR_HOME_BUTTON_LONGPRESS);
|
||||||
startAssistant();
|
startAssistant();
|
||||||
return true;
|
return true;
|
||||||
case BUTTON_A11Y:
|
case BUTTON_A11Y:
|
||||||
|
logEvent(LAUNCHER_TASKBAR_A11Y_BUTTON_LONGPRESS);
|
||||||
notifyA11yClick(true /* longClick */);
|
notifyA11yClick(true /* longClick */);
|
||||||
return true;
|
return true;
|
||||||
case BUTTON_BACK:
|
case BUTTON_BACK:
|
||||||
|
logEvent(LAUNCHER_TASKBAR_BACK_BUTTON_LONGPRESS);
|
||||||
|
return backRecentsLongpress(buttonType);
|
||||||
case BUTTON_RECENTS:
|
case BUTTON_RECENTS:
|
||||||
mLongPressedButtons |= buttonType;
|
logEvent(LAUNCHER_TASKBAR_OVERVIEW_BUTTON_LONGPRESS);
|
||||||
return determineScreenUnpin();
|
return backRecentsLongpress(buttonType);
|
||||||
case BUTTON_IME_SWITCH:
|
case BUTTON_IME_SWITCH:
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
@@ -164,6 +187,11 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean backRecentsLongpress(@TaskbarButton int buttonType) {
|
||||||
|
mLongPressedButtons |= buttonType;
|
||||||
|
return determineScreenUnpin();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the user has long pressed back and recents buttons
|
* Checks if the user has long pressed back and recents buttons
|
||||||
* "together" (within {@link #SCREEN_PIN_LONG_PRESS_THRESHOLD})ms
|
* "together" (within {@link #SCREEN_PIN_LONG_PRESS_THRESHOLD})ms
|
||||||
@@ -210,6 +238,22 @@ public class TaskbarNavButtonController implements TaskbarControllers.LoggableTa
|
|||||||
mScreenPinned = (sysuiFlags & SYSUI_STATE_SCREEN_PINNING) != 0;
|
mScreenPinned = (sysuiFlags & SYSUI_STATE_SCREEN_PINNING) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void init(TaskbarControllers taskbarControllers) {
|
||||||
|
mStatsLogManager = taskbarControllers.getTaskbarActivityContext().getStatsLogManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onDestroy() {
|
||||||
|
mStatsLogManager = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void logEvent(StatsLogManager.LauncherEvent event) {
|
||||||
|
if (mStatsLogManager == null) {
|
||||||
|
Log.w(TAG, "No stats log manager to log taskbar button event");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mStatsLogManager.logger().log(event);
|
||||||
|
}
|
||||||
|
|
||||||
private void navigateHome() {
|
private void navigateHome() {
|
||||||
mService.getOverviewCommandHelper().addCommand(OverviewCommandHelper.TYPE_HOME);
|
mService.getOverviewCommandHelper().addCommand(OverviewCommandHelper.TYPE_HOME);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
package com.android.launcher3.taskbar;
|
package com.android.launcher3.taskbar;
|
||||||
|
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_BACK_BUTTON_LONGPRESS;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_BACK_BUTTON_TAP;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_HOME_BUTTON_LONGPRESS;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_HOME_BUTTON_TAP;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_OVERVIEW_BUTTON_LONGPRESS;
|
||||||
|
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_OVERVIEW_BUTTON_TAP;
|
||||||
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_A11Y;
|
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_A11Y;
|
||||||
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_BACK;
|
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_BACK;
|
||||||
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_HOME;
|
import static com.android.launcher3.taskbar.TaskbarNavButtonController.BUTTON_HOME;
|
||||||
@@ -11,6 +17,7 @@ import static com.android.quickstep.OverviewCommandHelper.TYPE_TOGGLE;
|
|||||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;
|
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING;
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -19,6 +26,7 @@ import android.os.Handler;
|
|||||||
|
|
||||||
import androidx.test.runner.AndroidJUnit4;
|
import androidx.test.runner.AndroidJUnit4;
|
||||||
|
|
||||||
|
import com.android.launcher3.logging.StatsLogManager;
|
||||||
import com.android.quickstep.OverviewCommandHelper;
|
import com.android.quickstep.OverviewCommandHelper;
|
||||||
import com.android.quickstep.SystemUiProxy;
|
import com.android.quickstep.SystemUiProxy;
|
||||||
import com.android.quickstep.TouchInteractionService;
|
import com.android.quickstep.TouchInteractionService;
|
||||||
@@ -42,6 +50,14 @@ public class TaskbarNavButtonControllerTest {
|
|||||||
OverviewCommandHelper mockCommandHelper;
|
OverviewCommandHelper mockCommandHelper;
|
||||||
@Mock
|
@Mock
|
||||||
Handler mockHandler;
|
Handler mockHandler;
|
||||||
|
@Mock
|
||||||
|
StatsLogManager mockStatsLogManager;
|
||||||
|
@Mock
|
||||||
|
StatsLogManager.StatsLogger mockStatsLogger;
|
||||||
|
@Mock
|
||||||
|
TaskbarControllers mockTaskbarControllers;
|
||||||
|
@Mock
|
||||||
|
TaskbarActivityContext mockTaskbarActivityContext;
|
||||||
|
|
||||||
private TaskbarNavButtonController mNavButtonController;
|
private TaskbarNavButtonController mNavButtonController;
|
||||||
|
|
||||||
@@ -50,6 +66,10 @@ public class TaskbarNavButtonControllerTest {
|
|||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
when(mockService.getDisplayId()).thenReturn(DISPLAY_ID);
|
when(mockService.getDisplayId()).thenReturn(DISPLAY_ID);
|
||||||
when(mockService.getOverviewCommandHelper()).thenReturn(mockCommandHelper);
|
when(mockService.getOverviewCommandHelper()).thenReturn(mockCommandHelper);
|
||||||
|
when(mockStatsLogManager.logger()).thenReturn(mockStatsLogger);
|
||||||
|
when(mockTaskbarControllers.getTaskbarActivityContext())
|
||||||
|
.thenReturn(mockTaskbarActivityContext);
|
||||||
|
doReturn(mockStatsLogManager).when(mockTaskbarActivityContext).getStatsLogManager();
|
||||||
mNavButtonController = new TaskbarNavButtonController(mockService,
|
mNavButtonController = new TaskbarNavButtonController(mockService,
|
||||||
mockSystemUiProxy, mockHandler);
|
mockSystemUiProxy, mockHandler);
|
||||||
}
|
}
|
||||||
@@ -156,4 +176,49 @@ public class TaskbarNavButtonControllerTest {
|
|||||||
mNavButtonController.onButtonLongClick(BUTTON_HOME);
|
mNavButtonController.onButtonLongClick(BUTTON_HOME);
|
||||||
verify(mockSystemUiProxy, times(0)).startAssistant(any());
|
verify(mockSystemUiProxy, times(0)).startAssistant(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNoCallsToNullLogger() {
|
||||||
|
mNavButtonController.onButtonClick(BUTTON_HOME);
|
||||||
|
verify(mockStatsLogManager, times(0)).logger();
|
||||||
|
verify(mockStatsLogger, times(0)).log(any());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNoCallsAfterNullingOut() {
|
||||||
|
mNavButtonController.init(mockTaskbarControllers);
|
||||||
|
mNavButtonController.onButtonClick(BUTTON_HOME);
|
||||||
|
mNavButtonController.onDestroy();
|
||||||
|
mNavButtonController.onButtonClick(BUTTON_HOME);
|
||||||
|
verify(mockStatsLogger, times(1)).log(LAUNCHER_TASKBAR_HOME_BUTTON_TAP);
|
||||||
|
verify(mockStatsLogger, times(0)).log(LAUNCHER_TASKBAR_HOME_BUTTON_LONGPRESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLogOnTap() {
|
||||||
|
mNavButtonController.init(mockTaskbarControllers);
|
||||||
|
mNavButtonController.onButtonClick(BUTTON_HOME);
|
||||||
|
verify(mockStatsLogger, times(1)).log(LAUNCHER_TASKBAR_HOME_BUTTON_TAP);
|
||||||
|
verify(mockStatsLogger, times(0)).log(LAUNCHER_TASKBAR_HOME_BUTTON_LONGPRESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testLogOnLongpress() {
|
||||||
|
mNavButtonController.init(mockTaskbarControllers);
|
||||||
|
mNavButtonController.onButtonLongClick(BUTTON_HOME);
|
||||||
|
verify(mockStatsLogger, times(1)).log(LAUNCHER_TASKBAR_HOME_BUTTON_LONGPRESS);
|
||||||
|
verify(mockStatsLogger, times(0)).log(LAUNCHER_TASKBAR_HOME_BUTTON_TAP);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testBackOverviewLogOnLongpress() {
|
||||||
|
mNavButtonController.init(mockTaskbarControllers);
|
||||||
|
mNavButtonController.onButtonLongClick(BUTTON_RECENTS);
|
||||||
|
verify(mockStatsLogger, times(1)).log(LAUNCHER_TASKBAR_OVERVIEW_BUTTON_LONGPRESS);
|
||||||
|
verify(mockStatsLogger, times(0)).log(LAUNCHER_TASKBAR_OVERVIEW_BUTTON_TAP);
|
||||||
|
|
||||||
|
mNavButtonController.onButtonLongClick(BUTTON_BACK);
|
||||||
|
verify(mockStatsLogger, times(1)).log(LAUNCHER_TASKBAR_BACK_BUTTON_LONGPRESS);
|
||||||
|
verify(mockStatsLogger, times(0)).log(LAUNCHER_TASKBAR_BACK_BUTTON_TAP);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -552,7 +552,34 @@ public class StatsLogManager implements ResourceBasedOverride {
|
|||||||
|
|
||||||
@UiEvent(doc = "User scrolled on one of the all apps surfaces such as A-Z list, search "
|
@UiEvent(doc = "User scrolled on one of the all apps surfaces such as A-Z list, search "
|
||||||
+ "result page etc.")
|
+ "result page etc.")
|
||||||
LAUNCHER_ALLAPPS_SCROLLED(985);
|
LAUNCHER_ALLAPPS_SCROLLED(985),
|
||||||
|
|
||||||
|
@UiEvent(doc = "User tapped taskbar home button")
|
||||||
|
LAUNCHER_TASKBAR_HOME_BUTTON_TAP(1003),
|
||||||
|
|
||||||
|
@UiEvent(doc = "User tapped taskbar back button")
|
||||||
|
LAUNCHER_TASKBAR_BACK_BUTTON_TAP(1004),
|
||||||
|
|
||||||
|
@UiEvent(doc = "User tapped taskbar overview/recents button")
|
||||||
|
LAUNCHER_TASKBAR_OVERVIEW_BUTTON_TAP(1005),
|
||||||
|
|
||||||
|
@UiEvent(doc = "User tapped taskbar IME switcher button")
|
||||||
|
LAUNCHER_TASKBAR_IME_SWITCHER_BUTTON_TAP(1006),
|
||||||
|
|
||||||
|
@UiEvent(doc = "User tapped taskbar a11y button")
|
||||||
|
LAUNCHER_TASKBAR_A11Y_BUTTON_TAP(1007),
|
||||||
|
|
||||||
|
@UiEvent(doc = "User tapped taskbar home button")
|
||||||
|
LAUNCHER_TASKBAR_HOME_BUTTON_LONGPRESS(1008),
|
||||||
|
|
||||||
|
@UiEvent(doc = "User tapped taskbar back button")
|
||||||
|
LAUNCHER_TASKBAR_BACK_BUTTON_LONGPRESS(1009),
|
||||||
|
|
||||||
|
@UiEvent(doc = "User tapped taskbar overview/recents button")
|
||||||
|
LAUNCHER_TASKBAR_OVERVIEW_BUTTON_LONGPRESS(1010),
|
||||||
|
|
||||||
|
@UiEvent(doc = "User tapped taskbar a11y button")
|
||||||
|
LAUNCHER_TASKBAR_A11Y_BUTTON_LONGPRESS(1011);
|
||||||
|
|
||||||
// ADD MORE
|
// ADD MORE
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user