summaryrefslogtreecommitdiff
path: root/java/com/android/incallui/InCallActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/incallui/InCallActivity.java')
-rw-r--r--java/com/android/incallui/InCallActivity.java84
1 files changed, 23 insertions, 61 deletions
diff --git a/java/com/android/incallui/InCallActivity.java b/java/com/android/incallui/InCallActivity.java
index 0f0e9d9f2..5ac6b5029 100644
--- a/java/com/android/incallui/InCallActivity.java
+++ b/java/com/android/incallui/InCallActivity.java
@@ -55,8 +55,6 @@ import android.view.animation.AnimationUtils;
import android.widget.CheckBox;
import android.widget.Toast;
import com.android.contacts.common.widget.SelectPhoneAccountDialogFragment;
-import com.android.contacts.common.widget.SelectPhoneAccountDialogOptions;
-import com.android.contacts.common.widget.SelectPhoneAccountDialogOptionsUtil;
import com.android.dialer.animation.AnimUtils;
import com.android.dialer.animation.AnimationListenerAdapter;
import com.android.dialer.common.Assert;
@@ -65,7 +63,6 @@ import com.android.dialer.common.concurrent.DialerExecutorComponent;
import com.android.dialer.common.concurrent.ThreadUtil;
import com.android.dialer.common.concurrent.UiListener;
import com.android.dialer.configprovider.ConfigProviderBindings;
-import com.android.dialer.logging.DialerImpression.Type;
import com.android.dialer.logging.Logger;
import com.android.dialer.logging.ScreenEvent;
import com.android.dialer.metrics.Metrics;
@@ -73,7 +70,7 @@ import com.android.dialer.metrics.MetricsComponent;
import com.android.dialer.preferredsim.PreferredAccountRecorder;
import com.android.dialer.preferredsim.PreferredAccountWorker;
import com.android.dialer.preferredsim.PreferredAccountWorker.Result;
-import com.android.dialer.preferredsim.suggestion.SuggestionProvider;
+import com.android.dialer.preferredsim.PreferredSimComponent;
import com.android.dialer.util.ViewUtil;
import com.android.incallui.answer.bindings.AnswerBindings;
import com.android.incallui.answer.protocol.AnswerScreen;
@@ -365,79 +362,44 @@ public class InCallActivity extends TransactionSafeFragmentActivity
return false;
}
- ListenableFuture<PreferredAccountWorker.Result> preferredAccountFuture =
- DialerExecutorComponent.get(this)
- .backgroundExecutor()
- .submit(
- () -> {
- try {
- return new PreferredAccountWorker(waitingForAccountCall.getNumber())
- .doInBackground(getApplicationContext());
- } catch (Throwable throwable) {
- throw new Exception(throwable);
- }
- });
+ PreferredAccountWorker preferredAccountWorker =
+ PreferredSimComponent.get(this).preferredAccountWorker();
+
+ Bundle extras = waitingForAccountCall.getIntentExtras();
+ List<PhoneAccountHandle> phoneAccountHandles =
+ extras == null
+ ? new ArrayList<>()
+ : extras.getParcelableArrayList(Call.AVAILABLE_PHONE_ACCOUNTS);
+ ListenableFuture<PreferredAccountWorker.Result> preferredAccountFuture =
+ preferredAccountWorker.selectAccount(
+ waitingForAccountCall.getNumber(), phoneAccountHandles);
preferredAccountWorkerResultListener.listen(
this,
preferredAccountFuture,
result -> {
- if (result.getPhoneAccountHandle().isPresent()) {
- Logger.get(this).logImpression(Type.DUAL_SIM_SELECTION_PREFERRED_USED);
- selectPhoneAccountListener.onPhoneAccountSelected(
- result.getPhoneAccountHandle().get(), false, waitingForAccountCall.getId());
+ if (!isVisible()) {
+ LogUtil.i(
+ "CallingAccountSelector.showPhoneAccountSelectionDialog",
+ "activity ended before result returned");
return;
}
- if (result.getSuggestion().isPresent()) {
- LogUtil.i(
- "CallingAccountSelector.processPreferredAccount",
- "SIM suggested: " + result.getSuggestion().get().reason);
- if (result.getSuggestion().get().shouldAutoSelect) {
- Logger.get(this).logImpression(Type.DUAL_SIM_SELECTION_SUGGESTION_AUTO_SELECTED);
- LogUtil.i(
- "CallingAccountSelector.processPreferredAccount", "Auto selected suggestion");
- selectPhoneAccountListener.onPhoneAccountSelected(
- result.getSuggestion().get().phoneAccountHandle,
- false,
- waitingForAccountCall.getId());
- return;
- }
+ String callId = waitingForAccountCall.getId();
+ if (result.getSelectedPhoneAccountHandle().isPresent()) {
+ selectPhoneAccountListener.onPhoneAccountSelected(
+ result.getSelectedPhoneAccountHandle().get(), false, callId);
+ return;
}
- Bundle extras = waitingForAccountCall.getIntentExtras();
- List<PhoneAccountHandle> phoneAccountHandles =
- extras == null
- ? new ArrayList<>()
- : extras.getParcelableArrayList(Call.AVAILABLE_PHONE_ACCOUNTS);
waitingForAccountCall.setPreferredAccountRecorder(
new PreferredAccountRecorder(
waitingForAccountCall.getNumber(),
result.getSuggestion().orNull(),
result.getDataId().orNull()));
- SelectPhoneAccountDialogOptions.Builder optionsBuilder =
- SelectPhoneAccountDialogOptions.newBuilder()
- .setTitle(R.string.select_phone_account_for_calls)
- .setCanSetDefault(result.getDataId().isPresent())
- .setSetDefaultLabel(R.string.select_phone_account_for_calls_remember)
- .setCallId(waitingForAccountCall.getId());
-
- for (PhoneAccountHandle phoneAccountHandle : phoneAccountHandles) {
- SelectPhoneAccountDialogOptions.Entry.Builder entryBuilder =
- SelectPhoneAccountDialogOptions.Entry.newBuilder();
- SelectPhoneAccountDialogOptionsUtil.setPhoneAccountHandle(
- entryBuilder, phoneAccountHandle);
- Optional<String> hint =
- SuggestionProvider.getHint(
- this, phoneAccountHandle, result.getSuggestion().orNull());
- if (hint.isPresent()) {
- entryBuilder.setHint(hint.get());
- }
- optionsBuilder.addEntries(entryBuilder);
- }
-
selectPhoneAccountDialogFragment =
SelectPhoneAccountDialogFragment.newInstance(
- optionsBuilder.build(), selectPhoneAccountListener);
+ result.getDialogOptionsBuilder().get().setCallId(callId).build(),
+ selectPhoneAccountListener);
selectPhoneAccountDialogFragment.show(getFragmentManager(), Tags.SELECT_ACCOUNT_FRAGMENT);
},
throwable -> {