diff options
author | calderwoodra <calderwoodra@google.com> | 2018-01-26 12:11:26 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-01-26 14:08:06 -0800 |
commit | 97d0b5e504a52a83e87f7dc7eec571a44b846b33 (patch) | |
tree | 1b8c788a1be14042c79e241e470a4d2487a36d60 /java | |
parent | 33d4d88ae74b755501da31906f9393d4c9f6f344 (diff) |
Pressing dial with an empty dialpad now queries the last number in NUI.
Bug: 72526019
Test: manual
PiperOrigin-RevId: 183425741
Change-Id: Ied1b369d00baefe02db04ade26bee9faac4f829c
Diffstat (limited to 'java')
-rw-r--r-- | java/com/android/dialer/app/DialtactsActivity.java | 12 | ||||
-rw-r--r-- | java/com/android/dialer/app/calllog/CallLogAsync.java | 96 | ||||
-rw-r--r-- | java/com/android/dialer/main/impl/MainActivity.java | 10 |
3 files changed, 17 insertions, 101 deletions
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java index 7592c6669..4b0384ea5 100644 --- a/java/com/android/dialer/app/DialtactsActivity.java +++ b/java/com/android/dialer/app/DialtactsActivity.java @@ -73,7 +73,6 @@ import com.android.dialer.animation.AnimUtils; import com.android.dialer.animation.AnimationListenerAdapter; import com.android.dialer.app.calllog.CallLogActivity; import com.android.dialer.app.calllog.CallLogAdapter; -import com.android.dialer.app.calllog.CallLogAsync; import com.android.dialer.app.calllog.CallLogFragment; import com.android.dialer.app.calllog.CallLogNotificationsService; import com.android.dialer.app.calllog.IntentProvider; @@ -99,6 +98,7 @@ import com.android.dialer.callintent.CallSpecificAppData; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; import com.android.dialer.common.UiUtil; +import com.android.dialer.common.concurrent.DialerExecutorComponent; import com.android.dialer.common.concurrent.ThreadUtil; import com.android.dialer.compat.CompatUtils; import com.android.dialer.configprovider.ConfigProviderBindings; @@ -912,9 +912,13 @@ public class DialtactsActivity extends TransactionSafeActivity @Override public void getLastOutgoingCall(LastOutgoingCallCallback callback) { - new CallLogAsync() - .getLastOutgoingCall( - new CallLogAsync.GetLastOutgoingCallArgs(this, callback::lastOutgoingCall)); + DialerExecutorComponent.get(this) + .dialerExecutorFactory() + .createUiTaskBuilder( + getFragmentManager(), "Query last phone number", Calls::getLastOutgoingCall) + .onSuccess(output -> callback.lastOutgoingCall(output)) + .build() + .executeParallel(this); } /** Callback from child DialpadFragment when the dialpad is shown. */ diff --git a/java/com/android/dialer/app/calllog/CallLogAsync.java b/java/com/android/dialer/app/calllog/CallLogAsync.java deleted file mode 100644 index 26435f311..000000000 --- a/java/com/android/dialer/app/calllog/CallLogAsync.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright (C) 2010 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.app.calllog; - -import android.content.Context; -import android.os.AsyncTask; -import android.provider.CallLog.Calls; -import com.android.dialer.common.Assert; - -/** - * Class to access the call log asynchronously to avoid carrying out database operations on the UI - * thread, using an {@link AsyncTask}. - * - * <pre class="prettyprint"> Typical usage: ============== - * - * // From an activity... String mLastNumber = ""; - * - * CallLogAsync log = new CallLogAsync(); - * - * CallLogAsync.GetLastOutgoingCallArgs lastCallArgs = new CallLogAsync.GetLastOutgoingCallArgs( - * this, new CallLogAsync.OnLastOutgoingCallComplete() { public void lastOutgoingCall(String number) - * { mLastNumber = number; } }); log.getLastOutgoingCall(lastCallArgs); </pre> - */ -public class CallLogAsync { - - /** CallLog.getLastOutgoingCall(...) */ - public AsyncTask getLastOutgoingCall(GetLastOutgoingCallArgs args) { - Assert.isMainThread(); - return new GetLastOutgoingCallTask(args.callback).execute(args); - } - - /** Interface to retrieve the last dialed number asynchronously. */ - public interface OnLastOutgoingCallComplete { - - /** @param number The last dialed number or an empty string if none exists yet. */ - void lastOutgoingCall(String number); - } - - /** Parameter object to hold the args to get the last outgoing call from the call log DB. */ - public static class GetLastOutgoingCallArgs { - - public final Context context; - public final OnLastOutgoingCallComplete callback; - - public GetLastOutgoingCallArgs(Context context, OnLastOutgoingCallComplete callback) { - this.context = context; - this.callback = callback; - } - } - - /** AsyncTask to get the last outgoing call from the DB. */ - private class GetLastOutgoingCallTask extends AsyncTask<GetLastOutgoingCallArgs, Void, String> { - - private final OnLastOutgoingCallComplete callback; - - public GetLastOutgoingCallTask(OnLastOutgoingCallComplete callback) { - this.callback = callback; - } - - // Happens on a background thread. We cannot run the callback - // here because only the UI thread can modify the view - // hierarchy (e.g enable/disable the dial button). The - // callback is ran rom the post execute method. - @Override - protected String doInBackground(GetLastOutgoingCallArgs... list) { - String number = ""; - for (GetLastOutgoingCallArgs args : list) { - // May block. Select only the last one. - number = Calls.getLastOutgoingCall(args.context); - } - return number; // passed to the onPostExecute method. - } - - // Happens on the UI thread, it is safe to run the callback - // that may do some work on the views. - @Override - protected void onPostExecute(String number) { - Assert.isMainThread(); - callback.lastOutgoingCall(number); - } - } -} diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java index 242bf2d48..3edf6c6af 100644 --- a/java/com/android/dialer/main/impl/MainActivity.java +++ b/java/com/android/dialer/main/impl/MainActivity.java @@ -20,6 +20,7 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.provider.CallLog.Calls; import android.provider.ContactsContract.QuickContact; import android.support.design.widget.FloatingActionButton; import android.support.v4.app.FragmentTransaction; @@ -27,6 +28,7 @@ import android.support.v7.app.AppCompatActivity; import android.widget.ImageView; import com.android.dialer.calllog.ui.NewCallLogFragment; import com.android.dialer.common.LogUtil; +import com.android.dialer.common.concurrent.DialerExecutorComponent; import com.android.dialer.compat.CompatUtils; import com.android.dialer.constants.ActivityRequestCodes; import com.android.dialer.contactsfragment.ContactsFragment; @@ -141,7 +143,13 @@ public final class MainActivity extends AppCompatActivity @Override // DialpadListener public void getLastOutgoingCall(LastOutgoingCallCallback callback) { - // TODO(calderwoodra): migrate CallLogAsync class outside of dialer/app and call it here. + DialerExecutorComponent.get(this) + .dialerExecutorFactory() + .createUiTaskBuilder( + getFragmentManager(), "Query last phone number", Calls::getLastOutgoingCall) + .onSuccess(output -> callback.lastOutgoingCall(output)) + .build() + .executeParallel(this); } @Override // DialpadListener |