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

Commit 34eb1735 authored by Josep del Río's avatar Josep del Río Committed by Android (Google) Code Review
Browse files

Merge "Launch settings on settings key press" into main

parents 96368b54 a5e8d4ad
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -1193,13 +1193,14 @@
    <!-- Allows activities to be launched on a long press on power during device setup. -->
    <bool name="config_allowStartActivityForLongPressOnPowerInSetup">false</bool>

    <!-- Control the behavior when the user short presses the settings button.
            0 - Nothing
    <!-- Control the behavior when the user presses the settings button.
            0 - Launch Settings activity
            1 - Launch notification panel
            2 - Nothing
         This needs to match the constants in
         com/android/server/policy/PhoneWindowManager.java
    -->
    <integer name="config_shortPressOnSettingsBehavior">0</integer>
    <integer name="config_settingsKeyBehavior">0</integer>

    <!-- Control the behavior when the user short presses the power button.
            0 - Nothing
+1 −1
Original line number Diff line number Diff line
@@ -1861,7 +1861,7 @@
  <java-symbol type="integer" name="config_lidNavigationAccessibility" />
  <java-symbol type="integer" name="config_lidOpenRotation" />
  <java-symbol type="integer" name="config_longPressOnHomeBehavior" />
  <java-symbol type="integer" name="config_shortPressOnSettingsBehavior" />
  <java-symbol type="integer" name="config_settingsKeyBehavior" />
  <java-symbol type="layout" name="global_actions" />
  <java-symbol type="layout" name="global_actions_item" />
  <java-symbol type="layout" name="global_actions_silent_mode" />
+31 −26
Original line number Diff line number Diff line
@@ -341,10 +341,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    static final int SHORT_PRESS_SLEEP_GO_TO_SLEEP = 0;
    static final int SHORT_PRESS_SLEEP_GO_TO_SLEEP_AND_GO_HOME = 1;

    // must match: config_shortPressOnSettingsBehavior in config.xml
    static final int SHORT_PRESS_SETTINGS_NOTHING = 0;
    static final int SHORT_PRESS_SETTINGS_NOTIFICATION_PANEL = 1;
    static final int LAST_SHORT_PRESS_SETTINGS_BEHAVIOR = SHORT_PRESS_SETTINGS_NOTIFICATION_PANEL;
    // must match: config_settingsKeyBehavior in config.xml
    static final int SETTINGS_KEY_BEHAVIOR_SETTINGS_ACTIVITY = 0;
    static final int SETTINGS_KEY_BEHAVIOR_NOTIFICATION_PANEL = 1;
    static final int SETTINGS_KEY_BEHAVIOR_NOTHING = 2;
    static final int LAST_SETTINGS_KEY_BEHAVIOR = SETTINGS_KEY_BEHAVIOR_NOTHING;

    static final int PENDING_KEY_NULL = -1;

@@ -370,8 +371,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    static final int TRIPLE_PRESS_PRIMARY_TOGGLE_ACCESSIBILITY = 1;

    // Must match: config_searchKeyBehavior in config.xml
    static final int SEARCH_BEHAVIOR_DEFAULT_SEARCH = 0;
    static final int SEARCH_BEHAVIOR_TARGET_ACTIVITY = 1;
    static final int SEARCH_KEY_BEHAVIOR_DEFAULT_SEARCH = 0;
    static final int SEARCH_KEY_BEHAVIOR_TARGET_ACTIVITY = 1;

    static public final String SYSTEM_DIALOG_REASON_KEY = "reason";
    static public final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions";
@@ -643,8 +644,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
    // What we do when the user double-taps on home
    int mDoubleTapOnHomeBehavior;

    // What we do when the user presses on settings
    int mShortPressOnSettingsBehavior;
    // What we do when the user presses the settings key
    int mSettingsKeyBehavior;

    // Must match config_primaryShortPressTargetActivity in config.xml
    ComponentName mPrimaryShortPressTargetActivity;
@@ -2858,11 +2859,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            mShortPressOnWindowBehavior = SHORT_PRESS_WINDOW_PICTURE_IN_PICTURE;
        }

        mShortPressOnSettingsBehavior = res.getInteger(
                com.android.internal.R.integer.config_shortPressOnSettingsBehavior);
        if (mShortPressOnSettingsBehavior < SHORT_PRESS_SETTINGS_NOTHING
                || mShortPressOnSettingsBehavior > LAST_SHORT_PRESS_SETTINGS_BEHAVIOR) {
            mShortPressOnSettingsBehavior = SHORT_PRESS_SETTINGS_NOTHING;
        mSettingsKeyBehavior = res.getInteger(
                com.android.internal.R.integer.config_settingsKeyBehavior);
        if (mSettingsKeyBehavior < SETTINGS_KEY_BEHAVIOR_SETTINGS_ACTIVITY
                || mSettingsKeyBehavior > LAST_SETTINGS_KEY_BEHAVIOR) {
            mSettingsKeyBehavior = SETTINGS_KEY_BEHAVIOR_SETTINGS_ACTIVITY;
        }
    }

@@ -3694,12 +3695,12 @@ public class PhoneWindowManager implements WindowManagerPolicy {
            case KeyEvent.KEYCODE_SEARCH:
                if (firstDown && !keyguardOn) {
                    switch (mSearchKeyBehavior) {
                        case SEARCH_BEHAVIOR_TARGET_ACTIVITY: {
                        case SEARCH_KEY_BEHAVIOR_TARGET_ACTIVITY: {
                            launchTargetSearchActivity();
                            logKeyboardSystemsEvent(event, KeyboardLogEvent.LAUNCH_SEARCH);
                            return true;
                        }
                        case SEARCH_BEHAVIOR_DEFAULT_SEARCH:
                        case SEARCH_KEY_BEHAVIOR_DEFAULT_SEARCH:
                        default:
                            break;
                    }
@@ -3778,14 +3779,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                        + " interceptKeyBeforeQueueing");
                return true;
            case KeyEvent.KEYCODE_SETTINGS:
                if (mShortPressOnSettingsBehavior == SHORT_PRESS_SETTINGS_NOTIFICATION_PANEL) {
                    if (!down) {
                if (firstDown) {
                    if (mSettingsKeyBehavior == SETTINGS_KEY_BEHAVIOR_NOTIFICATION_PANEL) {
                        toggleNotificationPanel();
                        logKeyboardSystemsEvent(event, KeyboardLogEvent.TOGGLE_NOTIFICATION_PANEL);
                    } else if (mSettingsKeyBehavior == SETTINGS_KEY_BEHAVIOR_SETTINGS_ACTIVITY) {
                        showSystemSettings();
                        logKeyboardSystemsEvent(event, KeyboardLogEvent.LAUNCH_SYSTEM_SETTINGS);
                    }
                    return true;
                }
                break;
                return true;
            case KeyEvent.KEYCODE_STEM_PRIMARY:
                if (prepareToSendSystemKeyToApplication(focusedToken, event)) {
                    // Send to app.
@@ -6563,8 +6566,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                pw.print("mLongPressOnPowerBehavior=");
                pw.println(longPressOnPowerBehaviorToString(mLongPressOnPowerBehavior));
        pw.print(prefix);
        pw.print("mShortPressOnSettingsBehavior=");
        pw.println(shortPressOnSettingsBehaviorToString(mShortPressOnSettingsBehavior));
        pw.print("mSettingsKeyBehavior=");
        pw.println(settingsKeyBehaviorToString(mSettingsKeyBehavior));
        pw.print(prefix);
        pw.print("mLongPressOnPowerAssistantTimeoutMs=");
        pw.println(mLongPressOnPowerAssistantTimeoutMs);
@@ -6766,12 +6769,14 @@ public class PhoneWindowManager implements WindowManagerPolicy {
        }
    }

    private static String shortPressOnSettingsBehaviorToString(int behavior) {
    private static String settingsKeyBehaviorToString(int behavior) {
        switch (behavior) {
            case SHORT_PRESS_SETTINGS_NOTHING:
                return "SHORT_PRESS_SETTINGS_NOTHING";
            case SHORT_PRESS_SETTINGS_NOTIFICATION_PANEL:
                return "SHORT_PRESS_SETTINGS_NOTIFICATION_PANEL";
            case SETTINGS_KEY_BEHAVIOR_SETTINGS_ACTIVITY:
                return "SETTINGS_KEY_BEHAVIOR_SETTINGS_ACTIVITY";
            case SETTINGS_KEY_BEHAVIOR_NOTIFICATION_PANEL:
                return "SETTINGS_KEY_BEHAVIOR_NOTIFICATION_PANEL";
            case SETTINGS_KEY_BEHAVIOR_NOTHING:
                return "SETTINGS_KEY_BEHAVIOR_NOTHING";
            default:
                return Integer.toString(behavior);
        }
+9 −9
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ import static com.android.server.policy.PhoneWindowManager.DOUBLE_TAP_HOME_RECEN
import static com.android.server.policy.PhoneWindowManager.LONG_PRESS_HOME_ALL_APPS;
import static com.android.server.policy.PhoneWindowManager.LONG_PRESS_HOME_ASSIST;
import static com.android.server.policy.PhoneWindowManager.LONG_PRESS_HOME_NOTIFICATION_PANEL;
import static com.android.server.policy.PhoneWindowManager.SHORT_PRESS_SETTINGS_NOTIFICATION_PANEL;
import static com.android.server.policy.PhoneWindowManager.SETTINGS_KEY_BEHAVIOR_NOTIFICATION_PANEL;

import android.platform.test.annotations.Presubmit;
import android.platform.test.annotations.RequiresFlagsEnabled;
@@ -288,12 +288,12 @@ public class ShortcutLoggingTests extends ShortcutKeyTestBase {
    }

    @Keep
    private static Object[][] shortPressOnSettingsTestArguments() {
        // testName, testKeys, shortPressOnSettingsBehavior, expectedLogEvent, expectedKey,
    private static Object[][] settingsKeyTestArguments() {
        // testName, testKeys, settingsKeyBehavior, expectedLogEvent, expectedKey,
        // expectedModifierState
        return new Object[][]{
                {"SETTINGS key -> Toggle Notification panel", new int[]{KeyEvent.KEYCODE_SETTINGS},
                        SHORT_PRESS_SETTINGS_NOTIFICATION_PANEL,
                        SETTINGS_KEY_BEHAVIOR_NOTIFICATION_PANEL,
                        KeyboardLogEvent.TOGGLE_NOTIFICATION_PANEL, KeyEvent.KEYCODE_SETTINGS, 0}};
    }

@@ -303,7 +303,7 @@ public class ShortcutLoggingTests extends ShortcutKeyTestBase {
        mPhoneWindowManager.overrideKeyEventSource(VENDOR_ID, PRODUCT_ID, DEVICE_BUS);
        mPhoneWindowManager.overrideLaunchHome();
        mPhoneWindowManager.overrideSearchKeyBehavior(
                PhoneWindowManager.SEARCH_BEHAVIOR_TARGET_ACTIVITY);
                PhoneWindowManager.SEARCH_KEY_BEHAVIOR_TARGET_ACTIVITY);
        mPhoneWindowManager.overrideEnableBugReportTrigger(true);
        mPhoneWindowManager.overrideStatusBarManagerInternal();
        mPhoneWindowManager.overrideStartActivity();
@@ -349,11 +349,11 @@ public class ShortcutLoggingTests extends ShortcutKeyTestBase {
    }

    @Test
    @Parameters(method = "shortPressOnSettingsTestArguments")
    public void testShortPressOnSettings(String testName, int[] testKeys,
            int shortPressOnSettingsBehavior, KeyboardLogEvent expectedLogEvent, int expectedKey,
    @Parameters(method = "settingsKeyTestArguments")
    public void testSettingsKey(String testName, int[] testKeys,
            int settingsKeyBehavior, KeyboardLogEvent expectedLogEvent, int expectedKey,
            int expectedModifierState) {
        mPhoneWindowManager.overrideShortPressOnSettingsBehavior(shortPressOnSettingsBehavior);
        mPhoneWindowManager.overrideSettingsKeyBehavior(settingsKeyBehavior);
        sendKeyCombination(testKeys, 0 /* duration */);
        mPhoneWindowManager.assertShortcutLogged(VENDOR_ID, PRODUCT_ID, expectedLogEvent,
                expectedKey, expectedModifierState, DEVICE_BUS,
+2 −2
Original line number Diff line number Diff line
@@ -496,8 +496,8 @@ class TestPhoneWindowManager {
        mPhoneWindowManager.mDoubleTapOnHomeBehavior = behavior;
    }

    void overrideShortPressOnSettingsBehavior(int behavior) {
        mPhoneWindowManager.mShortPressOnSettingsBehavior = behavior;
    void overrideSettingsKeyBehavior(int behavior) {
        mPhoneWindowManager.mSettingsKeyBehavior = behavior;
    }

    void overrideCanStartDreaming(boolean canDream) {