summaryrefslogtreecommitdiffstats
path: root/api/current.txt
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2013-09-20 14:30:59 -0700
committerJeff Sharkey <jsharkey@android.com>2013-09-25 15:16:41 -0700
commite66c1778f80f4b18e29e018eca3a338f125f23b9 (patch)
treed3dac08442ebac90e41d660a04111195eaa3df35 /api/current.txt
parentd7fdcad22683e6191e92141a7e45e2414fe40a44 (diff)
downloadframeworks_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.txt19
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";