# 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.

#
# Builds a package which can be instrumented to retrieve information about the device under test.
#

DEVICE_INFO_PACKAGE := com.android.compatibility.common.deviceinfo
DEVICE_INFO_INSTRUMENT := androidx.test.runner.AndroidJUnitRunner
DEVICE_INFO_USES_LIBRARY := android.test.runner
DEVICE_INFO_USES_OPTIONAL_LIBRARIES := \
  androidx.window.sidecar
DEVICE_INFO_PERMISSIONS += \
  android.permission.READ_PHONE_STATE \
  android.permission.WRITE_EXTERNAL_STORAGE
DEVICE_INFO_ACTIVITIES += \
  $(DEVICE_INFO_PACKAGE).AppStandbyDeviceInfo \
  $(DEVICE_INFO_PACKAGE).ClientIdDeviceInfo \
  $(DEVICE_INFO_PACKAGE).ConfigurationDeviceInfo \
  $(DEVICE_INFO_PACKAGE).CpuDeviceInfo \
  $(DEVICE_INFO_PACKAGE).FeatureDeviceInfo \
  $(DEVICE_INFO_PACKAGE).GenericDeviceInfo \
  $(DEVICE_INFO_PACKAGE).GlesStubActivity \
  $(DEVICE_INFO_PACKAGE).GraphicsDeviceInfo \
  $(DEVICE_INFO_PACKAGE).LocaleDeviceInfo \
  $(DEVICE_INFO_PACKAGE).MediaDeviceInfo \
  $(DEVICE_INFO_PACKAGE).MemoryDeviceInfo \
  $(DEVICE_INFO_PACKAGE).PackageDeviceInfo \
  $(DEVICE_INFO_PACKAGE).PropertyDeviceInfo \
  $(DEVICE_INFO_PACKAGE).ScreenDeviceInfo \
  $(DEVICE_INFO_PACKAGE).StorageDeviceInfo \
  $(DEVICE_INFO_PACKAGE).UserDeviceInfo \
  $(DEVICE_INFO_PACKAGE).VintfDeviceInfo \
  com.android.compatibility.common.util.DummyActivity

ifeq ($(DEVICE_INFO_MIN_SDK),)
DEVICE_INFO_MIN_SDK := 8
endif

ifeq ($(DEVICE_INFO_TARGET_SDK),)
DEVICE_INFO_TARGET_SDK := 17
endif

# Add the base device info
LOCAL_STATIC_JAVA_LIBRARIES += compatibility-device-info compatibility-device-util-axt

# Generator of APK manifests.
MANIFEST_GENERATOR_JAR := $(HOST_OUT_JAVA_LIBRARIES)/compatibility-manifest-generator.jar
MANIFEST_GENERATOR := $(JAVA) -jar $(MANIFEST_GENERATOR_JAR)

# Generate the manifest
manifest_xml := $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME))/AndroidManifest.xml
$(manifest_xml): PRIVATE_INFO_PERMISSIONS := $(foreach permission, $(DEVICE_INFO_PERMISSIONS),-r $(permission))
$(manifest_xml): PRIVATE_INFO_ACTIVITIES := $(foreach activity,$(DEVICE_INFO_ACTIVITIES),-a $(activity))
$(manifest_xml): PRIVATE_USES_LIBRARY := $(DEVICE_INFO_USES_LIBRARY)
$(manifest_xml): PRIVATE_USES_OPTIONAL_LIBRARIES := $(foreach library,$(DEVICE_INFO_USES_OPTIONAL_LIBRARIES),-lo $(library))
$(manifest_xml): PRIVATE_PACKAGE := $(DEVICE_INFO_PACKAGE)
$(manifest_xml): PRIVATE_INSTRUMENT := $(DEVICE_INFO_INSTRUMENT)
$(manifest_xml): PRIVATE_MIN_SDK := $(DEVICE_INFO_MIN_SDK)
$(manifest_xml): PRIVATE_TARGET_SDK := $(DEVICE_INFO_TARGET_SDK)

# Regenerate manifest.xml if the generator jar, */cts-device-info/Android.mk, or this file is changed.
$(manifest_xml): $(MANIFEST_GENERATOR_JAR) $(LOCAL_PATH)/Android.mk cts/build/device_info_package.mk
	$(hide) echo Generating manifest for $(PRIVATE_NAME)
	$(hide) mkdir -p $(dir $@)
	$(hide) $(MANIFEST_GENERATOR) \
						$(PRIVATE_INFO_PERMISSIONS) \
						$(PRIVATE_INFO_ACTIVITIES) \
						-l $(PRIVATE_USES_LIBRARY) \
						$(PRIVATE_USES_OPTIONAL_LIBRARIES) \
						-p $(PRIVATE_PACKAGE) \
						-i $(PRIVATE_INSTRUMENT) \
						-s $(PRIVATE_MIN_SDK) \
						-t $(PRIVATE_TARGET_SDK) \
						-o $@

# Reset variables
DEVICE_INFO_MIN_SDK :=
DEVICE_INFO_TARGET_SDK :=
DEVICE_INFO_PACKAGE :=
DEVICE_INFO_INSTRUMENT :=
DEVICE_INFO_PERMISSIONS :=
DEVICE_INFO_ACTIVITIES :=

LOCAL_FULL_MANIFEST_FILE := $(manifest_xml)
# Disable by default
LOCAL_DEX_PREOPT := false
LOCAL_PROGUARD_ENABLED := disabled

# Don't include this package in any target
LOCAL_MODULE_TAGS := optional
# And when built explicitly put it in the data partition
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)


#TODO(b/72620511) remove this condition when AtsDeviceInfo can be built with SDK again
ifneq ($(LOCAL_PRIVATE_PLATFORM_APIS),true)
LOCAL_SDK_VERSION := current
endif

include $(BUILD_CTS_SUPPORT_PACKAGE)
