//
// Copyright (C) 2021 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: ["Android-Apache-2.0"],
}

// Production-only files that should be excluded in tests.
filegroup {
    name: "ThemePicker_src_prod",
    visibility: [":__subpackages__"],
    srcs: ["src_override/com/android/customization/picker/CustomizationPickerApplication.java"],
}

java_library {
    name: "ThemePickerOverridesLib",
    srcs: [
        "src_override/**/*.java",
        "src_override/**/*.kt",
    ],
    exclude_srcs: [":ThemePicker_src_prod"],
    libs: [
        "hilt_android",
        "ThemePickerLib",
    ],
}

java_library {
    name: "ThemePickerApplicationLib",
    srcs: [":ThemePicker_src_prod"],
    libs: [
        "hilt_android",
        "ThemePickerLib",
        "ThemePickerOverridesLib",
    ],
}


filegroup {
    name: "ThemePicker_Manifest",
    srcs: [
        "AndroidManifest.xml",
    ],
}

android_library {
    name: "ThemePickerLib",

    static_libs: [
        "guava",
        "monet",
        "renderscript_toolkit",
        "WallpaperPicker2Lib",
        "SettingsLibSettingsTheme",
        "SystemUI-statsd",
        "styleprotoslite",
        "androidx.lifecycle_lifecycle-livedata-ktx",
        "androidx.lifecycle_lifecycle-runtime-ktx",
        "androidx.lifecycle_lifecycle-viewmodel-ktx",
        "androidx.recyclerview_recyclerview",
        "SystemUICustomizationLib",
        "hilt_android",
    ],

    srcs: [
        "src/**/*.java",
        "src/**/*.kt",
    ],

    resource_dirs: [
        "res",
        "res_override",
    ],

    manifest: "AndroidManifest-empty.xml",
}

java_defaults {
    name: "ThemePicker_defaults",
    static_libs: [
        "ThemePickerLib",
        "hilt_android",
    ],

    jni_libs: [
        "librenderscript-toolkit",
    ],

    required: ["android.software.theme_picker.xml"],

    use_embedded_native_libs: true,

    optimize: {
        enabled: false,
    },
    kotlincflags: ["-Xjvm-default=all"],
    certificate: "",

    privileged: true,
    system_ext_specific: true,
}

java_defaults {
    name: "ThemePicker_defaults_with_overrides",
    defaults: ["ThemePicker_defaults"],
    static_libs: [
        "ThemePickerOverridesLib",
    ],
}

prebuilt_etc {
    name: "android.software.theme_picker.xml",
    system_ext_specific: true,
    sub_dir: "permissions",
    src: "android.software.theme_picker.xml",
}

//
// Build app code.
//
android_app {
    name: "ThemePicker",
    package_name: "com.android.wallpaper",
    defaults: ["ThemePicker_defaults_with_overrides"],

    platform_apis: true,
    manifest: "AndroidManifest.xml",
    additional_manifests: [":WallpaperPicker2_Manifest"],
    overrides: ["WallpaperPicker", "WallpaperPicker2"],
    static_libs: ["ThemePickerApplicationLib"],
}
