diff options
16 files changed, 95 insertions, 207 deletions
diff --git a/apct-tests/perftests/core/src/android/libcore/ZipFilePerfTest.java b/apct-tests/perftests/core/src/android/libcore/ZipFilePerfTest.java index 517e3ce39d7e..31c92ba5e207 100644 --- a/apct-tests/perftests/core/src/android/libcore/ZipFilePerfTest.java +++ b/apct-tests/perftests/core/src/android/libcore/ZipFilePerfTest.java @@ -70,6 +70,9 @@ public class ZipFilePerfTest { BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); while (state.keepRunning()) { ZipFile zf = new ZipFile(mFile); + state.pauseTiming(); + zf.close(); + state.resumeTiming(); } } diff --git a/apct-tests/perftests/core/src/android/libcore/regression/ExpensiveObjectsPerfTest.java b/apct-tests/perftests/core/src/android/libcore/regression/ExpensiveObjectsPerfTest.java index 32117dcd1d9f..03c9d43d3258 100644 --- a/apct-tests/perftests/core/src/android/libcore/regression/ExpensiveObjectsPerfTest.java +++ b/apct-tests/perftests/core/src/android/libcore/regression/ExpensiveObjectsPerfTest.java @@ -141,15 +141,6 @@ public class ExpensiveObjectsPerfTest { } @Test - public void timeNumberFormatTrivialFormatLong() { - NumberFormat nf = NumberFormat.getInstance(Locale.US); - BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); - while (state.keepRunning()) { - nf.format(1024L); - } - } - - @Test public void timeLongToString() { BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); while (state.keepRunning()) { diff --git a/apct-tests/perftests/core/src/android/libcore/regression/HostnameVerifierPerfTest.java b/apct-tests/perftests/core/src/android/libcore/regression/HostnameVerifierPerfTest.java deleted file mode 100644 index f2b7fdfdc1ca..000000000000 --- a/apct-tests/perftests/core/src/android/libcore/regression/HostnameVerifierPerfTest.java +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (C) 2022 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.libcore.regression; - -import android.perftests.utils.BenchmarkState; -import android.perftests.utils.PerfStatusReporter; -import android.test.suitebuilder.annotation.LargeTest; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; - -import java.io.ByteArrayInputStream; -import java.net.URL; -import java.security.Principal; -import java.security.cert.Certificate; -import java.security.cert.CertificateFactory; -import java.util.Arrays; -import java.util.Collection; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLSession; -import javax.net.ssl.SSLSessionContext; - -/** - * This benchmark makes a real HTTP connection to a handful of hosts and - * captures the served certificates as a byte array. It then verifies each - * certificate in the benchmark loop, being careful to convert from the - * byte[] to the certificate each time. Otherwise the certificate class - * caches previous results which skews the results of the benchmark: In practice - * each certificate instance is verified once and then released. - */ -@RunWith(Parameterized.class) -@LargeTest -public final class HostnameVerifierPerfTest { - @Rule public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter(); - - @Parameters(name = "mHost({0})") - public static Collection<Object[]> data() { - return Arrays.asList( - new Object[][] { - {"m.google.com"}, - {"www.google.com"}, - {"www.amazon.com"}, - {"www.ubs.com"} - }); - } - - @Parameterized.Parameter(0) - public String mHost; - - - private String mHostname; - private HostnameVerifier mHostnameVerifier; - private byte[][] mEncodedCertificates; - - @Before - public void setUp() throws Exception { - URL url = new URL("https", mHost, "/"); - mHostnameVerifier = HttpsURLConnection.getDefaultHostnameVerifier(); - HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); - connection.setHostnameVerifier(new HostnameVerifier() { - public boolean verify(String mHostname, SSLSession sslSession) { - try { - mEncodedCertificates = certificatesToBytes(sslSession.getPeerCertificates()); - } catch (Exception e) { - throw new RuntimeException(e); - } - HostnameVerifierPerfTest.this.mHostname = mHostname; - return true; - } - }); - connection.getInputStream(); - connection.disconnect(); - } - - @Test - public void timeVerify() throws Exception { - BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); - while (state.keepRunning()) { - final Certificate[] certificates = bytesToCertificates(mEncodedCertificates); - FakeSSLSession sslSession = new FakeSSLSession() { - @Override public Certificate[] getPeerCertificates() { - return certificates; - } - }; - mHostnameVerifier.verify(mHostname, sslSession); - } - } - - private byte[][] certificatesToBytes(Certificate[] certificates) throws Exception { - byte[][] result = new byte[certificates.length][]; - for (int i = 0, certificatesLength = certificates.length; i < certificatesLength; i++) { - result[i] = certificates[i].getEncoded(); - } - return result; - } - - private Certificate[] bytesToCertificates(byte[][] encodedCertificates) throws Exception { - CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); - Certificate[] result = new Certificate[encodedCertificates.length]; - for (int i = 0; i < encodedCertificates.length; i++) { - result[i] = certificateFactory.generateCertificate( - new ByteArrayInputStream(encodedCertificates[i])); - } - return result; - } - - private static class FakeSSLSession implements SSLSession { - public int getApplicationBufferSize() { - throw new UnsupportedOperationException(); - } - public String getCipherSuite() { - throw new UnsupportedOperationException(); - } - public long getCreationTime() { - throw new UnsupportedOperationException(); - } - public byte[] getId() { - throw new UnsupportedOperationException(); - } - public long getLastAccessedTime() { - throw new UnsupportedOperationException(); - } - public Certificate[] getLocalCertificates() { - throw new UnsupportedOperationException(); - } - public Principal getLocalPrincipal() { - throw new UnsupportedOperationException(); - } - public int getPacketBufferSize() { - throw new UnsupportedOperationException(); - } - public javax.security.cert.X509Certificate[] getPeerCertificateChain() { - throw new UnsupportedOperationException(); - } - public Certificate[] getPeerCertificates() { - throw new UnsupportedOperationException(); - } - public String getPeerHost() { - throw new UnsupportedOperationException(); - } - public int getPeerPort() { - throw new UnsupportedOperationException(); - } - public Principal getPeerPrincipal() { - throw new UnsupportedOperationException(); - } - public String getProtocol() { - throw new UnsupportedOperationException(); - } - public SSLSessionContext getSessionContext() { - throw new UnsupportedOperationException(); - } - public Object getValue(String name) { - throw new UnsupportedOperationException(); - } - public String[] getValueNames() { - throw new UnsupportedOperationException(); - } - public void invalidate() { - throw new UnsupportedOperationException(); - } - public boolean isValid() { - throw new UnsupportedOperationException(); - } - public void putValue(String name, Object value) { - throw new UnsupportedOperationException(); - } - public void removeValue(String name) { - throw new UnsupportedOperationException(); - } - } -} diff --git a/apct-tests/perftests/core/src/android/libcore/regression/NumberFormatTrivialFormatLongPerfTest.java b/apct-tests/perftests/core/src/android/libcore/regression/NumberFormatTrivialFormatLongPerfTest.java new file mode 100644 index 000000000000..5ff2b225d64f --- /dev/null +++ b/apct-tests/perftests/core/src/android/libcore/regression/NumberFormatTrivialFormatLongPerfTest.java @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2022 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.libcore.regression; + +import android.perftests.utils.BenchmarkState; +import android.perftests.utils.PerfStatusReporter; +import android.test.suitebuilder.annotation.LargeTest; + +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.text.NumberFormat; +import java.util.Locale; + +/** + * Benchmarks creation and cloning various expensive objects. + */ +@RunWith(AndroidJUnit4.class) +@LargeTest +public class NumberFormatTrivialFormatLongPerfTest { + @Rule + public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter(); + + @Test + public void timeNumberFormatTrivialFormatLong() { + NumberFormat nf = NumberFormat.getInstance(Locale.US); + BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); + while (state.keepRunning()) { + nf.format(1024L); + } + } +} diff --git a/core/api/current.txt b/core/api/current.txt index 5944991d347c..f130c807bf18 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -21438,6 +21438,7 @@ package android.media { field public static final String KEY_VIDEO_QP_P_MAX = "video-qp-p-max"; field public static final String KEY_VIDEO_QP_P_MIN = "video-qp-p-min"; field public static final String KEY_WIDTH = "width"; + field public static final String LOG_SESSION_ID = "log-session-id"; field public static final String MIMETYPE_AUDIO_AAC = "audio/mp4a-latm"; field public static final String MIMETYPE_AUDIO_AC3 = "audio/ac3"; field public static final String MIMETYPE_AUDIO_AC4 = "audio/ac4"; diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java index 050ae7268ef2..66e2c413312e 100644 --- a/media/java/android/media/MediaFormat.java +++ b/media/java/android/media/MediaFormat.java @@ -230,9 +230,10 @@ public final class MediaFormat { /** * A key describing the log session ID for MediaCodec. The log session ID is a random 32-byte * hexadecimal string that is used to associate metrics from multiple media codec instances - * to the same playback or recording session. + * to the same playback or recording session. The value is created as + * {@link android.media.metrics.LogSessionId LogSessionId}. Sessions are created in + * {@link android.media.metrics.MediaMetricsManager MediaMetricsManager}. * The associated value is a string. - * @hide */ public static final String LOG_SESSION_ID = "log-session-id"; diff --git a/packages/SettingsLib/ActionBarShadow/Android.bp b/packages/SettingsLib/ActionBarShadow/Android.bp index 4a07d49fcde5..2c86201591fb 100644 --- a/packages/SettingsLib/ActionBarShadow/Android.bp +++ b/packages/SettingsLib/ActionBarShadow/Android.bp @@ -20,4 +20,8 @@ android_library { sdk_version: "system_current", min_sdk_version: "28", + apex_available: [ + "//apex_available:platform", + "com.android.permission", + ], } diff --git a/packages/SettingsLib/AppPreference/Android.bp b/packages/SettingsLib/AppPreference/Android.bp index 1817a77981a9..122f60672b2a 100644 --- a/packages/SettingsLib/AppPreference/Android.bp +++ b/packages/SettingsLib/AppPreference/Android.bp @@ -20,4 +20,8 @@ android_library { ], sdk_version: "system_current", min_sdk_version: "21", + apex_available: [ + "//apex_available:platform", + "com.android.permission", + ], } diff --git a/packages/SettingsLib/BarChartPreference/Android.bp b/packages/SettingsLib/BarChartPreference/Android.bp index 4f6537334770..5c5da9827e61 100644 --- a/packages/SettingsLib/BarChartPreference/Android.bp +++ b/packages/SettingsLib/BarChartPreference/Android.bp @@ -19,4 +19,8 @@ android_library { sdk_version: "system_current", min_sdk_version: "21", + apex_available: [ + "//apex_available:platform", + "com.android.permission", + ], } diff --git a/packages/SettingsLib/HelpUtils/Android.bp b/packages/SettingsLib/HelpUtils/Android.bp index 5826047b9f52..aea51b1bba2d 100644 --- a/packages/SettingsLib/HelpUtils/Android.bp +++ b/packages/SettingsLib/HelpUtils/Android.bp @@ -19,4 +19,8 @@ android_library { sdk_version: "system_current", min_sdk_version: "21", + apex_available: [ + "//apex_available:platform", + "com.android.permission", + ], } diff --git a/packages/SettingsLib/LayoutPreference/Android.bp b/packages/SettingsLib/LayoutPreference/Android.bp index 8a4e53d80a7c..aaffdc922875 100644 --- a/packages/SettingsLib/LayoutPreference/Android.bp +++ b/packages/SettingsLib/LayoutPreference/Android.bp @@ -14,9 +14,13 @@ android_library { resource_dirs: ["res"], static_libs: [ - "androidx.preference_preference", + "androidx.preference_preference", ], sdk_version: "system_current", min_sdk_version: "21", + apex_available: [ + "//apex_available:platform", + "com.android.permission", + ], } diff --git a/packages/SettingsLib/ProgressBar/Android.bp b/packages/SettingsLib/ProgressBar/Android.bp index b5bc8f77045b..fb3c4e6efd90 100644 --- a/packages/SettingsLib/ProgressBar/Android.bp +++ b/packages/SettingsLib/ProgressBar/Android.bp @@ -15,4 +15,8 @@ android_library { sdk_version: "system_current", min_sdk_version: "21", + apex_available: [ + "//apex_available:platform", + "com.android.permission", + ], } diff --git a/packages/SettingsLib/RestrictedLockUtils/Android.bp b/packages/SettingsLib/RestrictedLockUtils/Android.bp index c0623edabefe..a7dcf8d52915 100644 --- a/packages/SettingsLib/RestrictedLockUtils/Android.bp +++ b/packages/SettingsLib/RestrictedLockUtils/Android.bp @@ -19,4 +19,8 @@ android_library { sdk_version: "system_current", min_sdk_version: "21", + apex_available: [ + "//apex_available:platform", + "com.android.permission", + ], } diff --git a/packages/SettingsLib/SearchWidget/Android.bp b/packages/SettingsLib/SearchWidget/Android.bp index b7367b4a10a7..5aaee2afc069 100644 --- a/packages/SettingsLib/SearchWidget/Android.bp +++ b/packages/SettingsLib/SearchWidget/Android.bp @@ -14,4 +14,8 @@ android_library { resource_dirs: ["res"], sdk_version: "system_current", min_sdk_version: "21", + apex_available: [ + "//apex_available:platform", + "com.android.permission", + ], } diff --git a/packages/SettingsLib/SettingsTheme/Android.bp b/packages/SettingsLib/SettingsTheme/Android.bp index 73459c277df1..da01f62b97d4 100644 --- a/packages/SettingsLib/SettingsTheme/Android.bp +++ b/packages/SettingsLib/SettingsTheme/Android.bp @@ -13,13 +13,14 @@ android_library { resource_dirs: ["res"], static_libs: [ - "androidx.preference_preference", - ], + "androidx.preference_preference", + ], sdk_version: "system_current", min_sdk_version: "21", apex_available: [ "//apex_available:platform", "com.android.cellbroadcast", + "com.android.permission", ], } diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java index 18efe5375942..f0f187098bc5 100644 --- a/services/core/java/com/android/server/connectivity/Vpn.java +++ b/services/core/java/com/android/server/connectivity/Vpn.java @@ -1629,7 +1629,9 @@ public class Vpn { for (String app : packageNames) { int uid = getAppUid(app, userId); if (uid != -1) uids.add(uid); - if (Process.isApplicationUid(uid)) { + // TODO(b/230548427): Remove SDK check once VPN related stuff are decoupled from + // ConnectivityServiceTest. + if (Process.isApplicationUid(uid) && SdkLevel.isAtLeastT()) { uids.add(Process.toSdkSandboxUid(uid)); } } |