summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java54
-rw-r--r--java/com/android/dialer/calllog/observer/MarkDirtyObserver.java (renamed from java/com/android/dialer/phonelookup/blockednumber/MarkDirtyObserver.java)13
-rw-r--r--java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java1
-rw-r--r--java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java1
4 files changed, 20 insertions, 49 deletions
diff --git a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
index e9f7c00bf..6daa5e757 100644
--- a/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
+++ b/java/com/android/dialer/calllog/datasources/systemcalllog/SystemCallLogDataSource.java
@@ -20,13 +20,10 @@ import android.Manifest.permission;
import android.annotation.TargetApi;
import android.content.ContentValues;
import android.content.Context;
-import android.database.ContentObserver;
import android.database.Cursor;
-import android.net.Uri;
import android.os.Build;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
-import android.os.Handler;
import android.provider.CallLog;
import android.provider.CallLog.Calls;
import android.provider.VoicemailContract;
@@ -47,12 +44,11 @@ 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.calllog.observer.MarkDirtyObserver;
import com.android.dialer.calllogutils.PhoneAccountUtils;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
-import com.android.dialer.common.concurrent.ThreadUtil;
import com.android.dialer.compat.android.provider.VoicemailCompat;
import com.android.dialer.phonenumberproto.DialerPhoneNumberUtil;
import com.android.dialer.storage.StorageComponent;
@@ -80,16 +76,16 @@ public class SystemCallLogDataSource implements CallLogDataSource {
static final String PREF_LAST_TIMESTAMP_PROCESSED = "systemCallLogLastTimestampProcessed";
private final ListeningExecutorService backgroundExecutorService;
- private final RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier;
+ private final MarkDirtyObserver markDirtyObserver;
@Nullable private Long lastTimestampProcessed;
@Inject
SystemCallLogDataSource(
@BackgroundExecutor ListeningExecutorService backgroundExecutorService,
- RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier) {
+ MarkDirtyObserver markDirtyObserver) {
this.backgroundExecutorService = backgroundExecutorService;
- this.refreshAnnotatedCallLogNotifier = refreshAnnotatedCallLogNotifier;
+ this.markDirtyObserver = markDirtyObserver;
}
@MainThread
@@ -105,12 +101,13 @@ public class SystemCallLogDataSource implements CallLogDataSource {
}
// TODO(zachh): Need to somehow register observers if user enables permission after launch?
- CallLogObserver callLogObserver =
- new CallLogObserver(ThreadUtil.getUiThreadHandler(), refreshAnnotatedCallLogNotifier);
-
+ // The system call log has a last updated timestamp, but deletes are physical (the "deleted"
+ // column is unused). This means that we can't detect deletes without scanning the entire 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.
appContext
.getContentResolver()
- .registerContentObserver(CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL, true, callLogObserver);
+ .registerContentObserver(CallLog.Calls.CONTENT_URI_WITH_VOICEMAIL, true, markDirtyObserver);
if (!PermissionsUtil.hasAddVoicemailPermissions(appContext)) {
LogUtil.i("SystemCallLogDataSource.registerContentObservers", "no add voicemail permissions");
@@ -119,7 +116,7 @@ public class SystemCallLogDataSource implements CallLogDataSource {
// TODO(uabdullah): Need to somehow register observers if user enables permission after launch?
appContext
.getContentResolver()
- .registerContentObserver(VoicemailContract.Status.CONTENT_URI, true, callLogObserver);
+ .registerContentObserver(VoicemailContract.Status.CONTENT_URI, true, markDirtyObserver);
}
@Override
@@ -527,35 +524,4 @@ public class SystemCallLogDataSource implements CallLogDataSource {
}
return ids;
}
-
- // TODO(a bug): Consider replacing it with MarkDirtyObserver.
- private static class CallLogObserver extends ContentObserver {
- private final RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier;
-
- CallLogObserver(
- Handler handler, RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier) {
- super(handler);
- this.refreshAnnotatedCallLogNotifier = refreshAnnotatedCallLogNotifier;
- }
-
- @MainThread
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- Assert.isMainThread();
- LogUtil.i(
- "SystemCallLogDataSource.CallLogObserver.onChange",
- "Uri:%s, SelfChange:%b",
- String.valueOf(uri),
- selfChange);
- super.onChange(selfChange, uri);
-
- /*
- * The system call log has a last updated timestamp, but deletes are physical (the "deleted"
- * column is unused). This means that we can't detect deletes without scanning the entire
- * 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.
- */
- refreshAnnotatedCallLogNotifier.markDirtyAndNotify();
- }
- }
}
diff --git a/java/com/android/dialer/phonelookup/blockednumber/MarkDirtyObserver.java b/java/com/android/dialer/calllog/observer/MarkDirtyObserver.java
index 9f72ba48b..8ab1974bc 100644
--- a/java/com/android/dialer/phonelookup/blockednumber/MarkDirtyObserver.java
+++ b/java/com/android/dialer/calllog/observer/MarkDirtyObserver.java
@@ -14,11 +14,12 @@
* limitations under the License
*/
-package com.android.dialer.phonelookup.blockednumber;
+package com.android.dialer.calllog.observer;
import android.database.ContentObserver;
import android.net.Uri;
import android.support.annotation.MainThread;
+import android.support.annotation.VisibleForTesting;
import com.android.dialer.calllog.notifier.RefreshAnnotatedCallLogNotifier;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
@@ -29,13 +30,13 @@ import javax.inject.Inject;
* Mark the annotated call log as dirty and notify that a refresh is in order when the content
* changes.
*/
-// TODO(a bug): Consider making this class available to all data sources and PhoneLookups.
-class MarkDirtyObserver extends ContentObserver {
+public final class MarkDirtyObserver extends ContentObserver {
private final RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier;
+ @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
@Inject
- MarkDirtyObserver(RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier) {
+ public MarkDirtyObserver(RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier) {
super(ThreadUtil.getUiThreadHandler());
this.refreshAnnotatedCallLogNotifier = refreshAnnotatedCallLogNotifier;
}
@@ -44,7 +45,9 @@ class MarkDirtyObserver extends ContentObserver {
@Override
public void onChange(boolean selfChange, Uri uri) {
Assert.isMainThread();
- LogUtil.enterBlock("SystemBlockedNumberPhoneLookup.FilteredNumberObserver.onChange");
+ LogUtil.i(
+ "MarkDirtyObserver.onChange", "Uri:%s, SelfChange:%b", String.valueOf(uri), selfChange);
+
refreshAnnotatedCallLogNotifier.markDirtyAndNotify();
}
}
diff --git a/java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java b/java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java
index 2d019c8c2..b6b02e135 100644
--- a/java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java
@@ -22,6 +22,7 @@ import android.support.annotation.WorkerThread;
import android.util.ArraySet;
import com.android.dialer.DialerPhoneNumber;
import com.android.dialer.blocking.FilteredNumberCompat;
+import com.android.dialer.calllog.observer.MarkDirtyObserver;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;
diff --git a/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java b/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java
index f35b3e131..d791e9b9e 100644
--- a/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java
+++ b/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java
@@ -27,6 +27,7 @@ import android.support.annotation.WorkerThread;
import android.util.ArraySet;
import com.android.dialer.DialerPhoneNumber;
import com.android.dialer.blocking.FilteredNumberCompat;
+import com.android.dialer.calllog.observer.MarkDirtyObserver;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor;