From b1fe5159fade1b6cea9404ab6c407c97598371d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Kongstad?= Date: Tue, 23 Jan 2018 00:23:51 -0800 Subject: [PATCH 1/2] OMS: fix offset-by-one error when setting overlay priority setPriority(A, B) used to change A's priority to just higher than B's, but in commit "OverlayManagerService: Make broadcasts/updates explicit" this was modified so that A's priority is set to just lower than B's. Revert the behaviour to the original since that is what is documented in IOverlayManager.aidl Test: manual Change-Id: I87e96fb49d5ad58528dc0448aed907b405db1945 --- .../core/java/com/android/server/om/OverlayManagerSettings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/om/OverlayManagerSettings.java b/services/core/java/com/android/server/om/OverlayManagerSettings.java index c059b37847432..7d00423a2c41b 100644 --- a/services/core/java/com/android/server/om/OverlayManagerSettings.java +++ b/services/core/java/com/android/server/om/OverlayManagerSettings.java @@ -230,7 +230,7 @@ final class OverlayManagerSettings { } mItems.remove(moveIdx); - final int newParentIdx = select(newParentPackageName, userId); + final int newParentIdx = select(newParentPackageName, userId) + 1; mItems.add(newParentIdx, itemToMove); return moveIdx != newParentIdx; } From b6f19c98604fa25e2e33d5322f5eaa8acf3b4124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20Kongstad?= Date: Mon, 26 Jun 2017 15:26:32 +0200 Subject: [PATCH 2/2] OMS: fix listener callbacks triggered by changes to target package The OverlayManagerListener connected to the OverlayManagerServiceImpl should be notified when and only when the overlay settings have been modified. The pattern used to fulfill this contract as a result of a change to a target package is as follows: if (updateAllOverlaysForTarget(...)) { mListener.onOverlaysChanged(...); } Fix two violations of this pattern: - The listener was always notified - The listener was never notified Test: manual Change-Id: Id24a439e2eaaf976e8c7d650af36d58632cfb4ba --- .../com/android/server/om/OverlayManagerServiceImpl.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java index 253d4f5b22bb4..321af43d9c3d7 100644 --- a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java +++ b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java @@ -169,8 +169,9 @@ final class OverlayManagerServiceImpl { } final PackageInfo targetPackage = mPackageManager.getPackageInfo(packageName, userId); - updateAllOverlaysForTarget(packageName, userId, targetPackage); - mListener.onOverlaysChanged(packageName, userId); + if (updateAllOverlaysForTarget(packageName, userId, targetPackage)) { + mListener.onOverlaysChanged(packageName, userId); + } } void onTargetPackageChanged(@NonNull final String packageName, final int userId) { @@ -210,7 +211,9 @@ final class OverlayManagerServiceImpl { Slog.d(TAG, "onTargetPackageRemoved packageName=" + packageName + " userId=" + userId); } - updateAllOverlaysForTarget(packageName, userId, null); + if (updateAllOverlaysForTarget(packageName, userId, null)) { + mListener.onOverlaysChanged(packageName, userId); + } } /**