diff options
author | Eric Laurent <elaurent@google.com> | 2014-06-04 18:11:10 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-06-04 18:11:11 +0000 |
commit | 83438ce6cbbff49ca26d4bd694ffdad4842ded5a (patch) | |
tree | 47fc04b2f5d72d054f9438cb2ae6538cd988503c /services | |
parent | 0d843fdc91c98d447c3c3e357020d07b783c7bc0 (diff) | |
parent | 5284ed53c14cd4d15bd793000ede7166d143e69a (diff) | |
download | frameworks_av-83438ce6cbbff49ca26d4bd694ffdad4842ded5a.zip frameworks_av-83438ce6cbbff49ca26d4bd694ffdad4842ded5a.tar.gz frameworks_av-83438ce6cbbff49ca26d4bd694ffdad4842ded5a.tar.bz2 |
Merge "audio policy: add permission for routing APIs." into lmp-preview-dev
Diffstat (limited to 'services')
-rw-r--r-- | services/audioflinger/ServiceUtilities.cpp | 7 | ||||
-rw-r--r-- | services/audioflinger/ServiceUtilities.h | 1 | ||||
-rw-r--r-- | services/audiopolicy/AudioPolicyInterfaceImpl.cpp | 18 |
3 files changed, 26 insertions, 0 deletions
diff --git a/services/audioflinger/ServiceUtilities.cpp b/services/audioflinger/ServiceUtilities.cpp index 152455d..8246fef 100644 --- a/services/audioflinger/ServiceUtilities.cpp +++ b/services/audioflinger/ServiceUtilities.cpp @@ -59,6 +59,13 @@ bool settingsAllowed() { return ok; } +bool modifyAudioRoutingAllowed() { + static const String16 sModifyAudioRoutingAllowed("android.permission.MODIFY_AUDIO_ROUTING"); + bool ok = checkCallingPermission(sModifyAudioRoutingAllowed); + if (!ok) ALOGE("android.permission.MODIFY_AUDIO_ROUTING"); + return ok; +} + bool dumpAllowed() { // don't optimize for same pid, since mediaserver never dumps itself static const String16 sDump("android.permission.DUMP"); diff --git a/services/audioflinger/ServiceUtilities.h b/services/audioflinger/ServiceUtilities.h index 531bc56..df6f6f4 100644 --- a/services/audioflinger/ServiceUtilities.h +++ b/services/audioflinger/ServiceUtilities.h @@ -24,6 +24,7 @@ bool recordingAllowed(); bool captureAudioOutputAllowed(); bool captureHotwordAllowed(); bool settingsAllowed(); +bool modifyAudioRoutingAllowed(); bool dumpAllowed(); } diff --git a/services/audiopolicy/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/AudioPolicyInterfaceImpl.cpp index 2b33703..8cc386a 100644 --- a/services/audiopolicy/AudioPolicyInterfaceImpl.cpp +++ b/services/audiopolicy/AudioPolicyInterfaceImpl.cpp @@ -470,6 +470,9 @@ status_t AudioPolicyService::listAudioPorts(audio_port_role_t role, unsigned int *generation) { Mutex::Autolock _l(mLock); + if(!modifyAudioRoutingAllowed()) { + return PERMISSION_DENIED; + } if (mAudioPolicyManager == NULL) { return NO_INIT; } @@ -480,6 +483,9 @@ status_t AudioPolicyService::listAudioPorts(audio_port_role_t role, status_t AudioPolicyService::getAudioPort(struct audio_port *port) { Mutex::Autolock _l(mLock); + if(!modifyAudioRoutingAllowed()) { + return PERMISSION_DENIED; + } if (mAudioPolicyManager == NULL) { return NO_INIT; } @@ -491,6 +497,9 @@ status_t AudioPolicyService::createAudioPatch(const struct audio_patch *patch, audio_patch_handle_t *handle) { Mutex::Autolock _l(mLock); + if(!modifyAudioRoutingAllowed()) { + return PERMISSION_DENIED; + } if (mAudioPolicyManager == NULL) { return NO_INIT; } @@ -501,6 +510,9 @@ status_t AudioPolicyService::createAudioPatch(const struct audio_patch *patch, status_t AudioPolicyService::releaseAudioPatch(audio_patch_handle_t handle) { Mutex::Autolock _l(mLock); + if(!modifyAudioRoutingAllowed()) { + return PERMISSION_DENIED; + } if (mAudioPolicyManager == NULL) { return NO_INIT; } @@ -514,6 +526,9 @@ status_t AudioPolicyService::listAudioPatches(unsigned int *num_patches, unsigned int *generation) { Mutex::Autolock _l(mLock); + if(!modifyAudioRoutingAllowed()) { + return PERMISSION_DENIED; + } if (mAudioPolicyManager == NULL) { return NO_INIT; } @@ -524,6 +539,9 @@ status_t AudioPolicyService::listAudioPatches(unsigned int *num_patches, status_t AudioPolicyService::setAudioPortConfig(const struct audio_port_config *config) { Mutex::Autolock _l(mLock); + if(!modifyAudioRoutingAllowed()) { + return PERMISSION_DENIED; + } if (mAudioPolicyManager == NULL) { return NO_INIT; } |