# Copyright (C) 2010 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.

cts_security_apps_list := \
    CtsAppAccessData \
    CtsAppWithData \
    CtsDocumentProvider \
    CtsDocumentClient \
    CtsEncryptionApp \
    CtsExternalStorageApp \
    CtsInstrumentationAppDiffCert \
    CtsNetSecPolicyUsesCleartextTrafficFalse \
    CtsNetSecPolicyUsesCleartextTrafficTrue \
    CtsNetSecPolicyUsesCleartextTrafficUnspecified \
    CtsNoRestartBase \
    CtsNoRestartFeature \
    CtsUsePermissionApp \
    CtsUsePermissionAppCompat \
    CtsPermissionDeclareApp \
    CtsPermissionDeclareAppCompat \
    CtsReadExternalStorageApp \
    CtsSharedUidInstall \
    CtsSharedUidInstallDiffCert \
    CtsSimpleAppInstall \
    CtsSimpleAppInstallDiffCert \
    CtsSplitApp \
    CtsSplitApp_x86 \
    CtsSplitApp_x86_64 \
    CtsSplitApp_armeabi-v7a \
    CtsSplitApp_armeabi \
    CtsSplitApp_arm64-v8a \
    CtsSplitApp_mips64 \
    CtsSplitApp_mips \
    CtsSplitAppDiffRevision \
    CtsSplitAppDiffVersion \
    CtsSplitAppDiffCert \
    CtsSplitAppFeature \
    CtsTargetInstrumentationApp \
    CtsUsePermissionDiffCert \
    CtsUsesLibraryApp \
    CtsWriteExternalStorageApp \
    CtsMultiUserStorageApp

cts_security_keysets_list := \
    CtsKeySetTestApp \
    CtsKeySetPermDefSigningA \
    CtsKeySetPermDefSigningB\
    CtsKeySetPermUseSigningA \
    CtsKeySetPermUseSigningB \
    CtsKeySetSigningAUpgradeA \
    CtsKeySetSigningBUpgradeA \
    CtsKeySetSigningAUpgradeAAndB \
    CtsKeySetSigningAUpgradeAOrB \
    CtsKeySetSigningAUpgradeB \
    CtsKeySetSigningBUpgradeB \
    CtsKeySetSigningAAndBUpgradeA \
    CtsKeySetSigningAAndCUpgradeB \
    CtsKeySetSigningAUpgradeNone \
    CtsKeySetSharedUserSigningAUpgradeB \
    CtsKeySetSharedUserSigningBUpgradeB \
    CtsKeySetSigningABadUpgradeB \
    CtsKeySetSigningCBadAUpgradeAB \
    CtsKeySetSigningANoDefUpgradeB \
    CtsKeySetSigningAUpgradeEcA \
    CtsKeySetSigningEcAUpgradeA

cts_account_support_packages := \
    CtsUnaffiliatedAccountAuthenticators

cts_support_packages := \
    CtsAbiOverrideTestApp \
    CtsAccountManagementDevicePolicyApp \
    CtsAdminApp \
    CtsAlarmClockService \
    CtsAppRestrictionsManagingApp \
    CtsAppRestrictionsTargetApp \
    CtsAppTestStubs \
    CtsAppUsageTestApp \
    CtsAssistService \
    CtsAssistApp \
    CtsAtraceTestApp \
    CtsBackupApp \
    CtsCertInstallerApp \
    CtsContactDirectoryProvider \
    CtsCustomizationApp \
    CtsCppToolsApp \
    CtsDeviceAdminApp23 \
    CtsDeviceAdminApp24 \
    CtsDeviceAndProfileOwnerApp23 \
    CtsDeviceAndProfileOwnerApp \
    CtsDeviceInfo \
    CtsDeviceOsTestApp \
    CtsDeviceOwnerApp \
    CtsDeviceServicesTestApp \
    CtsDeviceTaskSwitchingAppA \
    CtsDeviceTaskSwitchingAppB \
    CtsDeviceTaskSwitchingControl \
    CtsExternalServiceService \
    CtsHostsideNetworkTestsApp \
    CtsHostsideNetworkTestsApp2 \
    CtsIntentReceiverApp \
    CtsIntentSenderApp \
    CtsLauncherAppsTests \
    CtsLauncherAppsTestsSupport \
    CtsLeanbackJankApp \
    CtsManagedProfileApp \
    CtsMonkeyApp \
    CtsMonkeyApp2 \
    CtsPackageInstallerApp \
    CtsPermissionApp \
    CtsProfileOwnerApp \
    CtsSimpleApp \
    CtsSimplePreMApp \
    CtsSomeAccessibilityServices \
    CtsSystemUiDeviceApp \
    CtsThemeDeviceApp \
    CtsUsbSerialTestApp \
    CtsVoiceInteractionService \
    CtsVoiceInteractionApp \
    CtsVoiceSettingsService \
    CtsVpnFirewallApp \
    CtsWidgetProviderApp \
    CtsWifiConfigCreator \
    TestDeviceSetup \
    $(cts_account_support_packages) \
    $(cts_security_apps_list) \
    $(cts_security_keysets_list)

cts_external_packages := \
    com.replica.replicaisland \
    com.drawelements.deqp

# Any APKs that need to be copied to the CTS distribution's testcases
# directory but do not require an associated test package XML.
CTS_TEST_CASE_LIST := \
    $(cts_support_packages) \
    $(cts_external_packages)

# Test packages that require an associated test package XML.
cts_test_packages := \
    CtsIcuTestCases \
    CtsAccelerationTestCases \
    CtsAccountManagerTestCases \
    CtsAccessibilityServiceTestCases \
    CtsAccessibilityTestCases \
    CtsAdminTestCases \
    CtsAlarmClockTestCases \
    CtsAnimationTestCases \
    CtsAppTestCases \
    CtsAppWidgetTestCases \
    CtsAssistTestCases \
    CtsBackupTestCases \
    CtsBluetoothTestCases \
    CtsBrowserTestCases \
    CtsCalendarcommon2TestCases \
    CtsCallLogTestCases \
    CtsCameraTestCases \
    CtsCarTestCases \
    CtsContentTestCases \
    CtsDatabaseTestCases \
    CtsDisplayTestCases \
    CtsDpiTestCases \
    CtsDpiTestCases2 \
    CtsDramTestCases \
    CtsDreamsTestCases \
    CtsDrmTestCases \
    CtsEffectTestCases \
    CtsExternalServiceTestCases \
    CtsFileSystemTestCases \
    CtsGestureTestCases \
    CtsGraphicsTestCases \
    CtsGraphics2TestCases \
    CtsHardwareTestCases \
    CtsJankDeviceTestCases \
    CtsLeanbackJankTestCases \
    CtsJobSchedulerTestCases \
    CtsJniTestCases \
    CtsKeystoreTestCases \
    CtsLibcoreLegacy22TestCases \
    CtsLocationTestCases \
    CtsLocation2TestCases \
    CtsMediaStressTestCases \
    CtsMediaTestCases \
    CtsMidiTestCases \
    CtsMultiUserTestCases \
    CtsNdefTestCases \
    CtsNetSecPolicyUsesCleartextTrafficFalseTestCases \
    CtsNetSecPolicyUsesCleartextTrafficTrueTestCases \
    CtsNetSecPolicyUsesCleartextTrafficUnspecifiedTestCases \
    CtsNetTestCases \
    CtsNetTestCasesLegacyApi22 \
    CtsNetTestCasesLegacyPermission22 \
    CtsNetSecConfigAttributeTestCases \
    CtsNetSecConfigCleartextTrafficTestCases \
    CtsNetSecConfigBasicDebugDisabledTestCases \
    CtsNetSecConfigBasicDebugEnabledTestCases \
    CtsNetSecConfigBasicDomainConfigTestCases \
    CtsNetSecConfigInvalidPinTestCases \
    CtsNetSecConfigNestedDomainConfigTestCases \
    CtsNetSecConfigResourcesSrcTestCases \
    CtsOpenGLTestCases \
    CtsOpenGlPerfTestCases \
    CtsOpenGlPerf2TestCases \
    CtsOsTestCases \
    CtsPermissionTestCases \
    CtsPermission2TestCases \
    CtsPreferenceTestCases \
    CtsPreference2TestCases \
    CtsPrintTestCases \
    CtsProviderTestCases \
    CtsRenderscriptTestCases \
    CtsRenderscriptLegacyTestCases \
    CtsRsBlasTestCases \
    CtsRsCppTestCases \
    CtsSaxTestCases \
    CtsSecurityTestCases \
    CtsSignatureTestCases \
    CtsSimpleCpuTestCases \
    CtsSpeechTestCases \
    CtsSystemUiTestCases \
    CtsTelecomTestCases \
    CtsTelecomTestCases2 \
    CtsTelephonyTestCases \
    CtsTextTestCases \
    CtsTextureViewTestCases \
    CtsThemeDeviceTestCases \
    CtsTransitionTestCases \
    CtsTvProviderTestCases \
    CtsTvTestCases \
    CtsUiAutomationTestCases \
    CtsUiRenderingTestCases \
    CtsUiDeviceTestCases \
    CtsUsageStatsTestCases \
    CtsUtilTestCases \
    CtsVideoTestCases \
    CtsViewTestCases \
    CtsVoiceInteractionTestCases \
    CtsVoiceSettingsTestCases \
    CtsWebkitTestCases \
    CtsWidgetTestCases

# All APKs that need to be scanned by the coverage utilities.
CTS_COVERAGE_TEST_CASE_LIST := \
    $(cts_support_packages) \
    $(cts_test_packages)

# Host side only tests
cts_host_libraries := \
    CtsAadbHostTestCases \
    CtsAbiOverrideHostTestCases \
    CtsAppSecurityHostTestCases \
    CtsAppUsageHostTestCases \
    CtsAtraceHostTestCases \
    CtsCppToolsTestCases \
    CtsDevicePolicyManagerTestCases \
    CtsDumpsysHostTestCases \
    CtsHostsideNetworkTests \
    CtsJdwpSecurityHostTestCases \
    CtsMonkeyTestCases \
    CtsOsHostTestCases \
    CtsSecurityHostTestCases \
    CtsServicesHostTestCases \
    CtsThemeHostTestCases \
    CtsUiHostTestCases \
    CtsUsbTests \
    CtsSystemUiHostTestCases

# List of native tests. For 32 bit targets, assumes that there will be
# one test executable, and it will end in 32. For 64 bit targets, assumes
# that there will be two executables, one that ends in 32 for the 32
# bit executable and one that ends in 64 for the 64 bit executable.
cts_native_tests := \
    CtsNativeMediaSlTestCases \
    CtsNativeMediaXaTestCases \

ifeq ($(HOST_OS)-$(HOST_ARCH),$(filter $(HOST_OS)-$(HOST_ARCH),linux-x86 linux-x86_64))
cts_native_tests += CtsBionicTestCases
cts_native_tests += CtsSimpleperfTestCases
endif

cts_device_jars := \
    CtsJdwpApp

cts_target_junit_tests := \
    CtsJdwp \
    CtsLibcoreOj

cts_deqp_test_apis := \
    egl \
    gles2 \
    gles3 \
    gles31

# All the files that will end up under the repository/testcases
# directory of the final CTS distribution.
CTS_TEST_CASES := $(call cts-get-lib-paths,$(cts_host_libraries)) \
    $(call cts-get-package-paths,$(cts_test_packages)) \
    $(call cts-get-ui-lib-paths,$(cts_device_jars)) \
    $(call cts-get-ui-lib-paths,$(cts_target_junit_tests)) \
    $(call cts-get-executable-paths,$(cts_device_executables)) \
    $(call cts-get-native-paths,$(cts_native_tests),32)

ifeq ($(TARGET_IS_64_BIT),true)
CTS_TEST_CASES += $(call cts-get-native-paths,$(cts_native_tests),64)
endif

# All the XMLs that will end up under the repository/testcases
# and that need to be created before making the final CTS distribution.
CTS_TEST_XMLS := $(call cts-get-test-xmls,$(cts_host_libraries)) \
    $(call cts-get-test-xmls,$(cts_test_packages)) \
    $(call cts-get-test-xmls,$(cts_native_tests)) \
    $(call cts-get-test-xmls,$(cts_target_junit_tests)) \
    $(call cts-get-deqp-test-xmls,$(cts_deqp_test_apis))

# The following files will be placed in the tools directory of the CTS distribution
CTS_TOOLS_LIST :=
