/*
 * Copyright (C) 2022 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_camera_framework",
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "frameworks_av_camera_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_av_camera_license"],
}

cc_defaults {
    name: "camera_defaults",
    static_libs: [
        "libcamera_client",
        "libbinder_random_parcel",
    ],
    shared_libs: [
        "camera_platform_flags_c_lib",
        "libbase",
        "libcutils",
        "libutils",
        "liblog",
        "libbinder",
        "libgui",
        "libcamera_metadata",
        "libnativewindow",
    ],
    header_libs: [
        "libbinder_headers",
    ],
    fuzz_config: {
        cc: [
            "android-camera-fwk-eng@google.com",
        ],
        componentid: 41727,
        hotlists: [
            "4593311",
        ],
        description: "The fuzzer targets the APIs of libcamera_client",
        vector: "local_no_privileges_required",
        service_privilege: "privileged",
        users: "multi_user",
        fuzzed_code_usage: "shipped",
    },
}

cc_fuzz {
    name: "camera_fuzzer",
    srcs: [
        "camera_fuzzer.cpp",
    ],
    defaults: [
        "camera_defaults",
    ],
}

cc_fuzz {
    name: "camera_c2CaptureRequest_fuzzer",
    srcs: [
        "camera_c2CaptureRequest_fuzzer.cpp",
    ],
    defaults: [
        "camera_defaults",
    ],
}

cc_fuzz {
    name: "camera_c2ConcurrentCamera_fuzzer",
    srcs: [
        "camera_c2ConcurrentCamera_fuzzer.cpp",
    ],
    defaults: [
        "camera_defaults",
    ],
}

cc_fuzz {
    name: "camera_c2SubmitInfo_fuzzer",
    srcs: [
        "camera_c2SubmitInfo_fuzzer.cpp",
    ],
    defaults: [
        "camera_defaults",
    ],
}

cc_fuzz {
    name: "camera_c2SessionConfiguration_fuzzer",
    srcs: [
        "camera_c2SessionConfiguration_fuzzer.cpp",
    ],
    defaults: [
        "camera_defaults",
    ],
}

cc_fuzz {
    name: "camera_c2OutputConfiguration_fuzzer",
    srcs: [
        "camera_c2OutputConfiguration_fuzzer.cpp",
    ],
    defaults: [
        "camera_defaults",
    ],
}

cc_fuzz {
    name: "camera_vendorTagDescriptor_fuzzer",
    srcs: [
        "camera_vendorTagDescriptor_fuzzer.cpp",
    ],
    defaults: [
        "camera_defaults",
    ],
    include_dirs: [
        "system/media/camera/tests",
        "system/media/private/camera/include",
    ],
}

cc_fuzz {
    name: "camera_Parameters_fuzzer",
    srcs: [
        "camera_Parameters_fuzzer.cpp",
    ],
    defaults: [
        "camera_defaults",
    ],
}

cc_fuzz {
    name: "camera_SessionStats_fuzzer",
    srcs: [
        "camera_SessionStats_fuzzer.cpp",
    ],
    defaults: [
        "camera_defaults",
    ],
}

cc_fuzz {
    name: "camera_captureResult_fuzzer",
    srcs: [
        "camera_captureResult_fuzzer.cpp",
    ],
    defaults: [
        "camera_defaults",
    ],
}

cc_fuzz {
    name: "camera_utils_fuzzer",
    srcs: [
        "camera_utils_fuzzer.cpp",
    ],
    defaults: [
        "camera_defaults",
    ],
}

cc_fuzz {
    name: "camera_metadata_fuzzer",
    srcs: [
        "camera_metadata_fuzzer.cpp",
    ],
    defaults: [
        "camera_defaults",
    ],
}
