summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Todd Kennedy <toddke@google.com> 2016-01-05 15:17:57 -0800
committer Todd Kennedy <toddke@google.com> 2016-01-11 16:21:03 -0800
commit12705131b95d5d6bcfae79d7991ff3e6f02457e4 (patch)
tree49075f5f7d46b3d8bb72aae6edfaa4692764b261
parentf55ed12fd128961db0ab02d9884bda9721cc1e66 (diff)
Hide ephemerality
Change-Id: Ibf60366b3f00b1920e330cd804bcc1c550f8882a Bug: 26404647
-rw-r--r--api/current.txt8
-rw-r--r--api/system-current.txt8
-rw-r--r--api/test-current.txt8
-rw-r--r--core/java/android/content/pm/PackageManager.java8
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java25
-rw-r--r--test-runner/src/android/test/mock/MockPackageManager.java4
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;