//
// Copyright (C) 2018 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: ["frameworks_base_packages_SystemUI_license"],
}

// Added automatically by a large-scale-change
// See: http://go/android-license-faq
license {
    name: "frameworks_base_packages_SystemUI_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
    ],
    license_text: [
        "NOTICE",
    ],
}

java_library {
    name: "SystemUI-proto",

    srcs: ["src/**/*.proto"],

    proto: {
        type: "nano",
    },

    libs: [
        "WindowManager-Shell-proto",
    ],
}

java_library {
    name: "SystemUI-tags",
    srcs: ["src/com/android/systemui/EventLogTags.logtags"],
}

filegroup {
    name: "ReleaseJavaFiles",
    srcs: [
        "src-release/**/*.kt",
        "src-release/**/*.java",
    ],
}

filegroup {
    name: "DebugJavaFiles",
    srcs: [
        "src-debug/**/*.kt",
        "src-debug/**/*.java",
    ],
}

android_library {
    name: "SystemUI-core",
    srcs: [
        "src/**/*.kt",
        "src/**/*.java",
        "src/**/I*.aidl",
        ":ReleaseJavaFiles",
    ],
    product_variables: {
        debuggable: {
            srcs: [":DebugJavaFiles"],
            exclude_srcs: [":ReleaseJavaFiles"],
        },
    },
    resource_dirs: [
        "res-product",
        "res-keyguard",
        "res",
    ],
    static_libs: [
        "WifiTrackerLib",
        "WindowManager-Shell",
        "SystemUIAnimationLib",
        "SystemUIPluginLib",
        "SystemUISharedLib",
        "SystemUI-statsd",
        "SettingsLib",
        "androidx.core_core-ktx",
        "androidx.viewpager2_viewpager2",
        "androidx.legacy_legacy-support-v4",
        "androidx.recyclerview_recyclerview",
        "androidx.preference_preference",
        "androidx.appcompat_appcompat",
        "androidx.concurrent_concurrent-futures",
        "androidx.mediarouter_mediarouter",
        "androidx.palette_palette",
        "androidx.legacy_legacy-preference-v14",
        "androidx.leanback_leanback",
        "androidx.slice_slice-core",
        "androidx.slice_slice-view",
        "androidx.slice_slice-builders",
        "androidx.arch.core_core-runtime",
        "androidx.lifecycle_lifecycle-common-java8",
        "androidx.lifecycle_lifecycle-extensions",
        "androidx.lifecycle_lifecycle-runtime-ktx",
        "androidx.dynamicanimation_dynamicanimation",
        "androidx-constraintlayout_constraintlayout",
        "androidx.exifinterface_exifinterface",
        "com.google.android.material_material",
        "kotlinx_coroutines_android",
        "kotlinx_coroutines",
        "iconloader_base",
        "SystemUI-tags",
        "SystemUI-proto",
        "monet",
        "dagger2",
        "jsr330",
        "lottie",
    ],
    manifest: "AndroidManifest.xml",

    kotlincflags: ["-Xjvm-default=enable"],

    plugins: ["dagger2-compiler"],

    lint: {
        extra_check_modules: ["SystemUILintChecker"],
    },
}

filegroup {
    name: "AAA-src",
    srcs: ["tests/src/com/android/AAAPlusPlusVerifySysuiRequiredTestPropertiesTest.java"],
    path: "tests/src",
}

filegroup {
    name: "SystemUI-tests-utils",
    srcs: [
        "tests/utils/src/**/*.java",
        "tests/utils/src/**/*.kt",
    ],
    path: "tests/utils/src",
}

java_library {
    name: "SystemUI-tests-concurrency",
    srcs: [
        "src/com/android/systemui/util/concurrency/DelayableExecutor.java",
        "src/com/android/systemui/util/time/SystemClock.java",
        "tests/utils/src/com/android/systemui/util/concurrency/FakeExecutor.java",
        "tests/utils/src/com/android/systemui/util/time/FakeSystemClock.java",
    ],
    jarjar_rules: ":jarjar-rules-shared",
}

android_library {
    name: "SystemUI-tests",
    manifest: "tests/AndroidManifest-base.xml",
    additional_manifests: ["tests/AndroidManifest.xml"],

    resource_dirs: [
        "tests/res",
        "res-product",
        "res-keyguard",
        "res",
    ],
    srcs: [
        "tests/src/**/*.kt",
        "tests/src/**/*.java",
        "src/**/*.kt",
        "src/**/*.java",
        "src/**/I*.aidl",
        ":ReleaseJavaFiles",
        ":SystemUI-tests-utils",
    ],
    static_libs: [
        "WifiTrackerLib",
        "SystemUIAnimationLib",
        "SystemUIPluginLib",
        "SystemUISharedLib",
        "SystemUI-statsd",
        "SettingsLib",
        "androidx.viewpager2_viewpager2",
        "androidx.legacy_legacy-support-v4",
        "androidx.recyclerview_recyclerview",
        "androidx.preference_preference",
        "androidx.appcompat_appcompat",
        "androidx.concurrent_concurrent-futures",
        "androidx.mediarouter_mediarouter",
        "androidx.palette_palette",
        "androidx.legacy_legacy-preference-v14",
        "androidx.leanback_leanback",
        "androidx.slice_slice-core",
        "androidx.slice_slice-view",
        "androidx.slice_slice-builders",
        "androidx.arch.core_core-runtime",
        "androidx.lifecycle_lifecycle-common-java8",
        "androidx.lifecycle_lifecycle-extensions",
        "androidx.lifecycle_lifecycle-runtime-ktx",
        "androidx.dynamicanimation_dynamicanimation",
        "androidx-constraintlayout_constraintlayout",
        "androidx.exifinterface_exifinterface",
        "kotlinx-coroutines-android",
        "kotlinx-coroutines-core",
        "kotlinx_coroutines_test",
        "iconloader_base",
        "SystemUI-tags",
        "SystemUI-proto",
        "metrics-helper-lib",
        "hamcrest-library",
        "androidx.test.rules",
        "androidx.test.uiautomator",
        "mockito-target-extended-minus-junit4",
        "testables",
        "truth-prebuilt",
        "monet",
        "dagger2",
        "jsr330",
        "WindowManager-Shell",
    ],
    libs: [
        "android.test.runner",
        "android.test.base",
        "android.test.mock",
    ],
    kotlincflags: ["-Xjvm-default=enable"],
    aaptflags: [
        "--extra-packages",
        "com.android.systemui",
    ],
    plugins: ["dagger2-compiler"],
}

// Opt-in config for optimizing the SystemUI target using R8.
// Enabled via `export SYSTEMUI_OPTIMIZE_JAVA=true`, or explicitly in Make via
// the `SOONG_CONFIG_ANDROID_SYSTEMUI_OPTIMIZE_JAVA` variable.
// TODO(b/203472868): Enable optimizations by default after stabilizing and
// building out retrace infrastructure.
soong_config_module_type {
    name: "systemui_optimized_java_defaults",
    module_type: "java_defaults",
    config_namespace: "ANDROID",
    bool_variables: ["SYSTEMUI_OPTIMIZE_JAVA"],
    properties: ["optimize"],
}

systemui_optimized_java_defaults {
    name: "SystemUI_app_defaults",
    soong_config_variables: {
        SYSTEMUI_OPTIMIZE_JAVA: {
            optimize: {
                enabled: true,
                optimize: true,
                shrink: true,
                proguard_flags_files: ["proguard.flags"],
            },
            conditions_default: {
                optimize: {
                    proguard_flags_files: ["proguard.flags"],
                },
            },
        },
    },
}

android_app {
    name: "SystemUI",
    defaults: [
        "platform_app_defaults",
        "SystemUI_app_defaults",
    ],
    static_libs: [
        "SystemUI-core",
    ],
    resource_dirs: [],

    platform_apis: true,
    system_ext_specific: true,
    certificate: "platform",
    privileged: true,

    kotlincflags: ["-Xjvm-default=enable"],

    dxflags: ["--multi-dex"],
    required: [
        "privapp_whitelist_com.android.systemui",
    ],
}
