summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMakoto Onuki <omakoto@google.com>2017-03-03 11:31:25 -0800
committerMakoto Onuki <omakoto@google.com>2017-03-03 11:40:43 -0800
commit3d09b483349d1436d8264243995d7d78f9021aa1 (patch)
tree6bc0fe2cfbefcecee28cd1ed86b581e57b065221 /src
parent88ce4c3299e915feebdf7fab788d091ccd2701d6 (diff)
downloadCalendarProvider-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')
-rw-r--r--src/com/android/providers/calendar/CalendarAlarmManager.java13
-rw-r--r--src/com/android/providers/calendar/CalendarInstancesHelper.java6
-rw-r--r--src/com/android/providers/calendar/CalendarProvider2.java10
-rw-r--r--src/com/android/providers/calendar/CalendarProviderBroadcastReceiver.java15
-rw-r--r--src/com/android/providers/calendar/SQLiteContentProvider.java8
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;
+ }
}