diff options
author | satayev <satayev@google.com> | 2021-06-17 09:36:52 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-06-17 09:36:52 +0000 |
commit | c5d2ef6412d17228972de4f4ea1627a4de1d0d2b (patch) | |
tree | b604848d4716b964d68cd9a1114d7febbd772328 | |
parent | 046bfe66d77ef85065c0687de2b2e700d5f0a3c9 (diff) | |
parent | 51ac72fb18162573b4385227df6a68f6a391e948 (diff) | |
download | modules-utils-android-12.1.0_r8.tar.gz |
Add DeviceSdkLevel - an SdkLevel equivalent for host-side tests. am: 51ac72fb18android-12.1.0_r9android-12.1.0_r8android-12.1.0_r7android-12.1.0_r22android-12.1.0_r21android-12.1.0_r20android-12.1.0_r19android-12.1.0_r11android-12.1.0_r10android12L-devandroid12-qpr3-s7-releaseandroid12-qpr3-s6-releaseandroid12-qpr3-s5-releaseandroid12-qpr3-s4-releaseandroid12-qpr3-s3-releaseandroid12-qpr3-s2-releaseandroid12-qpr3-s1-releaseandroid12-qpr3-release
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/libs/modules-utils/+/14967772
Change-Id: I3174c822f804d4bb5fc6b6d44d224adef4280074
-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; + } + +} |