diff options
author | Jeff Sharkey <jsharkey@android.com> | 2013-09-20 14:30:59 -0700 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2013-09-25 15:16:41 -0700 |
commit | e66c1778f80f4b18e29e018eca3a338f125f23b9 (patch) | |
tree | d3dac08442ebac90e41d660a04111195eaa3df35 /api/current.txt | |
parent | d7fdcad22683e6191e92141a7e45e2414fe40a44 (diff) | |
download | frameworks_base-e66c1778f80f4b18e29e018eca3a338f125f23b9.zip frameworks_base-e66c1778f80f4b18e29e018eca3a338f125f23b9.tar.gz frameworks_base-e66c1778f80f4b18e29e018eca3a338f125f23b9.tar.bz2 |
Require that persistable Uri permissions be taken.
Change our Intent flag to indicate that a Uri permission grant is
persistable, but don't actually persist it until explicitly taken by
the receiving app. This prevents apps from spamming each other if
persisted permissions aren't really required.
Remember the last time a persisted grant was taken by an app, and
use this to prune away the oldest grants when the number of grants
grows too large. Allow apps to query persisted grants they are
holding, and allow them to release previously persisted grants. Add
public UriPermission class to return grant details and timestamp.
Track various permission strengths separately, and combine together
after each mutation pass. Persistable grants are currently treated
like global grants, but they could be moved to have owners in the
future. Require that grant holders trying to extend a persistable
permission actually hold a persistable permission themselves.
Bug: 10835779
Change-Id: I95b2f797c04ce7fd2612f9a644685dbd44e03759
Diffstat (limited to 'api/current.txt')
-rw-r--r-- | api/current.txt | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/api/current.txt b/api/current.txt index a603b77..5362fdf 100644 --- a/api/current.txt +++ b/api/current.txt @@ -5744,11 +5744,10 @@ package android.content { method public final int delete(android.net.Uri, java.lang.String, java.lang.String[]); method public static deprecated android.content.SyncInfo getCurrentSync(); method public static java.util.List<android.content.SyncInfo> getCurrentSyncs(); - method public android.net.Uri[] getIncomingUriPermissionGrants(int, int); method public static int getIsSyncable(android.accounts.Account, java.lang.String); method public static boolean getMasterSyncAutomatically(); - method public android.net.Uri[] getOutgoingUriPermissionGrants(int, int); method public static java.util.List<android.content.PeriodicSync> getPeriodicSyncs(android.accounts.Account, java.lang.String); + method public java.util.List<android.content.UriPermission> getPersistedUriPermissions(); method public java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String); method public static android.content.SyncAdapterType[] getSyncAdapterTypes(); method public static boolean getSyncAutomatically(android.accounts.Account, java.lang.String); @@ -5770,6 +5769,7 @@ package android.content { method public final android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String); method public final android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal); method public final void registerContentObserver(android.net.Uri, boolean, android.database.ContentObserver); + method public void releasePersistableUriPermission(android.net.Uri, int); method public static void removePeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle); method public static void removeStatusChangeListener(java.lang.Object); method public static void requestSync(android.accounts.Account, java.lang.String, android.os.Bundle); @@ -5778,6 +5778,7 @@ package android.content { method public static void setMasterSyncAutomatically(boolean); method public static void setSyncAutomatically(android.accounts.Account, java.lang.String, boolean); method public deprecated void startSync(android.net.Uri, android.os.Bundle); + method public void takePersistableUriPermission(android.net.Uri, int); method public final android.net.Uri uncanonicalize(android.net.Uri); method public final void unregisterContentObserver(android.database.ContentObserver); method public final int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]); @@ -6515,10 +6516,10 @@ package android.content { field public static final int FLAG_DEBUG_LOG_RESOLUTION = 8; // 0x8 field public static final int FLAG_EXCLUDE_STOPPED_PACKAGES = 16; // 0x10 field public static final int FLAG_FROM_BACKGROUND = 4; // 0x4 + field public static final int FLAG_GRANT_PERSISTABLE_URI_PERMISSION = 64; // 0x40 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_NO_ABORT = 134217728; // 0x8000000 field public static final int FLAG_RECEIVER_REGISTERED_ONLY = 1073741824; // 0x40000000 @@ -6911,6 +6912,17 @@ package android.content { field public static final int NO_MATCH = -1; // 0xffffffff } + public final class UriPermission implements android.os.Parcelable { + method public int describeContents(); + method public long getPersistedTime(); + method public android.net.Uri getUri(); + method public boolean isReadPermission(); + method public boolean isWritePermission(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator CREATOR; + field public static final long INVALID_TIME = -9223372036854775808L; // 0x8000000000000000L + } + } package android.content.pm { @@ -20954,7 +20966,6 @@ package android.provider { method public static boolean deleteDocument(android.content.ContentResolver, android.net.Uri); method public static java.lang.String getDocumentId(android.net.Uri); method public static android.graphics.Bitmap getDocumentThumbnail(android.content.ContentResolver, android.net.Uri, android.graphics.Point, android.os.CancellationSignal); - method public static android.net.Uri[] getOpenDocuments(android.content.Context); method public static java.lang.String getRootId(android.net.Uri); method public static java.lang.String getSearchDocumentsQuery(android.net.Uri); field public static final java.lang.String EXTRA_ERROR = "error"; |