Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90649404 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revoke the uri permission when the file is deleted" into oc-mr1-dev

parents 79062d79 42c44f36
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -87,6 +87,14 @@ public abstract class FileSystemProvider extends DocumentsProvider {

    protected abstract Uri buildNotificationUri(String docId);

    /**
     * Callback indicating that the given document has been deleted or moved. This gives
     * the provider a hook to revoke the uri permissions.
     */
    protected void onDocIdDeleted(String docId) {
        // Default is no-op
    }

    @Override
    public boolean onCreate() {
        throw new UnsupportedOperationException(
@@ -221,6 +229,7 @@ public abstract class FileSystemProvider extends DocumentsProvider {
        }

        final String afterDocId = getDocIdForFile(after);
        onDocIdDeleted(docId);
        moveInMediaStore(visibleFileBefore, getFileForDocId(afterDocId, true));

        if (!TextUtils.equals(docId, afterDocId)) {
@@ -246,6 +255,7 @@ public abstract class FileSystemProvider extends DocumentsProvider {
        }

        final String docId = getDocIdForFile(after);
        onDocIdDeleted(sourceDocumentId);
        moveInMediaStore(visibleFileBefore, getFileForDocId(docId, true));

        return docId;
@@ -295,6 +305,7 @@ public abstract class FileSystemProvider extends DocumentsProvider {
            throw new IllegalStateException("Failed to delete " + file);
        }

        onDocIdDeleted(docId);
        removeFromMediaStore(visibleFile, isDirectory);
    }

+6 −0
Original line number Diff line number Diff line
@@ -384,6 +384,12 @@ public class ExternalStorageProvider extends FileSystemProvider {
        return DocumentsContract.buildChildDocumentsUri(AUTHORITY, docId);
    }

    @Override
    protected void onDocIdDeleted(String docId) {
        Uri uri = DocumentsContract.buildDocumentUri(AUTHORITY, docId);
        getContext().revokeUriPermission(uri, ~0);
    }

    @Override
    public Cursor queryRoots(String[] projection) throws FileNotFoundException {
        final MatrixCursor result = new MatrixCursor(resolveRootProjection(projection));