diff options
| -rw-r--r-- | services/core/java/com/android/server/om/OverlayManagerService.java | 9 | ||||
| -rw-r--r-- | services/core/java/com/android/server/om/OverlayManagerServiceImpl.java | 21 | 
2 files changed, 17 insertions, 13 deletions
diff --git a/services/core/java/com/android/server/om/OverlayManagerService.java b/services/core/java/com/android/server/om/OverlayManagerService.java index 8562572c3c39..a0da1526ac0f 100644 --- a/services/core/java/com/android/server/om/OverlayManagerService.java +++ b/services/core/java/com/android/server/om/OverlayManagerService.java @@ -389,16 +389,11 @@ public final class OverlayManagerService extends SystemService {                      final PackageInfo pi = mPackageManager.getPackageInfo(packageName, userId,                              false);                      if (pi != null) { -                        /* -                         * Only update overlay settings when an overlay becomes enabled or disabled. -                         * Enabling or disabling components of a target should not change the -                         * target's overlays. Since, overlays do not have components, this will only -                         * update overlay settings if an overlay package becomes enabled or -                         * disabled. -                         */                          mPackageManager.cachePackageInfo(packageName, userId, pi);                          if (pi.isOverlayPackage()) {                              mImpl.onOverlayPackageChanged(packageName, userId); +                        }  else { +                            mImpl.onTargetPackageChanged(packageName, userId);                          }                      }                  } diff --git a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java index bb36ab189765..36390823bd40 100644 --- a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java +++ b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java @@ -212,15 +212,21 @@ final class OverlayManagerServiceImpl {          }      } +    void onTargetPackageChanged(@NonNull final String packageName, final int userId) { +        if (DEBUG) { +            Slog.d(TAG, "onTargetPackageChanged packageName=" + packageName + " userId=" + userId); +        } + +        updateAllOverlaysForTarget(packageName, userId, 0); +    } +      void onTargetPackageUpgrading(@NonNull final String packageName, final int userId) {          if (DEBUG) {              Slog.d(TAG, "onTargetPackageUpgrading packageName=" + packageName + " userId="                      + userId);          } -        if (updateAllOverlaysForTarget(packageName, userId, FLAG_TARGET_IS_UPGRADING)) { -            mListener.onOverlaysChanged(packageName, userId); -        } +        updateAllOverlaysForTarget(packageName, userId, FLAG_TARGET_IS_UPGRADING);      }      void onTargetPackageUpgraded(@NonNull final String packageName, final int userId) { @@ -228,9 +234,7 @@ final class OverlayManagerServiceImpl {              Slog.d(TAG, "onTargetPackageUpgraded packageName=" + packageName + " userId=" + userId);          } -        if (updateAllOverlaysForTarget(packageName, userId, 0)) { -            mListener.onOverlaysChanged(packageName, userId); -        } +        updateAllOverlaysForTarget(packageName, userId, 0);      }      void onTargetPackageRemoved(@NonNull final String packageName, final int userId) { @@ -688,6 +692,11 @@ final class OverlayManagerServiceImpl {      }      interface OverlayChangeListener { + +        /** +         * An event triggered by changes made to overlay state or settings as well as changes that +         * add or remove target packages of overlays. +         **/          void onOverlaysChanged(@NonNull String targetPackage, int userId);      }  |