diff options
author | linyuh <linyuh@google.com> | 2018-02-20 12:46:54 -0800 |
---|---|---|
committer | Eric Erfanian <erfanian@google.com> | 2018-02-22 21:08:26 +0000 |
commit | 43c978b616363bcd364693dde24209384b264319 (patch) | |
tree | 937f001e840973720fa567970b013fff03af2291 /java/com/android/dialer/phonelookup | |
parent | e2bf3e9d45aa8c1a6dbf39212f7ba32cbbd53185 (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/phonelookup')
8 files changed, 32 insertions, 37 deletions
diff --git a/java/com/android/dialer/phonelookup/PhoneLookup.java b/java/com/android/dialer/phonelookup/PhoneLookup.java index 76ff98e7c..a7974ad10 100644 --- a/java/com/android/dialer/phonelookup/PhoneLookup.java +++ b/java/com/android/dialer/phonelookup/PhoneLookup.java @@ -84,14 +84,5 @@ public interface PhoneLookup<T> { ListenableFuture<Void> onSuccessfulBulkUpdate(); @MainThread - void registerContentObservers( - Context appContext, ContentObserverCallbacks contentObserverCallbacks); - - /** - * Methods which may optionally be called as a result of a phone lookup's content observer firing. - */ - interface ContentObserverCallbacks { - @MainThread - void markDirtyAndNotify(Context appContext); - } + void registerContentObservers(Context appContext); } diff --git a/java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java b/java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java index 2271c7580..2d019c8c2 100644 --- a/java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java +++ b/java/com/android/dialer/phonelookup/blockednumber/DialerBlockedNumberPhoneLookup.java @@ -51,13 +51,16 @@ public final class DialerBlockedNumberPhoneLookup implements PhoneLookup<DialerB private final Context appContext; private final ListeningExecutorService executorService; + private final MarkDirtyObserver markDirtyObserver; @Inject DialerBlockedNumberPhoneLookup( @ApplicationContext Context appContext, - @BackgroundExecutor ListeningExecutorService executorService) { + @BackgroundExecutor ListeningExecutorService executorService, + MarkDirtyObserver markDirtyObserver) { this.appContext = appContext; this.executorService = executorService; + this.markDirtyObserver = markDirtyObserver; } @Override @@ -165,13 +168,12 @@ public final class DialerBlockedNumberPhoneLookup implements PhoneLookup<DialerB } @Override - public void registerContentObservers( - Context appContext, ContentObserverCallbacks contentObserverCallbacks) { + public void registerContentObservers(Context appContext) { appContext .getContentResolver() .registerContentObserver( FilteredNumber.CONTENT_URI, true, // FilteredNumberProvider notifies on the item - new MarkDirtyObserver(appContext, contentObserverCallbacks)); + markDirtyObserver); } } diff --git a/java/com/android/dialer/phonelookup/blockednumber/MarkDirtyObserver.java b/java/com/android/dialer/phonelookup/blockednumber/MarkDirtyObserver.java index 1c41d8f7f..9f72ba48b 100644 --- a/java/com/android/dialer/phonelookup/blockednumber/MarkDirtyObserver.java +++ b/java/com/android/dialer/phonelookup/blockednumber/MarkDirtyObserver.java @@ -16,25 +16,28 @@ package com.android.dialer.phonelookup.blockednumber; -import android.content.Context; import android.database.ContentObserver; import android.net.Uri; import android.support.annotation.MainThread; +import com.android.dialer.calllog.notifier.RefreshAnnotatedCallLogNotifier; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.ThreadUtil; -import com.android.dialer.phonelookup.PhoneLookup.ContentObserverCallbacks; +import javax.inject.Inject; -/** Calls {@link ContentObserverCallbacks#markDirtyAndNotify(Context)} when the content changed */ +/** + * 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 { - private final Context appContext; - private final ContentObserverCallbacks contentObserverCallbacks; + private final RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier; - MarkDirtyObserver(Context appContext, ContentObserverCallbacks contentObserverCallbacks) { + @Inject + MarkDirtyObserver(RefreshAnnotatedCallLogNotifier refreshAnnotatedCallLogNotifier) { super(ThreadUtil.getUiThreadHandler()); - this.appContext = appContext; - this.contentObserverCallbacks = contentObserverCallbacks; + this.refreshAnnotatedCallLogNotifier = refreshAnnotatedCallLogNotifier; } @MainThread @@ -42,6 +45,6 @@ class MarkDirtyObserver extends ContentObserver { public void onChange(boolean selfChange, Uri uri) { Assert.isMainThread(); LogUtil.enterBlock("SystemBlockedNumberPhoneLookup.FilteredNumberObserver.onChange"); - contentObserverCallbacks.markDirtyAndNotify(appContext); + refreshAnnotatedCallLogNotifier.markDirtyAndNotify(); } } diff --git a/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java b/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java index e0ff995e7..f35b3e131 100644 --- a/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java +++ b/java/com/android/dialer/phonelookup/blockednumber/SystemBlockedNumberPhoneLookup.java @@ -54,13 +54,16 @@ public class SystemBlockedNumberPhoneLookup implements PhoneLookup<SystemBlocked private final Context appContext; private final ListeningExecutorService executorService; + private final MarkDirtyObserver markDirtyObserver; @Inject SystemBlockedNumberPhoneLookup( @ApplicationContext Context appContext, - @BackgroundExecutor ListeningExecutorService executorService) { + @BackgroundExecutor ListeningExecutorService executorService, + MarkDirtyObserver markDirtyObserver) { this.appContext = appContext; this.executorService = executorService; + this.markDirtyObserver = markDirtyObserver; } @Override @@ -166,8 +169,7 @@ public class SystemBlockedNumberPhoneLookup implements PhoneLookup<SystemBlocked } @Override - public void registerContentObservers( - Context appContext, ContentObserverCallbacks contentObserverCallbacks) { + public void registerContentObservers(Context appContext) { if (VERSION.SDK_INT < VERSION_CODES.N) { return; } @@ -176,6 +178,6 @@ public class SystemBlockedNumberPhoneLookup implements PhoneLookup<SystemBlocked .registerContentObserver( BlockedNumbers.CONTENT_URI, true, // BlockedNumbers notifies on the item - new MarkDirtyObserver(appContext, contentObserverCallbacks)); + markDirtyObserver); } } diff --git a/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java b/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java index b77a86ca0..abe18f7dc 100644 --- a/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java +++ b/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java @@ -179,10 +179,9 @@ public final class CompositePhoneLookup implements PhoneLookup<PhoneLookupInfo> @Override @MainThread - public void registerContentObservers( - Context appContext, ContentObserverCallbacks contentObserverCallbacks) { + public void registerContentObservers(Context appContext) { for (PhoneLookup phoneLookup : phoneLookups) { - phoneLookup.registerContentObservers(appContext, contentObserverCallbacks); + phoneLookup.registerContentObservers(appContext); } } } diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2LocalPhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2LocalPhoneLookup.java index e051f473c..8db308892 100644 --- a/java/com/android/dialer/phonelookup/cp2/Cp2LocalPhoneLookup.java +++ b/java/com/android/dialer/phonelookup/cp2/Cp2LocalPhoneLookup.java @@ -619,8 +619,7 @@ public final class Cp2LocalPhoneLookup implements PhoneLookup<Cp2Info> { } @Override - public void registerContentObservers( - Context appContext, ContentObserverCallbacks contentObserverCallbacks) { + public void registerContentObservers(Context appContext) { // Do nothing since CP2 changes are too noisy. } diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2RemotePhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2RemotePhoneLookup.java index cc4fbf19f..7efe039eb 100644 --- a/java/com/android/dialer/phonelookup/cp2/Cp2RemotePhoneLookup.java +++ b/java/com/android/dialer/phonelookup/cp2/Cp2RemotePhoneLookup.java @@ -237,8 +237,7 @@ public final class Cp2RemotePhoneLookup implements PhoneLookup<Cp2Info> { } @Override - public void registerContentObservers( - Context appContext, ContentObserverCallbacks contentObserverCallbacks) { + public void registerContentObservers(Context appContext) { // No content observer needed for remote contacts } } diff --git a/java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java b/java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java index 9f0b5cf52..7661a15da 100644 --- a/java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java +++ b/java/com/android/dialer/phonelookup/spam/SpamPhoneLookup.java @@ -152,8 +152,8 @@ public final class SpamPhoneLookup implements PhoneLookup<SpamInfo> { } @Override - public void registerContentObservers( - Context appContext, ContentObserverCallbacks contentObserverCallbacks) { - // No content observer needed for spam info + public void registerContentObservers(Context appContext) { + // No content observer can be registered as Spam is not based on a content provider. + // Each Spam implementation should be responsible for notifying any data changes. } } |