Populate voicemails in simulator

Adds the logic for only adding voicemails (no call log) in the simulator menu. Also adds the logic for adding a fast voicemail, which only adds 1 voicemail.

Bug: 64882313
Test: N/A
PiperOrigin-RevId: 179615214
Change-Id: I5a55df44d94b6123eaed6bc56439472b1ab81151
diff --git a/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java b/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java
index 6ec30f6..c48e283 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java
@@ -44,8 +44,12 @@
             "Notifications",
             SimulatorNotifications.getActionProvider(activity.getApplicationContext()))
         .addItem("Populate database", () -> populateDatabase(activity.getApplicationContext()))
+        .addItem("Populate voicemail", () -> populateVoicemail(activity.getApplicationContext()))
         .addItem(
             "Fast populate database", () -> fastPopulateDatabase(activity.getApplicationContext()))
+        .addItem(
+            "Fast populate voicemail database",
+            () -> populateVoicemailFast(activity.getApplicationContext()))
         .addItem("Clean database", () -> cleanDatabase(activity.getApplicationContext()))
         .addItem("clear preferred SIM", () -> clearPreferredSim(activity.getApplicationContext()))
         .addItem("Sync voicemail", () -> syncVoicemail(activity.getApplicationContext()))
@@ -65,6 +69,32 @@
         .executeSerial(new PopulateDatabaseWorkerInput(context, false));
   }
 
+  private static void populateVoicemail(@NonNull Context context) {
+    DialerExecutorComponent.get(context)
+        .dialerExecutorFactory()
+        .createNonUiTaskBuilder(new PopulateVoicemailWorker())
+        .build()
+        .executeSerial(new PopulateDatabaseWorkerInput(context, false));
+  }
+
+  private static void populateVoicemailFast(@NonNull Context context) {
+    DialerExecutorComponent.get(context)
+        .dialerExecutorFactory()
+        .createNonUiTaskBuilder(new PopulateVoicemailWorker())
+        .build()
+        .executeSerial(new PopulateDatabaseWorkerInput(context, true));
+  }
+
+  private static class PopulateVoicemailWorker
+      implements Worker<PopulateDatabaseWorkerInput, Void> {
+    @Nullable
+    @Override
+    public Void doInBackground(PopulateDatabaseWorkerInput input) {
+      VoicemailPopulator.populateVoicemail(input.context, input.fastMode);
+      return null;
+    }
+  }
+
   private static void fastPopulateDatabase(@NonNull Context context) {
     DialerExecutorComponent.get(context)
         .dialerExecutorFactory()