summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/calllog/datasources
diff options
context:
space:
mode:
authorlinyuh <linyuh@google.com>2018-02-20 12:46:54 -0800
committerEric Erfanian <erfanian@google.com>2018-02-22 21:08:26 +0000
commit43c978b616363bcd364693dde24209384b264319 (patch)
tree937f001e840973720fa567970b013fff03af2291 /java/com/android/dialer/calllog/datasources
parente2bf3e9d45aa8c1a6dbf39212f7ba32cbbd53185 (diff)
Use a broadcast receiver to refresh the annotated call log.
Bug: 73347270 Test: Existing tests + RefreshAnnotatedCallLogNotifierTest PiperOrigin-RevId: 186347066 Change-Id: I5a530416bdaa9edc7131a0d5ced44f1b5ee1692b
Diffstat (limited to 'java/com/android/dialer/calllog/datasources')
-rw-r--r--java/com/android/dialer/calllog/datasources/CallLogDataSource.java11
-rw-r--r--java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java18
-rw-r--r--java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java23
3 files changed, 17 insertions, 35 deletions
diff --git a/java/com/android/dialer/calllog/datasources/CallLogDataSource.java b/java/com/android/dialer/calllog/datasources/CallLogDataSource.java
index 60654a81a..dbed1d81c 100644
--- a/java/com/android/dialer/calllog/datasources/CallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/CallLogDataSource.java
@@ -104,14 +104,5 @@ public interface CallLogDataSource {
ContentValues coalesce(List<ContentValues> individualRowsSortedByTimestampDesc);
@MainThread
- void registerContentObservers(
- Context appContext, ContentObserverCallbacks contentObserverCallbacks);
-
- /**
- * Methods which may optionally be called as a result of a data source's content observer firing.
- */
- interface ContentObserverCallbacks {
- @MainThread
- void markDirtyAndNotify(Context appContext);
- }
+ void registerContentObservers(Context appContext);
}
diff --git a/java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java b/java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java
index 8dec43759..40788f42a 100644
--- a/java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/phonelookup/PhoneLookupDataSource.java
@@ -61,8 +61,7 @@ import javax.inject.Inject;
* Responsible for maintaining the columns in the annotated call log which are derived from phone
* numbers.
*/
-public final class PhoneLookupDataSource
- implements CallLogDataSource, PhoneLookup.ContentObserverCallbacks {
+public final class PhoneLookupDataSource implements CallLogDataSource {
private final PhoneLookup<PhoneLookupInfo> phoneLookup;
private final ListeningExecutorService backgroundExecutorService;
@@ -85,8 +84,6 @@ public final class PhoneLookupDataSource
*/
private final Set<String> phoneLookupHistoryRowsToDelete = new ArraySet<>();
- private CallLogDataSource.ContentObserverCallbacks dataSourceContentObserverCallbacks;
-
@Inject
PhoneLookupDataSource(
PhoneLookup<PhoneLookupInfo> phoneLookup,
@@ -288,17 +285,8 @@ public final class PhoneLookupDataSource
@MainThread
@Override
- public void registerContentObservers(
- Context appContext, CallLogDataSource.ContentObserverCallbacks contentObserverCallbacks) {
- dataSourceContentObserverCallbacks = contentObserverCallbacks;
- phoneLookup.registerContentObservers(appContext, this);
- }
-
- @MainThread
- @Override
- public void markDirtyAndNotify(Context appContext) {
- Assert.isMainThread();
- dataSourceContentObserverCallbacks.markDirtyAndNotify(appContext);
+ public void registerContentObservers(Context appContext) {
+ phoneLookup.registerContentObservers(appContext);
}
private static ImmutableSet<DialerPhoneNumber>
diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
index ee484d95e..e9f7c00bf 100644
--- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -47,6 +47,7 @@ import com.android.dialer.calllog.database.contract.AnnotatedCallLogContract.Ann
import com.android.dialer.calllog.datasources.CallLogDataSource;
import com.android.dialer.calllog.datasources.CallLogMutations;
import com.android.dialer.calllog.datasources.util.RowCombiner;
+import com.android.dialer.calllog.notifier.RefreshAnnotatedCallLogNotifier;
import com.android.dialer.calllogutils.PhoneAccountUtils;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
@@ -79,18 +80,21 @@ public class SystemCallLogDataSource implements CallLogDataSource {
static final String PREF_LAST_TIMESTAMP_PROCESSED = "systemCallLogLastTimestampProcessed";
private final ListeningExecutorService backgroundExecutorService;
+ private final RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier;
@Nullable private Long lastTimestampProcessed;
@Inject
- SystemCallLogDataSource(@BackgroundExecutor ListeningExecutorService backgroundExecutorService) {
+ SystemCallLogDataSource(
+ @BackgroundExecutor ListeningExecutorService backgroundExecutorService,
+ RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier) {
this.backgroundExecutorService = backgroundExecutorService;
+ this.refreshAnnotatedCallLogNotifier = refreshAnnotatedCallLogNotifier;
}
@MainThread
@Override
- public void registerContentObservers(
- Context appContext, ContentObserverCallbacks contentObserverCallbacks) {
+ public void registerContentObservers(Context appContext) {
Assert.isMainThread();
LogUtil.enterBlock("SystemCallLogDataSource.registerContentObservers");
@@ -102,7 +106,7 @@ public class SystemCallLogDataSource implements CallLogDataSource {
// TODO(zachh): Need to somehow register observers if user enables permission after launch?
CallLogObserver callLogObserver =
- new CallLogObserver(ThreadUtil.getUiThreadHandler(), appContext, contentObserverCallbacks);
+ new CallLogObserver(ThreadUtil.getUiThreadHandler(), refreshAnnotatedCallLogNotifier);
appContext
.getContentResolver()
@@ -524,15 +528,14 @@ public class SystemCallLogDataSource implements CallLogDataSource {
return ids;
}
+ // TODO(a bug): Consider replacing it with MarkDirtyObserver.
private static class CallLogObserver extends ContentObserver {
- private final Context appContext;
- private final ContentObserverCallbacks contentObserverCallbacks;
+ private final RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier;
CallLogObserver(
- Handler handler, Context appContext, ContentObserverCallbacks contentObserverCallbacks) {
+ Handler handler, RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier) {
super(handler);
- this.appContext = appContext;
- this.contentObserverCallbacks = contentObserverCallbacks;
+ this.refreshAnnotatedCallLogNotifier = refreshAnnotatedCallLogNotifier;
}
@MainThread
@@ -552,7 +555,7 @@ public class SystemCallLogDataSource implements CallLogDataSource {
* table, which would be too slow. So, we just rely on content observers to trigger rebuilds
* when any change is made to the system call log.
*/
- contentObserverCallbacks.markDirtyAndNotify(appContext);
+ refreshAnnotatedCallLogNotifier.markDirtyAndNotify();
}
}
}