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

LOCAL_PATH := $(call my-dir)

#
# Build rule for Tapl library.
#
include $(CLEAR_VARS)
LOCAL_STATIC_JAVA_LIBRARIES := \
	androidx.annotation_annotation \
	androidx.test.runner \
	androidx.test.rules \
	androidx.test.uiautomator_uiautomator

ifneq (,$(wildcard frameworks/base))
else
    LOCAL_STATIC_JAVA_LIBRARIES += SystemUISharedLib

    LOCAL_SRC_FILES := $(call all-java-files-under, tapl) \
        ../src/com/android/launcher3/ResourceUtils.java \
        ../src/com/android/launcher3/util/SecureSettingsObserver.java \
        ../src/com/android/launcher3/testing/TestProtocol.java
endif

LOCAL_MODULE := ub-launcher-aosp-tapl
LOCAL_SDK_VERSION := system_current

include $(BUILD_STATIC_JAVA_LIBRARY)

#
# Build rule for Launcher3Tests
#
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := tests
LOCAL_STATIC_JAVA_LIBRARIES := \
    androidx.test.runner \
    androidx.test.rules \
    androidx.test.uiautomator_uiautomator \
    mockito-target-minus-junit4 \
    launcher_log_protos_lite

ifneq (,$(wildcard frameworks/base))
    LOCAL_PRIVATE_PLATFORM_APIS := true
    LOCAL_STATIC_JAVA_LIBRARIES += launcher-aosp-tapl
else
    LOCAL_SDK_VERSION := system_28
    LOCAL_MIN_SDK_VERSION := 21
    LOCAL_STATIC_JAVA_LIBRARIES += ub-launcher-aosp-tapl
endif

LOCAL_SRC_FILES := \
	$(call all-java-files-under, src) \
	$(call all-java-files-under, src_common)


LOCAL_FULL_LIBS_MANIFEST_FILES := $(LOCAL_PATH)/AndroidManifest-common.xml

LOCAL_PACKAGE_NAME := Launcher3Tests

LOCAL_INSTRUMENTATION_FOR := Launcher3

include $(BUILD_PACKAGE)

include $(call all-makefiles-under,$(LOCAL_PATH))
