From 0c0c0a318d72e4b6f24514c4c6b3a173e249297d Mon Sep 17 00:00:00 2001 From: zachh Date: Wed, 6 Dec 2017 18:06:06 -0800 Subject: Added bindings for ListeningExecutorServices. Use them where appropriate. Bug: 34672501 Test: existing PiperOrigin-RevId: 178182298 Change-Id: If454225e0d636c7cb14b5af02d46780d7732abf0 --- .../dialer/phonelookup/PhoneLookupModule.java | 9 +++-- .../composite/CompositePhoneLookup.java | 17 +++++++--- .../dialer/phonelookup/cp2/Cp2PhoneLookup.java | 39 ++++++++++++---------- 3 files changed, 40 insertions(+), 25 deletions(-) (limited to 'java/com/android/dialer/phonelookup') diff --git a/java/com/android/dialer/phonelookup/PhoneLookupModule.java b/java/com/android/dialer/phonelookup/PhoneLookupModule.java index 400caff3a..39b0a5083 100644 --- a/java/com/android/dialer/phonelookup/PhoneLookupModule.java +++ b/java/com/android/dialer/phonelookup/PhoneLookupModule.java @@ -27,7 +27,12 @@ import dagger.Provides; public abstract class PhoneLookupModule { @Provides - static PhoneLookup providePhoneLookup(Cp2PhoneLookup cp2PhoneLookup) { - return new CompositePhoneLookup(ImmutableList.of(cp2PhoneLookup)); + static ImmutableList providePhoneLookupList(Cp2PhoneLookup cp2PhoneLookup) { + return ImmutableList.of(cp2PhoneLookup); + } + + @Provides + static PhoneLookup providePhoneLookup(CompositePhoneLookup compositePhoneLookup) { + return compositePhoneLookup; } } diff --git a/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java b/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java index f432e27ae..abc0c74fd 100644 --- a/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java +++ b/java/com/android/dialer/phonelookup/composite/CompositePhoneLookup.java @@ -20,6 +20,7 @@ import android.support.annotation.NonNull; import android.telecom.Call; import com.android.dialer.DialerPhoneNumber; import com.android.dialer.common.LogUtil; +import com.android.dialer.common.concurrent.Annotations.LightweightExecutor; import com.android.dialer.common.concurrent.DialerFutures; import com.android.dialer.phonelookup.PhoneLookup; import com.android.dialer.phonelookup.PhoneLookupInfo; @@ -29,9 +30,10 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.MoreExecutors; +import com.google.common.util.concurrent.ListeningExecutorService; import java.util.ArrayList; import java.util.List; +import javax.inject.Inject; /** * {@link PhoneLookup} which delegates to a configured set of {@link PhoneLookup PhoneLookups}, @@ -40,9 +42,14 @@ import java.util.List; public final class CompositePhoneLookup implements PhoneLookup { private final ImmutableList phoneLookups; + private final ListeningExecutorService lightweightExecutorService; - public CompositePhoneLookup(ImmutableList phoneLookups) { + @Inject + CompositePhoneLookup( + ImmutableList phoneLookups, + @LightweightExecutor ListeningExecutorService lightweightExecutorService) { this.phoneLookups = phoneLookups; + this.lightweightExecutorService = lightweightExecutorService; } /** @@ -68,7 +75,7 @@ public final class CompositePhoneLookup implements PhoneLookup { } return mergedInfo.build(); }, - MoreExecutors.directExecutor()); + lightweightExecutorService); } @Override @@ -117,7 +124,7 @@ public final class CompositePhoneLookup implements PhoneLookup { } return combinedMap.build(); }, - MoreExecutors.directExecutor()); + lightweightExecutorService); } @Override @@ -127,6 +134,6 @@ public final class CompositePhoneLookup implements PhoneLookup { futures.add(phoneLookup.onSuccessfulBulkUpdate()); } return Futures.transform( - Futures.allAsList(futures), unused -> null, MoreExecutors.directExecutor()); + Futures.allAsList(futures), unused -> null, lightweightExecutorService); } } diff --git a/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java b/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java index cfb8fb7b8..cd645a447 100644 --- a/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java +++ b/java/com/android/dialer/phonelookup/cp2/Cp2PhoneLookup.java @@ -30,6 +30,7 @@ import android.telecom.Call; import android.text.TextUtils; import com.android.dialer.DialerPhoneNumber; import com.android.dialer.common.Assert; +import com.android.dialer.common.concurrent.Annotations.BackgroundExecutor; import com.android.dialer.inject.ApplicationContext; import com.android.dialer.phonelookup.PhoneLookup; import com.android.dialer.phonelookup.PhoneLookupInfo; @@ -39,7 +40,7 @@ import com.android.dialer.storage.Unencrypted; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.util.concurrent.ListenableFuture; -import com.google.common.util.concurrent.MoreExecutors; +import com.google.common.util.concurrent.ListeningExecutorService; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; @@ -71,25 +72,29 @@ public final class Cp2PhoneLookup implements PhoneLookup { private final Context appContext; private final SharedPreferences sharedPreferences; + private final ListeningExecutorService backgroundExecutorService; + @Nullable private Long currentLastTimestampProcessed; @Inject Cp2PhoneLookup( - @ApplicationContext Context appContext, @Unencrypted SharedPreferences sharedPreferences) { + @ApplicationContext Context appContext, + @Unencrypted SharedPreferences sharedPreferences, + @BackgroundExecutor ListeningExecutorService backgroundExecutorService) { this.appContext = appContext; this.sharedPreferences = sharedPreferences; + this.backgroundExecutorService = backgroundExecutorService; } @Override public ListenableFuture lookup(@NonNull Call call) { // TODO(zachh): Implementation. - return MoreExecutors.newDirectExecutorService().submit(PhoneLookupInfo::getDefaultInstance); + return backgroundExecutorService.submit(PhoneLookupInfo::getDefaultInstance); } @Override public ListenableFuture isDirty(ImmutableSet phoneNumbers) { - // TODO(calderwoodra): consider a different thread pool - return MoreExecutors.newDirectExecutorService().submit(() -> isDirtyInternal(phoneNumbers)); + return backgroundExecutorService.submit(() -> isDirtyInternal(phoneNumbers)); } private boolean isDirtyInternal(ImmutableSet phoneNumbers) { @@ -185,8 +190,7 @@ public final class Cp2PhoneLookup implements PhoneLookup { @Override public ListenableFuture> bulkUpdate( ImmutableMap existingInfoMap) { - return MoreExecutors.newDirectExecutorService() - .submit(() -> bulkUpdateInternal(existingInfoMap)); + return backgroundExecutorService.submit(() -> bulkUpdateInternal(existingInfoMap)); } private ImmutableMap bulkUpdateInternal( @@ -234,17 +238,16 @@ public final class Cp2PhoneLookup implements PhoneLookup { @Override public ListenableFuture onSuccessfulBulkUpdate() { - return MoreExecutors.newDirectExecutorService() - .submit( - () -> { - if (currentLastTimestampProcessed != null) { - sharedPreferences - .edit() - .putLong(PREF_LAST_TIMESTAMP_PROCESSED, currentLastTimestampProcessed) - .apply(); - } - return null; - }); + return backgroundExecutorService.submit( + () -> { + if (currentLastTimestampProcessed != null) { + sharedPreferences + .edit() + .putLong(PREF_LAST_TIMESTAMP_PROCESSED, currentLastTimestampProcessed) + .apply(); + } + return null; + }); } /** -- cgit v1.2.3