summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeith Cheung <keithcheung@google.com>2015-05-20 12:00:28 +0800
committerKeith Cheung <keithcheung@google.com>2015-06-08 10:57:34 +0000
commit08007188ce3af03ed13e9252febc9b22e1bfe953 (patch)
tree5717c392429a2deaa0358b9deed9684c94c0c7bc
parent53b6f267b6d37cc1cc88a5d960dd04ae5970e1ae (diff)
downloadandroid_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.java5
-rw-r--r--tests/src/com/android/providers/calendar/CalendarProvider2Test.java45
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);
+ }
+
}