diff options
| author | 2020-03-20 21:04:15 +0000 | |
|---|---|---|
| committer | 2020-03-20 21:04:15 +0000 | |
| commit | 2ecaeeba03b38f9921aa70061888d859f45e4d13 (patch) | |
| tree | a005e2acf01783e17dbdb8ef8083a59cd2307d47 | |
| parent | 119bf8f7722fe31d74cc75b89f3fd3633fda7047 (diff) | |
| parent | 8a6002477d2e7c18354f0113b48ca182a93c7b45 (diff) | |
Merge "Change dynamic MIME feature accodring to API review" into rvc-dev
| -rw-r--r-- | api/current.txt | 3 | ||||
| -rw-r--r-- | core/java/android/app/ApplicationPackageManager.java | 17 | ||||
| -rw-r--r-- | core/java/android/content/pm/IPackageManager.aidl | 2 | ||||
| -rw-r--r-- | core/java/android/content/pm/PackageManager.java | 30 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 9 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageSetting.java | 17 |
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); } |