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
This commit is contained in:
Mårten Kongstad
2017-06-26 15:26:32 +02:00
parent 549c3d2e4f
commit f08ad98acb

View File

@@ -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);
}
}
/**