/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package {
    default_team: "trendy_team_media_framework_audio",
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "frameworks_av_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_av_license"],
}

cc_fuzz {
    name: "libaaudio_fuzzer",
    defaults: [
        "latest_android_media_audio_common_types_cpp_static",
    ],
    srcs: [
        "libaaudio_fuzzer.cpp",
    ],
    header_libs: [
        "libaaudio_headers",
    ],
    shared_libs: [
        "libbinder",
        "libaudiomanager",
        "libaudiopolicy",
        "libaudioclient_aidl_conversion",
        "libaudio_aidl_conversion_common_cpp",
        "libutils",
        "com.android.media.aaudio-aconfig-cc",
    ],
    static_libs: [
        "liblog",
        "libcutils",
        "libaaudio",
        "libjsoncpp",
        "libbase_ndk",
        "libcgrouprc",
        "libaudioutils",
        "libaudioclient",
        "aaudio-aidl-cpp",
        "libmedia_helper",
        "libmediametrics",
        "libprocessgroup",
        "av-types-aidl-cpp",
        "libaaudio_internal",
        "libcgrouprc_format",
        "audiopolicy-aidl-cpp",
        "audioflinger-aidl-cpp",
        "audiopolicy-types-aidl-cpp",
        "audioclient-types-aidl-cpp",
        "shared-file-region-aidl-cpp",
        "framework-permission-aidl-cpp",
        "mediametricsservice-aidl-cpp",
    ],
    fuzz_config: {
        cc: [
            "android-audio-fuzzing-reports@google.com",
        ],
        componentid: 155276,
        hotlists: [
            "4593311",
        ],
        description: "The fuzzer targets the APIs of libaaudio",
        vector: "local_no_privileges_required",
        service_privilege: "privileged",
        users: "multi_user",
        fuzzed_code_usage: "shipped",
    },
}
