// Copyright (C) 2025 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_applicable_licenses: ["Android-Apache-2.0"],
}

filegroup {
    name: "framework-network-security-config-sources",
    srcs: select(release_flag("RELEASE_CONSCRYPT_NSC"), {
        true: [
            "module/src/**/*.java",
        ],
        default: [
            "platform/src/android/security/net/config/*.java",
        ],
    }),
    visibility: [
        "//frameworks/base:__subpackages__",
    ],
}

// Referenced implicitly from framework-network-security-config.
filegroup {
    name: "framework-network-security-config-removed.api.combined.public.latest",
    srcs: [
        "api/last-removed.txt",
    ],
}

// Referenced implicitly from framework-network-security-config.
filegroup {
    name: "framework-network-security-config.api.combined.system.latest",
    srcs: [
        "api/system-last-api.txt",
    ],
}

// Referenced implicitly from framework-network-security-config.
filegroup {
    name: "framework-network-security-config-removed.api.combined.system.latest",
    srcs: [
        "api/system-last-removed.txt",
    ],
}

// Referenced implicitly from framework-network-security-config.
filegroup {
    name: "framework-network-security-config-incompatibilities.api.system.latest",
    srcs: [
        "api/system-last-incompatibilities.txt",
    ],
}

// Referenced implicitly from framework-network-security-config.
filegroup {
    name: "framework-network-security-config.api.combined.module-lib.latest",
    srcs: [
        "api/lib-last-api.txt",
    ],
}

// Referenced implicitly from framework-network-security-config.
filegroup {
    name: "framework-network-security-config-removed.api.combined.module-lib.latest",
    srcs: [
        "api/lib-last-removed.txt",
    ],
}

// Referenced implicitly from framework-network-security-config.
filegroup {
    name: "framework-network-security-config-incompatibilities.api.module-lib.latest",
    srcs: [
        "api/lib-last-incompatibilities.txt",
    ],
}

// Referenced implicitly from framework-network-security-config.
filegroup {
    name: "framework-network-security-config.api.combined.test.latest",
    srcs: [
        "api/test-last.txt",
    ],
}

// Referenced implicitly from framework-network-security-config.
filegroup {
    name: "framework-network-security-config-removed.api.combined.test.latest",
    srcs: [
        "api/test-last-removed.txt",
    ],
}

// Referenced implicitly from framework-network-security-config.
filegroup {
    name: "framework-network-security-config-incompatibilities.api.test.latest",
    srcs: [
        "api/test-last-incompatibilities.txt",
    ],
}

java_sdk_library {
    name: "framework-network-security-config",
    defaults: ["framework-non-updatable-unbundled-defaults"],
    srcs: [
        "platform/src/android/security/*.java",
    ],
    libs: [
        "app-compat-annotations",
        "framework-connectivity.stubs",
        "android.security.flags-aconfig-java",
    ],
    static_libs: [
        "networksecurity_exported_aconfig_flags_lib",
    ],
    impl_library_visibility: [
        "//frameworks/base:__subpackages__",
    ],
    jarjar_rules: "jarjar-rules.txt",
    permitted_packages: [
        "android.security",
    ],

    // Disable when NSC implementation in Conscrypt is active.
    enabled: select(release_flag("RELEASE_CONSCRYPT_NSC"), {
        true: false,
        default: true,
    }),
}

platform_compat_config {
    name: "framework-network-security-config-compat-config",
    src: ":framework-network-security-config",

    // Disable when NSC implementation in Conscrypt is active.
    enabled: select(release_flag("RELEASE_CONSCRYPT_NSC"), {
        true: false,
        default: true,
    }),
}
