// Copyright (C) 2014 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: ["external_apache-http_license"],
}

// Added automatically by a large-scale-change
// See: http://go/android-license-faq
license {
    name: "external_apache-http_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
    ],
    license_text: [
        "NOTICE",
    ],
}

filegroup {
    name: "org.apache.http.legacy.sources",
    srcs: ["src/**/*.java"],
    path: "src",
    visibility: ["//visibility:private"],
}

filegroup {
    name: "org.apache.http.legacy.android.sources",
    srcs: ["android/src/**/*.java"],
    path: "android/src",
    visibility: ["//visibility:private"],
}

java_sdk_library {
    name: "org.apache.http.legacy",
    srcs: [
        ":org.apache.http.legacy.sources",
        ":org.apache.http.legacy.android.sources",
    ],
    api_packages: [
        "android.net.compatibility",
        "android.net.http",
        "com.android.internal.http.multipart",
        "org.apache.commons.codec",
        "org.apache.commons.codec.binary",
        "org.apache.commons.codec.language",
        "org.apache.commons.codec.net",
        "org.apache.commons.logging",
        "org.apache.commons.logging.impl",
        "org.apache.http",
        "org.apache.http.auth",
        "org.apache.http.auth.params",
        "org.apache.http.client",
        "org.apache.http.client.entity",
        "org.apache.http.client.methods",
        "org.apache.http.client.params",
        "org.apache.http.client.protocol",
        "org.apache.http.client.utils",
        "org.apache.http.conn",
        "org.apache.http.conn.params",
        "org.apache.http.conn.routing",
        "org.apache.http.conn.scheme",
        "org.apache.http.conn.util",
        "org.apache.http.cookie",
        "org.apache.http.cookie.params",
        "org.apache.http.entity",
        "org.apache.http.impl",
        "org.apache.http.impl.auth",
        "org.apache.http.impl.client",
        "org.apache.http.impl.conn",
        "org.apache.http.impl.conn.tsccm",
        "org.apache.http.impl.cookie",
        "org.apache.http.impl.entity",
        "org.apache.http.impl.io",
        "org.apache.http.io",
        "org.apache.http.message",
        "org.apache.http.params",
        "org.apache.http.protocol",
        "org.apache.http.util",
    ],
    dex_preopt: {
        profile: "art-profile",
        app_image: false,
    },
    errorprone: {
        javacflags: ["-Xep:MissingOverride:OFF"], // b/73499927
    },
    // Add dependencies on files used by droiddoc_options.
    droiddoc_option_files: [":frameworks-base-api-current.txt"],
    droiddoc_options: [
        // Subtract classes from the API .txt / stubs that are in the public SDK API. Without this
        // the org.apache.http.legacy.jar would contain duplicates of classes in android.jar.
        // See http://b/119021844 for more details.
        "--subtract-api $(location :frameworks-base-api-current.txt)",
    ],
    dist_group: "android",
}

// Make the current.txt available for use by the cts/tests/signature tests.
// ========================================================================
filegroup {
    name: "apache-http-legacy-current.txt",
    srcs: [
        "api/current.txt",
    ],
}
