Merge "Don't use linked mediastore uris in DownloadProvider operations." into qt-dev

This commit is contained in:
Sudheer Shanka
2019-05-22 02:20:08 +00:00
committed by Android (Google) Code Review
5 changed files with 27 additions and 12 deletions

View File

@@ -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);
}

View File

@@ -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();
}

View File

@@ -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";

View File

@@ -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

View File

@@ -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());
}
}