diff options
Diffstat (limited to 'java')
21 files changed, 188 insertions, 121 deletions
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java b/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java index a1f1c52cb..744c0de74 100644 --- a/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java +++ b/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java @@ -53,7 +53,7 @@ public class MissedCallNotificationReceiver extends BroadcastReceiver { PendingResult pendingResult = goAsync(); - DialerExecutors.createNonUiTaskBuilder(MissedCallNotifier.getInstance(context)) + DialerExecutors.createNonUiTaskBuilder(context, MissedCallNotifier.getInstance(context)) .onSuccess( output -> { LogUtil.i( diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java b/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java index 8bfd48b05..96d917318 100644 --- a/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java +++ b/java/com/android/dialer/app/calllog/VisualVoicemailCallLogFragment.java @@ -80,6 +80,7 @@ public class VisualVoicemailCallLogFragment extends CallLogFragment { mPreSyncVoicemailStatusCheckExecutor = DialerExecutors.createUiTaskBuilder( + getContext(), getActivity().getFragmentManager(), "fetchVoicemailStatus", new VoicemailStatusWorker()) diff --git a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java index 77b4c1113..fd0be5f54 100644 --- a/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java +++ b/java/com/android/dialer/app/calllog/VisualVoicemailUpdateTask.java @@ -184,7 +184,7 @@ class VisualVoicemailUpdateTask implements Worker<VisualVoicemailUpdateTask.Inpu context, CallLogNotificationsQueryHelper.getInstance(context), new FilteredNumberAsyncQueryHandler(context)); - DialerExecutors.createNonUiTaskBuilder(new VisualVoicemailUpdateTask()) + DialerExecutors.createNonUiTaskBuilder(context, new VisualVoicemailUpdateTask()) .onSuccess( output -> { LogUtil.i("VisualVoicemailUpdateTask.scheduleTask", "update successful"); diff --git a/java/com/android/dialer/app/list/RegularSearchFragment.java b/java/com/android/dialer/app/list/RegularSearchFragment.java index 73120c547..ca19432ed 100644 --- a/java/com/android/dialer/app/list/RegularSearchFragment.java +++ b/java/com/android/dialer/app/list/RegularSearchFragment.java @@ -67,6 +67,7 @@ public class RegularSearchFragment extends SearchFragment addContactTask = DialerExecutors.createUiTaskBuilder( + getContext(), getFragmentManager(), "RegularSearchFragment.addContact", new AddContactWorker(getContext().getApplicationContext())) diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java index 685357ace..2d21bd641 100644 --- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java +++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java @@ -221,7 +221,10 @@ public class VoicemailPlaybackPresenter } shareVoicemailExecutor = DialerExecutors.createUiTaskBuilder( - mActivity.getFragmentManager(), "shareVoicemail", new ShareVoicemailWorker()) + mContext, + mActivity.getFragmentManager(), + "shareVoicemail", + new ShareVoicemailWorker()) .onSuccess( output -> { if (output == null) { diff --git a/java/com/android/dialer/binary/aosp/testing/AndroidManifest.xml b/java/com/android/dialer/binary/aosp/testing/AndroidManifest.xml deleted file mode 100644 index 15870cb85..000000000 --- a/java/com/android/dialer/binary/aosp/testing/AndroidManifest.xml +++ /dev/null @@ -1,24 +0,0 @@ -<!-- - ~ Copyright (C) 2017 The Android Open Source Project - ~ - ~ Licensed under the Apache License, Version 2.0 (the "License"); - ~ you may not use this file except in compliance with the License. - ~ You may obtain a copy of the License at - ~ - ~ http://www.apache.org/licenses/LICENSE-2.0 - ~ - ~ Unless required by applicable law or agreed to in writing, software - ~ distributed under the License is distributed on an "AS IS" BASIS, - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - ~ See the License for the specific language governing permissions and - ~ limitations under the License - --> - -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.dialer.binary.aosp.testing"> - - <application> - <activity android:name="com.android.dialer.binary.aosp.testing.TestActivity"/> - </application> - -</manifest> diff --git a/java/com/android/dialer/binary/common/DialerApplication.java b/java/com/android/dialer/binary/common/DialerApplication.java index 19af57579..c0e6ae660 100644 --- a/java/com/android/dialer/binary/common/DialerApplication.java +++ b/java/com/android/dialer/binary/common/DialerApplication.java @@ -23,7 +23,7 @@ import android.support.v4.os.BuildCompat; import com.android.dialer.blocking.BlockedNumbersAutoMigrator; import com.android.dialer.blocking.FilteredNumberAsyncQueryHandler; import com.android.dialer.calllog.CallLogComponent; -import com.android.dialer.common.concurrent.DefaultDialerExecutorFactory; +import com.android.dialer.common.concurrent.DialerExecutorComponent; import com.android.dialer.inject.HasRootComponent; import com.android.dialer.notification.NotificationChannelManager; import com.android.dialer.persistentlog.PersistentLogger; @@ -43,7 +43,7 @@ public abstract class DialerApplication extends Application implements HasRootCo new BlockedNumbersAutoMigrator( this.getApplicationContext(), new FilteredNumberAsyncQueryHandler(this), - new DefaultDialerExecutorFactory()) + DialerExecutorComponent.get(this).dialerExecutorFactory()) .asyncAutoMigrate(); CallLogComponent.get(this).callLogFramework().registerContentObservers(getApplicationContext()); PersistentLogger.initialize(this); diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java index 60826fd5d..bad5d7f54 100644 --- a/java/com/android/dialer/callcomposer/CallComposerActivity.java +++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java @@ -224,6 +224,7 @@ public class CallComposerActivity extends AppCompatActivity copyAndResizeExecutor = DialerExecutors.createUiTaskBuilder( + getApplicationContext(), getFragmentManager(), "copyAndResizeImageToSend", new CopyAndResizeImageWorker(this.getApplicationContext())) diff --git a/java/com/android/dialer/callcomposer/GalleryComposerFragment.java b/java/com/android/dialer/callcomposer/GalleryComposerFragment.java index 2e6a28c33..e604ec1b0 100644 --- a/java/com/android/dialer/callcomposer/GalleryComposerFragment.java +++ b/java/com/android/dialer/callcomposer/GalleryComposerFragment.java @@ -28,7 +28,6 @@ import android.os.Parcelable; import android.provider.Settings; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.annotation.VisibleForTesting; import android.support.v4.app.LoaderManager.LoaderCallbacks; import android.support.v4.content.ContextCompat; import android.support.v4.content.CursorLoader; @@ -40,11 +39,9 @@ import android.view.ViewGroup; import android.widget.GridView; import android.widget.ImageView; import android.widget.TextView; -import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; -import com.android.dialer.common.concurrent.DefaultDialerExecutorFactory; import com.android.dialer.common.concurrent.DialerExecutor; -import com.android.dialer.common.concurrent.DialerExecutorFactory; +import com.android.dialer.common.concurrent.DialerExecutorComponent; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; import com.android.dialer.util.PermissionsUtil; @@ -62,8 +59,6 @@ public class GalleryComposerFragment extends CallComposerFragment private static final int RESULT_LOAD_IMAGE = 1; private static final int RESULT_OPEN_SETTINGS = 2; - private DialerExecutorFactory executorFactory = new DefaultDialerExecutorFactory(); - private GalleryGridAdapter adapter; private GridView galleryGridView; private View permissionView; @@ -81,11 +76,6 @@ public class GalleryComposerFragment extends CallComposerFragment return new GalleryComposerFragment(); } - @VisibleForTesting - void setExecutorFactory(@NonNull DialerExecutorFactory executorFactory) { - this.executorFactory = Assert.isNotNull(executorFactory); - } - @Nullable @Override public View onCreateView( @@ -123,7 +113,8 @@ public class GalleryComposerFragment extends CallComposerFragment super.onActivityCreated(bundle); copyAndResizeImage = - executorFactory + DialerExecutorComponent.get(getContext()) + .dialerExecutorFactory() .createUiTaskBuilder( getActivity().getFragmentManager(), "copyAndResizeImage", diff --git a/java/com/android/dialer/callcomposer/camera/CameraManager.java b/java/com/android/dialer/callcomposer/camera/CameraManager.java index f79f6548c..9a9577f6f 100644 --- a/java/com/android/dialer/callcomposer/camera/CameraManager.java +++ b/java/com/android/dialer/callcomposer/camera/CameraManager.java @@ -469,6 +469,7 @@ public class CameraManager implements FocusOverlayManager.Listener { LogUtil.i( "CameraManager.onPictureTaken", "taken picture size: " + bytes.length + " bytes"); DialerExecutors.createNonUiTaskBuilder( + mCameraPreview.getContext(), new ImagePersistWorker( width, height, heightPercent, bytes, mCameraPreview.getContext())) .onSuccess( diff --git a/java/com/android/dialer/common/concurrent/Annotations.java b/java/com/android/dialer/common/concurrent/Annotations.java new file mode 100644 index 000000000..eb956c31e --- /dev/null +++ b/java/com/android/dialer/common/concurrent/Annotations.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ +package com.android.dialer.common.concurrent; + +import javax.inject.Qualifier; + +/** Annotations for dagger concurrency bindings. */ +public class Annotations { + + /** Annotation for retrieving the non-UI thread pool. */ + @Qualifier + public @interface NonUiParallel {} + + /** Annotation for retrieving the non-UI serial executor. */ + @Qualifier + public @interface NonUiSerial {} + + /** Annotation for retrieving the UI thread pool. */ + @Qualifier + public @interface UiParallel {} + + /** Annotation for retrieving the UI serial executor. */ + @Qualifier + public @interface UiSerial {} +} diff --git a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java index a87bbceb4..ab01654aa 100644 --- a/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java +++ b/java/com/android/dialer/common/concurrent/DefaultDialerExecutorFactory.java @@ -17,29 +17,43 @@ package com.android.dialer.common.concurrent; import android.app.FragmentManager; -import android.os.AsyncTask; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; +import com.android.dialer.common.concurrent.Annotations.NonUiParallel; +import com.android.dialer.common.concurrent.Annotations.NonUiSerial; +import com.android.dialer.common.concurrent.Annotations.UiParallel; +import com.android.dialer.common.concurrent.Annotations.UiSerial; import com.android.dialer.common.concurrent.DialerExecutor.Builder; import com.android.dialer.common.concurrent.DialerExecutor.FailureListener; import com.android.dialer.common.concurrent.DialerExecutor.SuccessListener; import com.android.dialer.common.concurrent.DialerExecutor.Worker; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.ThreadFactory; import java.util.concurrent.TimeUnit; import javax.inject.Inject; /** The production {@link DialerExecutorFactory}. */ public class DefaultDialerExecutorFactory implements DialerExecutorFactory { + private final ExecutorService nonUiThreadPool; + private final ScheduledExecutorService nonUiSerialExecutor; + private final Executor uiThreadPool; + private final ScheduledExecutorService uiSerialExecutor; @Inject - public DefaultDialerExecutorFactory() {} + DefaultDialerExecutorFactory( + @NonUiParallel ExecutorService nonUiThreadPool, + @NonUiSerial ScheduledExecutorService nonUiSerialExecutor, + @UiParallel Executor uiThreadPool, + @UiSerial ScheduledExecutorService uiSerialExecutor) { + this.nonUiThreadPool = nonUiThreadPool; + this.nonUiSerialExecutor = nonUiSerialExecutor; + this.uiThreadPool = uiThreadPool; + this.uiSerialExecutor = uiSerialExecutor; + } @Override @NonNull @@ -48,14 +62,18 @@ public class DefaultDialerExecutorFactory implements DialerExecutorFactory { @NonNull String taskId, @NonNull Worker<InputT, OutputT> worker) { return new UiTaskBuilder<>( - Assert.isNotNull(fragmentManager), Assert.isNotNull(taskId), Assert.isNotNull(worker)); + Assert.isNotNull(fragmentManager), + Assert.isNotNull(taskId), + Assert.isNotNull(worker), + uiSerialExecutor, + uiThreadPool); } @Override @NonNull public <InputT, OutputT> DialerExecutor.Builder<InputT, OutputT> createNonUiTaskBuilder( @NonNull Worker<InputT, OutputT> worker) { - return new NonUiTaskBuilder<>(Assert.isNotNull(worker)); + return new NonUiTaskBuilder<>(Assert.isNotNull(worker), nonUiSerialExecutor, nonUiThreadPool); } private abstract static class BaseTaskBuilder<InputT, OutputT> @@ -96,34 +114,11 @@ public class DefaultDialerExecutorFactory implements DialerExecutorFactory { /** Convenience class for use by {@link DialerExecutorFactory} implementations. */ public static class UiTaskBuilder<InputT, OutputT> extends BaseTaskBuilder<InputT, OutputT> { - private static final ScheduledExecutorService defaultSerialExecutorService = - Executors.newSingleThreadScheduledExecutor( - new ThreadFactory() { - @Override - public Thread newThread(Runnable runnable) { - LogUtil.i("UiTaskBuilder.newThread", "creating serial thread"); - Thread thread = new Thread(runnable, "UiTaskBuilder-Serial"); - thread.setPriority(5); // Corresponds to Process.THREAD_PRIORITY_DEFAULT - return thread; - } - }); - - private static final Executor defaultParallelExecutorService = AsyncTask.THREAD_POOL_EXECUTOR; - private final FragmentManager fragmentManager; private final String id; private DialerUiTaskFragment<InputT, OutputT> dialerUiTaskFragment; - UiTaskBuilder(FragmentManager fragmentManager, String id, Worker<InputT, OutputT> worker) { - this( - fragmentManager, - id, - worker, - defaultSerialExecutorService, - defaultParallelExecutorService); - } - public UiTaskBuilder( FragmentManager fragmentManager, String id, @@ -153,24 +148,6 @@ public class DefaultDialerExecutorFactory implements DialerExecutorFactory { /** Convenience class for use by {@link DialerExecutorFactory} implementations. */ public static class NonUiTaskBuilder<InputT, OutputT> extends BaseTaskBuilder<InputT, OutputT> { - private static final ScheduledExecutorService defaultSerialExecutorService = - Executors.newSingleThreadScheduledExecutor( - new ThreadFactory() { - @Override - public Thread newThread(Runnable runnable) { - LogUtil.i("NonUiTaskBuilder.newThread", "creating serial thread"); - Thread thread = new Thread(runnable, "NonUiTaskBuilder-Serial"); - thread.setPriority(4); // Corresponds to Process.THREAD_PRIORITY_BACKGROUND - return thread; - } - }); - - private static final Executor defaultParallelExecutor = - DialerExecutors.getLowPriorityThreadPool(); - - NonUiTaskBuilder(Worker<InputT, OutputT> worker) { - this(worker, defaultSerialExecutorService, defaultParallelExecutor); - } public NonUiTaskBuilder( Worker<InputT, OutputT> worker, diff --git a/java/com/android/dialer/common/concurrent/DialerExecutorComponent.java b/java/com/android/dialer/common/concurrent/DialerExecutorComponent.java index 25033251f..346fdda56 100644 --- a/java/com/android/dialer/common/concurrent/DialerExecutorComponent.java +++ b/java/com/android/dialer/common/concurrent/DialerExecutorComponent.java @@ -17,8 +17,10 @@ package com.android.dialer.common.concurrent; import android.content.Context; +import com.android.dialer.common.concurrent.Annotations.NonUiParallel; import com.android.dialer.inject.HasRootComponent; import dagger.Subcomponent; +import java.util.concurrent.ExecutorService; /** Dagger component which provides a {@link DialerExecutorFactory}. */ @Subcomponent @@ -26,6 +28,9 @@ public abstract class DialerExecutorComponent { public abstract DialerExecutorFactory dialerExecutorFactory(); + @NonUiParallel + public abstract ExecutorService lowPriorityThreadPool(); + public static DialerExecutorComponent get(Context context) { return ((DialerExecutorComponent.HasComponent) ((HasRootComponent) context.getApplicationContext()).component()) diff --git a/java/com/android/dialer/common/concurrent/DialerExecutorModule.java b/java/com/android/dialer/common/concurrent/DialerExecutorModule.java index 281f88c15..68910fb7a 100644 --- a/java/com/android/dialer/common/concurrent/DialerExecutorModule.java +++ b/java/com/android/dialer/common/concurrent/DialerExecutorModule.java @@ -15,14 +15,85 @@ */ package com.android.dialer.common.concurrent; +import android.os.AsyncTask; +import com.android.dialer.common.LogUtil; +import com.android.dialer.common.concurrent.Annotations.NonUiParallel; +import com.android.dialer.common.concurrent.Annotations.NonUiSerial; +import com.android.dialer.common.concurrent.Annotations.UiParallel; +import com.android.dialer.common.concurrent.Annotations.UiSerial; import dagger.Binds; import dagger.Module; +import dagger.Provides; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; +import javax.inject.Singleton; -/** Module which binds the production {@link DialerExecutorFactory}. */ +/** Module which provides concurrency bindings. */ @Module public abstract class DialerExecutorModule { @Binds abstract DialerExecutorFactory bindDialerExecutorFactory( DefaultDialerExecutorFactory defaultDialerExecutorFactory); + + @Provides + @Singleton + @NonUiParallel + static ExecutorService provideNonUiThreadPool() { + return Executors.newFixedThreadPool( + 5, + new ThreadFactory() { + @Override + public Thread newThread(Runnable runnable) { + LogUtil.i("DialerExecutorModule.newThread", "creating low priority thread"); + Thread thread = new Thread(runnable, "DialerExecutors-LowPriority"); + // Java thread priority 4 corresponds to Process.THREAD_PRIORITY_BACKGROUND (10) + thread.setPriority(4); + return thread; + } + }); + } + + @Provides + @Singleton + @NonUiSerial + static ScheduledExecutorService provideNonUiSerialExecutorService() { + return Executors.newSingleThreadScheduledExecutor( + new ThreadFactory() { + @Override + public Thread newThread(Runnable runnable) { + LogUtil.i("NonUiTaskBuilder.newThread", "creating serial thread"); + Thread thread = new Thread(runnable, "DialerExecutors-LowPriority-Serial"); + // Java thread priority 4 corresponds to Process.THREAD_PRIORITY_BACKGROUND (10) + thread.setPriority(4); + return thread; + } + }); + } + + @Provides + @UiParallel + static Executor provideUiThreadPool() { + return AsyncTask.THREAD_POOL_EXECUTOR; + } + + @Provides + @Singleton + @UiSerial + static ScheduledExecutorService provideUiSerialExecutorService() { + return Executors.newSingleThreadScheduledExecutor( + new ThreadFactory() { + @Override + public Thread newThread(Runnable runnable) { + LogUtil.i("DialerExecutorModule.newThread", "creating serial thread"); + Thread thread = new Thread(runnable, "DialerExecutors-HighPriority-Serial"); + // Java thread priority 5 corresponds to Process.THREAD_PRIORITY_DEFAULT (0) + thread.setPriority(5); + return thread; + } + }); + } } diff --git a/java/com/android/dialer/common/concurrent/DialerExecutors.java b/java/com/android/dialer/common/concurrent/DialerExecutors.java index 850c28cdd..4d8331fb6 100644 --- a/java/com/android/dialer/common/concurrent/DialerExecutors.java +++ b/java/com/android/dialer/common/concurrent/DialerExecutors.java @@ -17,13 +17,11 @@ package com.android.dialer.common.concurrent; import android.app.FragmentManager; +import android.content.Context; import android.support.annotation.NonNull; import com.android.dialer.common.Assert; -import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.DialerExecutor.Worker; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; /** * Factory methods for creating {@link DialerExecutor} objects for doing background work. @@ -118,44 +116,43 @@ import java.util.concurrent.ThreadFactory; */ public final class DialerExecutors { - /** @see DialerExecutorFactory#createUiTaskBuilder(FragmentManager, String, Worker) */ + /** + * @param context any valid context object from which the application context can be retrieved + * @see DialerExecutorFactory#createUiTaskBuilder(FragmentManager, String, Worker) + */ @NonNull public static <InputT, OutputT> DialerExecutor.Builder<InputT, OutputT> createUiTaskBuilder( + @NonNull Context context, @NonNull FragmentManager fragmentManager, @NonNull String taskId, @NonNull Worker<InputT, OutputT> worker) { - return new DefaultDialerExecutorFactory() + return DialerExecutorComponent.get(Assert.isNotNull(context)) + .dialerExecutorFactory() .createUiTaskBuilder( Assert.isNotNull(fragmentManager), Assert.isNotNull(taskId), Assert.isNotNull(worker)); } - /** @see DialerExecutorFactory#createNonUiTaskBuilder(Worker) */ + /** + * @param context any valid context object from which the application context can be retrieved + * @see DialerExecutorFactory#createNonUiTaskBuilder(Worker) + */ @NonNull public static <InputT, OutputT> DialerExecutor.Builder<InputT, OutputT> createNonUiTaskBuilder( - @NonNull Worker<InputT, OutputT> worker) { - return new DefaultDialerExecutorFactory().createNonUiTaskBuilder(Assert.isNotNull(worker)); + Context context, @NonNull Worker<InputT, OutputT> worker) { + return DialerExecutorComponent.get(Assert.isNotNull(context)) + .dialerExecutorFactory() + .createNonUiTaskBuilder(Assert.isNotNull(worker)); } - private static final ExecutorService lowPriorityThreadPool = - Executors.newFixedThreadPool( - 5, - new ThreadFactory() { - @Override - public Thread newThread(Runnable runnable) { - LogUtil.i("DialerExecutors.newThread", "creating low priority thread"); - Thread thread = new Thread(runnable, "DialerExecutors-LowPriority"); - thread.setPriority(4); // Corresponds to Process.THREAD_PRIORITY_BACKGROUND - return thread; - } - }); - /** * An application-wide thread pool used for low priority (non-UI) tasks. * * <p>This exists to prevent each individual dialer component from having to create its own * threads/pools, which would result in the application having more threads than really necessary. + * + * @param context any valid context object from which the application context can be retrieved */ - public static ExecutorService getLowPriorityThreadPool() { - return lowPriorityThreadPool; + public static ExecutorService getLowPriorityThreadPool(@NonNull Context context) { + return DialerExecutorComponent.get(Assert.isNotNull(context)).lowPriorityThreadPool(); } } diff --git a/java/com/android/dialer/dialpadview/DialpadFragment.java b/java/com/android/dialer/dialpadview/DialpadFragment.java index 2316e86d2..7b551f79d 100644 --- a/java/com/android/dialer/dialpadview/DialpadFragment.java +++ b/java/com/android/dialer/dialpadview/DialpadFragment.java @@ -344,6 +344,7 @@ public class DialpadFragment extends Fragment initPhoneNumberFormattingTextWatcherExecutor = DialerExecutors.createUiTaskBuilder( + getContext(), getFragmentManager(), "DialpadFragment.initPhoneNumberFormattingTextWatcher", new InitPhoneNumberFormattingTextWatcherWorker()) diff --git a/java/com/android/dialer/shortcuts/ShortcutRefresher.java b/java/com/android/dialer/shortcuts/ShortcutRefresher.java index 496f3f02a..7fd02a96f 100644 --- a/java/com/android/dialer/shortcuts/ShortcutRefresher.java +++ b/java/com/android/dialer/shortcuts/ShortcutRefresher.java @@ -45,7 +45,7 @@ public final class ShortcutRefresher { return; } - DialerExecutors.createNonUiTaskBuilder(new RefreshWorker(context)) + DialerExecutors.createNonUiTaskBuilder(context, new RefreshWorker(context)) .build() .executeSerial(new ArrayList<>(contacts)); } diff --git a/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java b/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java index d663d584d..1a2cae18b 100644 --- a/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java +++ b/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java @@ -48,13 +48,13 @@ final class SimulatorMainMenu { } private static void populateDatabase(@NonNull Context context) { - DialerExecutors.createNonUiTaskBuilder(new PopulateDatabaseWorker()) + DialerExecutors.createNonUiTaskBuilder(context, new PopulateDatabaseWorker()) .build() .executeSerial(context); } private static void cleanDatabase(@NonNull Context context) { - DialerExecutors.createNonUiTaskBuilder(new CleanDatabaseWorker()) + DialerExecutors.createNonUiTaskBuilder(context, new CleanDatabaseWorker()) .build() .executeSerial(context); } @@ -65,7 +65,7 @@ final class SimulatorMainMenu { } private static void sharePersistentLog(@NonNull Context context) { - DialerExecutors.createNonUiTaskBuilder(new ShareLogWorker()) + DialerExecutors.createNonUiTaskBuilder(context, new ShareLogWorker()) .onSuccess( (String log) -> { Intent intent = new Intent(Intent.ACTION_SEND); diff --git a/java/com/android/incallui/ContactInfoCache.java b/java/com/android/incallui/ContactInfoCache.java index 272c2b776..2735461b2 100644 --- a/java/com/android/incallui/ContactInfoCache.java +++ b/java/com/android/incallui/ContactInfoCache.java @@ -86,8 +86,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { private final ConcurrentHashMap<String, ContactCacheEntry> mInfoMap = new ConcurrentHashMap<>(); private final Map<String, Set<ContactInfoCacheCallback>> mCallBacks = new ArrayMap<>(); private int mQueryId; - private final DialerExecutor<CnapInformationWrapper> cachedNumberLookupExecutor = - DialerExecutors.createNonUiTaskBuilder(new CachedNumberLookupWorker()).build(); + private final DialerExecutor<CnapInformationWrapper> cachedNumberLookupExecutor; private static class CachedNumberLookupWorker implements Worker<CnapInformationWrapper, Void> { @Nullable @@ -126,6 +125,8 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { Trace.beginSection("ContactInfoCache constructor"); mContext = context; mPhoneNumberService = Bindings.get(context).newPhoneNumberService(context); + cachedNumberLookupExecutor = + DialerExecutors.createNonUiTaskBuilder(mContext, new CachedNumberLookupWorker()).build(); Trace.endSection(); } @@ -718,6 +719,7 @@ public class ContactInfoCache implements OnImageLoadCompleteListener { int queryId; /** The phone number without any changes to display to the user (ex: cnap...) */ String originalPhoneNumber; + boolean shouldShowLocation; boolean isBusiness; diff --git a/java/com/android/incallui/ContactsAsyncHelper.java b/java/com/android/incallui/ContactsAsyncHelper.java index 6237ca3e5..2e893b01a 100644 --- a/java/com/android/incallui/ContactsAsyncHelper.java +++ b/java/com/android/incallui/ContactsAsyncHelper.java @@ -94,7 +94,7 @@ public class ContactsAsyncHelper { args.displayPhotoUri = displayPhotoUri; args.listener = listener; - DialerExecutors.createNonUiTaskBuilder(new Worker()) + DialerExecutors.createNonUiTaskBuilder(context, new Worker()) .onSuccess( output -> { if (args.listener != null) { diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java index b8a2baa00..8535cbc3e 100644 --- a/java/com/android/incallui/InCallPresenter.java +++ b/java/com/android/incallui/InCallPresenter.java @@ -45,7 +45,7 @@ import com.android.dialer.blocking.FilteredNumberCompat; import com.android.dialer.blocking.FilteredNumbersUtil; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; -import com.android.dialer.common.concurrent.DefaultDialerExecutorFactory; +import com.android.dialer.common.concurrent.DialerExecutorComponent; import com.android.dialer.enrichedcall.EnrichedCallComponent; import com.android.dialer.location.GeoUtil; import com.android.dialer.logging.InteractionEvent; @@ -373,7 +373,9 @@ public class InCallPresenter implements CallList.Listener { mCallList.addListener(this); // Create spam call list listener and add it to the list of listeners - mSpamCallListListener = new SpamCallListListener(context, new DefaultDialerExecutorFactory()); + mSpamCallListListener = + new SpamCallListListener( + context, DialerExecutorComponent.get(context).dialerExecutorFactory()); mCallList.addListener(mSpamCallListListener); VideoPauseController.getInstance().setUp(this); |