Loading services/core/java/com/android/server/input/InputGestureManager.java +7 −10 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.content.Context; import android.hardware.input.InputGestureData; import android.hardware.input.InputManager; import android.hardware.input.KeyGestureEvent; import android.os.SystemProperties; import android.util.IndentingPrintWriter; import android.util.SparseArray; import android.view.KeyEvent; Loading Loading @@ -195,7 +194,6 @@ final class InputGestureManager { /* allowCaptureByFocusedWindow = */true ) )); if ("1".equals(SystemProperties.get("ro.debuggable"))) { systemShortcuts.add( createKeyGesture( KeyEvent.KEYCODE_DEL, Loading @@ -203,7 +201,6 @@ final class InputGestureManager { KeyGestureEvent.KEY_GESTURE_TYPE_TRIGGER_BUG_REPORT, /* allowCaptureByFocusedWindow = */true )); } if (DesktopExperienceFlags.ENABLE_MOVE_TO_NEXT_DISPLAY_SHORTCUT.isTrue()) { systemShortcuts.add( createKeyGesture( Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +8 −6 Original line number Diff line number Diff line Loading @@ -492,9 +492,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Assigned on main thread, accessed on UI thread volatile VrManagerInternal mVrManagerInternal; /** If true, can use a keyboard shortcut to trigger a bugreport. */ boolean mEnableBugReportKeyboardShortcut = false; private TalkbackShortcutController mTalkbackShortcutController; private WindowWakeUpPolicy mWindowWakeUpPolicy; Loading Loading @@ -2360,7 +2357,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { "PhoneWindowManager.mBroadcastWakeLock"); mPowerKeyWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "PhoneWindowManager.mPowerKeyWakeLock"); mEnableBugReportKeyboardShortcut = "1".equals(SystemProperties.get("ro.debuggable")); mLidKeyboardAccessibility = mContext.getResources().getInteger( com.android.internal.R.integer.config_lidKeyboardAccessibility); mLidNavigationAccessibility = mContext.getResources().getInteger( Loading Loading @@ -3551,11 +3547,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { } break; case KeyGestureEvent.KEY_GESTURE_TYPE_TRIGGER_BUG_REPORT: if (complete && mEnableBugReportKeyboardShortcut) { if (complete) { try { if (!mActivityManagerService.launchBugReportHandlerApp()) { if (mActivityManagerService.launchBugReportHandlerApp()) { return; } // Take bug report only for debuggable builds as a fallback when there is // no bug handler or feedback app on the system image. if ("1".equals(SystemProperties.get("ro.debuggable"))) { mActivityManagerService.requestInteractiveBugReport(); } return; } catch (RemoteException e) { Slog.d(TAG, "Error taking bugreport", e); } Loading services/tests/wmtests/src/com/android/server/policy/KeyGestureEventTests.java +14 −3 Original line number Diff line number Diff line Loading @@ -159,7 +159,6 @@ public class KeyGestureEventTests extends ShortcutKeyTestBase { public void setUp() { setUpPhoneWindowManager(/*supportSettingsUpdate*/ true, /* supportFeature */ ""); mPhoneWindowManager.overrideLaunchHome(); mPhoneWindowManager.overrideEnableBugReportTrigger(true); mPhoneWindowManager.overrideStatusBarManagerInternal(); mPhoneWindowManager.overrideStartActivity(); mPhoneWindowManager.overrideSendBroadcast(); Loading Loading @@ -269,9 +268,21 @@ public class KeyGestureEventTests extends ShortcutKeyTestBase { } @Test public void testKeyGestureTriggerBugReport() throws RemoteException { public void testKeyGestureTriggerBugReport_opensBugHandler() throws RemoteException { mPhoneWindowManager.overrideBugHandler(true); sendKeyGestureEventComplete(KeyGestureEvent.KEY_GESTURE_TYPE_TRIGGER_BUG_REPORT); mPhoneWindowManager.assertOpenBugHandler(); } @Test public void testKeyGestureTriggerBugReport_takeBugReportIfHandlerNotPresent() throws RemoteException { mPhoneWindowManager.overrideDebuggable(true); mPhoneWindowManager.overrideBugHandler(false); sendKeyGestureEventComplete(KeyGestureEvent.KEY_GESTURE_TYPE_TRIGGER_BUG_REPORT); mPhoneWindowManager.assertTakeBugreport(true); mPhoneWindowManager.assertTakeBugReport(); } @Test Loading services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java +14 −8 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ import android.os.Looper; import android.os.PowerManager; import android.os.PowerManagerInternal; import android.os.RemoteException; import android.os.SystemProperties; import android.os.UserHandle; import android.os.Vibrator; import android.os.VibratorInfo; Loading Loading @@ -279,6 +280,7 @@ class TestPhoneWindowManager { .mockStatic(LocalServices.class, spyStubOnly) .mockStatic(KeyCharacterMap.class) .mockStatic(GestureLauncherService.class) .mockStatic(SystemProperties.class) .strictness(Strictness.LENIENT) .startMocking(); Loading Loading @@ -634,8 +636,12 @@ class TestPhoneWindowManager { verify(mInputManager, never()).injectInputEvent(any(), anyInt()); } void overrideEnableBugReportTrigger(boolean enable) { mPhoneWindowManager.mEnableBugReportKeyboardShortcut = enable; void overrideBugHandler(boolean bugHandlerExist) throws RemoteException { doReturn(bugHandlerExist).when(mActivityManagerService).launchBugReportHandlerApp(); } void overrideDebuggable(boolean debuggable) { doReturn(debuggable ? "1" : "0").when(() -> SystemProperties.get(eq("ro.debuggable"))); } void overrideStartActivity() { Loading Loading @@ -847,14 +853,14 @@ class TestPhoneWindowManager { eq(displayId), eq(mImeTargetWindowToken)); } void assertTakeBugreport(boolean wasCalled) throws RemoteException { void assertOpenBugHandler() throws RemoteException { mTestLooper.dispatchAll(); if (wasCalled) { verify(mActivityManagerService).launchBugReportHandlerApp(); } else { verify(mActivityManagerService, never()).launchBugReportHandlerApp(); } void assertTakeBugReport() throws RemoteException { mTestLooper.dispatchAll(); verify(mActivityManagerService).requestInteractiveBugReport(); } void assertBugReportTakenForTv() { Loading tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt +0 −3 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import android.os.Handler import android.os.IBinder import android.os.Process import android.os.SystemClock import android.os.SystemProperties import android.os.test.TestLooper import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags Loading Loading @@ -163,7 +162,6 @@ class KeyGestureControllerTests { val extendedMockitoRule = ExtendedMockitoRule.Builder(this) .mockStatic(FrameworkStatsLog::class.java) .mockStatic(SystemProperties::class.java) .mockStatic(KeyCharacterMap::class.java) .mockStatic(DeviceConfig::class.java) .mockStatic(LocalServices::class.java) Loading Loading @@ -234,7 +232,6 @@ class KeyGestureControllerTests { } private fun setupBehaviors() { Mockito.`when`(SystemProperties.get("ro.debuggable")).thenReturn("1") testableResources.addOverride(R.bool.config_enableScreenshotChord, true) ExtendedMockito.`when`( DeviceConfig.getLong( Loading Loading
services/core/java/com/android/server/input/InputGestureManager.java +7 −10 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ import android.content.Context; import android.hardware.input.InputGestureData; import android.hardware.input.InputManager; import android.hardware.input.KeyGestureEvent; import android.os.SystemProperties; import android.util.IndentingPrintWriter; import android.util.SparseArray; import android.view.KeyEvent; Loading Loading @@ -195,7 +194,6 @@ final class InputGestureManager { /* allowCaptureByFocusedWindow = */true ) )); if ("1".equals(SystemProperties.get("ro.debuggable"))) { systemShortcuts.add( createKeyGesture( KeyEvent.KEYCODE_DEL, Loading @@ -203,7 +201,6 @@ final class InputGestureManager { KeyGestureEvent.KEY_GESTURE_TYPE_TRIGGER_BUG_REPORT, /* allowCaptureByFocusedWindow = */true )); } if (DesktopExperienceFlags.ENABLE_MOVE_TO_NEXT_DISPLAY_SHORTCUT.isTrue()) { systemShortcuts.add( createKeyGesture( Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +8 −6 Original line number Diff line number Diff line Loading @@ -492,9 +492,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Assigned on main thread, accessed on UI thread volatile VrManagerInternal mVrManagerInternal; /** If true, can use a keyboard shortcut to trigger a bugreport. */ boolean mEnableBugReportKeyboardShortcut = false; private TalkbackShortcutController mTalkbackShortcutController; private WindowWakeUpPolicy mWindowWakeUpPolicy; Loading Loading @@ -2360,7 +2357,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { "PhoneWindowManager.mBroadcastWakeLock"); mPowerKeyWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "PhoneWindowManager.mPowerKeyWakeLock"); mEnableBugReportKeyboardShortcut = "1".equals(SystemProperties.get("ro.debuggable")); mLidKeyboardAccessibility = mContext.getResources().getInteger( com.android.internal.R.integer.config_lidKeyboardAccessibility); mLidNavigationAccessibility = mContext.getResources().getInteger( Loading Loading @@ -3551,11 +3547,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { } break; case KeyGestureEvent.KEY_GESTURE_TYPE_TRIGGER_BUG_REPORT: if (complete && mEnableBugReportKeyboardShortcut) { if (complete) { try { if (!mActivityManagerService.launchBugReportHandlerApp()) { if (mActivityManagerService.launchBugReportHandlerApp()) { return; } // Take bug report only for debuggable builds as a fallback when there is // no bug handler or feedback app on the system image. if ("1".equals(SystemProperties.get("ro.debuggable"))) { mActivityManagerService.requestInteractiveBugReport(); } return; } catch (RemoteException e) { Slog.d(TAG, "Error taking bugreport", e); } Loading
services/tests/wmtests/src/com/android/server/policy/KeyGestureEventTests.java +14 −3 Original line number Diff line number Diff line Loading @@ -159,7 +159,6 @@ public class KeyGestureEventTests extends ShortcutKeyTestBase { public void setUp() { setUpPhoneWindowManager(/*supportSettingsUpdate*/ true, /* supportFeature */ ""); mPhoneWindowManager.overrideLaunchHome(); mPhoneWindowManager.overrideEnableBugReportTrigger(true); mPhoneWindowManager.overrideStatusBarManagerInternal(); mPhoneWindowManager.overrideStartActivity(); mPhoneWindowManager.overrideSendBroadcast(); Loading Loading @@ -269,9 +268,21 @@ public class KeyGestureEventTests extends ShortcutKeyTestBase { } @Test public void testKeyGestureTriggerBugReport() throws RemoteException { public void testKeyGestureTriggerBugReport_opensBugHandler() throws RemoteException { mPhoneWindowManager.overrideBugHandler(true); sendKeyGestureEventComplete(KeyGestureEvent.KEY_GESTURE_TYPE_TRIGGER_BUG_REPORT); mPhoneWindowManager.assertOpenBugHandler(); } @Test public void testKeyGestureTriggerBugReport_takeBugReportIfHandlerNotPresent() throws RemoteException { mPhoneWindowManager.overrideDebuggable(true); mPhoneWindowManager.overrideBugHandler(false); sendKeyGestureEventComplete(KeyGestureEvent.KEY_GESTURE_TYPE_TRIGGER_BUG_REPORT); mPhoneWindowManager.assertTakeBugreport(true); mPhoneWindowManager.assertTakeBugReport(); } @Test Loading
services/tests/wmtests/src/com/android/server/policy/TestPhoneWindowManager.java +14 −8 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ import android.os.Looper; import android.os.PowerManager; import android.os.PowerManagerInternal; import android.os.RemoteException; import android.os.SystemProperties; import android.os.UserHandle; import android.os.Vibrator; import android.os.VibratorInfo; Loading Loading @@ -279,6 +280,7 @@ class TestPhoneWindowManager { .mockStatic(LocalServices.class, spyStubOnly) .mockStatic(KeyCharacterMap.class) .mockStatic(GestureLauncherService.class) .mockStatic(SystemProperties.class) .strictness(Strictness.LENIENT) .startMocking(); Loading Loading @@ -634,8 +636,12 @@ class TestPhoneWindowManager { verify(mInputManager, never()).injectInputEvent(any(), anyInt()); } void overrideEnableBugReportTrigger(boolean enable) { mPhoneWindowManager.mEnableBugReportKeyboardShortcut = enable; void overrideBugHandler(boolean bugHandlerExist) throws RemoteException { doReturn(bugHandlerExist).when(mActivityManagerService).launchBugReportHandlerApp(); } void overrideDebuggable(boolean debuggable) { doReturn(debuggable ? "1" : "0").when(() -> SystemProperties.get(eq("ro.debuggable"))); } void overrideStartActivity() { Loading Loading @@ -847,14 +853,14 @@ class TestPhoneWindowManager { eq(displayId), eq(mImeTargetWindowToken)); } void assertTakeBugreport(boolean wasCalled) throws RemoteException { void assertOpenBugHandler() throws RemoteException { mTestLooper.dispatchAll(); if (wasCalled) { verify(mActivityManagerService).launchBugReportHandlerApp(); } else { verify(mActivityManagerService, never()).launchBugReportHandlerApp(); } void assertTakeBugReport() throws RemoteException { mTestLooper.dispatchAll(); verify(mActivityManagerService).requestInteractiveBugReport(); } void assertBugReportTakenForTv() { Loading
tests/Input/src/com/android/server/input/KeyGestureControllerTests.kt +0 −3 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ import android.os.Handler import android.os.IBinder import android.os.Process import android.os.SystemClock import android.os.SystemProperties import android.os.test.TestLooper import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags Loading Loading @@ -163,7 +162,6 @@ class KeyGestureControllerTests { val extendedMockitoRule = ExtendedMockitoRule.Builder(this) .mockStatic(FrameworkStatsLog::class.java) .mockStatic(SystemProperties::class.java) .mockStatic(KeyCharacterMap::class.java) .mockStatic(DeviceConfig::class.java) .mockStatic(LocalServices::class.java) Loading Loading @@ -234,7 +232,6 @@ class KeyGestureControllerTests { } private fun setupBehaviors() { Mockito.`when`(SystemProperties.get("ro.debuggable")).thenReturn("1") testableResources.addOverride(R.bool.config_enableScreenshotChord, true) ExtendedMockito.`when`( DeviceConfig.getLong( Loading