Loading core/java/android/os/vibrator/flags.aconfig +0 −10 Original line number Diff line number Diff line Loading @@ -115,16 +115,6 @@ flag { } } flag { namespace: "haptics" name: "fix_external_vibration_system_update_aware" description: "Fix the audio-coupled haptics handling of system updates." bug: "372241975" metadata { purpose: PURPOSE_BUGFIX } } flag { namespace: "haptics" name: "remove_hidl_support" Loading services/core/java/com/android/server/vibrator/VibratorManagerService.java +5 −21 Original line number Diff line number Diff line Loading @@ -1024,11 +1024,6 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { return; } if (!Flags.fixExternalVibrationSystemUpdateAware() && (mCurrentSession instanceof ExternalVibrationSession)) { return; } Status ignoreStatus = shouldIgnoreVibrationLocked(mCurrentSession.getCallerInfo()); if (inputDevicesChanged || (ignoreStatus != null)) { if (DEBUG) { Loading Loading @@ -2352,23 +2347,12 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @GuardedBy("mLock") private void maybeClearCurrentAndNextSessionsLocked( Predicate<VibrationSession> shouldEndSessionPredicate, Status endStatus) { if (Flags.fixExternalVibrationSystemUpdateAware()) { if (shouldEndSessionPredicate.test(mNextSession)) { clearNextSessionLocked(endStatus); } if (shouldEndSessionPredicate.test(mCurrentSession)) { mCurrentSession.requestEnd(endStatus); } } else { if (!(mNextSession instanceof ExternalVibrationSession) && shouldEndSessionPredicate.test(mNextSession)) { clearNextSessionLocked(endStatus); } if (!(mCurrentSession instanceof ExternalVibrationSession) && shouldEndSessionPredicate.test(mCurrentSession)) { mCurrentSession.requestEnd(endStatus); } } } /** Loading services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java +0 −118 Original line number Diff line number Diff line Loading @@ -2772,31 +2772,6 @@ public class VibratorManagerServiceTest { } @Test @DisableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_legacyDeniedAppOps_doNotCancelVibration() throws Throwable { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); VibratorManagerService service = createSystemReadyService(); IExternalVibrationController externalVibrationControllerMock = mock(IExternalVibrationController.class); ExternalVibration externalVibration = new ExternalVibration(UID, PACKAGE_NAME, AUDIO_ALARM_ATTRS, externalVibrationControllerMock, mock(IBinder.class)); ExternalVibrationScale scale = mExternalVibratorService.onExternalVibrationStart( externalVibration); assertThat(scale.scaleLevel).isNotEqualTo(ExternalVibrationScale.ScaleLevel.SCALE_MUTE); when(mAppOpsManagerMock.checkAudioOpNoThrow(eq(AppOpsManager.OP_VIBRATE), eq(AudioAttributes.USAGE_ALARM), anyInt(), anyString())) .thenReturn(AppOpsManager.MODE_IGNORED); service.mAppOpsChangeListener.onOpChanged(AppOpsManager.OP_VIBRATE, null); verify(externalVibrationControllerMock, never()).mute(); } @Test @EnableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_thenDeniedAppOps_cancelVibration() throws Throwable { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); Loading @@ -2820,28 +2795,6 @@ public class VibratorManagerServiceTest { } @Test @DisableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_legacyPowerModeChanges_doNotCancelVibration() throws Exception { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); createSystemReadyService(); IExternalVibrationController externalVibrationControllerMock = mock(IExternalVibrationController.class); ExternalVibration externalVibration = new ExternalVibration(UID, PACKAGE_NAME, AUDIO_HAPTIC_FEEDBACK_ATTRS, externalVibrationControllerMock, mock(IBinder.class)); ExternalVibrationScale scale = mExternalVibratorService.onExternalVibrationStart( externalVibration); assertThat(scale.scaleLevel).isNotEqualTo(ExternalVibrationScale.ScaleLevel.SCALE_MUTE); mRegisteredPowerModeListener.onLowPowerModeChanged(LOW_POWER_STATE); verify(externalVibrationControllerMock, never()).mute(); } @Test @EnableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_thenPowerModeChanges_cancelVibration() throws Exception { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); Loading @@ -2862,30 +2815,6 @@ public class VibratorManagerServiceTest { } @Test @DisableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_legacySettingsChange_doNotCancelVibration() throws Exception { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); VibratorManagerService service = createSystemReadyService(); IExternalVibrationController externalVibrationControllerMock = mock(IExternalVibrationController.class); ExternalVibration externalVibration = new ExternalVibration(UID, PACKAGE_NAME, AUDIO_ALARM_ATTRS, externalVibrationControllerMock, mock(IBinder.class)); ExternalVibrationScale scale = mExternalVibratorService.onExternalVibrationStart( externalVibration); assertThat(scale.scaleLevel).isNotEqualTo(ExternalVibrationScale.ScaleLevel.SCALE_MUTE); setUserSetting(Settings.System.ALARM_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_OFF); service.mVibrationSettings.mSettingObserver.onChange(false); service.updateServiceState(); verify(externalVibrationControllerMock, never()).mute(); } @Test @EnableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_thenSettingsChange_cancelVibration() throws Exception { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); Loading @@ -2908,28 +2837,6 @@ public class VibratorManagerServiceTest { } @Test @DisableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_legacyScreenTurnsOff_doNotCancelVibration() throws Exception { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); VibratorManagerService service = createSystemReadyService(); IExternalVibrationController externalVibrationControllerMock = mock(IExternalVibrationController.class); ExternalVibration externalVibration = new ExternalVibration(UID, PACKAGE_NAME, AUDIO_ALARM_ATTRS, externalVibrationControllerMock, mock(IBinder.class)); ExternalVibrationScale scale = mExternalVibratorService.onExternalVibrationStart( externalVibration); assertThat(scale.scaleLevel).isNotEqualTo(ExternalVibrationScale.ScaleLevel.SCALE_MUTE); service.mIntentReceiver.onReceive(mContextSpy, new Intent(Intent.ACTION_SCREEN_OFF)); verify(externalVibrationControllerMock, never()).mute(); } @Test @EnableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_thenScreenTurnsOff_cancelVibration() throws Exception { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); Loading @@ -2950,31 +2857,6 @@ public class VibratorManagerServiceTest { } @Test @DisableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_legacyFgUserRequestsMute_doNotCancelVibration() throws Exception { assumeTrue(UserManagerInternal.shouldShowNotificationForBackgroundUserSounds()); mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); VibratorManagerService service = createSystemReadyService(); IExternalVibrationController externalVibrationControllerMock = mock(IExternalVibrationController.class); ExternalVibration externalVibration = new ExternalVibration(UID, PACKAGE_NAME, AUDIO_ALARM_ATTRS, externalVibrationControllerMock, mock(IBinder.class)); ExternalVibrationScale scale = mExternalVibratorService.onExternalVibrationStart( externalVibration); assertThat(scale.scaleLevel).isNotEqualTo(ExternalVibrationScale.ScaleLevel.SCALE_MUTE); service.mIntentReceiver.onReceive(mContextSpy, new Intent( BackgroundUserSoundNotifier.ACTION_MUTE_SOUND)); verify(externalVibrationControllerMock, never()).mute(); } @Test @EnableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_thenFgUserRequestsMute_cancelVibration() throws Exception { assumeTrue(UserManagerInternal.shouldShowNotificationForBackgroundUserSounds()); mockVibrators(1); Loading Loading
core/java/android/os/vibrator/flags.aconfig +0 −10 Original line number Diff line number Diff line Loading @@ -115,16 +115,6 @@ flag { } } flag { namespace: "haptics" name: "fix_external_vibration_system_update_aware" description: "Fix the audio-coupled haptics handling of system updates." bug: "372241975" metadata { purpose: PURPOSE_BUGFIX } } flag { namespace: "haptics" name: "remove_hidl_support" Loading
services/core/java/com/android/server/vibrator/VibratorManagerService.java +5 −21 Original line number Diff line number Diff line Loading @@ -1024,11 +1024,6 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { return; } if (!Flags.fixExternalVibrationSystemUpdateAware() && (mCurrentSession instanceof ExternalVibrationSession)) { return; } Status ignoreStatus = shouldIgnoreVibrationLocked(mCurrentSession.getCallerInfo()); if (inputDevicesChanged || (ignoreStatus != null)) { if (DEBUG) { Loading Loading @@ -2352,23 +2347,12 @@ public class VibratorManagerService extends IVibratorManagerService.Stub { @GuardedBy("mLock") private void maybeClearCurrentAndNextSessionsLocked( Predicate<VibrationSession> shouldEndSessionPredicate, Status endStatus) { if (Flags.fixExternalVibrationSystemUpdateAware()) { if (shouldEndSessionPredicate.test(mNextSession)) { clearNextSessionLocked(endStatus); } if (shouldEndSessionPredicate.test(mCurrentSession)) { mCurrentSession.requestEnd(endStatus); } } else { if (!(mNextSession instanceof ExternalVibrationSession) && shouldEndSessionPredicate.test(mNextSession)) { clearNextSessionLocked(endStatus); } if (!(mCurrentSession instanceof ExternalVibrationSession) && shouldEndSessionPredicate.test(mCurrentSession)) { mCurrentSession.requestEnd(endStatus); } } } /** Loading
services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java +0 −118 Original line number Diff line number Diff line Loading @@ -2772,31 +2772,6 @@ public class VibratorManagerServiceTest { } @Test @DisableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_legacyDeniedAppOps_doNotCancelVibration() throws Throwable { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); VibratorManagerService service = createSystemReadyService(); IExternalVibrationController externalVibrationControllerMock = mock(IExternalVibrationController.class); ExternalVibration externalVibration = new ExternalVibration(UID, PACKAGE_NAME, AUDIO_ALARM_ATTRS, externalVibrationControllerMock, mock(IBinder.class)); ExternalVibrationScale scale = mExternalVibratorService.onExternalVibrationStart( externalVibration); assertThat(scale.scaleLevel).isNotEqualTo(ExternalVibrationScale.ScaleLevel.SCALE_MUTE); when(mAppOpsManagerMock.checkAudioOpNoThrow(eq(AppOpsManager.OP_VIBRATE), eq(AudioAttributes.USAGE_ALARM), anyInt(), anyString())) .thenReturn(AppOpsManager.MODE_IGNORED); service.mAppOpsChangeListener.onOpChanged(AppOpsManager.OP_VIBRATE, null); verify(externalVibrationControllerMock, never()).mute(); } @Test @EnableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_thenDeniedAppOps_cancelVibration() throws Throwable { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); Loading @@ -2820,28 +2795,6 @@ public class VibratorManagerServiceTest { } @Test @DisableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_legacyPowerModeChanges_doNotCancelVibration() throws Exception { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); createSystemReadyService(); IExternalVibrationController externalVibrationControllerMock = mock(IExternalVibrationController.class); ExternalVibration externalVibration = new ExternalVibration(UID, PACKAGE_NAME, AUDIO_HAPTIC_FEEDBACK_ATTRS, externalVibrationControllerMock, mock(IBinder.class)); ExternalVibrationScale scale = mExternalVibratorService.onExternalVibrationStart( externalVibration); assertThat(scale.scaleLevel).isNotEqualTo(ExternalVibrationScale.ScaleLevel.SCALE_MUTE); mRegisteredPowerModeListener.onLowPowerModeChanged(LOW_POWER_STATE); verify(externalVibrationControllerMock, never()).mute(); } @Test @EnableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_thenPowerModeChanges_cancelVibration() throws Exception { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); Loading @@ -2862,30 +2815,6 @@ public class VibratorManagerServiceTest { } @Test @DisableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_legacySettingsChange_doNotCancelVibration() throws Exception { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); VibratorManagerService service = createSystemReadyService(); IExternalVibrationController externalVibrationControllerMock = mock(IExternalVibrationController.class); ExternalVibration externalVibration = new ExternalVibration(UID, PACKAGE_NAME, AUDIO_ALARM_ATTRS, externalVibrationControllerMock, mock(IBinder.class)); ExternalVibrationScale scale = mExternalVibratorService.onExternalVibrationStart( externalVibration); assertThat(scale.scaleLevel).isNotEqualTo(ExternalVibrationScale.ScaleLevel.SCALE_MUTE); setUserSetting(Settings.System.ALARM_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_OFF); service.mVibrationSettings.mSettingObserver.onChange(false); service.updateServiceState(); verify(externalVibrationControllerMock, never()).mute(); } @Test @EnableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_thenSettingsChange_cancelVibration() throws Exception { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); Loading @@ -2908,28 +2837,6 @@ public class VibratorManagerServiceTest { } @Test @DisableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_legacyScreenTurnsOff_doNotCancelVibration() throws Exception { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); VibratorManagerService service = createSystemReadyService(); IExternalVibrationController externalVibrationControllerMock = mock(IExternalVibrationController.class); ExternalVibration externalVibration = new ExternalVibration(UID, PACKAGE_NAME, AUDIO_ALARM_ATTRS, externalVibrationControllerMock, mock(IBinder.class)); ExternalVibrationScale scale = mExternalVibratorService.onExternalVibrationStart( externalVibration); assertThat(scale.scaleLevel).isNotEqualTo(ExternalVibrationScale.ScaleLevel.SCALE_MUTE); service.mIntentReceiver.onReceive(mContextSpy, new Intent(Intent.ACTION_SCREEN_OFF)); verify(externalVibrationControllerMock, never()).mute(); } @Test @EnableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_thenScreenTurnsOff_cancelVibration() throws Exception { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); Loading @@ -2950,31 +2857,6 @@ public class VibratorManagerServiceTest { } @Test @DisableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_legacyFgUserRequestsMute_doNotCancelVibration() throws Exception { assumeTrue(UserManagerInternal.shouldShowNotificationForBackgroundUserSounds()); mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); VibratorManagerService service = createSystemReadyService(); IExternalVibrationController externalVibrationControllerMock = mock(IExternalVibrationController.class); ExternalVibration externalVibration = new ExternalVibration(UID, PACKAGE_NAME, AUDIO_ALARM_ATTRS, externalVibrationControllerMock, mock(IBinder.class)); ExternalVibrationScale scale = mExternalVibratorService.onExternalVibrationStart( externalVibration); assertThat(scale.scaleLevel).isNotEqualTo(ExternalVibrationScale.ScaleLevel.SCALE_MUTE); service.mIntentReceiver.onReceive(mContextSpy, new Intent( BackgroundUserSoundNotifier.ACTION_MUTE_SOUND)); verify(externalVibrationControllerMock, never()).mute(); } @Test @EnableFlags(android.os.vibrator.Flags.FLAG_FIX_EXTERNAL_VIBRATION_SYSTEM_UPDATE_AWARE) public void onExternalVibration_thenFgUserRequestsMute_cancelVibration() throws Exception { assumeTrue(UserManagerInternal.shouldShowNotificationForBackgroundUserSounds()); mockVibrators(1); Loading