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

java_sdk_library {
    name: "org.apache.http.legacy",
    srcs: [
        "src/**/*.java",
        "android/**/*.java",
    ],
    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)",
    ],
}
