From d7e5d6da3643b7b9ab6e84898a3b3cd0574d8da2 Mon Sep 17 00:00:00 2001 From: Josep del Rio Date: Wed, 22 Feb 2023 23:02:12 +0000 Subject: [PATCH] Toggle notifications panel via actions shortcut At the moment Meta+N will just expand the notifications panel. This change will allow the user to also collapse it using the same shortcut again. Bug: 270438762 Test: flashed and tested on device with physical keyboard Change-Id: I96494b9d18dbaa6c9002d88acebebc80af20f5b4 --- .../com/android/server/policy/PhoneWindowManager.java | 11 ++--------- .../android/server/policy/ModifierShortcutTests.java | 4 ++-- .../android/server/policy/TestPhoneWindowManager.java | 8 ++++---- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index a24f129cc575c..f3089315af722 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -2978,15 +2978,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { break; case KeyEvent.KEYCODE_N: if (down && event.isMetaPressed()) { - IStatusBarService service = getStatusBarService(); - if (service != null) { - try { - service.expandNotificationsPanel(); - } catch (RemoteException e) { - // do nothing. - } - return key_consumed; - } + toggleNotificationPanel(); + return key_consumed; } break; case KeyEvent.KEYCODE_S: diff --git a/services/tests/wmtests/src/com/android/server/policy/ModifierShortcutTests.java b/services/tests/wmtests/src/com/android/server/policy/ModifierShortcutTests.java index 3ecbbfeed254a..8f0a5e6f5d0d4 100644 --- a/services/tests/wmtests/src/com/android/server/policy/ModifierShortcutTests.java +++ b/services/tests/wmtests/src/com/android/server/policy/ModifierShortcutTests.java @@ -141,9 +141,9 @@ public class ModifierShortcutTests extends ShortcutKeyTestBase { */ @Test public void testMetaN() throws RemoteException { - mPhoneWindowManager.overrideExpandNotificationsPanel(); + mPhoneWindowManager.overrideTogglePanel(); sendKeyCombination(new int[]{KEYCODE_META_LEFT, KEYCODE_N}, 0); - mPhoneWindowManager.assertExpandNotification(); + mPhoneWindowManager.assertTogglePanel(); } /** diff --git a/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java b/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java index 6da9d0c606cff..5cdaf0d7ed83f 100644 --- a/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java +++ b/services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java @@ -322,12 +322,12 @@ class TestPhoneWindowManager { doReturn(true).when(mTelecomManager).endCall(); } - void overrideExpandNotificationsPanel() { + void overrideTogglePanel() { // Can't directly mock on IStatusbarService, use spyOn and override the specific api. mPhoneWindowManager.getStatusBarService(); spyOn(mPhoneWindowManager.mStatusBarService); try { - doNothing().when(mPhoneWindowManager.mStatusBarService).expandNotificationsPanel(); + doNothing().when(mPhoneWindowManager.mStatusBarService).togglePanel(); } catch (RemoteException e) { e.printStackTrace(); } @@ -428,9 +428,9 @@ class TestPhoneWindowManager { Assert.assertTrue(intentCaptor.getValue().getAction() == Intent.ACTION_BUG_REPORT); } - void assertExpandNotification() throws RemoteException { + void assertTogglePanel() throws RemoteException { waitForIdle(); - verify(mPhoneWindowManager.mStatusBarService).expandNotificationsPanel(); + verify(mPhoneWindowManager.mStatusBarService).togglePanel(); } void assertToggleShortcutsMenu() {