Fix impression logging for spam blocking promo dialog shown in after call
notification.

Test: N/A
PiperOrigin-RevId: 194465415
Change-Id: Ica9301f4315b549c343112a824c8f7c51213bb99
diff --git a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
index 5517918..987615f 100644
--- a/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
+++ b/java/com/android/dialer/app/calllog/BlockReportSpamListener.java
@@ -206,11 +206,28 @@
   }
 
   private void showSpamBlockingPromoDialog() {
-    if (spamBlockingPromoHelper.shouldShowSpamBlockingPromo()) {
-      spamBlockingPromoHelper.showSpamBlockingPromoDialog(
-          fragmentManager,
-          success -> spamBlockingPromoHelper.showModifySettingOnCompleteSnackbar(rootView, success),
-          null /* onDissmissListener */);
+    if (!spamBlockingPromoHelper.shouldShowSpamBlockingPromo()) {
+      return;
     }
+
+    Logger.get(context).logImpression(DialerImpression.Type.SPAM_BLOCKING_CALL_LOG_PROMO_SHOWN);
+    spamBlockingPromoHelper.showSpamBlockingPromoDialog(
+        fragmentManager,
+        () -> {
+          Logger.get(context)
+              .logImpression(DialerImpression.Type.SPAM_BLOCKING_ENABLED_THROUGH_CALL_LOG_PROMO);
+          spamSettings.modifySpamBlockingSetting(
+              true,
+              success -> {
+                if (!success) {
+                  Logger.get(context)
+                      .logImpression(
+                          DialerImpression.Type
+                              .SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_CALL_LOG_PROMO);
+                }
+                spamBlockingPromoHelper.showModifySettingOnCompleteSnackbar(rootView, success);
+              });
+        },
+        null /* onDismissListener */);
   }
 }
diff --git a/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java b/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java
index 891ac44..6a8cde8 100644
--- a/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java
+++ b/java/com/android/dialer/spam/promo/SpamBlockingPromoHelper.java
@@ -34,14 +34,14 @@
 import com.android.dialer.notification.DialerNotificationManager;
 import com.android.dialer.notification.NotificationChannelId;
 import com.android.dialer.spam.SpamSettings;
-import com.android.dialer.spam.SpamSettings.ModifySettingListener;
+import com.android.dialer.spam.promo.SpamBlockingPromoDialogFragment.OnEnableListener;
 
 /** Helper class for showing spam blocking on-boarding promotions. */
 public class SpamBlockingPromoHelper {
 
   static final String SPAM_BLOCKING_PROMO_PERIOD_MILLIS = "spam_blocking_promo_period_millis";
   static final String SPAM_BLOCKING_PROMO_LAST_SHOW_MILLIS = "spam_blocking_promo_last_show_millis";
-  static final String ENABLE_SPAM_BLOCKING_PROMO = "enable_spam_blocking_promo";
+  public static final String ENABLE_SPAM_BLOCKING_PROMO = "enable_spam_blocking_promo";
 
   private final Context context;
   private final SpamSettings spamSettings;
@@ -81,33 +81,15 @@
    * Shows a spam blocking promo dialog.
    *
    * @param fragmentManager the fragment manager to show the dialog.
-   * @param modifySettingListener the listener called after spam blocking setting is modified.
+   * @param onEnableListener the listener called when enable button is clicked.
    * @param onDismissListener the listener called when the dialog is dismissed.
    */
   public void showSpamBlockingPromoDialog(
       FragmentManager fragmentManager,
-      ModifySettingListener modifySettingListener,
+      OnEnableListener onEnableListener,
       OnDismissListener onDismissListener) {
     updateLastShowSpamTimestamp();
-    Logger.get(context).logImpression(DialerImpression.Type.SPAM_BLOCKING_CALL_LOG_PROMO_SHOWN);
-    SpamBlockingPromoDialogFragment.newInstance(
-            () -> {
-              Logger.get(context)
-                  .logImpression(
-                      DialerImpression.Type.SPAM_BLOCKING_ENABLED_THROUGH_CALL_LOG_PROMO);
-              spamSettings.modifySpamBlockingSetting(
-                  true,
-                  success -> {
-                    if (!success) {
-                      Logger.get(context)
-                          .logImpression(
-                              DialerImpression.Type
-                                  .SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_CALL_LOG_PROMO);
-                    }
-                    modifySettingListener.onComplete(success);
-                  });
-            },
-            onDismissListener)
+    SpamBlockingPromoDialogFragment.newInstance(onEnableListener, onDismissListener)
         .show(fragmentManager, SpamBlockingPromoDialogFragment.SPAM_BLOCKING_PROMO_DIALOG_TAG);
   }
 
diff --git a/java/com/android/incallui/spam/SpamNotificationActivity.java b/java/com/android/incallui/spam/SpamNotificationActivity.java
index c04a071..e10dea3 100644
--- a/java/com/android/incallui/spam/SpamNotificationActivity.java
+++ b/java/com/android/incallui/spam/SpamNotificationActivity.java
@@ -43,6 +43,7 @@
 import com.android.dialer.notification.DialerNotificationManager;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 import com.android.dialer.spam.SpamComponent;
+import com.android.dialer.spam.SpamSettings;
 import com.android.dialer.spam.promo.SpamBlockingPromoHelper;
 import com.android.incallui.call.DialerCall;
 
@@ -86,6 +87,8 @@
         }
       };
   private FilteredNumberAsyncQueryHandler filteredNumberAsyncQueryHandler;
+  private SpamSettings spamSettings;
+  private SpamBlockingPromoHelper spamBlockingPromoHelper;
 
   /**
    * Creates an intent to start this activity.
@@ -160,6 +163,8 @@
     super.onCreate(savedInstanceState);
     setFinishOnTouchOutside(true);
     filteredNumberAsyncQueryHandler = new FilteredNumberAsyncQueryHandler(this);
+    spamSettings = SpamComponent.get(this).spamSettings();
+    spamBlockingPromoHelper = new SpamBlockingPromoHelper(getApplicationContext(), spamSettings);
     cancelNotification();
   }
 
@@ -417,7 +422,7 @@
                   dismiss();
                   spamNotificationActivity.maybeShowBlockReportSpamDialog(
                       number, contactLookupResultType);
-                  spamNotificationActivity.showSpamBlockingPromoDialog();
+                  spamNotificationActivity.maybeShowSpamBlockingPromoAndFinish();
                 }
               })
           .setNegativeButton(
@@ -515,23 +520,43 @@
                   dismiss();
                   spamNotificationActivity.maybeShowBlockReportSpamDialog(
                       number, contactLookupResultType);
+                  spamNotificationActivity.maybeShowSpamBlockingPromoAndFinish();
                 }
               })
           .create();
     }
   }
 
-  private void showSpamBlockingPromoDialog() {
-    SpamBlockingPromoHelper spamBlockingPromoHelper =
-        new SpamBlockingPromoHelper(
-            getApplicationContext(), SpamComponent.get(this).spamSettings());
+  private void maybeShowSpamBlockingPromoAndFinish() {
     if (!spamBlockingPromoHelper.shouldShowSpamBlockingPromo()) {
       finish();
-    } else {
-      spamBlockingPromoHelper.showSpamBlockingPromoDialog(
-          getFragmentManager(),
-          success -> spamBlockingPromoHelper.showModifySettingOnCompleteToast(success),
-          dialog -> finish());
+      return;
     }
+    Logger.get(this)
+        .logImpression(DialerImpression.Type.SPAM_BLOCKING_AFTER_CALL_NOTIFICATION_PROMO_SHOWN);
+    showSpamBlockingPromoDialog();
+  }
+
+  private void showSpamBlockingPromoDialog() {
+    spamBlockingPromoHelper.showSpamBlockingPromoDialog(
+        getFragmentManager(),
+        () -> {
+          Logger.get(this)
+              .logImpression(
+                  DialerImpression.Type
+                      .SPAM_BLOCKING_ENABLED_THROUGH_AFTER_CALL_NOTIFICATION_PROMO);
+          spamSettings.modifySpamBlockingSetting(
+              true,
+              success -> {
+                if (!success) {
+                  Logger.get(this)
+                      .logImpression(
+                          DialerImpression.Type
+                              .SPAM_BLOCKING_MODIFY_FAILURE_THROUGH_AFTER_CALL_NOTIFICATION_PROMO);
+                }
+                spamBlockingPromoHelper.showModifySettingOnCompleteToast(success);
+              });
+        },
+        dialog -> finish());
   }
 }