diff --git a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShimPriv_apk.asciipb b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShimPriv_apk.asciipb index 78c48200cfc5602434d6e769776380961291c894..0ccd9511d9451123b06c1fc662b8589297e7a2dc 100644 --- a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShimPriv_apk.asciipb +++ b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShimPriv_apk.asciipb @@ -1,6 +1,6 @@ drops { android_build_drop { - build_id: "7471822" + build_id: "7552332" target: "CtsShim" source_file: "aosp_arm64/CtsShimPriv.apk" } @@ -10,4 +10,6 @@ drops { git_project: "platform/frameworks/base" git_branch: "sc-dev" transform: TRANSFORM_NONE + transform_options { + } } diff --git a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShim_apk.asciipb b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShim_apk.asciipb index a9632ad05ac0a00d0cf3483ec063559e8d1654ed..7e85c8f6697ddfa1eb2db1f4f6460df5e24577d4 100644 --- a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShim_apk.asciipb +++ b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__arm_CtsShim_apk.asciipb @@ -1,6 +1,6 @@ drops { android_build_drop { - build_id: "7471822" + build_id: "7552332" target: "CtsShim" source_file: "aosp_arm64/CtsShim.apk" } @@ -10,4 +10,6 @@ drops { git_project: "platform/frameworks/base" git_branch: "sc-dev" transform: TRANSFORM_NONE + transform_options { + } } diff --git a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShimPriv_apk.asciipb b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShimPriv_apk.asciipb index df3a0bbe9f2cb64e1b11f4bd7f0ce1d9f83baed8..20c27858e9ab4c9aad5dcef466759e7d71dd270f 100644 --- a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShimPriv_apk.asciipb +++ b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShimPriv_apk.asciipb @@ -1,6 +1,6 @@ drops { android_build_drop { - build_id: "7471822" + build_id: "7552332" target: "CtsShim" source_file: "aosp_x86_64/CtsShimPriv.apk" } @@ -10,4 +10,6 @@ drops { git_project: "platform/frameworks/base" git_branch: "sc-dev" transform: TRANSFORM_NONE + transform_options { + } } diff --git a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShim_apk.asciipb b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShim_apk.asciipb index 1bc6cb8706f290750b03f45960565dfaf8a17fcf..13e3ae5b121bf0aadeaf7f8190241ca0a50a2e45 100644 --- a/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShim_apk.asciipb +++ b/.prebuilt_info/prebuilt_info_packages_CtsShim_apk__x86_CtsShim_apk.asciipb @@ -1,6 +1,6 @@ drops { android_build_drop { - build_id: "7471822" + build_id: "7552332" target: "CtsShim" source_file: "aosp_x86_64/CtsShim.apk" } @@ -10,4 +10,6 @@ drops { git_project: "platform/frameworks/base" git_branch: "sc-dev" transform: TRANSFORM_NONE + transform_options { + } } diff --git a/Android.bp b/Android.bp index 71023bf647c88686d0961cce8148d17cda0d74d5..3af2f07884e50311a6136d9e7915d45544549e1d 100644 --- a/Android.bp +++ b/Android.bp @@ -103,8 +103,9 @@ filegroup { ":android.hardware.security.secureclock-V1-java-source", ":android.security.apc-java-source", ":android.security.authorization-java-source", + ":android.security.legacykeystore-java-source", ":android.security.maintenance-java-source", - ":android.security.vpnprofilestore-java-source", + ":android.security.metrics-java-source", ":android.system.keystore2-V1-java-source", ":credstore_aidl", ":dumpstate_aidl", @@ -295,6 +296,7 @@ java_defaults { ], include_dirs: [ "frameworks/av/aidl", + "frameworks/native/libs/permission/aidl", "packages/modules/Connectivity/framework/aidl-export", ], }, @@ -536,6 +538,7 @@ stubs_defaults { ], include_dirs: [ "frameworks/av/aidl", + "frameworks/native/libs/permission/aidl", "packages/modules/Connectivity/framework/aidl-export", ], }, diff --git a/ApiDocs.bp b/ApiDocs.bp index 0aed5d9abea9543c803810d33068d5cb67d251b1..aae4a7174d688ddf5c42be2912c68e74335389df 100644 --- a/ApiDocs.bp +++ b/ApiDocs.bp @@ -113,7 +113,10 @@ stubs_defaults { // TODO(b/169090544): remove below aidl includes. aidl: { local_include_dirs: ["media/aidl"], - include_dirs: ["frameworks/av/aidl"], + include_dirs: [ + "frameworks/av/aidl", + "frameworks/native/libs/permission/aidl", + ], }, } @@ -199,7 +202,10 @@ doc_defaults { // TODO(b/169090544): remove below aidl includes. aidl: { local_include_dirs: ["media/aidl"], - include_dirs: ["frameworks/av/aidl"], + include_dirs: [ + "frameworks/av/aidl", + "frameworks/native/libs/permission/aidl", + ], }, } diff --git a/StubLibraries.bp b/StubLibraries.bp index 941a1fa033e4ac0a9317a8d1e6ddc114f3f8b47e..44c55c26153d46a562108e55f6d20cddecf5df59 100644 --- a/StubLibraries.bp +++ b/StubLibraries.bp @@ -410,7 +410,7 @@ java_library { ], static_libs: [ "android-non-updatable.stubs.module_lib", - "art.module.public.api.stubs", + "art.module.public.api.stubs.module_lib", ], dist: { dir: "apistubs/android/module-lib", diff --git a/apct-tests/perftests/inputmethod/src/android/inputmethod/ImePerfTest.java b/apct-tests/perftests/inputmethod/src/android/inputmethod/ImePerfTest.java index 689fb3645daff26aa0a7c976982a748549765b31..ab3c50b209e63b075a174601cb4e1be6985694b2 100644 --- a/apct-tests/perftests/inputmethod/src/android/inputmethod/ImePerfTest.java +++ b/apct-tests/perftests/inputmethod/src/android/inputmethod/ImePerfTest.java @@ -18,6 +18,7 @@ package android.inputmethod; import static android.perftests.utils.ManualBenchmarkState.StatsReport; import static android.perftests.utils.PerfTestActivity.ID_EDITOR; +import static android.perftests.utils.TestUtils.getOnMainSync; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.WindowInsetsAnimation.Callback.DISPATCH_MODE_STOP; @@ -25,6 +26,7 @@ import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentat import static org.junit.Assert.assertTrue; +import android.annotation.UiThread; import android.app.Activity; import android.content.ComponentName; import android.content.Context; @@ -64,6 +66,7 @@ import java.io.InputStreamReader; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; @@ -72,6 +75,7 @@ import java.util.concurrent.atomic.AtomicReference; public class ImePerfTest extends ImePerfTestBase implements ManualBenchmarkState.CustomizedIterationListener { private static final String TAG = ImePerfTest.class.getSimpleName(); + private static final long ANIMATION_NOT_STARTED = -1; @Rule public final PerfManualStatusReporter mPerfStatusReporter = new PerfManualStatusReporter(); @@ -300,16 +304,22 @@ public class ImePerfTest extends ImePerfTestBase while (state.keepRunning(measuredTimeNs)) { setImeListener(activity, latchStart, latchEnd); - latchStart.set(new CountDownLatch(show ? 1 : 2)); - latchEnd.set(new CountDownLatch(2)); // For measuring hide, lets show IME first. if (!show) { - activity.runOnUiThread(() -> { - controller.show(WindowInsets.Type.ime()); + initLatch(latchStart, latchEnd); + AtomicBoolean showCalled = new AtomicBoolean(); + getInstrumentation().runOnMainSync(() -> { + if (!isImeVisible(activity)) { + controller.show(WindowInsets.Type.ime()); + showCalled.set(true); + } }); - PollingCheck.check("IME show animation should finish ", TIMEOUT_1_S_IN_MS, - () -> latchStart.get().getCount() == 1 - && latchEnd.get().getCount() == 1); + if (showCalled.get()) { + PollingCheck.check("IME show animation should finish ", + TIMEOUT_1_S_IN_MS * 3, + () -> latchStart.get().getCount() == 0 + && latchEnd.get().getCount() == 0); + } } if (!mIsTraceStarted && !state.isWarmingUp()) { startAsyncAtrace(); @@ -317,23 +327,40 @@ public class ImePerfTest extends ImePerfTestBase } AtomicLong startTime = new AtomicLong(); - activity.runOnUiThread(() -> { + AtomicBoolean unexpectedVisibility = new AtomicBoolean(); + initLatch(latchStart, latchEnd); + getInstrumentation().runOnMainSync(() -> { + boolean isVisible = isImeVisible(activity); startTime.set(SystemClock.elapsedRealtimeNanos()); - if (show) { + + if (show && !isVisible) { controller.show(WindowInsets.Type.ime()); - } else { + } else if (!show && isVisible) { controller.hide(WindowInsets.Type.ime()); + } else { + // ignore this iteration as unexpected IME visibility was encountered. + unexpectedVisibility.set(true); } }); - measuredTimeNs = waitForAnimationStart(latchStart, startTime); + if (!unexpectedVisibility.get()) { + long timeElapsed = waitForAnimationStart(latchStart, startTime); + if (timeElapsed != ANIMATION_NOT_STARTED) { + measuredTimeNs = timeElapsed; + // wait for animation to end or we may start two animations and timing + // will not be measured accurately. + waitForAnimationEnd(latchEnd); + } + } // hide IME before next iteration. if (show) { + initLatch(latchStart, latchEnd); activity.runOnUiThread(() -> controller.hide(WindowInsets.Type.ime())); try { latchEnd.get().await(TIMEOUT_1_S_IN_MS * 5, TimeUnit.MILLISECONDS); - if (latchEnd.get().getCount() != 0) { + if (latchEnd.get().getCount() != 0 + && getOnMainSync(() -> isImeVisible(activity))) { Assert.fail("IME hide animation should finish."); } } catch (InterruptedException e) { @@ -350,18 +377,36 @@ public class ImePerfTest extends ImePerfTestBase addResultToState(state); } + private void initLatch(AtomicReference latchStart, + AtomicReference latchEnd) { + latchStart.set(new CountDownLatch(1)); + latchEnd.set(new CountDownLatch(1)); + } + + @UiThread + private boolean isImeVisible(@NonNull final Activity activity) { + return activity.getWindow().getDecorView().getRootWindowInsets().isVisible( + WindowInsets.Type.ime()); + } + private long waitForAnimationStart( AtomicReference latchStart, AtomicLong startTime) { try { - latchStart.get().await(TIMEOUT_1_S_IN_MS * 5, TimeUnit.MILLISECONDS); + latchStart.get().await(5, TimeUnit.SECONDS); if (latchStart.get().getCount() != 0) { - Assert.fail("IME animation should start " + latchStart.get().getCount()); + return ANIMATION_NOT_STARTED; } } catch (InterruptedException e) { } return SystemClock.elapsedRealtimeNanos() - startTime.get(); } + private void waitForAnimationEnd(AtomicReference latchEnd) { + try { + latchEnd.get().await(3, TimeUnit.SECONDS); + } catch (InterruptedException e) { } + } + private void addResultToState(ManualBenchmarkState state) { mTraceMethods.forAllSlices((key, slices) -> { for (TraceMarkSlice slice : slices) { diff --git a/apct-tests/perftests/multiuser/Android.bp b/apct-tests/perftests/multiuser/Android.bp index 917753e28829b86e6ee6727c445cf3af28147c4f..c967e51e16f9afb90a6dddb45124209ef02f9449 100644 --- a/apct-tests/perftests/multiuser/Android.bp +++ b/apct-tests/perftests/multiuser/Android.bp @@ -31,6 +31,6 @@ android_test { ], platform_apis: true, test_suites: ["device-tests"], - data: [":perfetto_artifacts"], + data: ["trace_configs/*"], certificate: "platform", } diff --git a/apct-tests/perftests/multiuser/AndroidManifest.xml b/apct-tests/perftests/multiuser/AndroidManifest.xml index 95533041323a6086a32fd5d4de08ad361c030eb0..63e5983401d72d250309e8fe0b39c5e644ac4b70 100644 --- a/apct-tests/perftests/multiuser/AndroidManifest.xml +++ b/apct-tests/perftests/multiuser/AndroidManifest.xml @@ -20,10 +20,12 @@ - + + + diff --git a/apct-tests/perftests/multiuser/AndroidTest.xml b/apct-tests/perftests/multiuser/AndroidTest.xml index fbe589248338b0d4c548ec72a0dc15b6b6068b0c..8e342f3389fc962e624fd2a34ee59a476a509d2a 100644 --- a/apct-tests/perftests/multiuser/AndroidTest.xml +++ b/apct-tests/perftests/multiuser/AndroidTest.xml @@ -26,7 +26,7 @@ -