Merge "Add impression logging for RTT call"
diff --git a/java/com/android/dialer/logging/dialer_impression.proto b/java/com/android/dialer/logging/dialer_impression.proto
index b1d038d..5d40bb1 100644
--- a/java/com/android/dialer/logging/dialer_impression.proto
+++ b/java/com/android/dialer/logging/dialer_impression.proto
@@ -12,7 +12,7 @@
   // Event enums to be used for Impression Logging in Dialer.
   // It's perfectly acceptable for this enum to be large
   // Values should be from 1000 to 100000.
-  // Next Tag: 1382
+  // Next Tag: 1387
   enum Type {
     UNKNOWN_AOSP_EVENT_TYPE = 1000;
 
@@ -754,5 +754,15 @@
     // Failure happened while enabling spam blocking through after call
     // notification promo.
     SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_AFTER_CALL_NOTIFICATION_PROMO = 1381;
+
+    // RTT call impressions
+    OUTGOING_RTT_CALL = 1382;
+    INCOMING_RTT_CALL = 1383;
+    // The call turns into RTT call mid call.
+    RTT_MID_CALL_ENABLED = 1384;
+    // Mid call RTT request accepted.
+    RTT_MID_CALL_ACCEPTED = 1385;
+    // Mid call RTT request rejected.
+    RTT_MID_CALL_REJECTED = 1386;
   }
 }
diff --git a/java/com/android/incallui/call/CallList.java b/java/com/android/incallui/call/CallList.java
index eccdcee..6b17962 100644
--- a/java/com/android/incallui/call/CallList.java
+++ b/java/com/android/incallui/call/CallList.java
@@ -213,8 +213,22 @@
 
     if (call.getState() == DialerCall.State.INCOMING
         || call.getState() == DialerCall.State.CALL_WAITING) {
+      if (call.isActiveRttCall()) {
+        Logger.get(context)
+            .logCallImpression(
+                DialerImpression.Type.INCOMING_RTT_CALL,
+                call.getUniqueCallId(),
+                call.getTimeAddedMs());
+      }
       onIncoming(call);
     } else {
+      if (call.isActiveRttCall()) {
+        Logger.get(context)
+            .logCallImpression(
+                DialerImpression.Type.OUTGOING_RTT_CALL,
+                call.getUniqueCallId(),
+                call.getTimeAddedMs());
+      }
       onUpdateCall(call);
       notifyGenericListeners();
     }
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 3b7e4dc..c153503 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -312,6 +312,13 @@
         @Override
         public void onRttStatusChanged(Call call, boolean enabled, RttCall rttCall) {
           LogUtil.v("TelecomCallCallback.onRttStatusChanged", "enabled=%b", enabled);
+          if (enabled) {
+            Logger.get(context)
+                .logCallImpression(
+                    DialerImpression.Type.RTT_MID_CALL_ENABLED,
+                    getUniqueCallId(),
+                    getTimeAddedMs());
+          }
           update();
         }
 
@@ -1064,6 +1071,13 @@
 
   @TargetApi(28)
   public void respondToRttRequest(boolean accept, int rttRequestId) {
+    Logger.get(context)
+        .logCallImpression(
+            accept
+                ? DialerImpression.Type.RTT_MID_CALL_ACCEPTED
+                : DialerImpression.Type.RTT_MID_CALL_REJECTED,
+            getUniqueCallId(),
+            getTimeAddedMs());
     getTelecomCall().respondToRttRequest(rttRequestId, accept);
   }