diff options
author | Makoto Onuki <omakoto@google.com> | 2017-03-03 11:31:25 -0800 |
---|---|---|
committer | Makoto Onuki <omakoto@google.com> | 2017-03-03 11:40:43 -0800 |
commit | 3d09b483349d1436d8264243995d7d78f9021aa1 (patch) | |
tree | 6bc0fe2cfbefcecee28cd1ed86b581e57b065221 /src | |
parent | 88ce4c3299e915feebdf7fab788d091ccd2701d6 (diff) | |
download | CalendarProvider-3d09b483349d1436d8264243995d7d78f9021aa1.tar.gz |
Clean up CalendarProvider2
- Set RESULT_OK in the receiver properly.
- Don't create the provider instance in static; use a proper API for that.
Bug: 35938801
Test: adb shell am instrument -w com.android.providers.calendar.tests
Change-Id: I34eada3d9f14e9688c6af9899b4c69c367e1f6b1
Diffstat (limited to 'src')
5 files changed, 32 insertions, 20 deletions
diff --git a/src/com/android/providers/calendar/CalendarAlarmManager.java b/src/com/android/providers/calendar/CalendarAlarmManager.java index b107bf7..c77b654 100644 --- a/src/com/android/providers/calendar/CalendarAlarmManager.java +++ b/src/com/android/providers/calendar/CalendarAlarmManager.java @@ -30,7 +30,6 @@ import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.os.Build; import android.os.PowerManager; -import android.os.PowerManager.WakeLock; import android.os.SystemClock; import android.provider.CalendarContract; import android.provider.CalendarContract.CalendarAlerts; @@ -146,9 +145,10 @@ public class CalendarAlarmManager { mAlarmLock = new Object(); } - private Intent getCheckNextAlarmIntent(boolean removeAlarms) { + @VisibleForTesting + static Intent getCheckNextAlarmIntent(Context context, boolean removeAlarms) { Intent intent = new Intent(CalendarAlarmManager.ACTION_CHECK_NEXT_ALARM); - intent.setClass(mContext, CalendarProviderBroadcastReceiver.class); + intent.setClass(context, CalendarProviderBroadcastReceiver.class); intent.putExtra(KEY_REMOVE_ALARMS, removeAlarms); return intent; } @@ -171,7 +171,7 @@ public class CalendarAlarmManager { if (Log.isLoggable(CalendarProvider2.TAG, Log.DEBUG)) { Log.d(CalendarProvider2.TAG, "Scheduling check of next Alarm"); } - Intent intent = getCheckNextAlarmIntent(removeAlarms); + Intent intent = getCheckNextAlarmIntent(mContext, removeAlarms); PendingIntent pending = PendingIntent.getBroadcast(mContext, 0 /* ignored */, intent, PendingIntent.FLAG_NO_CREATE); if (pending != null) { @@ -197,7 +197,7 @@ public class CalendarAlarmManager { * @param triggerTimeMillis Time to run the next alarm check, in milliseconds. */ void scheduleNextAlarmCheck(long triggerTimeMillis) { - Intent intent = getCheckNextAlarmIntent(false /* removeAlarms*/); + Intent intent = getCheckNextAlarmIntent(mContext, false /* removeAlarms*/); PendingIntent pending = PendingIntent.getBroadcast( mContext, 0, intent, PendingIntent.FLAG_NO_CREATE); if (pending != null) { @@ -229,8 +229,9 @@ public class CalendarAlarmManager { * @param cp2 */ void runScheduleNextAlarm(boolean removeAlarms, CalendarProvider2 cp2) { - SQLiteDatabase db = cp2.mDb; + SQLiteDatabase db = cp2.getWritableDatabase(); if (db == null) { + Log.wtf(CalendarProvider2.TAG, "Unable to get the database."); return; } diff --git a/src/com/android/providers/calendar/CalendarInstancesHelper.java b/src/com/android/providers/calendar/CalendarInstancesHelper.java index 19b1faa..1ab5a01 100644 --- a/src/com/android/providers/calendar/CalendarInstancesHelper.java +++ b/src/com/android/providers/calendar/CalendarInstancesHelper.java @@ -58,9 +58,9 @@ public class CalendarInstancesHelper { } private static final String TAG = "CalInstances"; - private CalendarDatabaseHelper mDbHelper; - private MetaData mMetaData; - private CalendarCache mCalendarCache; + private final CalendarDatabaseHelper mDbHelper; + private final MetaData mMetaData; + private final CalendarCache mCalendarCache; private static final String SQL_WHERE_GET_EVENTS_ENTRIES = "((" + Events.DTSTART + " <= ? AND " diff --git a/src/com/android/providers/calendar/CalendarProvider2.java b/src/com/android/providers/calendar/CalendarProvider2.java index 08fe756..55e8c6d 100644 --- a/src/com/android/providers/calendar/CalendarProvider2.java +++ b/src/com/android/providers/calendar/CalendarProvider2.java @@ -39,8 +39,6 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteQueryBuilder; import android.net.Uri; import android.os.Binder; -import android.os.Handler; -import android.os.Message; import android.os.Process; import android.os.SystemClock; import android.provider.BaseColumns; @@ -444,8 +442,6 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun private Context mContext; private ContentResolver mContentResolver; - private static CalendarProvider2 mInstance; - @VisibleForTesting protected CalendarAlarmManager mCalendarAlarm; @@ -478,10 +474,6 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun return CalendarDatabaseHelper.getInstance(context); } - protected static CalendarProvider2 getInstance() { - return mInstance; - } - @Override public void shutdown() { if (mDbHelper != null) { @@ -506,8 +498,6 @@ public class CalendarProvider2 extends SQLiteContentProvider implements OnAccoun } private boolean initialize() { - mInstance = this; - mContext = getContext(); mContentResolver = mContext.getContentResolver(); diff --git a/src/com/android/providers/calendar/CalendarProviderBroadcastReceiver.java b/src/com/android/providers/calendar/CalendarProviderBroadcastReceiver.java index 187f6e8..10c76c0 100644 --- a/src/com/android/providers/calendar/CalendarProviderBroadcastReceiver.java +++ b/src/com/android/providers/calendar/CalendarProviderBroadcastReceiver.java @@ -18,10 +18,13 @@ package com.android.providers.calendar; import android.app.Activity; import android.content.BroadcastReceiver; +import android.content.ContentProvider; import android.content.Context; +import android.content.IContentProvider; import android.content.Intent; import android.provider.CalendarContract; import android.util.Log; +import android.util.Slog; public class CalendarProviderBroadcastReceiver extends BroadcastReceiver { private static final String TAG = CalendarProvider2.TAG; @@ -38,7 +41,16 @@ public class CalendarProviderBroadcastReceiver extends BroadcastReceiver { if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "Received intent: " + intent); } - final CalendarProvider2 provider = CalendarProvider2.getInstance(); + final IContentProvider iprovider = + context.getContentResolver().acquireProvider(CalendarContract.AUTHORITY); + final ContentProvider cprovider = ContentProvider.coerceToLocalContentProvider(iprovider); + + if (!(cprovider instanceof CalendarProvider2)) { + Slog.wtf(TAG, "CalendarProvider2 not found in CalendarProviderBroadcastReceiver."); + return; + } + + final CalendarProvider2 provider = (CalendarProvider2) cprovider; final PendingResult result = goAsync(); @@ -53,6 +65,7 @@ public class CalendarProviderBroadcastReceiver extends BroadcastReceiver { Log.d(TAG, "Next alarm set."); } + result.setResultCode(Activity.RESULT_OK); result.finish(); }).start(); diff --git a/src/com/android/providers/calendar/SQLiteContentProvider.java b/src/com/android/providers/calendar/SQLiteContentProvider.java index 53fc7e7..0b18ff4 100644 --- a/src/com/android/providers/calendar/SQLiteContentProvider.java +++ b/src/com/android/providers/calendar/SQLiteContentProvider.java @@ -329,4 +329,12 @@ public abstract class SQLiteContentProvider extends ContentProvider mOriginalCallingUid.set(null); } } + + SQLiteDatabase getReadableDatabase() { + return mOpenHelper != null ? mOpenHelper.getReadableDatabase() : null; + } + + SQLiteDatabase getWritableDatabase() { + return mOpenHelper != null ? mOpenHelper.getWritableDatabase() : null; + } } |