diff options
| author | Garfield Tan <xutan@google.com> | 2017-03-22 12:01:14 -0700 |
|---|---|---|
| committer | Garfield Tan <xutan@google.com> | 2017-03-23 16:41:24 -0700 |
| commit | 8787703ae057b6df3691036d667fab0859be92d9 (patch) | |
| tree | aa4fb7c583782f25f71a58cb9cc9f687658b5ab7 /core/java/android/provider/DocumentsProvider.java | |
| parent | db1b3cfb2fd5bde20e943d01c521747cb43a8bdd (diff) | |
Unhide FLAG_SUPPORT_EJECT and related methods.
Test: Builds and CTS tests pass. Some manual tests as well.
Bug: 36483910
Change-Id: Idd9b1c9d9573222ee12127044ff11b9ab2487f0a
Diffstat (limited to 'core/java/android/provider/DocumentsProvider.java')
| -rw-r--r-- | core/java/android/provider/DocumentsProvider.java | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/core/java/android/provider/DocumentsProvider.java b/core/java/android/provider/DocumentsProvider.java index 620d33a5e915..24c9a6a560f0 100644 --- a/core/java/android/provider/DocumentsProvider.java +++ b/core/java/android/provider/DocumentsProvider.java @@ -629,9 +629,14 @@ public abstract class DocumentsProvider extends ContentProvider { throw new UnsupportedOperationException("Search not supported"); } - /** {@hide} */ + /** + * Ejects the root. Throws {@link IllegalStateException} if ejection failed. + * + * @param rootId the root to be ejected. + * @see Root#FLAG_SUPPORTS_EJECT + */ @SuppressWarnings("unused") - public boolean ejectRoot(String rootId) { + public void ejectRoot(String rootId) { throw new UnsupportedOperationException("Eject not supported"); } @@ -963,14 +968,12 @@ public abstract class DocumentsProvider extends ContentProvider { if (METHOD_EJECT_ROOT.equals(method)) { // Given that certain system apps can hold MOUNT_UNMOUNT permission, but only apps // signed with platform signature can hold MANAGE_DOCUMENTS, we are going to check for - // MANAGE_DOCUMENTS here instead - getContext().enforceCallingPermission( - android.Manifest.permission.MANAGE_DOCUMENTS, null); + // MANAGE_DOCUMENTS or associated URI permission here instead final Uri rootUri = extras.getParcelable(DocumentsContract.EXTRA_URI); - final String rootId = DocumentsContract.getRootId(rootUri); - final boolean ejected = ejectRoot(rootId); + enforceWritePermissionInner(rootUri, getCallingPackage(), null); - out.putBoolean(DocumentsContract.EXTRA_RESULT, ejected); + final String rootId = DocumentsContract.getRootId(rootUri); + ejectRoot(rootId); return out; } |
