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

Commit 328ebf22 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Support persistable Uri permission grants.

When granting a Uri permission with new PERSIST_GRANT_URI_PERMISSION
flag, persist that grant across device reboots until explicitly
revoked.  Adds new persistedModeFlags dimension to UriPermission,
and moves all flag mutation into UriPermission for clarity.  Adds
flag documentation.  Only inflate HashSet as needed.

Write persisted grants into XML file, saving based on source and
target package name and user handle.  Sanity check grants when
parsing.

Wipe all grants from/to a package when uninstalled, and wipe any
transient grants when a package or user is force stopped.

Persistable grants are always considered "needed."

Change-Id: I3f001571b498fd607456a1257a6383f904d19497
parent 60113556
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -6251,6 +6251,7 @@ package android.content {
    field public static final int FLAG_GRANT_READ_URI_PERMISSION = 1; // 0x1
    field public static final int FLAG_GRANT_WRITE_URI_PERMISSION = 2; // 0x2
    field public static final int FLAG_INCLUDE_STOPPED_PACKAGES = 32; // 0x20
    field public static final int FLAG_PERSIST_GRANT_URI_PERMISSION = 64; // 0x40
    field public static final int FLAG_RECEIVER_FOREGROUND = 268435456; // 0x10000000
    field public static final int FLAG_RECEIVER_REGISTERED_ONLY = 1073741824; // 0x40000000
    field public static final int FLAG_RECEIVER_REPLACE_PENDING = 536870912; // 0x20000000
+1 −1
Original line number Diff line number Diff line
@@ -2443,7 +2443,7 @@ public abstract class Context {
     * Remove all permissions to access a particular content provider Uri
     * that were previously added with {@link #grantUriPermission}.  The given
     * Uri will match all previously granted Uris that are the same or a
     * sub-path of the given Uri.  That is, revoking "content://foo/one" will
     * sub-path of the given Uri.  That is, revoking "content://foo/target" will
     * revoke both "content://foo/target" and "content://foo/target/sub", but not
     * "content://foo".
     *
+11 −1
Original line number Diff line number Diff line
@@ -3227,6 +3227,15 @@ public class Intent implements Parcelable, Cloneable {
     */
    public static final int FLAG_INCLUDE_STOPPED_PACKAGES = 0x00000020;

    /**
     * When combined with {@link #FLAG_GRANT_READ_URI_PERMISSION} and/or
     * {@link #FLAG_GRANT_WRITE_URI_PERMISSION}, the grant will be remembered
     * until explicitly revoked with
     * {@link Context#revokeUriPermission(Uri, int)}. These grants persist
     * across device reboots.
     */
    public static final int FLAG_PERSIST_GRANT_URI_PERMISSION = 0x00000040;

    /**
     * If set, the new activity is not kept in the history stack.  As soon as
     * the user navigates away from it, the activity is finished.  This may also
@@ -7016,7 +7025,8 @@ public class Intent implements Parcelable, Cloneable {
                    // and flags to ourselves to grant.
                    setClipData(target.getClipData());
                    addFlags(target.getFlags()
                            & (FLAG_GRANT_READ_URI_PERMISSION | FLAG_GRANT_WRITE_URI_PERMISSION));
                            & (FLAG_GRANT_READ_URI_PERMISSION | FLAG_GRANT_WRITE_URI_PERMISSION
                                    | FLAG_PERSIST_GRANT_URI_PERMISSION));
                    return true;
                } else {
                    return false;
+4 −0
Original line number Diff line number Diff line
@@ -68,6 +68,10 @@ public class IndentingPrintWriter extends PrintWriter {
        print(key + "=" + String.valueOf(value) + " ");
    }

    public void printHexPair(String key, int value) {
        print(key + "=0x" + Integer.toHexString(value) + " ");
    }

    @Override
    public void write(char[] buf, int offset, int count) {
        final int indentLength = mIndentBuilder.length();
+286 −97

File changed.

Preview size limit exceeded, changes collapsed.

Loading