From 5aa617a3daf6d59f545a5c79079925ca72595472 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Tue, 19 May 2020 12:13:43 -0700 Subject: [PATCH 1/2] Invalidate PackageInfo cache when overlays change When overlays for a target package change, invalidate PackageInfo caches across all processes. Overlay paths are not persisted in PMS's settings, so no need to commit to package settings. Bug: 156743293 Test: presubmit Change-Id: I193544abe29cff07dda76a75376961d0d51d9c95 --- .../android/overlaytest/remounted/PackagedUpgradedTest.java | 3 +++ .../java/com/android/server/pm/PackageManagerService.java | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/PackagedUpgradedTest.java b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/PackagedUpgradedTest.java index 70e342370545c..a4656403b03fd 100644 --- a/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/PackagedUpgradedTest.java +++ b/core/tests/overlaytests/remount/src/com/android/overlaytest/remounted/PackagedUpgradedTest.java @@ -47,6 +47,7 @@ public class PackagedUpgradedTest extends OverlayRemountedTestBase { @Test public void testTargetRelocated() throws Exception { final String targetOverlaid = resourceName(TARGET_PACKAGE, "bool", "target_overlaid"); + final String targetReference = resourceName(TARGET_PACKAGE, "bool", "target_reference"); final String originalPath = "/product/app/OverlayTarget.apk"; mPreparer.pushResourceFile(TARGET_APK, originalPath) @@ -54,6 +55,7 @@ public class PackagedUpgradedTest extends OverlayRemountedTestBase { .installResourceApk(OVERLAY_APK, OVERLAY_PACKAGE) .setOverlayEnabled(OVERLAY_PACKAGE, true); + assertResource(targetReference, "@" + 0x7f010000 + " -> true"); assertResource(targetOverlaid, "true"); mPreparer.remount(); @@ -61,6 +63,7 @@ public class PackagedUpgradedTest extends OverlayRemountedTestBase { mPreparer.pushResourceFile(TARGET_UPGRADE_APK, "/product/app/OverlayTarget2.apk") .reboot(); + assertResource(targetReference, "@" + 0x7f0100ff + " -> true"); assertResource(targetOverlaid, "true"); } } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 3e587bf01521f..69f286ba87531 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -24508,9 +24508,10 @@ public class PackageManagerService extends IPackageManager.Stub if (updatedPackageNames != null) { outUpdatedPackageNames.addAll(updatedPackageNames); } - - return true; } + + PackageManager.invalidatePackageInfoCache(); + return true; } @Override From 3921cf7a9dfb383bf1daa994e0baf6d41def814c Mon Sep 17 00:00:00 2001 From: Ameer Armaly Date: Tue, 19 May 2020 14:08:45 -0700 Subject: [PATCH 2/2] GestureManifold: fix null pointer exception in onGestureCompleted. Bug: 156987027 Test: atest GestureManifoldTest Change-Id: I235d6ad6027960eb53ae89379e654dc32e2a65ff --- .../server/accessibility/gestures/GestureManifold.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/GestureManifold.java b/services/accessibility/java/com/android/server/accessibility/gestures/GestureManifold.java index a3b5a3e2dcf9e..6d0f069e51acd 100644 --- a/services/accessibility/java/com/android/server/accessibility/gestures/GestureManifold.java +++ b/services/accessibility/java/com/android/server/accessibility/gestures/GestureManifold.java @@ -295,7 +295,7 @@ class GestureManifold implements GestureMatcher.StateChangeListener { mListener.onGestureStarted(); } } else if (state == GestureMatcher.STATE_GESTURE_COMPLETED) { - onGestureCompleted(gestureId); + onGestureCompleted(gestureId, event, rawEvent, policyFlags); } else if (state == GestureMatcher.STATE_GESTURE_CANCELED && mState.isGestureDetecting()) { // We only want to call the cancelation callback if there are no other pending // detectors. @@ -311,8 +311,8 @@ class GestureManifold implements GestureMatcher.StateChangeListener { } } - private void onGestureCompleted(int gestureId) { - MotionEvent event = mState.getLastReceivedEvent(); + private void onGestureCompleted( + int gestureId, MotionEvent event, MotionEvent rawEvent, int policyFlags) { // Note that gestures that complete immediately call clear() from onMotionEvent. // Gestures that complete on a delay call clear() here. switch (gestureId) {