diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-07-26 10:35:04 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-07-26 10:35:04 +0000 |
commit | b27d0cfbb1b569fe976b2c1c66ef5aaf96834f33 (patch) | |
tree | 09ed65be8acb6a554e4e2f864869283c35a876c6 | |
parent | 76d3c8a4130e165f234e1d91f7eacb9a1a6af1e3 (diff) | |
parent | e2a2670ead28e421a9f05abaeb7de6f529cda58e (diff) | |
download | modules-utils-b27d0cfbb1b569fe976b2c1c66ef5aaf96834f33.tar.gz |
Snap for 8870366 from e2a2670ead28e421a9f05abaeb7de6f529cda58e to mainline-go-art-releaseaml_go_art_330913000android13-mainline-go-art-release
Change-Id: I128f9537d6f695f093325d0a396bdf641676ebc4
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(); |