diff options
author | satayev <satayev@google.com> | 2021-06-15 13:30:18 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-06-15 13:30:18 +0000 |
commit | 94e540ff5875ca21206502cc338a9de3e0c48561 (patch) | |
tree | 190c703697dbec86bf27220a3d495a5407760954 | |
parent | 2746316264d3c807045a371781af327592b969db (diff) | |
parent | 09925009615b65e1329e427ca152eec548ba4bd6 (diff) | |
download | modules-utils-94e540ff5875ca21206502cc338a9de3e0c48561.tar.gz |
Add DeviceSdkLevel - an SdkLevel equivalent for host-side tests. am: 0992500961
Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/modules-utils/+/1733675
Change-Id: I31fbd3f5486c7f487b6fd1a54cf947b4e3bab3ee
-rw-r--r-- | java/com/android/modules/utils/build/testing/Android.bp | 28 | ||||
-rw-r--r-- | java/com/android/modules/utils/build/testing/DeviceSdkLevel.java | 70 |
2 files changed, 98 insertions, 0 deletions
diff --git a/java/com/android/modules/utils/build/testing/Android.bp b/java/com/android/modules/utils/build/testing/Android.bp new file mode 100644 index 0000000..ab80da4 --- /dev/null +++ b/java/com/android/modules/utils/build/testing/Android.bp @@ -0,0 +1,28 @@ +// +// Copyright (C) 2020 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_library_host { + name: "modules-utils-build-testing", + srcs: ["DeviceSdkLevel.java"], + visibility: ["//visibility:public"], + libs: [ + "androidx.annotation_annotation", + "tradefed", + ], +} diff --git a/java/com/android/modules/utils/build/testing/DeviceSdkLevel.java b/java/com/android/modules/utils/build/testing/DeviceSdkLevel.java new file mode 100644 index 0000000..3a09c9c --- /dev/null +++ b/java/com/android/modules/utils/build/testing/DeviceSdkLevel.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2021 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 com.android.modules.utils.build.testing; + +import androidx.annotation.NonNull; + +import com.android.tradefed.device.DeviceNotAvailableException; +import com.android.tradefed.device.ITestDevice; + +/** + * Utility class to check device SDK level from a host side test. + */ +public final class DeviceSdkLevel { + + private final ITestDevice device; + + public DeviceSdkLevel(ITestDevice device) { + this.device = device; + } + + /** Checks if the device is running on release version of Android R or newer. */ + public boolean isDeviceAtLeastR() throws DeviceNotAvailableException { + return device.getApiLevel() >= 30; + } + + /** + * Checks if the device is running on a pre-release version of Android S or a release version of + * Android S or newer. + */ + public boolean isDeviceAtLeastS() throws DeviceNotAvailableException { + return device.getApiLevel() >= 31 || isDeviceAtLeastPreReleaseCodename("S"); + } + + /** + * Checks if the device is running on a pre-release version of Android T or a release version of + * Android T or newer. + */ + public boolean isDeviceAtLeastT() throws DeviceNotAvailableException { + return isDeviceAtLeastPreReleaseCodename("T"); + } + + private boolean isDeviceAtLeastPreReleaseCodename(@NonNull String codename) + throws DeviceNotAvailableException { + String deviceCodename = device.getProperty("ro.build.version.codename"); + + // Special case "REL", which means the build is not a pre-release build. + if ("REL".equals(deviceCodename)) { + return false; + } + + // Otherwise lexically compare them. Return true if the build codename is equal to or + // greater than the requested codename. + return deviceCodename.compareTo(codename) >= 0; + } + +} |