Post call prompt now only shows if the user pressed the disconnect button.

In addition, this also fixes an issue where if a user upgrade their calls
to duo video calls quickly, they would see the post call prompt.

Bug: 62689536,64113693
Test: PostCallIntegrationTest
PiperOrigin-RevId: 164758520
Change-Id: I5f91c40e78ce1ff82521a38b0ce5898095849134
diff --git a/java/com/android/dialer/postcall/PostCall.java b/java/com/android/dialer/postcall/PostCall.java
index c4922cd..011fbc9 100644
--- a/java/com/android/dialer/postcall/PostCall.java
+++ b/java/com/android/dialer/postcall/PostCall.java
@@ -46,6 +46,7 @@
   private static final String KEY_POST_CALL_CALL_CONNECT_TIME = "post_call_call_connect_time";
   private static final String KEY_POST_CALL_CALL_NUMBER = "post_call_call_number";
   private static final String KEY_POST_CALL_MESSAGE_SENT = "post_call_message_sent";
+  private static final String KEY_POST_CALL_DISCONNECT_PRESSED = "post_call_disconnect_pressed";
 
   private static Snackbar activeSnackbar;
 
@@ -146,6 +147,13 @@
         .apply();
   }
 
+  public static void onDisconnectPressed(Context context) {
+    DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context)
+        .edit()
+        .putBoolean(KEY_POST_CALL_DISCONNECT_PRESSED, true)
+        .apply();
+  }
+
   public static void onCallDisconnected(Context context, String number, long callConnectedMillis) {
     DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context)
         .edit()
@@ -185,6 +193,7 @@
         .remove(KEY_POST_CALL_CALL_NUMBER)
         .remove(KEY_POST_CALL_MESSAGE_SENT)
         .remove(KEY_POST_CALL_CALL_CONNECT_TIME)
+        .remove(KEY_POST_CALL_DISCONNECT_PRESSED)
         .apply();
   }
 
@@ -197,6 +206,8 @@
     long timeSinceDisconnect = System.currentTimeMillis() - disconnectTimeMillis;
     long callDurationMillis = disconnectTimeMillis - connectTimeMillis;
 
+    boolean callDisconnectedByUser = manager.getBoolean(KEY_POST_CALL_DISCONNECT_PRESSED, false);
+
     ConfigProvider binding = ConfigProviderBindings.get(context);
     return disconnectTimeMillis != -1
         && connectTimeMillis != -1
@@ -204,7 +215,8 @@
         && binding.getLong("postcall_last_call_threshold", 30_000) > timeSinceDisconnect
         && (connectTimeMillis == 0
             || binding.getLong("postcall_call_duration_threshold", 35_000) > callDurationMillis)
-        && getPhoneNumber(context) != null;
+        && getPhoneNumber(context) != null
+        && callDisconnectedByUser;
   }
 
   private static boolean shouldPromptUserToViewSentMessage(Context context) {
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index 222b5b8..b02c989 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -52,6 +52,7 @@
 import com.android.dialer.logging.Logger;
 import com.android.dialer.multimedia.MultimediaData;
 import com.android.dialer.oem.MotorolaUtils;
+import com.android.dialer.postcall.PostCall;
 import com.android.incallui.ContactInfoCache.ContactCacheEntry;
 import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
 import com.android.incallui.InCallPresenter.InCallDetailsListener;
@@ -1017,6 +1018,7 @@
     if (mPrimary != null) {
       mPrimary.disconnect();
     }
+    PostCall.onDisconnectPressed(mContext);
   }
 
   /**