diff options
Diffstat (limited to 'java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java')
-rw-r--r-- | java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java | 62 |
1 files changed, 54 insertions, 8 deletions
diff --git a/java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java b/java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java index ff00dd87e..67a2db804 100644 --- a/java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java +++ b/java/com/android/dialer/simulator/impl/SimulatorVoiceCall.java @@ -26,15 +26,21 @@ import android.telecom.DisconnectCause; import android.view.ActionProvider; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; +import com.android.dialer.common.concurrent.DialerExecutorComponent; import com.android.dialer.common.concurrent.ThreadUtil; +import com.android.dialer.enrichedcall.EnrichedCallComponent; +import com.android.dialer.enrichedcall.EnrichedCallManager; import com.android.dialer.simulator.Simulator; import com.android.dialer.simulator.Simulator.Event; +import com.android.dialer.simulator.SimulatorComponent; +import com.android.dialer.simulator.SimulatorEnrichedCall; /** Entry point in the simulator to create voice calls. */ final class SimulatorVoiceCall implements SimulatorConnectionService.Listener, SimulatorConnection.Listener { @NonNull private final Context context; @Nullable private String connectionTag; + private final SimulatorEnrichedCall simulatorEnrichedCall; static ActionProvider getActionProvider(@NonNull AppCompatActivity activity) { return new SimulatorSubMenu(activity.getApplicationContext()) @@ -55,6 +61,12 @@ final class SimulatorVoiceCall new SimulatorVoiceCall(activity.getApplicationContext()) .addNewOutgoingCall(activity)) .addItem( + "Incoming enriched call", + () -> new SimulatorVoiceCall(activity.getApplicationContext()).incomingEnrichedCall()) + .addItem( + "Outgoing enriched call", + () -> new SimulatorVoiceCall(activity.getApplicationContext()).outgoingEnrichedCall()) + .addItem( "Spam incoming call", () -> new SimulatorVoiceCall(activity.getApplicationContext()).addSpamIncomingCall()) .addItem( @@ -77,23 +89,47 @@ final class SimulatorVoiceCall private SimulatorVoiceCall(@NonNull Context context) { this.context = Assert.isNotNull(context); + simulatorEnrichedCall = SimulatorComponent.get(context).getSimulatorEnrichedCall(); SimulatorConnectionService.addListener(this); SimulatorConnectionService.addListener( new SimulatorConferenceCreator(context, Simulator.CONFERENCE_TYPE_GSM)); } + private void incomingEnrichedCall() { + simulatorEnrichedCall + .setupIncomingEnrichedCall(Simulator.ENRICHED_CALL_INCOMING_NUMBER) + .addListener( + () -> { + Bundle extras = new Bundle(); + extras.putBoolean(Simulator.IS_ENRICHED_CALL, true); + connectionTag = + SimulatorSimCallManager.addNewIncomingCall( + context, Simulator.ENRICHED_CALL_INCOMING_NUMBER, false, extras); + }, + DialerExecutorComponent.get(context).uiExecutor()); + } + + private void outgoingEnrichedCall() { + getEnrichedCallManager().registerStateChangedListener(simulatorEnrichedCall); + simulatorEnrichedCall + .setupOutgoingEnrichedCall(Simulator.ENRICHED_CALL_OUTGOING_NUMBER) + .addListener( + () -> { + Bundle extras = new Bundle(); + extras.putBoolean(Simulator.IS_ENRICHED_CALL, true); + connectionTag = + SimulatorSimCallManager.addNewOutgoingCall( + context, Simulator.ENRICHED_CALL_OUTGOING_NUMBER, false, extras); + }, + DialerExecutorComponent.get(context).uiExecutor()); + } + private void addNewIncomingCall() { String callerId = "+44 (0) 20 7031 3000" /* Google London office */; connectionTag = SimulatorSimCallManager.addNewIncomingCall(context, callerId, false /* isVideo */); } - private void addNewOutgoingCall() { - String callerId = "+55-31-2128-6800"; // Brazil office. - connectionTag = - SimulatorSimCallManager.addNewOutgoingCall(context, callerId, false /* isVideo */); - } - private void addNewIncomingCall(AppCompatActivity activity) { SimulatorDialogFragment.newInstance( (callerId, callerIdPresentation) -> { @@ -106,6 +142,12 @@ final class SimulatorVoiceCall .show(activity.getSupportFragmentManager(), "SimulatorDialog"); } + private void addNewOutgoingCall() { + String callerId = "+55-31-2128-6800"; // Brazil office. + connectionTag = + SimulatorSimCallManager.addNewOutgoingCall(context, callerId, false /* isVideo */); + } + private void addNewOutgoingCall(AppCompatActivity activity) { SimulatorDialogFragment.newInstance( (callerId, callerIdPresentation) -> { @@ -184,6 +226,9 @@ final class SimulatorVoiceCall break; case Event.DISCONNECT: connection.setDisconnected(new DisconnectCause(DisconnectCause.LOCAL)); + if (connection.getExtras().getBoolean(Simulator.IS_ENRICHED_CALL)) { + getEnrichedCallManager().unregisterStateChangedListener(simulatorEnrichedCall); + } break; case Event.SESSION_MODIFY_REQUEST: ThreadUtil.postDelayedOnUiThread(() -> connection.handleSessionModifyRequest(event), 2000); @@ -194,7 +239,8 @@ final class SimulatorVoiceCall } } - private interface DialogCallback { - void callback(String callerId, int callerIdPresentation); + @NonNull + private EnrichedCallManager getEnrichedCallManager() { + return EnrichedCallComponent.get(context).getEnrichedCallManager(); } } |