// 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/apex:__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",
    ],
    sdk_version: "system_current",
}

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

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"],
}

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

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"],
}

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