diff options
author | Jae Seo <jaeseo@google.com> | 2015-06-23 14:43:24 -0700 |
---|---|---|
committer | Jae Seo <jaeseo@google.com> | 2015-06-23 14:43:24 -0700 |
commit | 006f2e1d624a3d34d1bd26f42d9746083be1802c (patch) | |
tree | 2ca60175a65e6d3dbf1820095dfadf6213c5a68c | |
parent | b58138a677e9b08f22339c29743da41c999c25f5 (diff) | |
download | TvProvider-006f2e1d624a3d34d1bd26f42d9746083be1802c.tar.gz |
Consolidate access control for watched programs
Change-Id: Ib397d836c2ce7acf121cfdcce3c1c609116dd619
-rw-r--r-- | src/com/android/providers/tv/TvProvider.java | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/com/android/providers/tv/TvProvider.java b/src/com/android/providers/tv/TvProvider.java index 734fb93..5aa3446 100644 --- a/src/com/android/providers/tv/TvProvider.java +++ b/src/com/android/providers/tv/TvProvider.java @@ -694,8 +694,13 @@ public class TvProvider extends ContentProvider { private SqlParams createSqlParams(String operation, Uri uri, String selection, String[] selectionArgs) { + int match = sUriMatcher.match(uri); SqlParams params = new SqlParams(null, selection, selectionArgs); - if (!callerHasAccessAllEpgDataPermission()) { + + // Control access to EPG data (excluding watched programs) when the caller doesn't have all + // access. + if (!callerHasAccessAllEpgDataPermission() + && match != MATCH_WATCHED_PROGRAM && match != MATCH_WATCHED_PROGRAM_ID) { if (!TextUtils.isEmpty(selection)) { throw new SecurityException("Selection not allowed for " + uri); } @@ -709,7 +714,8 @@ public class TvProvider extends ContentProvider { params.setWhere(BaseTvColumns.COLUMN_PACKAGE_NAME + "=?", getCallingPackage_()); } } - switch (sUriMatcher.match(uri)) { + + switch (match) { case MATCH_CHANNEL: String genre = uri.getQueryParameter(TvContract.PARAM_CANONICAL_GENRE); if (genre == null) { @@ -786,8 +792,7 @@ public class TvProvider extends ContentProvider { } // fall-through case MATCH_PASSTHROUGH_ID: - throw new UnsupportedOperationException("Cannot " + operation + " that URI: " - + uri); + throw new UnsupportedOperationException(operation + " not permmitted on " + uri); default: throw new IllegalArgumentException("Unknown URI " + uri); } |