/*
 * 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 {
    // 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: "audioflinger_fuzzer",
    defaults: [
        "latest_android_media_audio_common_types_cpp_shared",
    ],
    srcs: [
        "audioflinger_fuzzer.cpp",
    ],
    static_libs: [
        "android.hardware.audio.common@7.0-enums",
        "effect-aidl-cpp",
        "libaudioclient",
        "libbase",
        "libcgrouprc",
        "libcgrouprc_format",
        "libcutils",
        "libjsoncpp",
        "liblog",
        "libmediametrics",
        "libmediametricsservice",
        "libmedia_helper",
        "libprocessgroup",
        "shared-file-region-aidl-cpp",
    ],
    shared_libs: [
        "android.hardware.audio.common-util",
        "audioclient-types-aidl-cpp",
        "audioflinger-aidl-cpp",
        "audiopolicy-aidl-cpp",
        "audiopolicy-types-aidl-cpp",
        "av-types-aidl-cpp",
        "capture_state_listener-aidl-cpp",
        "libaudioclient_aidl_conversion",
        "libaudio_aidl_conversion_common_cpp",
        "libaudioflinger",
        "libaudiofoundation",
        "libaudiomanager",
        "libaudiopolicy",
        "libaudioutils",
        "libbinder",
        "libdl",
        "libmediautils",
        "libnblog",
        "libutils",
        "libxml2",
        "mediametricsservice-aidl-cpp",
        "framework-permission-aidl-cpp",
    ],
    header_libs: [
        "libaudiofoundation_headers",
        "libmedia_headers",
    ],
    fuzz_config: {
        cc: [
            "android-audio-fuzzing-reports@google.com",
        ],
        componentid: 155276,
        hotlists: [
            "4593311",
        ],
        description: "The fuzzer targets the APIs of libaudioflinger",
        vector: "local_no_privileges_required",
        service_privilege: "privileged",
        users: "multi_user",
        fuzzed_code_usage: "shipped",
    },
}
