diff options
-rw-r--r-- | src/com/android/providers/tv/TvProvider.java | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/src/com/android/providers/tv/TvProvider.java b/src/com/android/providers/tv/TvProvider.java index 95bbb66..b396e59 100644 --- a/src/com/android/providers/tv/TvProvider.java +++ b/src/com/android/providers/tv/TvProvider.java @@ -81,7 +81,7 @@ public class TvProvider extends ContentProvider { private static final String OP_UPDATE = "update"; private static final String OP_DELETE = "delete"; - private static final int DATABASE_VERSION = 25; + private static final int DATABASE_VERSION = 26; private static final String DATABASE_NAME = "tv.db"; private static final String CHANNELS_TABLE = "channels"; private static final String PROGRAMS_TABLE = "programs"; @@ -168,6 +168,16 @@ public class TvProvider extends ContentProvider { CHANNELS_TABLE + "." + Channels.COLUMN_SEARCHABLE); sChannelProjectionMap.put(Channels.COLUMN_LOCKED, CHANNELS_TABLE + "." + Channels.COLUMN_LOCKED); + sChannelProjectionMap.put(Channels.COLUMN_APP_LINK_ICON_URI, + CHANNELS_TABLE + "." + Channels.COLUMN_APP_LINK_ICON_URI); + sChannelProjectionMap.put(Channels.COLUMN_APP_LINK_POSTER_ART_URI, + CHANNELS_TABLE + "." + Channels.COLUMN_APP_LINK_POSTER_ART_URI); + sChannelProjectionMap.put(Channels.COLUMN_APP_LINK_TEXT, + CHANNELS_TABLE + "." + Channels.COLUMN_APP_LINK_TEXT); + sChannelProjectionMap.put(Channels.COLUMN_APP_LINK_COLOR, + CHANNELS_TABLE + "." + Channels.COLUMN_APP_LINK_COLOR); + sChannelProjectionMap.put(Channels.COLUMN_APP_LINK_INTENT_URI, + CHANNELS_TABLE + "." + Channels.COLUMN_APP_LINK_INTENT_URI); sChannelProjectionMap.put(Channels.COLUMN_INTERNAL_PROVIDER_DATA, CHANNELS_TABLE + "." + Channels.COLUMN_INTERNAL_PROVIDER_DATA); sChannelProjectionMap.put(Channels.COLUMN_INTERNAL_PROVIDER_FLAG1, @@ -205,6 +215,7 @@ public class TvProvider extends ContentProvider { sProgramProjectionMap.put(Programs.COLUMN_CONTENT_RATING, Programs.COLUMN_CONTENT_RATING); sProgramProjectionMap.put(Programs.COLUMN_POSTER_ART_URI, Programs.COLUMN_POSTER_ART_URI); sProgramProjectionMap.put(Programs.COLUMN_THUMBNAIL_URI, Programs.COLUMN_THUMBNAIL_URI); + sProgramProjectionMap.put(Programs.COLUMN_SEARCHABLE, Programs.COLUMN_SEARCHABLE); sProgramProjectionMap.put(Programs.COLUMN_INTERNAL_PROVIDER_DATA, Programs.COLUMN_INTERNAL_PROVIDER_DATA); sProgramProjectionMap.put(Programs.COLUMN_INTERNAL_PROVIDER_FLAG1, @@ -284,6 +295,11 @@ public class TvProvider extends ContentProvider { + Channels.COLUMN_BROWSABLE + " INTEGER NOT NULL DEFAULT 0," + Channels.COLUMN_SEARCHABLE + " INTEGER NOT NULL DEFAULT 1," + Channels.COLUMN_LOCKED + " INTEGER NOT NULL DEFAULT 0," + + Channels.COLUMN_APP_LINK_ICON_URI + " TEXT," + + Channels.COLUMN_APP_LINK_POSTER_ART_URI + " TEXT," + + Channels.COLUMN_APP_LINK_TEXT + " TEXT," + + Channels.COLUMN_APP_LINK_COLOR + " INTEGER," + + Channels.COLUMN_APP_LINK_INTENT_URI + " TEXT," + Channels.COLUMN_INTERNAL_PROVIDER_DATA + " BLOB," + Channels.COLUMN_INTERNAL_PROVIDER_FLAG1 + " INTEGER," + Channels.COLUMN_INTERNAL_PROVIDER_FLAG2 + " INTEGER," @@ -314,6 +330,7 @@ public class TvProvider extends ContentProvider { + Programs.COLUMN_CONTENT_RATING + " TEXT," + Programs.COLUMN_POSTER_ART_URI + " TEXT," + Programs.COLUMN_THUMBNAIL_URI + " TEXT," + + Programs.COLUMN_SEARCHABLE + " INTEGER NOT NULL DEFAULT 1," + Programs.COLUMN_INTERNAL_PROVIDER_DATA + " BLOB," + Programs.COLUMN_INTERNAL_PROVIDER_FLAG1 + " INTEGER," + Programs.COLUMN_INTERNAL_PROVIDER_FLAG2 + " INTEGER," @@ -395,6 +412,21 @@ public class TvProvider extends ContentProvider { + Programs.COLUMN_INTERNAL_PROVIDER_FLAG3 + " INTEGER;"); db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " + Programs.COLUMN_INTERNAL_PROVIDER_FLAG4 + " INTEGER;"); + oldVersion++; + } + if (oldVersion == 25) { + db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " + + Channels.COLUMN_APP_LINK_ICON_URI + " TEXT;"); + db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " + + Channels.COLUMN_APP_LINK_POSTER_ART_URI + " TEXT;"); + db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " + + Channels.COLUMN_APP_LINK_TEXT + " TEXT;"); + db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " + + Channels.COLUMN_APP_LINK_COLOR + " INTEGER;"); + db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " + + Channels.COLUMN_APP_LINK_INTENT_URI + " TEXT;"); + db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " + + Programs.COLUMN_SEARCHABLE + " INTEGER NOT NULL DEFAULT 1;"); } } } @@ -662,7 +694,14 @@ public class TvProvider extends ContentProvider { if (!TextUtils.isEmpty(selection)) { throw new SecurityException("Selection not allowed for " + uri); } - params.setWhere(BaseTvColumns.COLUMN_PACKAGE_NAME + "=?", getCallingPackage_()); + // Limit the operation only to the data that the calling package owns except for query. + if (operation.equals(OP_QUERY)) { + params.setWhere(BaseTvColumns.COLUMN_PACKAGE_NAME + "=? OR " + + Channels.COLUMN_SEARCHABLE + "=?", getCallingPackage_(), "1"); + + } else { + params.setWhere(BaseTvColumns.COLUMN_PACKAGE_NAME + "=?", getCallingPackage_()); + } } switch (sUriMatcher.match(uri)) { case MATCH_CHANNEL: |