Loading core/java/android/content/pm/PackageInfo.java +46 −4 Original line number Original line Diff line number Diff line Loading @@ -16,10 +16,14 @@ package android.content.pm; package android.content.pm; import android.annotation.IntDef; import android.annotation.Nullable; import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** /** * Overall information about the contents of a package. This corresponds * Overall information about the contents of a package. This corresponds * to all of the information collected from AndroidManifest.xml. * to all of the information collected from AndroidManifest.xml. Loading Loading @@ -330,8 +334,29 @@ public class PackageInfo implements Parcelable { /** @hide */ /** @hide */ public int overlayPriority; public int overlayPriority; /** @hide */ /** public boolean isStaticOverlay; * Flag for use with {@link #mOverlayFlags}. Marks the overlay as static, meaning it cannot * be enabled/disabled at runtime. */ static final int FLAG_OVERLAY_STATIC = 1 << 1; /** * Flag for use with {@link #mOverlayFlags}. Marks the overlay as trusted (not 3rd party). */ static final int FLAG_OVERLAY_TRUSTED = 1 << 2; @IntDef(flag = true, prefix = "FLAG_OVERLAY_", value = { FLAG_OVERLAY_STATIC, FLAG_OVERLAY_TRUSTED }) @Retention(RetentionPolicy.SOURCE) @interface OverlayFlags {} /** * Modifiers that affect the state of this overlay. See {@link #FLAG_OVERLAY_STATIC}, * {@link #FLAG_OVERLAY_TRUSTED}. */ @OverlayFlags int mOverlayFlags; /** /** * The user-visible SDK version (ex. 26) of the framework against which the application claims * The user-visible SDK version (ex. 26) of the framework against which the application claims Loading Loading @@ -359,6 +384,23 @@ public class PackageInfo implements Parcelable { public PackageInfo() { public PackageInfo() { } } /** * Returns true if the package is a valid Runtime Overlay package. * @hide */ public boolean isOverlayPackage() { return overlayTarget != null && (mOverlayFlags & FLAG_OVERLAY_TRUSTED) != 0; } /** * Returns true if the package is a valid static Runtime Overlay package. Static overlays * are not updatable outside of a system update and are safe to load in the system process. * @hide */ public boolean isStaticOverlayPackage() { return overlayTarget != null && (mOverlayFlags & FLAG_OVERLAY_STATIC) != 0; } @Override @Override public String toString() { public String toString() { return "PackageInfo{" return "PackageInfo{" Loading Loading @@ -410,8 +452,8 @@ public class PackageInfo implements Parcelable { dest.writeString(restrictedAccountType); dest.writeString(restrictedAccountType); dest.writeString(requiredAccountType); dest.writeString(requiredAccountType); dest.writeString(overlayTarget); dest.writeString(overlayTarget); dest.writeInt(isStaticOverlay ? 1 : 0); dest.writeInt(overlayPriority); dest.writeInt(overlayPriority); dest.writeInt(mOverlayFlags); dest.writeInt(compileSdkVersion); dest.writeInt(compileSdkVersion); dest.writeString(compileSdkVersionCodename); dest.writeString(compileSdkVersionCodename); } } Loading Loading @@ -465,8 +507,8 @@ public class PackageInfo implements Parcelable { restrictedAccountType = source.readString(); restrictedAccountType = source.readString(); requiredAccountType = source.readString(); requiredAccountType = source.readString(); overlayTarget = source.readString(); overlayTarget = source.readString(); isStaticOverlay = source.readInt() != 0; overlayPriority = source.readInt(); overlayPriority = source.readInt(); mOverlayFlags = source.readInt(); compileSdkVersion = source.readInt(); compileSdkVersion = source.readInt(); compileSdkVersionCodename = source.readString(); compileSdkVersionCodename = source.readString(); Loading core/java/android/content/pm/PackageParser.java +9 −1 Original line number Original line Diff line number Diff line Loading @@ -689,7 +689,15 @@ public class PackageParser { pi.requiredAccountType = p.mRequiredAccountType; pi.requiredAccountType = p.mRequiredAccountType; pi.overlayTarget = p.mOverlayTarget; pi.overlayTarget = p.mOverlayTarget; pi.overlayPriority = p.mOverlayPriority; pi.overlayPriority = p.mOverlayPriority; pi.isStaticOverlay = p.mIsStaticOverlay; if (p.mIsStaticOverlay) { pi.mOverlayFlags |= PackageInfo.FLAG_OVERLAY_STATIC; } if (p.mTrustedOverlay) { pi.mOverlayFlags |= PackageInfo.FLAG_OVERLAY_TRUSTED; } pi.compileSdkVersion = p.mCompileSdkVersion; pi.compileSdkVersion = p.mCompileSdkVersion; pi.compileSdkVersionCodename = p.mCompileSdkVersionCodename; pi.compileSdkVersionCodename = p.mCompileSdkVersionCodename; pi.firstInstallTime = firstInstallTime; pi.firstInstallTime = firstInstallTime; Loading services/core/java/com/android/server/om/OverlayManagerService.java +15 −19 Original line number Original line Diff line number Diff line Loading @@ -370,10 +370,10 @@ public final class OverlayManagerService extends SystemService { false); false); if (pi != null) { if (pi != null) { mPackageManager.cachePackageInfo(packageName, userId, pi); mPackageManager.cachePackageInfo(packageName, userId, pi); if (!isOverlayPackage(pi)) { if (pi.isOverlayPackage()) { mImpl.onTargetPackageAdded(packageName, userId); } else { mImpl.onOverlayPackageAdded(packageName, userId); mImpl.onOverlayPackageAdded(packageName, userId); } else { mImpl.onTargetPackageAdded(packageName, userId); } } } } } } Loading @@ -388,10 +388,10 @@ public final class OverlayManagerService extends SystemService { false); false); if (pi != null) { if (pi != null) { mPackageManager.cachePackageInfo(packageName, userId, pi); mPackageManager.cachePackageInfo(packageName, userId, pi); if (!isOverlayPackage(pi)) { if (pi.isOverlayPackage()) { mImpl.onTargetPackageChanged(packageName, userId); } else { mImpl.onOverlayPackageChanged(packageName, userId); mImpl.onOverlayPackageChanged(packageName, userId); } else { mImpl.onTargetPackageChanged(packageName, userId); } } } } } } Loading @@ -404,10 +404,10 @@ public final class OverlayManagerService extends SystemService { synchronized (mLock) { synchronized (mLock) { mPackageManager.forgetPackageInfo(packageName, userId); mPackageManager.forgetPackageInfo(packageName, userId); final OverlayInfo oi = mImpl.getOverlayInfo(packageName, userId); final OverlayInfo oi = mImpl.getOverlayInfo(packageName, userId); if (oi == null) { if (oi != null) { mImpl.onTargetPackageUpgrading(packageName, userId); } else { mImpl.onOverlayPackageUpgrading(packageName, userId); mImpl.onOverlayPackageUpgrading(packageName, userId); } else { mImpl.onTargetPackageUpgrading(packageName, userId); } } } } } } Loading @@ -421,10 +421,10 @@ public final class OverlayManagerService extends SystemService { false); false); if (pi != null) { if (pi != null) { mPackageManager.cachePackageInfo(packageName, userId, pi); mPackageManager.cachePackageInfo(packageName, userId, pi); if (!isOverlayPackage(pi)) { if (pi.isOverlayPackage()) { mImpl.onTargetPackageUpgraded(packageName, userId); } else { mImpl.onOverlayPackageUpgraded(packageName, userId); mImpl.onOverlayPackageUpgraded(packageName, userId); } else { mImpl.onTargetPackageUpgraded(packageName, userId); } } } } } } Loading @@ -437,10 +437,10 @@ public final class OverlayManagerService extends SystemService { synchronized (mLock) { synchronized (mLock) { mPackageManager.forgetPackageInfo(packageName, userId); mPackageManager.forgetPackageInfo(packageName, userId); final OverlayInfo oi = mImpl.getOverlayInfo(packageName, userId); final OverlayInfo oi = mImpl.getOverlayInfo(packageName, userId); if (oi == null) { if (oi != null) { mImpl.onTargetPackageRemoved(packageName, userId); } else { mImpl.onOverlayPackageRemoved(packageName, userId); mImpl.onOverlayPackageRemoved(packageName, userId); } else { mImpl.onTargetPackageRemoved(packageName, userId); } } } } } } Loading Loading @@ -668,10 +668,6 @@ public final class OverlayManagerService extends SystemService { } } }; }; private boolean isOverlayPackage(@NonNull final PackageInfo pi) { return pi != null && pi.overlayTarget != null; } private final class OverlayChangeListener private final class OverlayChangeListener implements OverlayManagerServiceImpl.OverlayChangeListener { implements OverlayManagerServiceImpl.OverlayChangeListener { @Override @Override Loading services/core/java/com/android/server/om/OverlayManagerServiceImpl.java +9 −8 Original line number Original line Diff line number Diff line Loading @@ -102,11 +102,11 @@ final class OverlayManagerServiceImpl { mSettings.init(overlayPackage.packageName, newUserId, mSettings.init(overlayPackage.packageName, newUserId, overlayPackage.overlayTarget, overlayPackage.overlayTarget, overlayPackage.applicationInfo.getBaseCodePath(), overlayPackage.applicationInfo.getBaseCodePath(), overlayPackage.isStaticOverlay, overlayPackage.overlayPriority); overlayPackage.isStaticOverlayPackage(), overlayPackage.overlayPriority); if (oi == null) { if (oi == null) { // This overlay does not exist in our settings. // This overlay does not exist in our settings. if (overlayPackage.isStaticOverlay || if (overlayPackage.isStaticOverlayPackage() || mDefaultOverlays.contains(overlayPackage.packageName)) { mDefaultOverlays.contains(overlayPackage.packageName)) { // Enable this overlay by default. // Enable this overlay by default. if (DEBUG) { if (DEBUG) { Loading Loading @@ -255,8 +255,8 @@ final class OverlayManagerServiceImpl { mPackageManager.getPackageInfo(overlayPackage.overlayTarget, userId); mPackageManager.getPackageInfo(overlayPackage.overlayTarget, userId); mSettings.init(packageName, userId, overlayPackage.overlayTarget, mSettings.init(packageName, userId, overlayPackage.overlayTarget, overlayPackage.applicationInfo.getBaseCodePath(), overlayPackage.isStaticOverlay, overlayPackage.applicationInfo.getBaseCodePath(), overlayPackage.overlayPriority); overlayPackage.isStaticOverlayPackage(), overlayPackage.overlayPriority); try { try { if (updateState(targetPackage, overlayPackage, userId)) { if (updateState(targetPackage, overlayPackage, userId)) { mListener.onOverlaysChanged(overlayPackage.overlayTarget, userId); mListener.onOverlaysChanged(overlayPackage.overlayTarget, userId); Loading Loading @@ -313,7 +313,7 @@ final class OverlayManagerServiceImpl { } } // Ignore static overlays. // Ignore static overlays. if (overlayPackage.isStaticOverlay) { if (overlayPackage.isStaticOverlayPackage()) { return false; return false; } } Loading Loading @@ -363,7 +363,7 @@ final class OverlayManagerServiceImpl { continue; continue; } } if (disabledOverlayPackageInfo.isStaticOverlay) { if (disabledOverlayPackageInfo.isStaticOverlayPackage()) { // Don't touch static overlays. // Don't touch static overlays. continue; continue; } } Loading @@ -388,7 +388,7 @@ final class OverlayManagerServiceImpl { private boolean isPackageUpdatableOverlay(@NonNull final String packageName, final int userId) { private boolean isPackageUpdatableOverlay(@NonNull final String packageName, final int userId) { final PackageInfo overlayPackage = mPackageManager.getPackageInfo(packageName, userId); final PackageInfo overlayPackage = mPackageManager.getPackageInfo(packageName, userId); if (overlayPackage == null || overlayPackage.isStaticOverlay) { if (overlayPackage == null || overlayPackage.isStaticOverlayPackage()) { return false; return false; } } return true; return true; Loading Loading @@ -483,7 +483,8 @@ final class OverlayManagerServiceImpl { throws OverlayManagerSettings.BadKeyException { throws OverlayManagerSettings.BadKeyException { // Static RROs targeting to "android", ie framework-res.apk, are handled by native layers. // Static RROs targeting to "android", ie framework-res.apk, are handled by native layers. if (targetPackage != null && if (targetPackage != null && !("android".equals(targetPackage.packageName) && overlayPackage.isStaticOverlay)) { !("android".equals(targetPackage.packageName) && overlayPackage.isStaticOverlayPackage())) { mIdmapManager.createIdmap(targetPackage, overlayPackage, userId); mIdmapManager.createIdmap(targetPackage, overlayPackage, userId); } } Loading Loading
core/java/android/content/pm/PackageInfo.java +46 −4 Original line number Original line Diff line number Diff line Loading @@ -16,10 +16,14 @@ package android.content.pm; package android.content.pm; import android.annotation.IntDef; import android.annotation.Nullable; import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** /** * Overall information about the contents of a package. This corresponds * Overall information about the contents of a package. This corresponds * to all of the information collected from AndroidManifest.xml. * to all of the information collected from AndroidManifest.xml. Loading Loading @@ -330,8 +334,29 @@ public class PackageInfo implements Parcelable { /** @hide */ /** @hide */ public int overlayPriority; public int overlayPriority; /** @hide */ /** public boolean isStaticOverlay; * Flag for use with {@link #mOverlayFlags}. Marks the overlay as static, meaning it cannot * be enabled/disabled at runtime. */ static final int FLAG_OVERLAY_STATIC = 1 << 1; /** * Flag for use with {@link #mOverlayFlags}. Marks the overlay as trusted (not 3rd party). */ static final int FLAG_OVERLAY_TRUSTED = 1 << 2; @IntDef(flag = true, prefix = "FLAG_OVERLAY_", value = { FLAG_OVERLAY_STATIC, FLAG_OVERLAY_TRUSTED }) @Retention(RetentionPolicy.SOURCE) @interface OverlayFlags {} /** * Modifiers that affect the state of this overlay. See {@link #FLAG_OVERLAY_STATIC}, * {@link #FLAG_OVERLAY_TRUSTED}. */ @OverlayFlags int mOverlayFlags; /** /** * The user-visible SDK version (ex. 26) of the framework against which the application claims * The user-visible SDK version (ex. 26) of the framework against which the application claims Loading Loading @@ -359,6 +384,23 @@ public class PackageInfo implements Parcelable { public PackageInfo() { public PackageInfo() { } } /** * Returns true if the package is a valid Runtime Overlay package. * @hide */ public boolean isOverlayPackage() { return overlayTarget != null && (mOverlayFlags & FLAG_OVERLAY_TRUSTED) != 0; } /** * Returns true if the package is a valid static Runtime Overlay package. Static overlays * are not updatable outside of a system update and are safe to load in the system process. * @hide */ public boolean isStaticOverlayPackage() { return overlayTarget != null && (mOverlayFlags & FLAG_OVERLAY_STATIC) != 0; } @Override @Override public String toString() { public String toString() { return "PackageInfo{" return "PackageInfo{" Loading Loading @@ -410,8 +452,8 @@ public class PackageInfo implements Parcelable { dest.writeString(restrictedAccountType); dest.writeString(restrictedAccountType); dest.writeString(requiredAccountType); dest.writeString(requiredAccountType); dest.writeString(overlayTarget); dest.writeString(overlayTarget); dest.writeInt(isStaticOverlay ? 1 : 0); dest.writeInt(overlayPriority); dest.writeInt(overlayPriority); dest.writeInt(mOverlayFlags); dest.writeInt(compileSdkVersion); dest.writeInt(compileSdkVersion); dest.writeString(compileSdkVersionCodename); dest.writeString(compileSdkVersionCodename); } } Loading Loading @@ -465,8 +507,8 @@ public class PackageInfo implements Parcelable { restrictedAccountType = source.readString(); restrictedAccountType = source.readString(); requiredAccountType = source.readString(); requiredAccountType = source.readString(); overlayTarget = source.readString(); overlayTarget = source.readString(); isStaticOverlay = source.readInt() != 0; overlayPriority = source.readInt(); overlayPriority = source.readInt(); mOverlayFlags = source.readInt(); compileSdkVersion = source.readInt(); compileSdkVersion = source.readInt(); compileSdkVersionCodename = source.readString(); compileSdkVersionCodename = source.readString(); Loading
core/java/android/content/pm/PackageParser.java +9 −1 Original line number Original line Diff line number Diff line Loading @@ -689,7 +689,15 @@ public class PackageParser { pi.requiredAccountType = p.mRequiredAccountType; pi.requiredAccountType = p.mRequiredAccountType; pi.overlayTarget = p.mOverlayTarget; pi.overlayTarget = p.mOverlayTarget; pi.overlayPriority = p.mOverlayPriority; pi.overlayPriority = p.mOverlayPriority; pi.isStaticOverlay = p.mIsStaticOverlay; if (p.mIsStaticOverlay) { pi.mOverlayFlags |= PackageInfo.FLAG_OVERLAY_STATIC; } if (p.mTrustedOverlay) { pi.mOverlayFlags |= PackageInfo.FLAG_OVERLAY_TRUSTED; } pi.compileSdkVersion = p.mCompileSdkVersion; pi.compileSdkVersion = p.mCompileSdkVersion; pi.compileSdkVersionCodename = p.mCompileSdkVersionCodename; pi.compileSdkVersionCodename = p.mCompileSdkVersionCodename; pi.firstInstallTime = firstInstallTime; pi.firstInstallTime = firstInstallTime; Loading
services/core/java/com/android/server/om/OverlayManagerService.java +15 −19 Original line number Original line Diff line number Diff line Loading @@ -370,10 +370,10 @@ public final class OverlayManagerService extends SystemService { false); false); if (pi != null) { if (pi != null) { mPackageManager.cachePackageInfo(packageName, userId, pi); mPackageManager.cachePackageInfo(packageName, userId, pi); if (!isOverlayPackage(pi)) { if (pi.isOverlayPackage()) { mImpl.onTargetPackageAdded(packageName, userId); } else { mImpl.onOverlayPackageAdded(packageName, userId); mImpl.onOverlayPackageAdded(packageName, userId); } else { mImpl.onTargetPackageAdded(packageName, userId); } } } } } } Loading @@ -388,10 +388,10 @@ public final class OverlayManagerService extends SystemService { false); false); if (pi != null) { if (pi != null) { mPackageManager.cachePackageInfo(packageName, userId, pi); mPackageManager.cachePackageInfo(packageName, userId, pi); if (!isOverlayPackage(pi)) { if (pi.isOverlayPackage()) { mImpl.onTargetPackageChanged(packageName, userId); } else { mImpl.onOverlayPackageChanged(packageName, userId); mImpl.onOverlayPackageChanged(packageName, userId); } else { mImpl.onTargetPackageChanged(packageName, userId); } } } } } } Loading @@ -404,10 +404,10 @@ public final class OverlayManagerService extends SystemService { synchronized (mLock) { synchronized (mLock) { mPackageManager.forgetPackageInfo(packageName, userId); mPackageManager.forgetPackageInfo(packageName, userId); final OverlayInfo oi = mImpl.getOverlayInfo(packageName, userId); final OverlayInfo oi = mImpl.getOverlayInfo(packageName, userId); if (oi == null) { if (oi != null) { mImpl.onTargetPackageUpgrading(packageName, userId); } else { mImpl.onOverlayPackageUpgrading(packageName, userId); mImpl.onOverlayPackageUpgrading(packageName, userId); } else { mImpl.onTargetPackageUpgrading(packageName, userId); } } } } } } Loading @@ -421,10 +421,10 @@ public final class OverlayManagerService extends SystemService { false); false); if (pi != null) { if (pi != null) { mPackageManager.cachePackageInfo(packageName, userId, pi); mPackageManager.cachePackageInfo(packageName, userId, pi); if (!isOverlayPackage(pi)) { if (pi.isOverlayPackage()) { mImpl.onTargetPackageUpgraded(packageName, userId); } else { mImpl.onOverlayPackageUpgraded(packageName, userId); mImpl.onOverlayPackageUpgraded(packageName, userId); } else { mImpl.onTargetPackageUpgraded(packageName, userId); } } } } } } Loading @@ -437,10 +437,10 @@ public final class OverlayManagerService extends SystemService { synchronized (mLock) { synchronized (mLock) { mPackageManager.forgetPackageInfo(packageName, userId); mPackageManager.forgetPackageInfo(packageName, userId); final OverlayInfo oi = mImpl.getOverlayInfo(packageName, userId); final OverlayInfo oi = mImpl.getOverlayInfo(packageName, userId); if (oi == null) { if (oi != null) { mImpl.onTargetPackageRemoved(packageName, userId); } else { mImpl.onOverlayPackageRemoved(packageName, userId); mImpl.onOverlayPackageRemoved(packageName, userId); } else { mImpl.onTargetPackageRemoved(packageName, userId); } } } } } } Loading Loading @@ -668,10 +668,6 @@ public final class OverlayManagerService extends SystemService { } } }; }; private boolean isOverlayPackage(@NonNull final PackageInfo pi) { return pi != null && pi.overlayTarget != null; } private final class OverlayChangeListener private final class OverlayChangeListener implements OverlayManagerServiceImpl.OverlayChangeListener { implements OverlayManagerServiceImpl.OverlayChangeListener { @Override @Override Loading
services/core/java/com/android/server/om/OverlayManagerServiceImpl.java +9 −8 Original line number Original line Diff line number Diff line Loading @@ -102,11 +102,11 @@ final class OverlayManagerServiceImpl { mSettings.init(overlayPackage.packageName, newUserId, mSettings.init(overlayPackage.packageName, newUserId, overlayPackage.overlayTarget, overlayPackage.overlayTarget, overlayPackage.applicationInfo.getBaseCodePath(), overlayPackage.applicationInfo.getBaseCodePath(), overlayPackage.isStaticOverlay, overlayPackage.overlayPriority); overlayPackage.isStaticOverlayPackage(), overlayPackage.overlayPriority); if (oi == null) { if (oi == null) { // This overlay does not exist in our settings. // This overlay does not exist in our settings. if (overlayPackage.isStaticOverlay || if (overlayPackage.isStaticOverlayPackage() || mDefaultOverlays.contains(overlayPackage.packageName)) { mDefaultOverlays.contains(overlayPackage.packageName)) { // Enable this overlay by default. // Enable this overlay by default. if (DEBUG) { if (DEBUG) { Loading Loading @@ -255,8 +255,8 @@ final class OverlayManagerServiceImpl { mPackageManager.getPackageInfo(overlayPackage.overlayTarget, userId); mPackageManager.getPackageInfo(overlayPackage.overlayTarget, userId); mSettings.init(packageName, userId, overlayPackage.overlayTarget, mSettings.init(packageName, userId, overlayPackage.overlayTarget, overlayPackage.applicationInfo.getBaseCodePath(), overlayPackage.isStaticOverlay, overlayPackage.applicationInfo.getBaseCodePath(), overlayPackage.overlayPriority); overlayPackage.isStaticOverlayPackage(), overlayPackage.overlayPriority); try { try { if (updateState(targetPackage, overlayPackage, userId)) { if (updateState(targetPackage, overlayPackage, userId)) { mListener.onOverlaysChanged(overlayPackage.overlayTarget, userId); mListener.onOverlaysChanged(overlayPackage.overlayTarget, userId); Loading Loading @@ -313,7 +313,7 @@ final class OverlayManagerServiceImpl { } } // Ignore static overlays. // Ignore static overlays. if (overlayPackage.isStaticOverlay) { if (overlayPackage.isStaticOverlayPackage()) { return false; return false; } } Loading Loading @@ -363,7 +363,7 @@ final class OverlayManagerServiceImpl { continue; continue; } } if (disabledOverlayPackageInfo.isStaticOverlay) { if (disabledOverlayPackageInfo.isStaticOverlayPackage()) { // Don't touch static overlays. // Don't touch static overlays. continue; continue; } } Loading @@ -388,7 +388,7 @@ final class OverlayManagerServiceImpl { private boolean isPackageUpdatableOverlay(@NonNull final String packageName, final int userId) { private boolean isPackageUpdatableOverlay(@NonNull final String packageName, final int userId) { final PackageInfo overlayPackage = mPackageManager.getPackageInfo(packageName, userId); final PackageInfo overlayPackage = mPackageManager.getPackageInfo(packageName, userId); if (overlayPackage == null || overlayPackage.isStaticOverlay) { if (overlayPackage == null || overlayPackage.isStaticOverlayPackage()) { return false; return false; } } return true; return true; Loading Loading @@ -483,7 +483,8 @@ final class OverlayManagerServiceImpl { throws OverlayManagerSettings.BadKeyException { throws OverlayManagerSettings.BadKeyException { // Static RROs targeting to "android", ie framework-res.apk, are handled by native layers. // Static RROs targeting to "android", ie framework-res.apk, are handled by native layers. if (targetPackage != null && if (targetPackage != null && !("android".equals(targetPackage.packageName) && overlayPackage.isStaticOverlay)) { !("android".equals(targetPackage.packageName) && overlayPackage.isStaticOverlayPackage())) { mIdmapManager.createIdmap(targetPackage, overlayPackage, userId); mIdmapManager.createIdmap(targetPackage, overlayPackage, userId); } } Loading