diff options
author | 2016-01-05 15:17:57 -0800 | |
---|---|---|
committer | 2016-01-11 16:21:03 -0800 | |
commit | 12705131b95d5d6bcfae79d7991ff3e6f02457e4 (patch) | |
tree | 49075f5f7d46b3d8bb72aae6edfaa4692764b261 | |
parent | f55ed12fd128961db0ab02d9884bda9721cc1e66 (diff) |
Hide ephemerality
Change-Id: Ibf60366b3f00b1920e330cd804bcc1c550f8882a
Bug: 26404647
-rw-r--r-- | api/current.txt | 8 | ||||
-rw-r--r-- | api/system-current.txt | 8 | ||||
-rw-r--r-- | api/test-current.txt | 8 | ||||
-rw-r--r-- | core/java/android/content/pm/PackageManager.java | 8 | ||||
-rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 25 | ||||
-rw-r--r-- | test-runner/src/android/test/mock/MockPackageManager.java | 4 |
6 files changed, 37 insertions, 24 deletions
diff --git a/api/current.txt b/api/current.txt index b748a8970e0c..b0eb006e5b5a 100644 --- a/api/current.txt +++ b/api/current.txt @@ -9488,8 +9488,6 @@ package android.content.pm { method public abstract int getComponentEnabledSetting(android.content.ComponentName); method public abstract android.graphics.drawable.Drawable getDefaultActivityIcon(); method public abstract android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); - method public abstract byte[] getEphemeralCookie(); - method public abstract int getEphemeralCookieMaxSizeBytes(); method public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public abstract java.lang.String getInstallerPackageName(java.lang.String); @@ -9523,7 +9521,6 @@ package android.content.pm { method public abstract java.lang.CharSequence getUserBadgedLabel(java.lang.CharSequence, android.os.UserHandle); method public abstract android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo); method public abstract boolean hasSystemFeature(java.lang.String); - method public abstract boolean isEphemeralApplication(); method public abstract boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String); method public abstract boolean isSafeMode(); method public abstract java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(android.content.Intent, int); @@ -9541,7 +9538,6 @@ package android.content.pm { method public abstract android.content.pm.ResolveInfo resolveService(android.content.Intent, int); method public abstract void setApplicationEnabledSetting(java.lang.String, int, int); method public abstract void setComponentEnabledSetting(android.content.ComponentName, int, int); - method public abstract boolean setEphemeralCookie(byte[]); method public abstract void setInstallerPackageName(java.lang.String, java.lang.String); method public abstract void verifyPendingInstall(int, int); field public static final int COMPONENT_ENABLED_STATE_DEFAULT = 0; // 0x0 @@ -36841,8 +36837,6 @@ package android.test.mock { method public int getComponentEnabledSetting(android.content.ComponentName); method public android.graphics.drawable.Drawable getDefaultActivityIcon(); method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); - method public byte[] getEphemeralCookie(); - method public int getEphemeralCookieMaxSizeBytes(); method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public java.lang.String getInstallerPackageName(java.lang.String); @@ -36875,7 +36869,6 @@ package android.test.mock { method public java.lang.CharSequence getUserBadgedLabel(java.lang.CharSequence, android.os.UserHandle); method public android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo); method public boolean hasSystemFeature(java.lang.String); - method public boolean isEphemeralApplication(); method public boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String); method public boolean isSafeMode(); method public java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(android.content.Intent, int); @@ -36893,7 +36886,6 @@ package android.test.mock { method public android.content.pm.ResolveInfo resolveService(android.content.Intent, int); method public void setApplicationEnabledSetting(java.lang.String, int, int); method public void setComponentEnabledSetting(android.content.ComponentName, int, int); - method public boolean setEphemeralCookie(byte[]); method public void setInstallerPackageName(java.lang.String, java.lang.String); method public void verifyPendingInstall(int, int); } diff --git a/api/system-current.txt b/api/system-current.txt index f7a6841b3223..bd7dc9742a5a 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -9790,8 +9790,6 @@ package android.content.pm { method public abstract int getComponentEnabledSetting(android.content.ComponentName); method public abstract android.graphics.drawable.Drawable getDefaultActivityIcon(); method public abstract android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); - method public abstract byte[] getEphemeralCookie(); - method public abstract int getEphemeralCookieMaxSizeBytes(); method public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public abstract java.lang.String getInstallerPackageName(java.lang.String); @@ -9827,7 +9825,6 @@ package android.content.pm { method public abstract android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo); method public abstract void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public abstract boolean hasSystemFeature(java.lang.String); - method public abstract boolean isEphemeralApplication(); method public abstract boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String); method public abstract boolean isSafeMode(); method public abstract java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(android.content.Intent, int); @@ -9847,7 +9844,6 @@ package android.content.pm { method public abstract void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public abstract void setApplicationEnabledSetting(java.lang.String, int, int); method public abstract void setComponentEnabledSetting(android.content.ComponentName, int, int); - method public abstract boolean setEphemeralCookie(byte[]); method public abstract void setInstallerPackageName(java.lang.String, java.lang.String); method public abstract void updatePermissionFlags(java.lang.String, java.lang.String, int, int, android.os.UserHandle); method public abstract void verifyIntentFilter(int, int, java.util.List<java.lang.String>); @@ -39184,8 +39180,6 @@ package android.test.mock { method public int getComponentEnabledSetting(android.content.ComponentName); method public android.graphics.drawable.Drawable getDefaultActivityIcon(); method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); - method public byte[] getEphemeralCookie(); - method public int getEphemeralCookieMaxSizeBytes(); method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public java.lang.String getInstallerPackageName(java.lang.String); @@ -39220,7 +39214,6 @@ package android.test.mock { method public android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo); method public void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public boolean hasSystemFeature(java.lang.String); - method public boolean isEphemeralApplication(); method public boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String); method public boolean isSafeMode(); method public java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(android.content.Intent, int); @@ -39240,7 +39233,6 @@ package android.test.mock { method public void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public void setApplicationEnabledSetting(java.lang.String, int, int); method public void setComponentEnabledSetting(android.content.ComponentName, int, int); - method public boolean setEphemeralCookie(byte[]); method public void setInstallerPackageName(java.lang.String, java.lang.String); method public void updatePermissionFlags(java.lang.String, java.lang.String, int, int, android.os.UserHandle); method public void verifyIntentFilter(int, int, java.util.List<java.lang.String>); diff --git a/api/test-current.txt b/api/test-current.txt index 1e044ba14eb7..13d98f49b0e8 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -9496,8 +9496,6 @@ package android.content.pm { method public abstract android.graphics.drawable.Drawable getDefaultActivityIcon(); method public abstract java.lang.String getDefaultBrowserPackageNameAsUser(int); method public abstract android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); - method public abstract byte[] getEphemeralCookie(); - method public abstract int getEphemeralCookieMaxSizeBytes(); method public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public abstract java.lang.String getInstallerPackageName(java.lang.String); @@ -9531,7 +9529,6 @@ package android.content.pm { method public abstract java.lang.CharSequence getUserBadgedLabel(java.lang.CharSequence, android.os.UserHandle); method public abstract android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo); method public abstract boolean hasSystemFeature(java.lang.String); - method public abstract boolean isEphemeralApplication(); method public abstract boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String); method public abstract boolean isSafeMode(); method public abstract java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(android.content.Intent, int); @@ -9549,7 +9546,6 @@ package android.content.pm { method public abstract android.content.pm.ResolveInfo resolveService(android.content.Intent, int); method public abstract void setApplicationEnabledSetting(java.lang.String, int, int); method public abstract void setComponentEnabledSetting(android.content.ComponentName, int, int); - method public abstract boolean setEphemeralCookie(byte[]); method public abstract void setInstallerPackageName(java.lang.String, java.lang.String); method public abstract void verifyPendingInstall(int, int); field public static final int COMPONENT_ENABLED_STATE_DEFAULT = 0; // 0x0 @@ -36857,8 +36853,6 @@ package android.test.mock { method public android.graphics.drawable.Drawable getDefaultActivityIcon(); method public java.lang.String getDefaultBrowserPackageNameAsUser(int); method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); - method public byte[] getEphemeralCookie(); - method public int getEphemeralCookieMaxSizeBytes(); method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplications(int); method public java.util.List<android.content.pm.PackageInfo> getInstalledPackages(int); method public java.lang.String getInstallerPackageName(java.lang.String); @@ -36891,7 +36885,6 @@ package android.test.mock { method public java.lang.CharSequence getUserBadgedLabel(java.lang.CharSequence, android.os.UserHandle); method public android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo); method public boolean hasSystemFeature(java.lang.String); - method public boolean isEphemeralApplication(); method public boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String); method public boolean isSafeMode(); method public java.util.List<android.content.pm.ResolveInfo> queryBroadcastReceivers(android.content.Intent, int); @@ -36909,7 +36902,6 @@ package android.test.mock { method public android.content.pm.ResolveInfo resolveService(android.content.Intent, int); method public void setApplicationEnabledSetting(java.lang.String, int, int); method public void setComponentEnabledSetting(android.content.ComponentName, int, int); - method public boolean setEphemeralCookie(byte[]); method public void setInstallerPackageName(java.lang.String, java.lang.String); method public void verifyPendingInstall(int, int); } diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index f41928ebe9d7..38abac7e741b 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -3258,6 +3258,8 @@ public abstract class PackageManager { * @see #setEphemeralCookie(byte[]) * @see #getEphemeralCookie() * @see #getEphemeralCookieMaxSizeBytes() + * + * @hide */ public abstract boolean isEphemeralApplication(); @@ -3270,6 +3272,8 @@ public abstract class PackageManager { * @see #isEphemeralApplication() * @see #setEphemeralCookie(byte[]) * @see #getEphemeralCookie() + * + * @hide */ public abstract int getEphemeralCookieMaxSizeBytes(); @@ -3286,6 +3290,8 @@ public abstract class PackageManager { * @see #isEphemeralApplication() * @see #setEphemeralCookie(byte[]) * @see #getEphemeralCookieMaxSizeBytes() + * + * @hide */ public abstract @NonNull byte[] getEphemeralCookie(); @@ -3304,6 +3310,8 @@ public abstract class PackageManager { * @see #isEphemeralApplication() * @see #getEphemeralCookieMaxSizeBytes() * @see #getEphemeralCookie() + * + * @hide */ public abstract boolean setEphemeralCookie(@NonNull byte[] cookie); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 870ae892d435..41627fd58f01 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -318,6 +318,8 @@ public class PackageManagerService extends IPackageManager.Stub { static final boolean CLEAR_RUNTIME_PERMISSIONS_ON_UPGRADE = false; + private static final boolean DISABLE_EPHEMERAL_APPS = true; + private static final int RADIO_UID = Process.PHONE_UID; private static final int LOG_UID = Process.LOG_UID; private static final int NFC_UID = Process.NFC_UID; @@ -4469,6 +4471,9 @@ public class PackageManagerService extends IPackageManager.Stub { private boolean isEphemeralAllowed( Intent intent, List<ResolveInfo> resolvedActivites, int userId) { // Short circuit and return early if possible. + if (DISABLE_EPHEMERAL_APPS) { + return false; + } final int callingUser = UserHandle.getCallingUserId(); if (callingUser != UserHandle.USER_SYSTEM) { return false; @@ -5803,6 +5808,10 @@ public class PackageManagerService extends IPackageManager.Stub { @Override public ParceledListSlice<EphemeralApplicationInfo> getEphemeralApplications(int userId) { + if (DISABLE_EPHEMERAL_APPS) { + return null; + } + mContext.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_EPHEMERAL_APPS, "getEphemeralApplications"); enforceCrossUserPermission(Binder.getCallingUid(), userId, true, false, @@ -5821,6 +5830,10 @@ public class PackageManagerService extends IPackageManager.Stub { public boolean isEphemeralApplication(String packageName, int userId) { enforceCrossUserPermission(Binder.getCallingUid(), userId, true, false, "isEphemeral"); + if (DISABLE_EPHEMERAL_APPS) { + return false; + } + if (!isCallerSameApp(packageName)) { return false; } @@ -5835,6 +5848,10 @@ public class PackageManagerService extends IPackageManager.Stub { @Override public byte[] getEphemeralApplicationCookie(String packageName, int userId) { + if (DISABLE_EPHEMERAL_APPS) { + return null; + } + enforceCrossUserPermission(Binder.getCallingUid(), userId, true, false, "getCookie"); if (!isCallerSameApp(packageName)) { @@ -5848,6 +5865,10 @@ public class PackageManagerService extends IPackageManager.Stub { @Override public boolean setEphemeralApplicationCookie(String packageName, byte[] cookie, int userId) { + if (DISABLE_EPHEMERAL_APPS) { + return true; + } + enforceCrossUserPermission(Binder.getCallingUid(), userId, true, false, "setCookie"); if (!isCallerSameApp(packageName)) { @@ -5861,6 +5882,10 @@ public class PackageManagerService extends IPackageManager.Stub { @Override public Bitmap getEphemeralApplicationIcon(String packageName, int userId) { + if (DISABLE_EPHEMERAL_APPS) { + return null; + } + mContext.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_EPHEMERAL_APPS, "getEphemeralApplicationIcon"); enforceCrossUserPermission(Binder.getCallingUid(), userId, true, false, diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java index 01583f56ef73..81aa6c6eec3c 100644 --- a/test-runner/src/android/test/mock/MockPackageManager.java +++ b/test-runner/src/android/test/mock/MockPackageManager.java @@ -322,21 +322,25 @@ public class MockPackageManager extends PackageManager { throw new UnsupportedOperationException(); } + /** @hide */ @Override public byte[] getEphemeralCookie() { return new byte[0]; } + /** @hide */ @Override public boolean isEphemeralApplication() { return false; } + /** @hide */ @Override public int getEphemeralCookieMaxSizeBytes() { return 0; } + /** @hide */ @Override public boolean setEphemeralCookie(@NonNull byte[] cookie) { return false; |