/******************************************************************************
 *
 * Copyright (C) 2020 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.
 *
 *****************************************************************************
 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
 */

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_defaults {
    name: "mediametrics_service_fuzzer_defaults",
    static_libs: [
        "libmediametrics",
        "libmediametricsservice",
        "libplatformprotos",
    ],

    shared_libs: [
        "libbase",
        "libbinder",
        "libcutils",
        "liblog",
        "libmedia_helper",
        "libmediautils",
        "libmemunreachable",
        "libprotobuf-cpp-lite",
        "libstagefright",
        "libstagefright_foundation",
        "libstats_media_metrics",
        "libstatspull",
        "libstatssocket",
        "libutils",
        "mediametricsservice-aidl-cpp",
        "packagemanager_aidl-cpp",
    ],

    header_libs: [
        "libaudioutils_headers",
    ],

    fuzz_config: {
        cc: [
            "android-media-fuzzing-reports@google.com",
        ],
        componentid: 155276,
        hotlists: [
            "4593311",
        ],
        description: "The fuzzer targets the APIs of libmediametricsservice",
        vector: "local_no_privileges_required",
        service_privilege: "constrained",
        users: "multi_user",
        fuzzed_code_usage: "shipped",
    },
}

cc_fuzz {
    name: "mediametrics_service_fuzzer",

    srcs: [
        "mediametrics_service_fuzzer.cpp",
    ],
    defaults: [
        "mediametrics_service_fuzzer_defaults",
    ],
}

cc_fuzz {
    name: "mediametrics_aidl_fuzzer",
    srcs: [
        "mediametrics_aidl_fuzzer.cpp",
    ],
    defaults: [
        "service_fuzzer_defaults",
        "fuzzer_disable_leaks",
        "mediametrics_service_fuzzer_defaults",
    ],
}
