Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +5 −1 Original line number Diff line number Diff line Loading @@ -3627,7 +3627,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { KeyGestureEvent.KEY_GESTURE_TYPE_BRIGHTNESS_UP, KeyGestureEvent.KEY_GESTURE_TYPE_BRIGHTNESS_DOWN, KeyGestureEvent.KEY_GESTURE_TYPE_RECENT_APPS_SWITCHER, KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS, KeyGestureEvent.KEY_GESTURE_TYPE_LAUNCH_SEARCH, KeyGestureEvent.KEY_GESTURE_TYPE_LANGUAGE_SWITCH, KeyGestureEvent.KEY_GESTURE_TYPE_ACCESSIBILITY_SHORTCUT, Loading @@ -3645,6 +3644,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (enableVoiceAccessKeyGestures()) { supportedGestures.add(KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_VOICE_ACCESS); } if (!com.android.window.flags.Flags.enableKeyGestureHandlerForRecents()) { // When enableKeyGestureHandlerForRecents is enabled, the event is handled in the // recents app. supportedGestures.add(KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS); } mInputManager.registerKeyGestureEventHandler(supportedGestures, PhoneWindowManager.this::handleKeyGestureEvent); } Loading services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java +36 −4 Original line number Diff line number Diff line Loading @@ -52,17 +52,18 @@ import android.app.ActivityManager; import android.app.AppOpsManager; import android.content.Context; import android.hardware.input.InputManager; import android.hardware.input.KeyGestureEvent; import android.os.Bundle; import android.os.IBinder; import android.os.PowerManager; import android.os.PowerManagerInternal; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.annotations.Presubmit; import android.platform.test.flag.junit.SetFlagsRule; import android.provider.Settings; import android.service.dreams.DreamManagerInternal; import android.testing.TestableContext; import android.view.KeyEvent; import androidx.test.filters.SmallTest; Loading @@ -76,6 +77,7 @@ import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.DisplayPolicy; import com.android.server.wm.DisplayRotation; import com.android.server.wm.WindowManagerInternal; import com.android.window.flags.Flags; import org.junit.After; import org.junit.Before; Loading @@ -85,6 +87,8 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.List; /** * Test class for {@link PhoneWindowManager}. * Loading @@ -107,6 +111,7 @@ public class PhoneWindowManagerTests { @Mock private IBinder mInputToken; PhoneWindowManager mPhoneWindowManager; @Mock private ActivityTaskManagerInternal mAtmInternal; @Mock Loading @@ -114,6 +119,8 @@ public class PhoneWindowManagerTests { @Mock private InputManagerInternal mInputManagerInternal; @Mock private InputManager mInputManager; @Mock private PowerManagerInternal mPowerManagerInternal; @Mock private StatusBarManagerInternal mStatusBarManagerInternal; Loading Loading @@ -156,9 +163,8 @@ public class PhoneWindowManagerTests { mock(WindowManagerInternal.class)); mPhoneWindowManager.mKeyguardDelegate = mKeyguardServiceDelegate; final InputManager im = mock(InputManager.class); doNothing().when(im).registerKeyGestureEventHandler(anyList(), any()); doReturn(im).when(mContext).getSystemService(eq(Context.INPUT_SERVICE)); doNothing().when(mInputManager).registerKeyGestureEventHandler(anyList(), any()); doReturn(mInputManager).when(mContext).getSystemService(eq(Context.INPUT_SERVICE)); } @After Loading Loading @@ -426,6 +432,32 @@ public class PhoneWindowManagerTests { verify(mDreamManagerInternal).requestDream(); } @Test @EnableFlags(Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_RECENTS) public void testKeyGestureEvents_recentKeyGesturesEventsEnabled_notRegistered() { initPhoneWindowManager(); ArgumentCaptor<List<Integer>> registeredKeyGestureEvents = ArgumentCaptor.forClass( List.class); verify(mInputManager).registerKeyGestureEventHandler(registeredKeyGestureEvents.capture(), any()); assertThat(registeredKeyGestureEvents.getValue()).doesNotContain( KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS); } @Test @DisableFlags(Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_RECENTS) public void testKeyGestureEvents_recentKeyGesturesEventsDisabled_registered() { initPhoneWindowManager(); ArgumentCaptor<List<Integer>> registeredKeyGestureEvents = ArgumentCaptor.forClass( List.class); verify(mInputManager).registerKeyGestureEventHandler(registeredKeyGestureEvents.capture(), any()); assertThat(registeredKeyGestureEvents.getValue()).contains( KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS); } private void initPhoneWindowManager() { mPhoneWindowManager.mDefaultDisplayPolicy = mDisplayPolicy; mPhoneWindowManager.mDefaultDisplayRotation = mock(DisplayRotation.class); Loading Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +5 −1 Original line number Diff line number Diff line Loading @@ -3627,7 +3627,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { KeyGestureEvent.KEY_GESTURE_TYPE_BRIGHTNESS_UP, KeyGestureEvent.KEY_GESTURE_TYPE_BRIGHTNESS_DOWN, KeyGestureEvent.KEY_GESTURE_TYPE_RECENT_APPS_SWITCHER, KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS, KeyGestureEvent.KEY_GESTURE_TYPE_LAUNCH_SEARCH, KeyGestureEvent.KEY_GESTURE_TYPE_LANGUAGE_SWITCH, KeyGestureEvent.KEY_GESTURE_TYPE_ACCESSIBILITY_SHORTCUT, Loading @@ -3645,6 +3644,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (enableVoiceAccessKeyGestures()) { supportedGestures.add(KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_VOICE_ACCESS); } if (!com.android.window.flags.Flags.enableKeyGestureHandlerForRecents()) { // When enableKeyGestureHandlerForRecents is enabled, the event is handled in the // recents app. supportedGestures.add(KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS); } mInputManager.registerKeyGestureEventHandler(supportedGestures, PhoneWindowManager.this::handleKeyGestureEvent); } Loading
services/tests/wmtests/src/com/android/server/policy/PhoneWindowManagerTests.java +36 −4 Original line number Diff line number Diff line Loading @@ -52,17 +52,18 @@ import android.app.ActivityManager; import android.app.AppOpsManager; import android.content.Context; import android.hardware.input.InputManager; import android.hardware.input.KeyGestureEvent; import android.os.Bundle; import android.os.IBinder; import android.os.PowerManager; import android.os.PowerManagerInternal; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.annotations.Presubmit; import android.platform.test.flag.junit.SetFlagsRule; import android.provider.Settings; import android.service.dreams.DreamManagerInternal; import android.testing.TestableContext; import android.view.KeyEvent; import androidx.test.filters.SmallTest; Loading @@ -76,6 +77,7 @@ import com.android.server.wm.ActivityTaskManagerInternal; import com.android.server.wm.DisplayPolicy; import com.android.server.wm.DisplayRotation; import com.android.server.wm.WindowManagerInternal; import com.android.window.flags.Flags; import org.junit.After; import org.junit.Before; Loading @@ -85,6 +87,8 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.List; /** * Test class for {@link PhoneWindowManager}. * Loading @@ -107,6 +111,7 @@ public class PhoneWindowManagerTests { @Mock private IBinder mInputToken; PhoneWindowManager mPhoneWindowManager; @Mock private ActivityTaskManagerInternal mAtmInternal; @Mock Loading @@ -114,6 +119,8 @@ public class PhoneWindowManagerTests { @Mock private InputManagerInternal mInputManagerInternal; @Mock private InputManager mInputManager; @Mock private PowerManagerInternal mPowerManagerInternal; @Mock private StatusBarManagerInternal mStatusBarManagerInternal; Loading Loading @@ -156,9 +163,8 @@ public class PhoneWindowManagerTests { mock(WindowManagerInternal.class)); mPhoneWindowManager.mKeyguardDelegate = mKeyguardServiceDelegate; final InputManager im = mock(InputManager.class); doNothing().when(im).registerKeyGestureEventHandler(anyList(), any()); doReturn(im).when(mContext).getSystemService(eq(Context.INPUT_SERVICE)); doNothing().when(mInputManager).registerKeyGestureEventHandler(anyList(), any()); doReturn(mInputManager).when(mContext).getSystemService(eq(Context.INPUT_SERVICE)); } @After Loading Loading @@ -426,6 +432,32 @@ public class PhoneWindowManagerTests { verify(mDreamManagerInternal).requestDream(); } @Test @EnableFlags(Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_RECENTS) public void testKeyGestureEvents_recentKeyGesturesEventsEnabled_notRegistered() { initPhoneWindowManager(); ArgumentCaptor<List<Integer>> registeredKeyGestureEvents = ArgumentCaptor.forClass( List.class); verify(mInputManager).registerKeyGestureEventHandler(registeredKeyGestureEvents.capture(), any()); assertThat(registeredKeyGestureEvents.getValue()).doesNotContain( KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS); } @Test @DisableFlags(Flags.FLAG_ENABLE_KEY_GESTURE_HANDLER_FOR_RECENTS) public void testKeyGestureEvents_recentKeyGesturesEventsDisabled_registered() { initPhoneWindowManager(); ArgumentCaptor<List<Integer>> registeredKeyGestureEvents = ArgumentCaptor.forClass( List.class); verify(mInputManager).registerKeyGestureEventHandler(registeredKeyGestureEvents.capture(), any()); assertThat(registeredKeyGestureEvents.getValue()).contains( KeyGestureEvent.KEY_GESTURE_TYPE_ALL_APPS); } private void initPhoneWindowManager() { mPhoneWindowManager.mDefaultDisplayPolicy = mDisplayPolicy; mPhoneWindowManager.mDefaultDisplayRotation = mock(DisplayRotation.class); Loading