summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Taras Antoshchuk <tantoshchuk@google.com> 2020-03-20 21:04:15 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-03-20 21:04:15 +0000
commit2ecaeeba03b38f9921aa70061888d859f45e4d13 (patch)
treea005e2acf01783e17dbdb8ef8083a59cd2307d47
parent119bf8f7722fe31d74cc75b89f3fd3633fda7047 (diff)
parent8a6002477d2e7c18354f0113b48ca182a93c7b45 (diff)
Merge "Change dynamic MIME feature accodring to API review" into rvc-dev
-rw-r--r--api/current.txt3
-rw-r--r--core/java/android/app/ApplicationPackageManager.java17
-rw-r--r--core/java/android/content/pm/IPackageManager.aidl2
-rw-r--r--core/java/android/content/pm/PackageManager.java30
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java9
-rw-r--r--services/core/java/com/android/server/pm/PackageSetting.java17
6 files changed, 22 insertions, 56 deletions
diff --git a/api/current.txt b/api/current.txt
index b98ab5533ae3..377ecddc6064 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -11970,7 +11970,6 @@ package android.content.pm {
method @CheckResult public abstract int checkSignatures(@NonNull String, @NonNull String);
method @CheckResult public abstract int checkSignatures(int, int);
method public abstract void clearInstantAppCookie();
- method public void clearMimeGroup(@NonNull String);
method @Deprecated public abstract void clearPackagePreferredActivities(@NonNull String);
method public abstract String[] currentToCanonicalPackageNames(@NonNull String[]);
method public abstract void extendVerificationTimeout(int, int, long);
@@ -12006,7 +12005,7 @@ package android.content.pm {
method @NonNull public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(@NonNull android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException;
method @Nullable public abstract android.content.Intent getLaunchIntentForPackage(@NonNull String);
method @Nullable public abstract android.content.Intent getLeanbackLaunchIntentForPackage(@NonNull String);
- method @Nullable public java.util.Set<java.lang.String> getMimeGroup(@NonNull String);
+ method @NonNull public java.util.Set<java.lang.String> getMimeGroup(@NonNull String);
method @NonNull public android.content.pm.ModuleInfo getModuleInfo(@NonNull String, int) throws android.content.pm.PackageManager.NameNotFoundException;
method @Nullable public abstract String getNameForUid(int);
method @Nullable public android.content.pm.PackageInfo getPackageArchiveInfo(@NonNull String, int);
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index 0b0a803c7dcd..a1ec27b3e9f7 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -3358,31 +3358,20 @@ public class ApplicationPackageManager extends PackageManager {
}
}
- public void setMimeGroup(String mimeGroup, Set<String> mimeTypes) {
- try {
- mPM.setMimeGroup(mContext.getPackageName(), mimeGroup,
- new ArrayList<String>(mimeTypes));
- } catch (RemoteException e) {
- throw e.rethrowAsRuntimeException();
- }
- }
-
@Override
- public void clearMimeGroup(String mimeGroup) {
+ public void setMimeGroup(String mimeGroup, Set<String> mimeTypes) {
try {
- mPM.clearMimeGroup(mContext.getPackageName(), mimeGroup);
+ mPM.setMimeGroup(mContext.getPackageName(), mimeGroup, new ArrayList<>(mimeTypes));
} catch (RemoteException e) {
throw e.rethrowAsRuntimeException();
}
}
+ @NonNull
@Override
public Set<String> getMimeGroup(String group) {
try {
List<String> mimeGroup = mPM.getMimeGroup(mContext.getPackageName(), group);
- if (mimeGroup == null) {
- return null;
- }
return new ArraySet<>(mimeGroup);
} catch (RemoteException e) {
throw e.rethrowAsRuntimeException();
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index b52034f637a4..5bad055810cc 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -743,8 +743,6 @@ interface IPackageManager {
void setMimeGroup(String packageName, String group, in List<String> mimeTypes);
- void clearMimeGroup(String packageName, String group);
-
List<String> getMimeGroup(String packageName, String group);
boolean isAutoRevokeWhitelisted(String packageName);
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 2c7902239854..03b99ed7ffc4 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -7894,10 +7894,14 @@ public abstract class PackageManager {
}
/**
- * Sets MIME group's MIME types
+ * Sets MIME group's MIME types.
*
- * @param mimeGroup MIME group to modify
- * @param mimeTypes new MIME types contained by MIME group
+ * Libraries should use a reverse-DNS prefix followed by a ':' character and library-specific
+ * group name to avoid namespace collisions, e.g. "com.example:myFeature".
+ *
+ * @param mimeGroup MIME group to modify.
+ * @param mimeTypes new MIME types contained by MIME group.
+ * @throws IllegalArgumentException if the MIME group was not declared in the manifest.
*/
public void setMimeGroup(@NonNull String mimeGroup, @NonNull Set<String> mimeTypes) {
throw new UnsupportedOperationException(
@@ -7905,22 +7909,16 @@ public abstract class PackageManager {
}
/**
- * Clears MIME group by removing all MIME types from it
+ * Gets all MIME types contained by MIME group.
*
- * @param mimeGroup MIME group to clear
- */
- public void clearMimeGroup(@NonNull String mimeGroup) {
- throw new UnsupportedOperationException(
- "clearMimeGroup not implemented in subclass");
- }
-
- /**
- * Gets all MIME types that MIME group contains
+ * Libraries should use a reverse-DNS prefix followed by a ':' character and library-specific
+ * group name to avoid namespace collisions, e.g. "com.example:myFeature".
*
- * @return MIME types contained by the MIME group,
- * or null if the MIME group was not declared in the manifest.
+ * @param mimeGroup MIME group to retrieve.
+ * @return MIME types contained by the MIME group.
+ * @throws IllegalArgumentException if the MIME group was not declared in the manifest.
*/
- @Nullable
+ @NonNull
public Set<String> getMimeGroup(@NonNull String mimeGroup) {
throw new UnsupportedOperationException(
"getMimeGroup not implemented in subclass");
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 89e245cd8568..b79f75a2d335 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -24660,15 +24660,6 @@ public class PackageManagerService extends IPackageManager.Stub
}
@Override
- public void clearMimeGroup(String packageName, String mimeGroup) {
- boolean changed = mSettings.mPackages.get(packageName).clearMimeGroup(mimeGroup);
-
- if (changed) {
- applyMimeGroupChanges(packageName, mimeGroup);
- }
- }
-
- @Override
public List<String> getMimeGroup(String packageName, String mimeGroup) {
return mSettings.mPackages.get(packageName).getMimeGroup(mimeGroup);
}
diff --git a/services/core/java/com/android/server/pm/PackageSetting.java b/services/core/java/com/android/server/pm/PackageSetting.java
index a83a8476b8db..9a8692d029e0 100644
--- a/services/core/java/com/android/server/pm/PackageSetting.java
+++ b/services/core/java/com/android/server/pm/PackageSetting.java
@@ -241,7 +241,8 @@ public class PackageSetting extends PackageSettingBase {
public boolean setMimeGroup(String mimeGroup, List<String> mimeTypes) {
ArraySet<String> oldMimeTypes = getMimeGroupInternal(mimeGroup);
if (oldMimeTypes == null) {
- return false;
+ throw new IllegalArgumentException("Unknown MIME group " + mimeGroup
+ + " for package " + name);
}
ArraySet<String> newMimeTypes = new ArraySet<>(mimeTypes);
@@ -250,21 +251,11 @@ public class PackageSetting extends PackageSettingBase {
return hasChanges;
}
- public boolean clearMimeGroup(String mimeGroup) {
- ArraySet<String> mimeTypes = getMimeGroupInternal(mimeGroup);
-
- if (mimeTypes == null || mimeTypes.isEmpty()) {
- return false;
- }
-
- mimeTypes.clear();
- return true;
- }
-
public List<String> getMimeGroup(String mimeGroup) {
ArraySet<String> mimeTypes = getMimeGroupInternal(mimeGroup);
if (mimeTypes == null) {
- return null;
+ throw new IllegalArgumentException("Unknown MIME group " + mimeGroup
+ + " for package " + name);
}
return new ArrayList<>(mimeTypes);
}