Revert^2 "Change extension array to map of all extensions"
006b5e82fefcd0c804f3b234bfc04493f951c081
Change-Id: I72b9e05746dac15889c7adf67b5e4a0a5975edda
diff --git a/framework/api/system-current.txt b/framework/api/system-current.txt
index 98f462b..180afea 100644
--- a/framework/api/system-current.txt
+++ b/framework/api/system-current.txt
@@ -2,8 +2,8 @@
package android.os.ext {
public class SdkExtensions {
+ method @NonNull public static java.util.Map<java.lang.Integer,java.lang.Integer> getAllExtensionVersions();
method public static int getExtensionVersion(int);
- field @NonNull public static final int[] EXTENSIONS;
}
}
diff --git a/framework/java/android/os/ext/SdkExtensions.java b/framework/java/android/os/ext/SdkExtensions.java
index c811255..f36a3f6 100644
--- a/framework/java/android/os/ext/SdkExtensions.java
+++ b/framework/java/android/os/ext/SdkExtensions.java
@@ -26,6 +26,9 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
/**
* Methods for interacting with the extension SDK.
@@ -43,12 +46,19 @@
private static final int VERSION_CODE_S = VERSION_CODES.CUR_DEVELOPMENT;
private static final int R_EXTENSION_INT;
private static final int S_EXTENSION_INT;
+ private static final Map<Integer, Integer> ALL_EXTENSION_INTS;
static {
// Note: when adding more extension versions, the logic that records current
// extension versions when saving a rollback must also be updated.
// At the time of writing this is in RollbackManagerServiceImpl#getExtensionVersions()
R_EXTENSION_INT = SystemProperties.getInt("build.version.extensions.r", 0);
S_EXTENSION_INT = SystemProperties.getInt("build.version.extensions.s", 0);
+ Map<Integer, Integer> extensions = new HashMap<Integer, Integer>();
+ extensions.put(VERSION_CODES.R, R_EXTENSION_INT);
+ if (SdkLevel.isAtLeastS()) {
+ extensions.put(VERSION_CODE_S, S_EXTENSION_INT);
+ }
+ ALL_EXTENSION_INTS = Collections.unmodifiableMap(extensions);
}
/**
@@ -59,14 +69,6 @@
@Retention(RetentionPolicy.SOURCE)
public @interface Extension {}
- /** The current set of extensions. */
- @NonNull
- @Extension
- public static final int[] EXTENSIONS =
- SdkLevel.isAtLeastS()
- ? new int[] { VERSION_CODES.R, VERSION_CODE_S }
- : new int[] { VERSION_CODES.R };
-
private SdkExtensions() { }
/**
@@ -89,4 +91,14 @@
return 0;
}
+ /**
+ * Return all extension versions that exist on this device.
+ *
+ * @return a map from extension to extension version.
+ */
+ @NonNull
+ public static Map<Integer, Integer> getAllExtensionVersions() {
+ return ALL_EXTENSION_INTS;
+ }
+
}
diff --git a/tests/cts/src/android/os/ext/cts/SdkExtensionsTest.java b/tests/cts/src/android/os/ext/cts/SdkExtensionsTest.java
index 18853d7..ea310c7 100644
--- a/tests/cts/src/android/os/ext/cts/SdkExtensionsTest.java
+++ b/tests/cts/src/android/os/ext/cts/SdkExtensionsTest.java
@@ -21,6 +21,7 @@
import android.os.ext.SdkExtensions;
import com.android.modules.utils.build.SdkLevel;
import junit.framework.TestCase;
+import java.util.Map;
public class SdkExtensionsTest extends TestCase {
@@ -51,11 +52,13 @@
}
public void testExtensionVersions() throws Exception {
+ Map<Integer, Integer> versions = SdkExtensions.getAllExtensionVersions();
int expectedSize = 1;
if (SdkLevel.isAtLeastS()) {
expectedSize++;
}
- assertEquals(expectedSize, SdkExtensions.EXTENSIONS.length);
+ assertEquals(0, (int) versions.get(Build.VERSION_CODES.R));
+ assertEquals(expectedSize, versions.size());
}
}