From 3cc7d7d5a5640fc61b518e974105558e93f78251 Mon Sep 17 00:00:00 2001 From: lpeter Date: Mon, 12 Sep 2022 16:20:49 +0800 Subject: [PATCH] Call enforceCallingPermission instead of annotation EnforcePermission MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These test cases failed after this change (ag/19194476). It uses @android.annotation.EnforcePermission instead of calling enforceCallingPermission. When using @android.annotation.EnforcePermission, it will trigger noteOP, so we can’t use the noteOp mechanism to fix this bug. After reverting back to use enforceCallingPermission, the test cases will pass. Bug: 242103120 Test: atest HotwordDetectionServiceBasicTest Change-Id: I5cb6a2a33a3fadd2bcbfc6edece80da743684398 --- .../internal/app/IVoiceInteractionManagerService.aidl | 2 -- .../voiceinteraction/VoiceInteractionManagerService.java | 6 ++++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl index 83bf801391f04..8d51c9cdca9c8 100644 --- a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl +++ b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl @@ -270,7 +270,6 @@ interface IVoiceInteractionManagerService { */ void shutdownHotwordDetectionService(); - @EnforcePermission(allOf={"RECORD_AUDIO", "CAPTURE_AUDIO_HOTWORD"}) void startListeningFromMic( in AudioFormat audioFormat, in IMicrophoneHotwordDetectionVoiceInteractionCallback callback); @@ -286,7 +285,6 @@ interface IVoiceInteractionManagerService { /** * Test API to simulate to trigger hardware recognition event for test. */ - @EnforcePermission(allOf={"RECORD_AUDIO", "CAPTURE_AUDIO_HOTWORD"}) void triggerHardwareRecognitionEventForTest( in SoundTrigger.KeyphraseRecognitionEvent event, in IHotwordRecognitionStatusCallback callback); diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index 4b9b4a9781deb..4ee066c5c2115 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -1284,12 +1284,13 @@ public class VoiceInteractionManagerService extends SystemService { } } - @android.annotation.EnforcePermission(allOf={android.Manifest.permission.RECORD_AUDIO, android.Manifest.permission.CAPTURE_AUDIO_HOTWORD}) @Override public void startListeningFromMic( AudioFormat audioFormat, IMicrophoneHotwordDetectionVoiceInteractionCallback callback) throws RemoteException { + enforceCallingPermission(Manifest.permission.RECORD_AUDIO); + enforceCallingPermission(Manifest.permission.CAPTURE_AUDIO_HOTWORD); synchronized (this) { enforceIsCurrentVoiceInteractionService(); @@ -1349,12 +1350,13 @@ public class VoiceInteractionManagerService extends SystemService { } } - @android.annotation.EnforcePermission(allOf={android.Manifest.permission.RECORD_AUDIO, android.Manifest.permission.CAPTURE_AUDIO_HOTWORD}) @Override public void triggerHardwareRecognitionEventForTest( SoundTrigger.KeyphraseRecognitionEvent event, IHotwordRecognitionStatusCallback callback) throws RemoteException { + enforceCallingPermission(Manifest.permission.RECORD_AUDIO); + enforceCallingPermission(Manifest.permission.CAPTURE_AUDIO_HOTWORD); synchronized (this) { enforceIsCurrentVoiceInteractionService();