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

java_library {
    name: "framework-mediaprovider",

    srcs: [
        ":framework-mediaprovider-sources",
    ],

    permitted_packages: [
        "android.provider",
    ],

    installable: true,

    sdk_version: "module_current",
    libs: [
        "framework_mediaprovider_annotation",
        "unsupportedappusage",
    ],

    plugins: ["java_api_finder"],

    hostdex: true, // for hiddenapi check
    visibility: ["//packages/providers/MediaProvider:__subpackages__"],
    apex_available: [
        "com.android.mediaprovider",
        "test_com.android.mediaprovider",
    ],
}

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

stubs_defaults {
    name: "framework-mediaprovider-stubs-srcs-defaults",
    srcs: [":framework-mediaprovider-sources"],
    dist: { dest: "framework-mediaprovider.txt" },
}

droidstubs {
    name: "framework-mediaprovider-stubs-srcs-publicapi",
    defaults: [
        "framework-module-stubs-defaults-publicapi",
        "framework-mediaprovider-stubs-srcs-defaults",
    ],
    check_api: {
        last_released: {
            api_file: ":framework-mediaprovider.api.public.latest",
            removed_api_file: ":framework-mediaprovider-removed.api.public.latest",
        },
        api_lint: {
            new_since: ":framework-mediaprovider.api.public.latest",
        },
    },
}

droidstubs {
    name: "framework-mediaprovider-stubs-srcs-systemapi",
    defaults: [
        "framework-module-stubs-defaults-systemapi",
        "framework-mediaprovider-stubs-srcs-defaults",
    ],
}

droidstubs {
    name: "framework-mediaprovider-api-module_libs_api",
    defaults: [
        "framework-module-api-defaults-module_libs_api",
        "framework-mediaprovider-stubs-srcs-defaults",
    ],
}

droidstubs {
    name: "framework-mediaprovider-stubs-srcs-module_libs_api",
    defaults: [
        "framework-module-stubs-defaults-module_libs_api",
        "framework-mediaprovider-stubs-srcs-defaults",
    ],
}

java_library {
    name: "framework-mediaprovider-stubs-publicapi",
    srcs: [":framework-mediaprovider-stubs-srcs-publicapi"],
    defaults: ["framework-module-stubs-lib-defaults-publicapi"],
    dist: { dest: "framework-mediaprovider.jar" },
}

java_library {
    name: "framework-mediaprovider-stubs-systemapi",
    srcs: [":framework-mediaprovider-stubs-srcs-systemapi"],
    defaults: ["framework-module-stubs-lib-defaults-systemapi"],
    dist: { dest: "framework-mediaprovider.jar" },
}

java_library {
    name: "framework-mediaprovider-stubs-module_libs_api",
    srcs: [":framework-mediaprovider-stubs-srcs-module_libs_api"],
    defaults: ["framework-module-stubs-lib-defaults-module_libs_api"],
    dist: { dest: "framework-mediaprovider.jar" },
}

java_library {
    name: "framework_mediaprovider_annotation",
    srcs: [":framework-mediaprovider-annotation-sources"],
    installable: false,
    sdk_version: "core_current",
}
