// 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.

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_srcs: [
        ":apache-http-stubs-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: [
        "--hide ReferencesHidden",
        // 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)",
    ],
}

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