Logging for background calling and HFP device support.

Bug: 74022483,74238896
Test: InCallPresenterTest, AudioRouteSelectorDialogFragmentTest
PiperOrigin-RevId: 194589147
Change-Id: If8c6e79838d27b1ca33ed677c19f6555cbdb4494
diff --git a/java/com/android/incallui/InCallPresenter.java b/java/com/android/incallui/InCallPresenter.java
index 6e7daf5..6386c56 100644
--- a/java/com/android/incallui/InCallPresenter.java
+++ b/java/com/android/incallui/InCallPresenter.java
@@ -52,6 +52,7 @@
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.enrichedcall.EnrichedCallComponent;
 import com.android.dialer.location.GeoUtil;
+import com.android.dialer.logging.DialerImpression;
 import com.android.dialer.logging.InteractionEvent;
 import com.android.dialer.logging.Logger;
 import com.android.dialer.postcall.PostCall;
@@ -429,7 +430,15 @@
     }
 
     Bundle extras = dialerCall.getIntentExtras();
-    return shouldStartInBubbleModeWithExtras(extras);
+    boolean result = shouldStartInBubbleModeWithExtras(extras);
+    if (result) {
+      Logger.get(context)
+          .logCallImpression(
+              DialerImpression.Type.START_CALL_IN_BUBBLE_MODE,
+              dialerCall.getUniqueCallId(),
+              dialerCall.getTimeAddedMs());
+    }
+    return result;
   }
 
   private boolean shouldStartInBubbleModeWithExtras(Bundle outgoingExtras) {
diff --git a/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java b/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java
index 316dd12..cd17c25 100644
--- a/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java
+++ b/java/com/android/incallui/audioroute/AudioRouteSelectorDialogFragment.java
@@ -35,7 +35,11 @@
 import android.widget.TextView;
 import com.android.dialer.common.FragmentUtils;
 import com.android.dialer.common.LogUtil;
+import com.android.dialer.logging.DialerImpression;
+import com.android.dialer.logging.Logger;
 import com.android.incallui.audiomode.BluetoothDeviceProviderComponent;
+import com.android.incallui.call.CallList;
+import com.android.incallui.call.DialerCall;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Set;
@@ -101,15 +105,18 @@
     initItem(
         (TextView) view.findViewById(R.id.audioroute_speaker),
         CallAudioState.ROUTE_SPEAKER,
-        audioState);
+        audioState,
+        DialerImpression.Type.IN_CALL_SWITCH_AUDIO_ROUTE_SPEAKER);
     initItem(
         (TextView) view.findViewById(R.id.audioroute_headset),
         CallAudioState.ROUTE_WIRED_HEADSET,
-        audioState);
+        audioState,
+        DialerImpression.Type.IN_CALL_SWITCH_AUDIO_ROUTE_WIRED_HEADSET);
     initItem(
         (TextView) view.findViewById(R.id.audioroute_earpiece),
         CallAudioState.ROUTE_EARPIECE,
-        audioState);
+        audioState,
+        DialerImpression.Type.IN_CALL_SWITCH_AUDIO_ROUTE_EARPIECE);
 
     // TODO(a bug): set peak height correctly to fully expand it in landscape mode.
     return view;
@@ -123,7 +130,11 @@
         .onAudioRouteSelectorDismiss();
   }
 
-  private void initItem(TextView item, final int itemRoute, CallAudioState audioState) {
+  private void initItem(
+      TextView item,
+      final int itemRoute,
+      CallAudioState audioState,
+      DialerImpression.Type impressionType) {
     int selectedColor = getResources().getColor(R.color.dialer_theme_color);
     if ((audioState.getSupportedRouteMask() & itemRoute) == 0) {
       item.setVisibility(View.GONE);
@@ -134,10 +145,11 @@
     }
     item.setOnClickListener(
         (v) -> {
-          dismiss();
+          logCallAudioRouteImpression(impressionType);
           FragmentUtils.getParentUnsafe(
                   AudioRouteSelectorDialogFragment.this, AudioRouteSelectorPresenter.class)
               .onAudioRouteSelected(itemRoute);
+          dismiss();
         });
   }
 
@@ -153,7 +165,7 @@
     }
     textView.setOnClickListener(
         (v) -> {
-          dismiss();
+          logCallAudioRouteImpression(DialerImpression.Type.IN_CALL_SWITCH_AUDIO_ROUTE_BLUETOOTH);
           // Set Bluetooth audio route
           FragmentUtils.getParentUnsafe(
                   AudioRouteSelectorDialogFragment.this, AudioRouteSelectorPresenter.class)
@@ -162,6 +174,7 @@
           BluetoothDeviceProviderComponent.get(getContext())
               .bluetoothDeviceProvider()
               .setActiveBluetoothDevice(bluetoothDevice);
+          dismiss();
         });
 
     return textView;
@@ -178,4 +191,19 @@
       return bluetoothDevice.getName();
     }
   }
+
+  private void logCallAudioRouteImpression(DialerImpression.Type impressionType) {
+    DialerCall dialerCall = CallList.getInstance().getOutgoingCall();
+    if (dialerCall == null) {
+      dialerCall = CallList.getInstance().getActiveOrBackgroundCall();
+    }
+
+    if (dialerCall != null) {
+      Logger.get(getContext())
+          .logCallImpression(
+              impressionType, dialerCall.getUniqueCallId(), dialerCall.getTimeAddedMs());
+    } else {
+      Logger.get(getContext()).logImpression(impressionType);
+    }
+  }
 }