summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/IUriGrantsManager.aidl5
-rw-r--r--core/java/android/content/ContentResolver.java18
-rw-r--r--core/java/android/provider/Downloads.java2
-rw-r--r--services/art-profile2
-rw-r--r--services/core/java/com/android/server/uri/UriGrantsManagerService.java12
5 files changed, 27 insertions, 12 deletions
diff --git a/core/java/android/app/IUriGrantsManager.aidl b/core/java/android/app/IUriGrantsManager.aidl
index 928c627d3f46..9e7f2fecfea0 100644
--- a/core/java/android/app/IUriGrantsManager.aidl
+++ b/core/java/android/app/IUriGrantsManager.aidl
@@ -31,11 +31,12 @@ interface IUriGrantsManager {
in Uri uri, int mode, int sourceUserId, int targetUserId);
/**
* Gets the URI permissions granted to an arbitrary package (or all packages if null)
- * NOTE: this is different from getPersistedUriPermissions(), which returns the URIs the package
+ * NOTE: this is different from getUriPermissions(), which returns the URIs the package
* granted to another packages (instead of those granted to it).
*/
ParceledListSlice getGrantedUriPermissions(in String packageName, int userId);
/** Clears the URI permissions granted to an arbitrary package. */
void clearGrantedUriPermissions(in String packageName, int userId);
- ParceledListSlice getPersistedUriPermissions(in String packageName, boolean incoming);
+ ParceledListSlice getUriPermissions(in String packageName, boolean incoming,
+ boolean persistedOnly);
}
diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java
index 2c5860ac8775..0a1bc85202ff 100644
--- a/core/java/android/content/ContentResolver.java
+++ b/core/java/android/content/ContentResolver.java
@@ -2482,8 +2482,8 @@ public abstract class ContentResolver implements ContentInterface {
*/
public @NonNull List<UriPermission> getPersistedUriPermissions() {
try {
- return UriGrantsManager.getService()
- .getPersistedUriPermissions(mPackageName, true).getList();
+ return UriGrantsManager.getService().getUriPermissions(
+ mPackageName, true /* incoming */, true /* persistedOnly */).getList();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2498,8 +2498,18 @@ public abstract class ContentResolver implements ContentInterface {
*/
public @NonNull List<UriPermission> getOutgoingPersistedUriPermissions() {
try {
- return UriGrantsManager.getService()
- .getPersistedUriPermissions(mPackageName, false).getList();
+ return UriGrantsManager.getService().getUriPermissions(
+ mPackageName, false /* incoming */, true /* persistedOnly */).getList();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /** @hide */
+ public @NonNull List<UriPermission> getOutgoingUriPermissions() {
+ try {
+ return UriGrantsManager.getService().getUriPermissions(
+ mPackageName, false /* incoming */, false /* persistedOnly */).getList();
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/provider/Downloads.java b/core/java/android/provider/Downloads.java
index d507447c45fa..9a384c6d9d79 100644
--- a/core/java/android/provider/Downloads.java
+++ b/core/java/android/provider/Downloads.java
@@ -849,6 +849,8 @@ public final class Downloads {
public static final String CALL_MEDIASTORE_DOWNLOADS_DELETED = "mediastore_downloads_deleted";
/** @hide */
public static final String CALL_CREATE_EXTERNAL_PUBLIC_DIR = "create_external_public_dir";
+ /** @hide */
+ public static final String CALL_REVOKE_MEDIASTORE_URI_PERMS = "revoke_mediastore_uri_perms";
/** @hide */
public static final String EXTRA_IDS = "ids";
diff --git a/services/art-profile b/services/art-profile
index cf0f13cec21b..a9d5982d0d90 100644
--- a/services/art-profile
+++ b/services/art-profile
@@ -13532,7 +13532,7 @@ HSPLcom/android/server/uri/UriGrantsManagerService;->checkHoldingPermissionsInte
HSPLcom/android/server/uri/UriGrantsManagerService;->checkUriPermission(Lcom/android/server/uri/GrantUri;II)Z
HSPLcom/android/server/uri/UriGrantsManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
HSPLcom/android/server/uri/UriGrantsManagerService;->findOrCreateUriPermission(Ljava/lang/String;Ljava/lang/String;ILcom/android/server/uri/GrantUri;)Lcom/android/server/uri/UriPermission;
-PLcom/android/server/uri/UriGrantsManagerService;->getPersistedUriPermissions(Ljava/lang/String;Z)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/uri/UriGrantsManagerService;->getPersistedUriPermissions(Ljava/lang/String;ZZ)Landroid/content/pm/ParceledListSlice;
HSPLcom/android/server/uri/UriGrantsManagerService;->getProviderInfo(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
HSPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermission(ILjava/lang/String;Lcom/android/server/uri/GrantUri;ILcom/android/server/uri/UriPermissionOwner;I)V
HSPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionFromIntent(ILjava/lang/String;Landroid/content/Intent;Lcom/android/server/uri/UriPermissionOwner;I)V
diff --git a/services/core/java/com/android/server/uri/UriGrantsManagerService.java b/services/core/java/com/android/server/uri/UriGrantsManagerService.java
index 332df956d0fb..8b332d271a3a 100644
--- a/services/core/java/com/android/server/uri/UriGrantsManagerService.java
+++ b/services/core/java/com/android/server/uri/UriGrantsManagerService.java
@@ -211,9 +211,9 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub {
}
@Override
- public ParceledListSlice<android.content.UriPermission> getPersistedUriPermissions(
- String packageName, boolean incoming) {
- enforceNotIsolatedCaller("getPersistedUriPermissions");
+ public ParceledListSlice<android.content.UriPermission> getUriPermissions(
+ String packageName, boolean incoming, boolean persistedOnly) {
+ enforceNotIsolatedCaller("getUriPermissions");
Preconditions.checkNotNull(packageName, "packageName");
final int callingUid = Binder.getCallingUid();
@@ -240,7 +240,8 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub {
} else {
for (int j = 0; j < perms.size(); j++) {
final UriPermission perm = perms.valueAt(j);
- if (packageName.equals(perm.targetPkg) && perm.persistedModeFlags != 0) {
+ if (packageName.equals(perm.targetPkg)
+ && (!persistedOnly || perm.persistedModeFlags != 0)) {
result.add(perm.buildPersistedPublicApiObject());
}
}
@@ -252,7 +253,8 @@ public class UriGrantsManagerService extends IUriGrantsManager.Stub {
mGrantedUriPermissions.valueAt(i);
for (int j = 0; j < perms.size(); j++) {
final UriPermission perm = perms.valueAt(j);
- if (packageName.equals(perm.sourcePkg) && perm.persistedModeFlags != 0) {
+ if (packageName.equals(perm.sourcePkg)
+ && (!persistedOnly || perm.persistedModeFlags != 0)) {
result.add(perm.buildPersistedPublicApiObject());
}
}