Merge "Handle android.telephony.event.EVENT_CALL_FORWARDED."
diff --git a/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java b/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
index b01689d..92e2569 100644
--- a/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
+++ b/java/com/android/dialer/compat/telephony/TelephonyManagerCompat.java
@@ -46,6 +46,7 @@
 
   public static final String EVENT_NOTIFY_INTERNATIONAL_CALL_ON_WFC =
       "android.telephony.event.EVENT_NOTIFY_INTERNATIONAL_CALL_ON_WFC";
+  public static final String EVENT_CALL_FORWARDED = "android.telephony.event.EVENT_CALL_FORWARDED";
 
   public static final String TELEPHONY_MANAGER_CLASS = "android.telephony.TelephonyManager";
 
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index 67473d7..eed076d 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -484,7 +484,7 @@
                   isWorkCall,
                   isAttemptingHdAudioCall,
                   isHdAudioCall,
-                  !TextUtils.isEmpty(primary.getLastForwardedNumber()),
+                  !TextUtils.isEmpty(primary.getLastForwardedNumber()) || primary.isCallForwarded(),
                   shouldShowContactPhoto,
                   primary.getConnectTimeMillis(),
                   primary.isVoiceMailNumber(),
diff --git a/java/com/android/incallui/call/DialerCall.java b/java/com/android/incallui/call/DialerCall.java
index 543cc3f..5d71d0a 100644
--- a/java/com/android/incallui/call/DialerCall.java
+++ b/java/com/android/incallui/call/DialerCall.java
@@ -29,6 +29,7 @@
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
+import android.support.v4.os.BuildCompat;
 import android.telecom.Call;
 import android.telecom.Call.Details;
 import android.telecom.CallAudioState;
@@ -140,6 +141,7 @@
 
   private String childNumber;
   private String lastForwardedNumber;
+  private boolean isCallForwarded;
   private String callSubject;
   private PhoneAccountHandle phoneAccountHandle;
   @CallHistoryStatus private int callHistoryStatus = CALL_HISTORY_STATUS_UNKNOWN;
@@ -295,6 +297,13 @@
               LogUtil.i("DialerCall.onConnectionEvent", "merge complete");
               isMergeInProcess = false;
               break;
+            case TelephonyManagerCompat.EVENT_CALL_FORWARDED:
+              // Only handle this event for P+ since it's unreliable pre-P.
+              if (BuildCompat.isAtLeastP()) {
+                isCallForwarded = true;
+                update();
+              }
+              break;
             default:
               break;
           }
@@ -800,6 +809,10 @@
     return lastForwardedNumber;
   }
 
+  public boolean isCallForwarded() {
+    return isCallForwarded;
+  }
+
   /** @return The call subject, or {@code null} if none specified. */
   public String getCallSubject() {
     return callSubject;