diff options
author | Anton Hansson <hansson@google.com> | 2019-11-08 15:18:04 +0000 |
---|---|---|
committer | Anton Hansson <hansson@google.com> | 2019-12-02 15:32:39 +0000 |
commit | 4ec07fadef97e50d9eb1441941f961acbdc0531b (patch) | |
tree | 116ae40b2f207767f88875d893e92c6ba94a761a | |
parent | 5559245baa28dd7ff38fcd377bf09b15f91d096d (diff) | |
download | base-4ec07fadef97e50d9eb1441941f961acbdc0531b.tar.gz |
Add SdkExtensions class
It currently just reads a prop that is never set, but that will
be updated separately.
Keep the class @hide for now.
Bug: 137191822
Test: m com.android.sdkext
Change-Id: I1a874bf3d3e34676b5d767c4d03b09337b193cce
-rw-r--r-- | Android.bp | 6 | ||||
-rw-r--r-- | apex/sdkext/Android.bp | 1 | ||||
-rw-r--r-- | apex/sdkext/framework/Android.bp | 9 | ||||
-rw-r--r-- | apex/sdkext/framework/java/android/os/ext/SdkExtensions.java | 53 | ||||
-rw-r--r-- | apex/sdkext/framework/java/android/os/ext/package.html | 5 | ||||
-rw-r--r-- | apex/sdkext/framework/tests/Android.bp | 10 | ||||
-rw-r--r-- | apex/sdkext/framework/tests/AndroidManifest.xml | 27 | ||||
-rw-r--r-- | apex/sdkext/framework/tests/src/android/os/ext/SdkExtensionsTest.java | 45 |
8 files changed, 156 insertions, 0 deletions
diff --git a/Android.bp b/Android.bp index 63c8fb63b0fe..5efcb776dcf1 100644 --- a/Android.bp +++ b/Android.bp @@ -561,6 +561,12 @@ filegroup { ], } +java_library { + name: "framework-annotations-lib", + srcs: [ ":framework-annotations" ], + sdk_version: "current", +} + filegroup { name: "framework-networkstack-shared-srcs", srcs: [ diff --git a/apex/sdkext/Android.bp b/apex/sdkext/Android.bp index 60d657d0dec0..b8dcb90057d2 100644 --- a/apex/sdkext/Android.bp +++ b/apex/sdkext/Android.bp @@ -15,6 +15,7 @@ apex { name: "com.android.sdkext", manifest: "manifest.json", + java_libs: [ "framework-sdkext" ], key: "com.android.sdkext.key", certificate: ":com.android.sdkext.certificate", } diff --git a/apex/sdkext/framework/Android.bp b/apex/sdkext/framework/Android.bp index bc7857feda23..b17f0f84d6fa 100644 --- a/apex/sdkext/framework/Android.bp +++ b/apex/sdkext/framework/Android.bp @@ -19,3 +19,12 @@ filegroup { ], path: "java", } + +java_library { + name: "framework-sdkext", + srcs: [ ":framework-sdkext-sources" ], + sdk_version: "system_current", + libs: [ "framework-annotations-lib" ], + permitted_packages: [ "android.os.ext" ], + installable: true, +} diff --git a/apex/sdkext/framework/java/android/os/ext/SdkExtensions.java b/apex/sdkext/framework/java/android/os/ext/SdkExtensions.java new file mode 100644 index 000000000000..c039a820fc04 --- /dev/null +++ b/apex/sdkext/framework/java/android/os/ext/SdkExtensions.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2019 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 android.os.ext; + +import android.annotation.IntDef; +import android.os.Build.VERSION_CODES; +import android.os.SystemProperties; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** @hide */ +public class SdkExtensions { + + private static final int R_EXTENSION_INT; + static { + R_EXTENSION_INT = SystemProperties.getInt("persist.com.android.sdkext.sdk_info", 0); + } + + /** Values suitable as parameters for {@link #getExtensionVersion(int)}. */ + @IntDef(value = { VERSION_CODES.R }) + @Retention(RetentionPolicy.SOURCE) + public @interface SdkVersion {} + + /** + * Return the version of the extension to the given SDK. + * + * @param sdk the SDK version to get the extension version of. + * @see SdkVersion + * @throws IllegalArgumentException if sdk is not an sdk version with extensions + */ + public static int getExtensionVersion(@SdkVersion int sdk) { + if (sdk < VERSION_CODES.R) { + throw new IllegalArgumentException(); + } + return R_EXTENSION_INT; + } + +} diff --git a/apex/sdkext/framework/java/android/os/ext/package.html b/apex/sdkext/framework/java/android/os/ext/package.html new file mode 100644 index 000000000000..34c1697c01fd --- /dev/null +++ b/apex/sdkext/framework/java/android/os/ext/package.html @@ -0,0 +1,5 @@ +<HTML> +<BODY> +Provides APIs to interface with the SDK extensions. +</BODY> +</HTML> diff --git a/apex/sdkext/framework/tests/Android.bp b/apex/sdkext/framework/tests/Android.bp new file mode 100644 index 000000000000..3d5dbb3d8a2d --- /dev/null +++ b/apex/sdkext/framework/tests/Android.bp @@ -0,0 +1,10 @@ +android_test { + name: "framework-sdkext-tests", + srcs: ["src/**/*.java"], + libs: [ + "android.test.base", + "android.test.runner", + ], + static_libs: [ "framework-sdkext" ], + platform_apis: true, +} diff --git a/apex/sdkext/framework/tests/AndroidManifest.xml b/apex/sdkext/framework/tests/AndroidManifest.xml new file mode 100644 index 000000000000..831f1328c006 --- /dev/null +++ b/apex/sdkext/framework/tests/AndroidManifest.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2019 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. +--> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.android.sdkext.tests"> + + <application> + <uses-library android:name="android.test.runner" /> + </application> + + <instrumentation android:name="android.test.InstrumentationTestRunner" + android:targetPackage="com.android.sdkext.tests" /> + +</manifest> diff --git a/apex/sdkext/framework/tests/src/android/os/ext/SdkExtensionsTest.java b/apex/sdkext/framework/tests/src/android/os/ext/SdkExtensionsTest.java new file mode 100644 index 000000000000..688511096a43 --- /dev/null +++ b/apex/sdkext/framework/tests/src/android/os/ext/SdkExtensionsTest.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2019 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 android.os.ext; + +import android.os.Build; +import android.test.suitebuilder.annotation.SmallTest; + +import junit.framework.TestCase; + +public class SdkExtensionsTest extends TestCase { + + @SmallTest + public void testBadArgument() throws Exception { + try { + SdkExtensions.getExtensionVersion(Build.VERSION_CODES.Q); + fail("expected IllegalArgumentException"); + } catch (IllegalArgumentException expected) { } + + try { + SdkExtensions.getExtensionVersion(999999); + fail("expected IllegalArgumentException"); + } catch (IllegalArgumentException expected) { } + } + + @SmallTest + public void testDefault() throws Exception { + int r = SdkExtensions.getExtensionVersion(Build.VERSION_CODES.R); + assertTrue(r >= 0); + } + +} |