summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJae Seo <jaeseo@google.com>2015-06-23 14:43:24 -0700
committerJae Seo <jaeseo@google.com>2015-06-23 14:43:24 -0700
commit006f2e1d624a3d34d1bd26f42d9746083be1802c (patch)
tree2ca60175a65e6d3dbf1820095dfadf6213c5a68c
parentb58138a677e9b08f22339c29743da41c999c25f5 (diff)
downloadTvProvider-006f2e1d624a3d34d1bd26f42d9746083be1802c.tar.gz
Consolidate access control for watched programs
Change-Id: Ib397d836c2ce7acf121cfdcce3c1c609116dd619
-rw-r--r--src/com/android/providers/tv/TvProvider.java13
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);
}