aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-07-26 10:35:04 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-07-26 10:35:04 +0000
commitb27d0cfbb1b569fe976b2c1c66ef5aaf96834f33 (patch)
tree09ed65be8acb6a554e4e2f864869283c35a876c6
parent76d3c8a4130e165f234e1d91f7eacb9a1a6af1e3 (diff)
parente2a2670ead28e421a9f05abaeb7de6f529cda58e (diff)
downloadmodules-utils-b27d0cfbb1b569fe976b2c1c66ef5aaf96834f33.tar.gz
Snap for 8870366 from e2a2670ead28e421a9f05abaeb7de6f529cda58e to mainline-go-art-releaseaml_go_art_330913000android13-mainline-go-art-release
Change-Id: I128f9537d6f695f093325d0a396bdf641676ebc4
-rw-r--r--.gitignore4
-rw-r--r--build/include/android-modules-utils/sdk_level.h15
-rw-r--r--java/com/android/modules/utils/build/SdkLevel.java9
-rw-r--r--java/com/android/modules/utils/testing/TestableDeviceConfig.java40
-rw-r--r--javatests/com/android/modules/utils/testing/Android.bp2
-rw-r--r--javatests/com/android/modules/utils/testing/TestableDeviceConfigTest.java4
6 files changed, 54 insertions, 20 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..89aa8f8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+# IntelliJ project
+**/.idea
+**/*.iml
+**/*.ipr
diff --git a/build/include/android-modules-utils/sdk_level.h b/build/include/android-modules-utils/sdk_level.h
index d192e53..a517df4 100644
--- a/build/include/android-modules-utils/sdk_level.h
+++ b/build/include/android-modules-utils/sdk_level.h
@@ -33,6 +33,15 @@ inline void GetCodename(char (&codename)[PROP_VALUE_MAX]) {
__system_property_get("ro.build.version.codename", codename);
}
+// Checks if the codename is a matching or higher version than the device's
+// codename.
+static bool IsAtLeastPreReleaseCodename(const char *codename) {
+ char deviceCodename[PROP_VALUE_MAX];
+ GetCodename(deviceCodename);
+ return strcmp(deviceCodename, "REL") != 0 &&
+ strcmp(deviceCodename, codename) >= 0;
+}
+
} // namespace detail
// Checks if the device is running on release version of Android R or newer.
@@ -44,6 +53,12 @@ inline bool IsAtLeastS() { return android_get_device_api_level() >= 31; }
// Checks if the device is running on release version of Android T or newer.
inline bool IsAtLeastT() { return android_get_device_api_level() >= 33; }
+// Checks if the device is running on release version of Android U or newer.
+inline bool IsAtLeastU() {
+ return android_get_device_api_level() >= 33 &&
+ detail::IsAtLeastPreReleaseCodename("U");
+}
+
} // namespace sdklevel
} // namespace modules
} // namespace android
diff --git a/java/com/android/modules/utils/build/SdkLevel.java b/java/com/android/modules/utils/build/SdkLevel.java
index 8464c4b..45c8c4a 100644
--- a/java/com/android/modules/utils/build/SdkLevel.java
+++ b/java/com/android/modules/utils/build/SdkLevel.java
@@ -57,6 +57,15 @@ public final class SdkLevel {
return SDK_INT >= 33;
}
+ /**
+ * Checks if the device is running on a pre-release or release version of Android
+ * UpsideDownCake or newer
+ */
+ @ChecksSdkIntAtLeast(codename = "UpsideDownCake")
+ public static boolean isAtLeastU() {
+ return isAtLeastPreReleaseCodename("UpsideDownCake");
+ }
+
private static boolean isAtLeastPreReleaseCodename(@NonNull String codename) {
// Special case "REL", which means the build is not a pre-release build.
if ("REL".equals(CODENAME)) {
diff --git a/java/com/android/modules/utils/testing/TestableDeviceConfig.java b/java/com/android/modules/utils/testing/TestableDeviceConfig.java
index 2012ad4..7177c74 100644
--- a/java/com/android/modules/utils/testing/TestableDeviceConfig.java
+++ b/java/com/android/modules/utils/testing/TestableDeviceConfig.java
@@ -130,27 +130,29 @@ public final class TestableDeviceConfig implements StaticMockFixture {
String name = invocationOnMock.getArgument(1);
return mKeyValueMap.get(getKey(namespace, name));
}).when(() -> DeviceConfig.getProperty(anyString(), anyString()));
-
- doAnswer((Answer<Properties>) invocationOnMock -> {
- String namespace = invocationOnMock.getArgument(0);
- final int varargStartIdx = 1;
- Map<String, String> keyValues = new ArrayMap<>();
- if (invocationOnMock.getArguments().length == varargStartIdx) {
- mKeyValueMap.entrySet().forEach(entry -> {
- Pair<String, String> nameSpaceAndName = getNameSpaceAndName(entry.getKey());
- if (!nameSpaceAndName.first.equals(namespace)) {
- return;
+ if (SdkLevel.isAtLeastR()) {
+ doAnswer((Answer<Properties>) invocationOnMock -> {
+ String namespace = invocationOnMock.getArgument(0);
+ final int varargStartIdx = 1;
+ Map<String, String> keyValues = new ArrayMap<>();
+ if (invocationOnMock.getArguments().length == varargStartIdx) {
+ mKeyValueMap.entrySet().forEach(entry -> {
+ Pair<String, String> nameSpaceAndName = getNameSpaceAndName(entry.getKey());
+ if (!nameSpaceAndName.first.equals(namespace)) {
+ return;
+ }
+ keyValues.put(nameSpaceAndName.second.toLowerCase(), entry.getValue());
+ });
+ } else {
+ for (int i = varargStartIdx; i < invocationOnMock.getArguments().length; ++i) {
+ String name = invocationOnMock.getArgument(i);
+ keyValues.put(name.toLowerCase(),
+ mKeyValueMap.get(getKey(namespace, name)));
}
- keyValues.put(nameSpaceAndName.second.toLowerCase(), entry.getValue());
- });
- } else {
- for (int i = varargStartIdx; i < invocationOnMock.getArguments().length; ++i) {
- String name = invocationOnMock.getArgument(i);
- keyValues.put(name.toLowerCase(), mKeyValueMap.get(getKey(namespace, name)));
}
- }
- return getProperties(namespace, keyValues);
- }).when(() -> DeviceConfig.getProperties(anyString(), ArgumentMatchers.<String>any()));
+ return getProperties(namespace, keyValues);
+ }).when(() -> DeviceConfig.getProperties(anyString(), ArgumentMatchers.<String>any()));
+ }
}
/**
diff --git a/javatests/com/android/modules/utils/testing/Android.bp b/javatests/com/android/modules/utils/testing/Android.bp
index 89f7797..28ac80f 100644
--- a/javatests/com/android/modules/utils/testing/Android.bp
+++ b/javatests/com/android/modules/utils/testing/Android.bp
@@ -44,6 +44,6 @@ android_test {
test_suites: [
"general-tests",
- "mts",
+ "mts-mainline-infra",
],
}
diff --git a/javatests/com/android/modules/utils/testing/TestableDeviceConfigTest.java b/javatests/com/android/modules/utils/testing/TestableDeviceConfigTest.java
index 1b2c844..ac0252e 100644
--- a/javatests/com/android/modules/utils/testing/TestableDeviceConfigTest.java
+++ b/javatests/com/android/modules/utils/testing/TestableDeviceConfigTest.java
@@ -127,6 +127,8 @@ public class TestableDeviceConfigTest {
@Test
public void getProperties_empty() {
+ // api only present on R+
+ assumeTrue(SdkLevel.isAtLeastR());
String newKey = "key2";
String newValue = "value2";
DeviceConfig.setProperty(sNamespace, sKey, sValue, false);
@@ -143,6 +145,8 @@ public class TestableDeviceConfigTest {
@Test
public void getProperties() {
+ // api only present on R+
+ assumeTrue(SdkLevel.isAtLeastR());
Properties properties = DeviceConfig.getProperties(sNamespace, sKey);
assertThat(properties.getString(sKey, null)).isNull();