Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit deec2f8d authored by Wes Okuhara's avatar Wes Okuhara Committed by Android (Google) Code Review
Browse files

Merge "Screen capture: Setup keyboard shortcut for partial screenshots" into main

parents 40a1562d 5bf2ea27
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -135,6 +135,7 @@ public final class KeyGestureEvent {
    public static final int KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK = 80;
    public static final int KEY_GESTURE_TYPE_QUIT_FOCUSED_DESKTOP_TASK = 81;
    public static final int KEY_GESTURE_TYPE_TOGGLE_FULLSCREEN = 82;
    public static final int KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT = 83;

    public static final int FLAG_CANCELLED = 1 << 0;
    public static final int FLAG_LONG_PRESS = 1 << 1;
@@ -232,6 +233,7 @@ public final class KeyGestureEvent {
            KEY_GESTURE_TYPE_QUIT_FOCUSED_TASK,
            KEY_GESTURE_TYPE_QUIT_FOCUSED_DESKTOP_TASK,
            KEY_GESTURE_TYPE_TOGGLE_FULLSCREEN,
            KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface KeyGestureType {
@@ -836,6 +838,8 @@ public final class KeyGestureEvent {
                return "KEY_GESTURE_TYPE_QUIT_FOCUSED_DESKTOP_TASK";
            case KEY_GESTURE_TYPE_TOGGLE_FULLSCREEN:
                return "KEY_GESTURE_TYPE_TOGGLE_FULLSCREEN";
            case KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT:
                return "KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT";
            default:
                return Integer.toHexString(value);
        }
+7 −0
Original line number Diff line number Diff line
@@ -256,6 +256,13 @@ flag {
    bug: "403531245"
}

flag {
    name: "enable_partial_screenshot_keyboard_shortcut"
    namespace: "input"
    description: "Enables keyboard shortcut for taking partial screenshots via large screen capture UI"
    bug: "420714826"
}

flag {
  name: "keyboard_backlight_shortcuts"
  namespace: "desktop_input"
+4 −0
Original line number Diff line number Diff line
@@ -551,6 +551,7 @@ object TestShortcuts {
            simpleShortcutCategory(System, "System controls", "View notifications"),
            simpleShortcutCategory(System, "System controls", "View quick settings"),
            simpleShortcutCategory(System, "System controls", "Take screenshot"),
            simpleShortcutCategory(System, "System controls", "Take partial screenshot"),
            simpleShortcutCategory(System, "System controls", "Go back"),
            simpleShortcutCategory(MultiTasking, "Split screen", "Use full screen"),
            simpleShortcutCategory(
@@ -587,6 +588,9 @@ object TestShortcuts {
            simpleInputGestureData(
                keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_SCREENSHOT
            ),
            simpleInputGestureData(
                keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT
            ),
            simpleInputGestureData(keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_BACK),
            simpleInputGestureData(
                keyGestureType = KeyGestureEvent.KEY_GESTURE_TYPE_MULTI_WINDOW_NAVIGATION
+21 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.hardware.input.InputManager.KeyGestureEventHandler
import android.hardware.input.InputManager.KeyGestureEventListener
import android.hardware.input.KeyGestureEvent
import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS
import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT
import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL
import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL
import android.hardware.input.KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_TASKBAR
@@ -81,6 +82,7 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() {
    @EnableFlags(
        com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI,
        com.android.hardware.input.Flags.FLAG_ENABLE_QUICK_SETTINGS_PANEL_SHORTCUT,
        com.android.hardware.input.Flags.FLAG_ENABLE_PARTIAL_SCREENSHOT_KEYBOARD_SHORTCUT,
    )
    fun start_flagEnabled_registerKeyGestureEvents() {
        underTest.start()
@@ -91,6 +93,7 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() {
                .containsExactly(
                    KEY_GESTURE_TYPE_TOGGLE_NOTIFICATION_PANEL,
                    KEY_GESTURE_TYPE_TOGGLE_QUICK_SETTINGS_PANEL,
                    KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT,
                )
        }
    }
@@ -99,6 +102,7 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() {
    @DisableFlags(
        com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI,
        com.android.hardware.input.Flags.FLAG_ENABLE_QUICK_SETTINGS_PANEL_SHORTCUT,
        com.android.hardware.input.Flags.FLAG_ENABLE_PARTIAL_SCREENSHOT_KEYBOARD_SHORTCUT,
    )
    fun start_flagDisabled_noRegisterKeyGestureEvents() {
        underTest.start()
@@ -142,6 +146,23 @@ class SysUIKeyGestureEventInitializerTest : SysuiTestCase() {
        verify(commandQueue).toggleQuickSettingsPanel()
    }

    @Test
    @EnableFlags(com.android.hardware.input.Flags.FLAG_ENABLE_PARTIAL_SCREENSHOT_KEYBOARD_SHORTCUT)
    fun handleKeyGestureEvent_eventTypeTakePartialScreenshot_opensScreenCaptureUi() {
        underTest.start()
        verify(inputManager)
            .registerKeyGestureEventHandler(any(), keyGestureEventHandlerCaptor.capture())

        keyGestureEventHandlerCaptor.value.handleKeyGestureEvent(
            KeyGestureEvent.Builder()
                .setKeyGestureType(KEY_GESTURE_TYPE_TAKE_PARTIAL_SCREENSHOT)
                .build(),
            /* focusedToken= */ null,
        )

        // TODO(b/420714826) Verify screen capture UI is launched.
    }

    @Test
    @EnableFlags(com.android.window.flags.Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_SYSUI)
    fun handleKeyGestureEvent_otherEventTypeToggleNotificationPanel_noInteraction() {
+2 −0
Original line number Diff line number Diff line
@@ -2545,6 +2545,8 @@
    <string name="group_system_access_quick_settings_panel">View quick settings</string>
    <!-- User visible title for the keyboard shortcut that takes a full screenshot. [CHAR LIMIT=70] -->
    <string name="group_system_full_screenshot">Take screenshot</string>
    <!-- User visible title for the keyboard shortcut that begins a partial screenshot. [CHAR LIMIT=70] -->
    <string name="group_system_partial_screenshot">Take partial screenshot</string>
    <!-- User visible title for the keyboard shortcut that access list of system / apps shortcuts. [CHAR LIMIT=70] -->
    <string name="group_system_access_system_app_shortcuts">Show shortcuts</string>
    <!-- User visible title for the keyboard shortcut that goes back to previous state. [CHAR LIMIT=70] -->
Loading