// Copyright (C) 2019 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 "packages_modules_appsearch_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["packages_modules_appsearch_license"],
}

filegroup {
    name: "framework-appsearch-sources",
    defaults: ["framework-sources-module-defaults"],
    srcs: [
        ":framework-appsearch-external-sources",
        ":framework-appsearch-internal-sources",
    ],
    visibility: ["//packages/modules/AppSearch:__subpackages__"],
}

filegroup {
    name: "framework-appsearch-internal-sources",
    srcs: [
        "java/**/*.aidl",
        "java/**/*.java",
    ],
    exclude_srcs: [
        ":framework-appsearch-external-sources",
    ],
    path: "java",
}

filegroup {
    name: "framework-appsearch-external-sources",
    srcs: [
        "java/external/**/*.aidl",
        "java/external/**/*.java",
    ],
    path: "java/external",
}

filegroup {
    name: "framework-appsearch-safeparcel-sources",
    srcs: [
        "java/android/app/appsearch/safeparcel/*.java",
    ],
    path: "java",
}

java_sdk_library {
    name: "framework-appsearch",
    srcs: [":framework-appsearch-sources"],
    sdk_version: "module_current",
    min_sdk_version: "Tiramisu",
    libs: [
        "jspecify",
        "unsupportedappusage",
    ],
    static_libs: [
        // This list must be kept in sync with jarjar.txt
        "appsearch_flags_java_lib",
        "modules-utils-preconditions",
    ],
    optimize: {
        enabled: true,
        optimize: true,
        shrink: true,
        shrink_resources: true,
        // Enable R8 compat mode. R8 full mode implicitly adds -allowaccessmodification,
        // which may cause non-public fields and methods to become public.
        proguard_compatibility: true,
        proguard_flags_files: ["proguard.flags"],
    },
    plugins: [
        "safeparcel-annotation-processor",
    ],
    defaults: ["framework-module-defaults"],
    // WARNING: As part of the boot classpath, this framework target's permitted
    // packages list should *only* contain packages that are entirely and
    // exclusively owned by this module. Do not add additional packages
    // (including any packages for dependencies) without first consulting
    // mainline/API owners.
    permitted_packages: [
        "android.app.appsearch",
    ],
    jarjar_rules: "jarjar-rules.txt",
    apex_available: ["com.android.appsearch"],
    impl_library_visibility: [
        "//cts/tests/appsearch:__subpackages__",
        "//packages/modules/AppSearch/service:__subpackages__",
        "//packages/modules/AppSearch/testing:__subpackages__",
    ],
    aconfig_declarations: [
        "appsearch_aconfig_flags",
    ],
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
}
