From b841a6eec0901b737fb974e2714705bb77649f6b Mon Sep 17 00:00:00 2001 From: yueg Date: Thu, 8 Feb 2018 16:14:30 -0800 Subject: Finish AudioRouteSelectorActivity when all calls disconnect. Bug: 67605985 Test: AudioRouteSelectorActivityTest PiperOrigin-RevId: 185069195 Change-Id: Icae34dd6374a775c3ad5d3835750bd2fe703dfa0 --- .../incallui/AudioRouteSelectorActivity.java | 63 ++++++++++++++++------ 1 file changed, 48 insertions(+), 15 deletions(-) (limited to 'java/com/android/incallui/AudioRouteSelectorActivity.java') diff --git a/java/com/android/incallui/AudioRouteSelectorActivity.java b/java/com/android/incallui/AudioRouteSelectorActivity.java index a6fcc9c7d..7728cd5dc 100644 --- a/java/com/android/incallui/AudioRouteSelectorActivity.java +++ b/java/com/android/incallui/AudioRouteSelectorActivity.java @@ -17,6 +17,7 @@ package com.android.incallui; import android.os.Bundle; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.FragmentActivity; import android.telecom.CallAudioState; @@ -26,24 +27,21 @@ import com.android.incallui.audiomode.AudioModeProvider; import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment; import com.android.incallui.audioroute.AudioRouteSelectorDialogFragment.AudioRouteSelectorPresenter; import com.android.incallui.call.CallList; +import com.android.incallui.call.CallList.Listener; import com.android.incallui.call.DialerCall; import com.android.incallui.call.TelecomAdapter; /** Simple activity that just shows the audio route selector fragment */ public class AudioRouteSelectorActivity extends FragmentActivity - implements AudioRouteSelectorPresenter { - - public static final String SHOULD_LOG_BUBBLE_V2_IMPRESSION_EXTRA = "shouldLogBubbleV2Impression"; - - private boolean shouldLogBubbleV2Impression; + implements AudioRouteSelectorPresenter, Listener { @Override protected void onCreate(@Nullable Bundle bundle) { super.onCreate(bundle); - shouldLogBubbleV2Impression = - getIntent().getBooleanExtra(SHOULD_LOG_BUBBLE_V2_IMPRESSION_EXTRA, false); AudioRouteSelectorDialogFragment.newInstance(AudioModeProvider.getInstance().getAudioState()) .show(getSupportFragmentManager(), AudioRouteSelectorDialogFragment.TAG); + + CallList.getInstance().addListener(this); } @Override @@ -51,10 +49,6 @@ public class AudioRouteSelectorActivity extends FragmentActivity TelecomAdapter.getInstance().setAudioRoute(audioRoute); finish(); - if (!shouldLogBubbleV2Impression) { - return; - } - // Log the select action with audio route and call DialerImpression.Type impressionType = null; if ((audioRoute & CallAudioState.ROUTE_WIRED_OR_EARPIECE) != 0) { @@ -68,10 +62,7 @@ public class AudioRouteSelectorActivity extends FragmentActivity return; } - DialerCall call = CallList.getInstance().getOutgoingCall(); - if (call == null) { - call = CallList.getInstance().getActiveOrBackgroundCall(); - } + DialerCall call = getCall(); if (call != null) { Logger.get(this) .logCallImpression(impressionType, call.getUniqueCallId(), call.getTimeAddedMs()); @@ -102,4 +93,46 @@ public class AudioRouteSelectorActivity extends FragmentActivity finish(); } } + + @Override + protected void onDestroy() { + CallList.getInstance().removeListener(this); + super.onDestroy(); + } + + private DialerCall getCall() { + DialerCall dialerCall = CallList.getInstance().getOutgoingCall(); + if (dialerCall == null) { + dialerCall = CallList.getInstance().getActiveOrBackgroundCall(); + } + return dialerCall; + } + + @Override + public void onDisconnect(DialerCall call) { + if (getCall() == null) { + finish(); + } + } + + @Override + public void onIncomingCall(DialerCall call) {} + + @Override + public void onUpgradeToVideo(DialerCall call) {} + + @Override + public void onSessionModificationStateChange(DialerCall call) {} + + @Override + public void onCallListChange(CallList callList) {} + + @Override + public void onWiFiToLteHandover(DialerCall call) {} + + @Override + public void onHandoverToWifiFailed(DialerCall call) {} + + @Override + public void onInternationalCallOnWifi(@NonNull DialerCall call) {} } -- cgit v1.2.3