Loading packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +51 −7 Original line number Diff line number Diff line Loading @@ -222,11 +222,27 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private ControlsController mControlsController; private SharedPreferences mControlsPreferences; private final RingerModeTracker mRingerModeTracker; private int mDialogPressDelay = DIALOG_PRESS_DELAY; // ms @VisibleForTesting public enum GlobalActionsEvent implements UiEventLogger.UiEventEnum { @UiEvent(doc = "The global actions / power menu surface became visible on the screen.") GA_POWER_MENU_OPEN(337); GA_POWER_MENU_OPEN(337), @UiEvent(doc = "The global actions bugreport button was pressed.") GA_BUGREPORT_PRESS(344), @UiEvent(doc = "The global actions bugreport button was long pressed.") GA_BUGREPORT_LONG_PRESS(345), @UiEvent(doc = "The global actions emergency button was pressed.") GA_EMERGENCY_DIALER_PRESS(346), @UiEvent(doc = "The global actions screenshot button was pressed.") GA_SCREENSHOT_PRESS(347), @UiEvent(doc = "The global actions screenshot button was long pressed.") GA_SCREENSHOT_LONG_PRESS(348); private final int mId; Loading Loading @@ -679,7 +695,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } private class EmergencyDialerAction extends EmergencyAction { @VisibleForTesting class EmergencyDialerAction extends EmergencyAction { private EmergencyDialerAction() { super(com.android.systemui.R.drawable.ic_emergency_star, R.string.global_action_emergency); Loading @@ -688,6 +705,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, @Override public void onPress() { mMetricsLogger.action(MetricsEvent.ACTION_EMERGENCY_DIALER_FROM_POWER_MENU); mUiEventLogger.log(GlobalActionsEvent.GA_EMERGENCY_DIALER_PRESS); if (mTelecomManager != null) { Intent intent = mTelecomManager.createLaunchEmergencyDialerIntent( null /* number */); Loading @@ -701,6 +719,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } @VisibleForTesting EmergencyDialerAction makeEmergencyDialerActionForTesting() { return new EmergencyDialerAction(); } private final class RestartAction extends SinglePressAction implements LongPressAction { private RestartAction() { super(R.drawable.ic_restart, R.string.global_action_restart); Loading Loading @@ -731,7 +754,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } private class ScreenshotAction extends SinglePressAction implements LongPressAction { @VisibleForTesting class ScreenshotAction extends SinglePressAction implements LongPressAction { public ScreenshotAction() { super(R.drawable.ic_screenshot, R.string.global_action_screenshot); } Loading @@ -747,8 +771,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, public void run() { mScreenshotHelper.takeScreenshot(1, true, true, mHandler, null); mMetricsLogger.action(MetricsEvent.ACTION_SCREENSHOT_POWER_MENU); mUiEventLogger.log(GlobalActionsEvent.GA_SCREENSHOT_PRESS); } }, 500); }, mDialogPressDelay); } @Override Loading @@ -764,6 +789,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, @Override public boolean onLongPress() { if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SCREENRECORD_LONG_PRESS)) { mUiEventLogger.log(GlobalActionsEvent.GA_SCREENSHOT_LONG_PRESS); mScreenRecordHelper.launchRecordPrompt(); } else { onPress(); Loading @@ -772,7 +798,13 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } private class BugReportAction extends SinglePressAction implements LongPressAction { @VisibleForTesting ScreenshotAction makeScreenshotActionForTesting() { return new ScreenshotAction(); } @VisibleForTesting class BugReportAction extends SinglePressAction implements LongPressAction { public BugReportAction() { super(R.drawable.ic_lock_bugreport, R.string.bugreport_title); Loading @@ -795,6 +827,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, // Take an "interactive" bugreport. mMetricsLogger.action( MetricsEvent.ACTION_BUGREPORT_FROM_POWER_MENU_INTERACTIVE); mUiEventLogger.log(GlobalActionsEvent.GA_BUGREPORT_PRESS); if (!mIActivityManager.launchBugReportHandlerApp()) { Log.w(TAG, "Bugreport handler could not be launched"); mIActivityManager.requestInteractiveBugReport(); Loading @@ -802,7 +835,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } catch (RemoteException e) { } } }, 500); }, mDialogPressDelay); } @Override Loading @@ -815,6 +848,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, try { // Take a "full" bugreport. mMetricsLogger.action(MetricsEvent.ACTION_BUGREPORT_FROM_POWER_MENU_FULL); mUiEventLogger.log(GlobalActionsEvent.GA_BUGREPORT_LONG_PRESS); mIActivityManager.requestFullBugReport(); } catch (RemoteException e) { } Loading @@ -831,6 +865,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } @VisibleForTesting BugReportAction makeBugReportActionForTesting() { return new BugReportAction(); } private final class LogoutAction extends SinglePressAction { private LogoutAction() { super(R.drawable.ic_logout, R.string.global_action_logout); Loading Loading @@ -858,7 +897,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } catch (RemoteException re) { Log.e(TAG, "Couldn't logout user " + re); } }, 500); }, mDialogPressDelay); } } Loading Loading @@ -1599,6 +1638,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private static final int MESSAGE_REFRESH = 1; private static final int MESSAGE_SHOW = 2; private static final int DIALOG_DISMISS_DELAY = 300; // ms private static final int DIALOG_PRESS_DELAY = 500; // ms @VisibleForTesting void setZeroDialogPressDelayForTesting() { mDialogPressDelay = 0; // ms } private Handler mHandler = new Handler() { public void handleMessage(Message msg) { Loading packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java +52 −2 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.service.dreams.IDreamManager; import android.telephony.TelephonyManager; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.util.FeatureFlagUtils; import android.view.IWindowManager; import androidx.test.filters.SmallTest; Loading Loading @@ -66,7 +67,7 @@ import java.util.concurrent.Executor; @SmallTest @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper @TestableLooper.RunWithLooper() public class GlobalActionsDialogTest extends SysuiTestCase { private GlobalActionsDialog mGlobalActionsDialog; Loading Loading @@ -143,11 +144,60 @@ public class GlobalActionsDialogTest extends SysuiTestCase { mUiEventLogger, mRingerModeTracker ); mGlobalActionsDialog.setZeroDialogPressDelayForTesting(); } @Test public void testShouldLogVisibility() { mGlobalActionsDialog.onShow(null); mTestableLooper.processAllMessages(); verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_POWER_MENU_OPEN); } @Test public void testShouldLogBugreportPress() throws InterruptedException { GlobalActionsDialog.BugReportAction bugReportAction = mGlobalActionsDialog.makeBugReportActionForTesting(); bugReportAction.onPress(); verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_BUGREPORT_PRESS); } @Test public void testShouldLogBugreportLongPress() { GlobalActionsDialog.BugReportAction bugReportAction = mGlobalActionsDialog.makeBugReportActionForTesting(); bugReportAction.onLongPress(); verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_BUGREPORT_LONG_PRESS); } @Test public void testShouldLogEmergencyDialerPress() { GlobalActionsDialog.EmergencyDialerAction emergencyDialerAction = mGlobalActionsDialog.makeEmergencyDialerActionForTesting(); emergencyDialerAction.onPress(); verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_EMERGENCY_DIALER_PRESS); } @Test public void testShouldLogScreenshotPress() { GlobalActionsDialog.ScreenshotAction screenshotAction = mGlobalActionsDialog.makeScreenshotActionForTesting(); screenshotAction.onPress(); verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_SCREENSHOT_PRESS); } @Test public void testShouldLogScreenshotLongPress() { FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SCREENRECORD_LONG_PRESS, true); GlobalActionsDialog.ScreenshotAction screenshotAction = mGlobalActionsDialog.makeScreenshotActionForTesting(); screenshotAction.onLongPress(); verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_SCREENSHOT_LONG_PRESS); } private void verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent event) { mTestableLooper.processAllMessages(); verify(mUiEventLogger, times(1)) .log(GlobalActionsDialog.GlobalActionsEvent.GA_POWER_MENU_OPEN); .log(event); } } Loading
packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +51 −7 Original line number Diff line number Diff line Loading @@ -222,11 +222,27 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private ControlsController mControlsController; private SharedPreferences mControlsPreferences; private final RingerModeTracker mRingerModeTracker; private int mDialogPressDelay = DIALOG_PRESS_DELAY; // ms @VisibleForTesting public enum GlobalActionsEvent implements UiEventLogger.UiEventEnum { @UiEvent(doc = "The global actions / power menu surface became visible on the screen.") GA_POWER_MENU_OPEN(337); GA_POWER_MENU_OPEN(337), @UiEvent(doc = "The global actions bugreport button was pressed.") GA_BUGREPORT_PRESS(344), @UiEvent(doc = "The global actions bugreport button was long pressed.") GA_BUGREPORT_LONG_PRESS(345), @UiEvent(doc = "The global actions emergency button was pressed.") GA_EMERGENCY_DIALER_PRESS(346), @UiEvent(doc = "The global actions screenshot button was pressed.") GA_SCREENSHOT_PRESS(347), @UiEvent(doc = "The global actions screenshot button was long pressed.") GA_SCREENSHOT_LONG_PRESS(348); private final int mId; Loading Loading @@ -679,7 +695,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } private class EmergencyDialerAction extends EmergencyAction { @VisibleForTesting class EmergencyDialerAction extends EmergencyAction { private EmergencyDialerAction() { super(com.android.systemui.R.drawable.ic_emergency_star, R.string.global_action_emergency); Loading @@ -688,6 +705,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, @Override public void onPress() { mMetricsLogger.action(MetricsEvent.ACTION_EMERGENCY_DIALER_FROM_POWER_MENU); mUiEventLogger.log(GlobalActionsEvent.GA_EMERGENCY_DIALER_PRESS); if (mTelecomManager != null) { Intent intent = mTelecomManager.createLaunchEmergencyDialerIntent( null /* number */); Loading @@ -701,6 +719,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } @VisibleForTesting EmergencyDialerAction makeEmergencyDialerActionForTesting() { return new EmergencyDialerAction(); } private final class RestartAction extends SinglePressAction implements LongPressAction { private RestartAction() { super(R.drawable.ic_restart, R.string.global_action_restart); Loading Loading @@ -731,7 +754,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } private class ScreenshotAction extends SinglePressAction implements LongPressAction { @VisibleForTesting class ScreenshotAction extends SinglePressAction implements LongPressAction { public ScreenshotAction() { super(R.drawable.ic_screenshot, R.string.global_action_screenshot); } Loading @@ -747,8 +771,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, public void run() { mScreenshotHelper.takeScreenshot(1, true, true, mHandler, null); mMetricsLogger.action(MetricsEvent.ACTION_SCREENSHOT_POWER_MENU); mUiEventLogger.log(GlobalActionsEvent.GA_SCREENSHOT_PRESS); } }, 500); }, mDialogPressDelay); } @Override Loading @@ -764,6 +789,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, @Override public boolean onLongPress() { if (FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SCREENRECORD_LONG_PRESS)) { mUiEventLogger.log(GlobalActionsEvent.GA_SCREENSHOT_LONG_PRESS); mScreenRecordHelper.launchRecordPrompt(); } else { onPress(); Loading @@ -772,7 +798,13 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } private class BugReportAction extends SinglePressAction implements LongPressAction { @VisibleForTesting ScreenshotAction makeScreenshotActionForTesting() { return new ScreenshotAction(); } @VisibleForTesting class BugReportAction extends SinglePressAction implements LongPressAction { public BugReportAction() { super(R.drawable.ic_lock_bugreport, R.string.bugreport_title); Loading @@ -795,6 +827,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, // Take an "interactive" bugreport. mMetricsLogger.action( MetricsEvent.ACTION_BUGREPORT_FROM_POWER_MENU_INTERACTIVE); mUiEventLogger.log(GlobalActionsEvent.GA_BUGREPORT_PRESS); if (!mIActivityManager.launchBugReportHandlerApp()) { Log.w(TAG, "Bugreport handler could not be launched"); mIActivityManager.requestInteractiveBugReport(); Loading @@ -802,7 +835,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } catch (RemoteException e) { } } }, 500); }, mDialogPressDelay); } @Override Loading @@ -815,6 +848,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, try { // Take a "full" bugreport. mMetricsLogger.action(MetricsEvent.ACTION_BUGREPORT_FROM_POWER_MENU_FULL); mUiEventLogger.log(GlobalActionsEvent.GA_BUGREPORT_LONG_PRESS); mIActivityManager.requestFullBugReport(); } catch (RemoteException e) { } Loading @@ -831,6 +865,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } @VisibleForTesting BugReportAction makeBugReportActionForTesting() { return new BugReportAction(); } private final class LogoutAction extends SinglePressAction { private LogoutAction() { super(R.drawable.ic_logout, R.string.global_action_logout); Loading Loading @@ -858,7 +897,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } catch (RemoteException re) { Log.e(TAG, "Couldn't logout user " + re); } }, 500); }, mDialogPressDelay); } } Loading Loading @@ -1599,6 +1638,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private static final int MESSAGE_REFRESH = 1; private static final int MESSAGE_SHOW = 2; private static final int DIALOG_DISMISS_DELAY = 300; // ms private static final int DIALOG_PRESS_DELAY = 500; // ms @VisibleForTesting void setZeroDialogPressDelayForTesting() { mDialogPressDelay = 0; // ms } private Handler mHandler = new Handler() { public void handleMessage(Message msg) { Loading
packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java +52 −2 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import android.service.dreams.IDreamManager; import android.telephony.TelephonyManager; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import android.util.FeatureFlagUtils; import android.view.IWindowManager; import androidx.test.filters.SmallTest; Loading Loading @@ -66,7 +67,7 @@ import java.util.concurrent.Executor; @SmallTest @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper @TestableLooper.RunWithLooper() public class GlobalActionsDialogTest extends SysuiTestCase { private GlobalActionsDialog mGlobalActionsDialog; Loading Loading @@ -143,11 +144,60 @@ public class GlobalActionsDialogTest extends SysuiTestCase { mUiEventLogger, mRingerModeTracker ); mGlobalActionsDialog.setZeroDialogPressDelayForTesting(); } @Test public void testShouldLogVisibility() { mGlobalActionsDialog.onShow(null); mTestableLooper.processAllMessages(); verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_POWER_MENU_OPEN); } @Test public void testShouldLogBugreportPress() throws InterruptedException { GlobalActionsDialog.BugReportAction bugReportAction = mGlobalActionsDialog.makeBugReportActionForTesting(); bugReportAction.onPress(); verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_BUGREPORT_PRESS); } @Test public void testShouldLogBugreportLongPress() { GlobalActionsDialog.BugReportAction bugReportAction = mGlobalActionsDialog.makeBugReportActionForTesting(); bugReportAction.onLongPress(); verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_BUGREPORT_LONG_PRESS); } @Test public void testShouldLogEmergencyDialerPress() { GlobalActionsDialog.EmergencyDialerAction emergencyDialerAction = mGlobalActionsDialog.makeEmergencyDialerActionForTesting(); emergencyDialerAction.onPress(); verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_EMERGENCY_DIALER_PRESS); } @Test public void testShouldLogScreenshotPress() { GlobalActionsDialog.ScreenshotAction screenshotAction = mGlobalActionsDialog.makeScreenshotActionForTesting(); screenshotAction.onPress(); verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_SCREENSHOT_PRESS); } @Test public void testShouldLogScreenshotLongPress() { FeatureFlagUtils.setEnabled(mContext, FeatureFlagUtils.SCREENRECORD_LONG_PRESS, true); GlobalActionsDialog.ScreenshotAction screenshotAction = mGlobalActionsDialog.makeScreenshotActionForTesting(); screenshotAction.onLongPress(); verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent.GA_SCREENSHOT_LONG_PRESS); } private void verifyLogPosted(GlobalActionsDialog.GlobalActionsEvent event) { mTestableLooper.processAllMessages(); verify(mUiEventLogger, times(1)) .log(GlobalActionsDialog.GlobalActionsEvent.GA_POWER_MENU_OPEN); .log(event); } }