diff options
author | Anton Hansson <hansson@google.com> | 2019-12-02 10:21:22 -0800 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-12-02 10:21:22 -0800 |
commit | af659d8ac4ed7bd408090a7fb96aa4faeb5469f7 (patch) | |
tree | 673aaff54074a682c92c98159f417f46c1022dbd | |
parent | ce0ca9c51171beac3b5d17f351a0206605eade8d (diff) | |
parent | 0899f50b757275e7eeb9910fb9d0d78c077f6194 (diff) | |
download | base-af659d8ac4ed7bd408090a7fb96aa4faeb5469f7.tar.gz |
Merge "Add SdkExtensions class"
am: 0899f50b75
Change-Id: Id42de164b5c6b3238729cc83b1cfaf5964efa1c7
-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); + } + +} |