// 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: ["Android-Apache-2.0"],
}

android_app {
    name: "CarNotification",

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

    resource_dirs: ["res", "res-overlayable",],

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

    optimize: {
        enabled: false,
    },

    required: ["allowed_privapp_com.android.car.notification"],

    dex_preopt: {
        enabled: false,
    },

    static_libs: [
        "androidx.cardview_cardview",
        "androidx.recyclerview_recyclerview",
        "androidx.palette_palette",
        "car-assist-client-lib",
        "car-ui-lib",
        "android.car.userlib",
        "androidx-constraintlayout_constraintlayout",
        "car-uxr-client-lib"
    ],

    libs: ["android.car"],

    product_variables: {
        pdk: {
            enabled: false,
        },
    },
}

// Duplicate of CarNotification which includes testing only resources for Robolectric
android_app {
    name: "CarNotificationForRoboTesting",

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

    // Testing only resources must be applied last so they take precedence.
    resource_dirs: [
        "res",
        "tests/robotests/res",
    ],

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

    optimize: {
        enabled: false,
    },

    required: ["allowed_privapp_com.android.car.notification"],

    dex_preopt: {
        enabled: false,
    },

    static_libs: [
        "androidx.cardview_cardview",
        "androidx.recyclerview_recyclerview",
        "androidx.palette_palette",
        "car-assist-client-lib",
        "car-ui-lib",
        "android.car.userlib",
        "androidx-constraintlayout_constraintlayout",
        "car-uxr-client-lib",
    ],

    libs: ["android.car"],

    product_variables: {
        pdk: {
            enabled: false,
        },
    },
}

// As Lib
android_library {
    name: "CarNotificationLib",
    srcs: ["src/**/*.java"],

    resource_dirs: ["res"],

    manifest: "AndroidManifest-withoutActivity.xml",

    platform_apis: true,

    optimize: {
        enabled: false,
    },

    dex_preopt: {
        enabled: false,
    },

    static_libs: [
        "androidx.cardview_cardview",
        "androidx.recyclerview_recyclerview",
        "androidx.palette_palette",
        "car-assist-client-lib",
        "car-ui-lib",
        "android.car.userlib",
        "androidx-constraintlayout_constraintlayout",
        "car-uxr-client-lib",
    ],

    libs: ["android.car"],

    product_variables: {
        pdk: {
            enabled: false,
        },
    },
}

// Testing lib
android_library {
    name: "CarNotificationLibForUnitTesting",

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

    // Testing only resources must be applied last so they take precedence.
    resource_dirs: [
        "res",
        "tests/unit/res",
    ],

    manifest: "tests/unit/AndroidManifest.xml",

    platform_apis: true,

    optimize: {
        enabled: false,
    },

    dex_preopt: {
        enabled: false,
    },

    static_libs: [
        "androidx.cardview_cardview",
        "androidx.recyclerview_recyclerview",
        "androidx.palette_palette",
        "car-assist-client-lib",
        "car-ui-lib",
        "android.car.userlib",
        "androidx-constraintlayout_constraintlayout",
        "car-uxr-client-lib",
    ],

    libs: ["android.car"],

    product_variables: {
        pdk: {
            enabled: false,
        },
    },

    dxflags: ["--multi-dex"],

    aaptflags: ["--extra-packages com.android.car.notification"],
}
