// Copyright (C) 2022 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"],
}

java_test_host {
    name: "CtsAppCloningHostTest",
    srcs: [
        "hostside/src/com/android/cts/appcloning/BaseHostTestCase.java",
        "hostside/src/com/android/cts/appcloning/AppCloningBaseHostTest.java",
        "hostside/src/com/android/cts/appcloning/media/*.java",
        "hostside/src/com/android/cts/appcloning/media/**/*.java",
        "hostside/src/com/android/cts/appcloning/media/AppCloningHostTest.java",
    ],
    libs: [
        "cts-tradefed",
        "tradefed",
        "testng",
        "compatibility-host-util",
    ],
    static_libs: ["modules-utils-build-testing"],
    // tag this module as a cts test artifact
    test_suites: [
        "general-tests",
        "mts-mediaprovider",
        "cts",
    ],
    test_config: "AndroidTestAppCloning.xml",
    data: [
        ":CtsAppCloningTestApp",
        ":CtsAppCloningIntentRedirectionCloneProfileApp",
        ":CtsAppCloningIntentRedirectionOwnerProfileApp",
        ":CtsIntentRedirectionTestApp",
        ":CtsAppCloningStorageStatsApp",
    ],
}

java_test_host {
    name: "CtsAppCloningContactsSharingTest",
    srcs: [
        "hostside/src/com/android/cts/appcloning/BaseHostTestCase.java",
        "hostside/src/com/android/cts/appcloning/AppCloningBaseHostTest.java",
        "hostside/src/com/android/cts/appcloning/contacts/*.java",
    ],
    libs: [
        "cts-tradefed",
        "tradefed",
        "testng",
        "compatibility-host-util",

    ],
    static_libs: ["modules-utils-build-testing"],
    // tag this module as a cts test artifact
    test_suites: [
        "general-tests",
        "cts",
    ],
    test_config: "ContactsSharingAppCloningTest.xml",
    data: [
        ":CtsAppCloningNotLaunchableCloneProfileApp",
        ":CtsAppCloningLaunchableCloneProfileApp",
        ":CtsManagedProfileOwnerApp",
    ],
}

java_test_host {
    name: "CtsAppCloningIntentRedirectionTest",
    srcs: [
        "hostside/src/com/android/cts/appcloning/BaseHostTestCase.java",
        "hostside/src/com/android/cts/appcloning/AppCloningBaseHostTest.java",
        "hostside/src/com/android/cts/appcloning/intent/*.java",
    ],
    libs: [
        "cts-tradefed",
        "tradefed",
        "testng",
        "compatibility-host-util",
    ],
    static_libs: ["modules-utils-build-testing"],
    // tag this module as a cts test artifact
    test_suites: [
        "general-tests",
        "cts",
    ],
    test_config: "IntentRedirectionAppCloningTest.xml",
    data: [
        ":CtsAppCloningIntentRedirectionCloneProfileApp",
        ":CtsAppCloningIntentRedirectionOwnerProfileApp",
        ":CtsIntentRedirectionTestApp",
    ],
}
