Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac26cf74 authored by Ricardo Correa's avatar Ricardo Correa
Browse files

Allow call audio access for default dialer application

The access to call audio (record and play) will be granted only to the app associated with Dialer role, who also includes a new system permission.

Test: Compilation and manual tests
Bug: 135197853

Change-Id: I65ca823c235d4d3420630837427103783ad1d1b0
parent 0f97ee5a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -879,6 +879,7 @@ status_t AudioSystem::getOutputForAttr(audio_attributes_t *attr,
                                        audio_stream_type_t *stream,
                                        pid_t pid,
                                        uid_t uid,
                                        const String16& opPackageName,
                                        const audio_config_t *config,
                                        audio_output_flags_t flags,
                                        audio_port_handle_t *selectedDeviceId,
@@ -888,7 +889,7 @@ status_t AudioSystem::getOutputForAttr(audio_attributes_t *attr,
    const sp<IAudioPolicyService>& aps = AudioSystem::get_audio_policy_service();
    if (aps == 0) return NO_INIT;
    return aps->getOutputForAttr(attr, output, session, stream, pid, uid,
                                 config,
                                 opPackageName, config,
                                 flags, selectedDeviceId, portId, secondaryOutputs);
}

+8 −1
Original line number Diff line number Diff line
@@ -214,6 +214,7 @@ public:
                              audio_stream_type_t *stream,
                              pid_t pid,
                              uid_t uid,
                              const String16& opPackageName,
                              const audio_config_t *config,
                              audio_output_flags_t flags,
                              audio_port_handle_t *selectedDeviceId,
@@ -252,6 +253,7 @@ public:
            }
            data.writeInt32(pid);
            data.writeInt32(uid);
            data.writeString16(opPackageName);
            data.write(config, sizeof(audio_config_t));
            data.writeInt32(static_cast <uint32_t>(flags));
            data.writeInt32(*selectedDeviceId);
@@ -1645,6 +1647,11 @@ status_t BnAudioPolicyService::onTransact(
            }
            pid_t pid = (pid_t)data.readInt32();
            uid_t uid = (uid_t)data.readInt32();
            String16 opPackageName;
            status = data.readString16(&opPackageName);
            if (status != NO_ERROR) {
                return status;
            }
            audio_config_t config;
            memset(&config, 0, sizeof(audio_config_t));
            data.read(&config, sizeof(audio_config_t));
@@ -1656,7 +1663,7 @@ status_t BnAudioPolicyService::onTransact(
            std::vector<audio_io_handle_t> secondaryOutputs;
            status = getOutputForAttr(&attr,
                    &output, session, &stream, pid, uid,
                    &config,
                    opPackageName, &config,
                    flags, &selectedDeviceId, &portId, &secondaryOutputs);
            reply->writeInt32(status);
            status = reply->write(&attr, sizeof(audio_attributes_t));
+1 −0
Original line number Diff line number Diff line
@@ -240,6 +240,7 @@ public:
                                     audio_stream_type_t *stream,
                                     pid_t pid,
                                     uid_t uid,
                                     const String16& opPackageName,
                                     const audio_config_t *config,
                                     audio_output_flags_t flags,
                                     audio_port_handle_t *selectedDeviceId,
+3 −0
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ public:
            if (clientInfo.readFromParcel(parcel) != NO_ERROR) {
                return DEAD_OBJECT;
            }
            opPackageName = parcel->readString16();
            if (parcel->readInt32() != 0) {
                // TODO: Using unsecurePointer() has some associated security
                //       pitfalls (see declaration for details).
@@ -97,6 +98,7 @@ public:
            (void)parcel->write(&attr, sizeof(audio_attributes_t));
            (void)parcel->write(&config, sizeof(audio_config_t));
            (void)clientInfo.writeToParcel(parcel);
            (void)parcel->writeString16(opPackageName);
            if (sharedBuffer != 0) {
                (void)parcel->writeInt32(1);
                (void)parcel->writeStrongBinder(IInterface::asBinder(sharedBuffer));
@@ -119,6 +121,7 @@ public:
        audio_attributes_t attr;
        audio_config_t config;
        AudioClient clientInfo;
        String16 opPackageName;
        sp<IMemory> sharedBuffer;
        uint32_t notificationsPerBuffer;
        float speed;
+1 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@ public:
                                      audio_stream_type_t *stream,
                                      pid_t pid,
                                      uid_t uid,
                                      const String16& opPackageName,
                                      const audio_config_t *config,
                                      audio_output_flags_t flags,
                                      audio_port_handle_t *selectedDeviceId,
Loading