//
// 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 {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "frameworks_base_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_team: "trendy_team_windowing_sdk",
    default_applicable_licenses: ["frameworks_base_license"],
}

////////////////////////////////////////////////////////////////////////////////
// Begin to cleanup after CL merges

filegroup {
    name: "FlickerTestsOtherCommon-src",
    srcs: ["src/**/ActivityEmbeddingTestBase.kt"],
}

filegroup {
    name: "FlickerTestsOtherOpen-src",
    srcs: ["src/**/open/*"],
}

filegroup {
    name: "FlickerTestsOtherRotation-src",
    srcs: ["src/**/rotation/*"],
}

java_library {
    name: "FlickerTestsOtherCommon",
    defaults: ["FlickerTestsDefault"],
    srcs: [":FlickerTestsOtherCommon-src"],
    static_libs: ["FlickerTestsBase"],
}

java_defaults {
    name: "FlickerTestsOtherDefaults",
    defaults: ["FlickerTestsDefault"],
    manifest: "AndroidManifest.xml",
    package_name: "com.android.server.wm.flicker",
    instrumentation_target_package: "com.android.server.wm.flicker",
    test_config_template: "AndroidTestTemplate.xml",
    static_libs: [
        "FlickerTestsBase",
        "FlickerTestsOtherCommon",
    ],
    data: ["trace_config/*"],
}

android_test {
    name: "FlickerTestsOtherOpen",
    defaults: ["FlickerTestsOtherDefaults"],
    srcs: [":FlickerTestsOtherOpen-src"],
}

android_test {
    name: "FlickerTestsOtherRotation",
    defaults: ["FlickerTestsOtherDefaults"],
    srcs: [":FlickerTestsOtherRotation-src"],
}

android_test {
    name: "FlickerTestsOther",
    defaults: ["FlickerTestsOtherDefaults"],
    srcs: ["src/**/*"],
    exclude_srcs: [
        ":FlickerTestsOtherOpen-src",
        ":FlickerTestsOtherRotation-src",
        ":FlickerTestsOtherCommon-src",
    ],
}

// End to cleanup after CL merges
////////////////////////////////////////////////////////////////////////////////

android_test {
    name: "FlickerTestsActivityEmbedding",
    defaults: ["FlickerTestsDefault"],
    manifest: "AndroidManifest.xml",
    package_name: "com.android.server.wm.flicker",
    instrumentation_target_package: "com.android.server.wm.flicker",
    test_config_template: "AndroidTestTemplate.xml",
    srcs: ["src/**/*"],
    static_libs: [
        "FlickerTestsBase",
        "FlickerTestsOtherCommon",
    ],
    data: ["trace_config/*"],
}

////////////////////////////////////////////////////////////////////////////////
// Begin breakdowns for FlickerTestsActivityEmbedding module

test_module_config {
    name: "FlickerTestsActivityEmbedding-CatchAll",
    base: "FlickerTestsActivityEmbedding",
    exclude_filters: [
        "com.android.server.wm.flicker.activityembedding.close.CloseSecondaryActivityInSplitTest",
        "com.android.server.wm.flicker.activityembedding.layoutchange.HorizontalSplitChangeRatioTest",
        "com.android.server.wm.flicker.activityembedding.open.MainActivityStartsSecondaryWithAlwaysExpandTest",
        "com.android.server.wm.flicker.activityembedding.open.OpenActivityEmbeddingPlaceholderSplitTest",
        "com.android.server.wm.flicker.activityembedding.open.OpenActivityEmbeddingSecondaryToSplitTest",
        "com.android.server.wm.flicker.activityembedding.open.OpenThirdActivityOverSplitTest",
        "com.android.server.wm.flicker.activityembedding.open.OpenTrampolineActivityTest",
        "com.android.server.wm.flicker.activityembedding.pip.SecondaryActivityEnterPipTest",
        "com.android.server.wm.flicker.activityembedding.rotation.RotateSplitNoChangeTest",
        "com.android.server.wm.flicker.activityembedding.rtl.RTLStartSecondaryWithPlaceholderTest",
        "com.android.server.wm.flicker.activityembedding.splitscreen.EnterSystemSplitTest",
    ],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "FlickerTestsActivityEmbedding-Close-CloseSecondaryActivityInSplitTest",
    base: "FlickerTestsActivityEmbedding",
    include_filters: ["com.android.server.wm.flicker.activityembedding.close.CloseSecondaryActivityInSplitTest"],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "FlickerTestsActivityEmbedding-LayoutChange-HorizontalSplitChangeRatioTest",
    base: "FlickerTestsActivityEmbedding",
    include_filters: ["com.android.server.wm.flicker.activityembedding.layoutchange.HorizontalSplitChangeRatioTest"],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "FlickerTestsActivityEmbedding-Open-MainActivityStartsSecondaryWithAlwaysExpandTest",
    base: "FlickerTestsActivityEmbedding",
    include_filters: ["com.android.server.wm.flicker.activityembedding.open.MainActivityStartsSecondaryWithAlwaysExpandTest"],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "FlickerTestsActivityEmbedding-Open-OpenActivityEmbeddingPlaceholderSplitTest",
    base: "FlickerTestsActivityEmbedding",
    include_filters: ["com.android.server.wm.flicker.activityembedding.open.OpenActivityEmbeddingPlaceholderSplitTest"],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "FlickerTestsActivityEmbedding-Open-OpenActivityEmbeddingSecondaryToSplitTest",
    base: "FlickerTestsActivityEmbedding",
    include_filters: ["com.android.server.wm.flicker.activityembedding.open.OpenActivityEmbeddingSecondaryToSplitTest"],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "FlickerTestsActivityEmbedding-Open-OpenThirdActivityOverSplitTest",
    base: "FlickerTestsActivityEmbedding",
    include_filters: ["com.android.server.wm.flicker.activityembedding.open.OpenThirdActivityOverSplitTest"],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "FlickerTestsActivityEmbedding-Open-OpenTrampolineActivityTest",
    base: "FlickerTestsActivityEmbedding",
    include_filters: ["com.android.server.wm.flicker.activityembedding.open.OpenTrampolineActivityTest"],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "FlickerTestsActivityEmbedding-Pip-SecondaryActivityEnterPipTest",
    base: "FlickerTestsActivityEmbedding",
    include_filters: ["com.android.server.wm.flicker.activityembedding.pip.SecondaryActivityEnterPipTest"],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "FlickerTestsActivityEmbedding-Rotation-RotateSplitNoChangeTest",
    base: "FlickerTestsActivityEmbedding",
    include_filters: ["com.android.server.wm.flicker.activityembedding.rotation.RotateSplitNoChangeTest"],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "FlickerTestsActivityEmbedding-Rtl-RTLStartSecondaryWithPlaceholderTest",
    base: "FlickerTestsActivityEmbedding",
    include_filters: ["com.android.server.wm.flicker.activityembedding.rtl.RTLStartSecondaryWithPlaceholderTest"],
    test_suites: ["device-tests"],
}

test_module_config {
    name: "FlickerTestsActivityEmbedding-SplitScreen-EnterSystemSplitTest",
    base: "FlickerTestsActivityEmbedding",
    include_filters: ["com.android.server.wm.flicker.activityembedding.splitscreen.EnterSystemSplitTest"],
    test_suites: ["device-tests"],
}

// End breakdowns for FlickerTestsActivityEmbedding module
////////////////////////////////////////////////////////////////////////////////
