diff options
author | Keith Cheung <keithcheung@google.com> | 2015-05-20 12:00:28 +0800 |
---|---|---|
committer | Keith Cheung <keithcheung@google.com> | 2015-06-08 10:57:34 +0000 |
commit | 08007188ce3af03ed13e9252febc9b22e1bfe953 (patch) | |
tree | 5717c392429a2deaa0358b9deed9684c94c0c7bc | |
parent | 53b6f267b6d37cc1cc88a5d960dd04ae5970e1ae (diff) | |
download | android_packages_providers_CalendarProvider-08007188ce3af03ed13e9252febc9b22e1bfe953.tar.gz android_packages_providers_CalendarProvider-08007188ce3af03ed13e9252febc9b22e1bfe953.tar.bz2 android_packages_providers_CalendarProvider-08007188ce3af03ed13e9252febc9b22e1bfe953.zip |
fix cursor.getColumnIndex(Calendars.IS_PRIMARY) always returns -1
Bug: 20921928
Change-Id: I8582eaba6031904d5c820203900f32d0f7ff32c0
-rw-r--r-- | src/com/android/providers/calendar/CalendarProvider2.java | 5 | ||||
-rw-r--r-- | tests/src/com/android/providers/calendar/CalendarProvider2Test.java | 45 |
2 files changed, 48 insertions, 2 deletions
diff --git a/src/com/android/providers/calendar/CalendarProvider2.java b/src/com/android/providers/calendar/CalendarProvider2.java index ea2dd38..6e6db3b 100644 --- a/src/com/android/providers/calendar/CalendarProvider2.java +++ b/src/com/android/providers/calendar/CalendarProvider2.java @@ -4697,7 +4697,7 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun /** Contains just BaseColumns._COUNT */ sCountProjectionMap = new HashMap<String, String>(); - sCountProjectionMap.put(BaseColumns._COUNT, "COUNT(*)"); + sCountProjectionMap.put(BaseColumns._COUNT, "COUNT(*) AS " + BaseColumns._COUNT); sColorsProjectionMap = new HashMap<String, String>(); sColorsProjectionMap.put(Colors._ID, Colors._ID); @@ -4729,7 +4729,8 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun sCalendarsProjectionMap.put(Calendars.OWNER_ACCOUNT, Calendars.OWNER_ACCOUNT); sCalendarsProjectionMap.put(Calendars.IS_PRIMARY, "COALESCE(" + Events.IS_PRIMARY + ", " - + Calendars.OWNER_ACCOUNT + " = " + Calendars.ACCOUNT_NAME + ")"); + + Calendars.OWNER_ACCOUNT + " = " + Calendars.ACCOUNT_NAME + ") AS " + + Calendars.IS_PRIMARY); sCalendarsProjectionMap.put(Calendars.CAN_ORGANIZER_RESPOND, Calendars.CAN_ORGANIZER_RESPOND); sCalendarsProjectionMap.put(Calendars.CAN_MODIFY_TIME_ZONE, Calendars.CAN_MODIFY_TIME_ZONE); diff --git a/tests/src/com/android/providers/calendar/CalendarProvider2Test.java b/tests/src/com/android/providers/calendar/CalendarProvider2Test.java index a4c5e35..8694f6f 100644 --- a/tests/src/com/android/providers/calendar/CalendarProvider2Test.java +++ b/tests/src/com/android/providers/calendar/CalendarProvider2Test.java @@ -31,6 +31,7 @@ import android.database.MatrixCursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.net.Uri; +import android.provider.BaseColumns; import android.provider.CalendarContract; import android.provider.CalendarContract.Calendars; import android.provider.CalendarContract.Colors; @@ -3079,4 +3080,48 @@ public class CalendarProvider2Test extends AndroidTestCase { new String[] { Integer.toString(calId1), "Calendar1" }); checkCalendarCount(0); } + + public void testGetColumnIndex_IsPrimary() { + checkCalendarCount(0); + int calendarId0 = insertCal("Calendar0", DEFAULT_TIMEZONE); + + String[] projection = new String[] { + Calendars.ACCOUNT_NAME, + Calendars.CALENDAR_DISPLAY_NAME, + Calendars.OWNER_ACCOUNT, + Calendars.IS_PRIMARY + }; + String selection = "((" + Calendars.ACCOUNT_NAME + " = ? ))"; + String[] selectionArgs = new String[] { + DEFAULT_ACCOUNT + }; + Cursor cursor = mResolver.query(Calendars.CONTENT_URI, projection, selection, selectionArgs, + null); + assertNotNull(cursor); + assertEquals(3, cursor.getColumnIndex(Calendars.IS_PRIMARY)); + cursor.close(); + deleteMatchingCalendars(Calendars._ID + "=" + calendarId0, null /* selectionArgs*/); + checkCalendarCount(0); + } + + public void testGetColumnIndex_Count() { + checkCalendarCount(0); + int calendarId0 = insertCal("Calendar0", DEFAULT_TIMEZONE); + + String[] projection = new String[] { + BaseColumns._COUNT + }; + String selection = "((" + Calendars.ACCOUNT_NAME + " = ? ))"; + String[] selectionArgs = new String[] { + DEFAULT_ACCOUNT + }; + Cursor cursor = mResolver.query(Calendars.CONTENT_URI, projection, selection, selectionArgs, + null); + assertNotNull(cursor); + assertEquals(0, cursor.getColumnIndex(BaseColumns._COUNT)); + cursor.close(); + deleteMatchingCalendars(Calendars._ID + "=" + calendarId0, null /* selectionArgs*/); + checkCalendarCount(0); + } + } |