From 85e6949e388c53e4866c0b274c30f334870bf8cb Mon Sep 17 00:00:00 2001 From: weijiaxu Date: Mon, 20 Nov 2017 14:47:46 -0800 Subject: Add fast database populating button for benefit of testing. Bug: 69431528 Test: On a local device. PiperOrigin-RevId: 176420058 Change-Id: I3013800d86597b19268723377112286d2e2ceb68 --- .../dialer/databasepopulator/CallLogPopulator.java | 18 +++++++++++-- .../databasepopulator/ContactsPopulator.java | 16 +++++++++-- .../databasepopulator/VoicemailPopulator.java | 22 ++++++++++++--- .../dialer/simulator/impl/SimulatorMainMenu.java | 31 +++++++++++++++++----- 4 files changed, 73 insertions(+), 14 deletions(-) (limited to 'java') diff --git a/java/com/android/dialer/databasepopulator/CallLogPopulator.java b/java/com/android/dialer/databasepopulator/CallLogPopulator.java index 7c387ecd1..eb3328c78 100644 --- a/java/com/android/dialer/databasepopulator/CallLogPopulator.java +++ b/java/com/android/dialer/databasepopulator/CallLogPopulator.java @@ -26,9 +26,11 @@ import android.provider.CallLog.Calls; import android.support.annotation.NonNull; import android.support.annotation.WorkerThread; import com.android.dialer.common.Assert; +import com.android.dialer.databasepopulator.CallLogPopulator.CallEntry.Builder; import com.google.auto.value.AutoValue; import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.concurrent.TimeUnit; /** Populates the device database with call log entries. */ @@ -84,13 +86,20 @@ public final class CallLogPopulator { } @WorkerThread - public static void populateCallLog(@NonNull Context context, boolean isWithoutMissedCalls) { + public static void populateCallLog( + @NonNull Context context, boolean isWithoutMissedCalls, boolean fastMode) { Assert.isWorkerThread(); ArrayList operations = new ArrayList<>(); // Do this 4 times to make the call log 4 times bigger. long timeMillis = System.currentTimeMillis(); + List callLogs = new ArrayList<>(); + if (fastMode) { + callLogs.add(SIMPLE_CALL_LOG[0]); + } else { + callLogs = Arrays.asList(SIMPLE_CALL_LOG); + } for (int i = 0; i < 4; i++) { - for (CallEntry.Builder builder : SIMPLE_CALL_LOG) { + for (CallEntry.Builder builder : callLogs) { CallEntry callEntry = builder.setTimeMillis(timeMillis).build(); if (isWithoutMissedCalls && builder.build().getType() == Calls.MISSED_TYPE) { continue; @@ -110,6 +119,11 @@ public final class CallLogPopulator { } } + @WorkerThread + public static void populateCallLog(@NonNull Context context, boolean isWithoutMissedCalls) { + populateCallLog(context, isWithoutMissedCalls, false); + } + @WorkerThread public static void deleteAllCallLog(@NonNull Context context) { Assert.isWorkerThread(); diff --git a/java/com/android/dialer/databasepopulator/ContactsPopulator.java b/java/com/android/dialer/databasepopulator/ContactsPopulator.java index e93c5697a..79492e9d3 100644 --- a/java/com/android/dialer/databasepopulator/ContactsPopulator.java +++ b/java/com/android/dialer/databasepopulator/ContactsPopulator.java @@ -127,12 +127,19 @@ public final class ContactsPopulator { }; @WorkerThread - public static void populateContacts(@NonNull Context context) { + public static void populateContacts(@NonNull Context context, boolean fastMode) { Assert.isWorkerThread(); ArrayList operations = new ArrayList<>(); - for (Contact contact : SIMPLE_CONTACTS) { + List contacts = new ArrayList<>(); + if (fastMode) { + contacts.add(SIMPLE_CONTACTS[0]); + } else { + contacts = Arrays.asList(SIMPLE_CONTACTS); + } + for (Contact contact : contacts) { addContact(contact, operations); } + try { context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operations); } catch (RemoteException | OperationApplicationException e) { @@ -140,6 +147,11 @@ public final class ContactsPopulator { } } + @WorkerThread + public static void populateContacts(@NonNull Context context) { + populateContacts(context, false); + } + @WorkerThread public static void deleteAllContacts(@NonNull Context context) { Assert.isWorkerThread(); diff --git a/java/com/android/dialer/databasepopulator/VoicemailPopulator.java b/java/com/android/dialer/databasepopulator/VoicemailPopulator.java index 9e0f45345..3e692ebcf 100644 --- a/java/com/android/dialer/databasepopulator/VoicemailPopulator.java +++ b/java/com/android/dialer/databasepopulator/VoicemailPopulator.java @@ -29,7 +29,11 @@ import android.support.annotation.WorkerThread; import android.telecom.PhoneAccountHandle; import android.telephony.TelephonyManager; import com.android.dialer.common.Assert; +import com.android.dialer.databasepopulator.VoicemailPopulator.Voicemail.Builder; import com.google.auto.value.AutoValue; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import java.util.concurrent.TimeUnit; /** Populates the device database with voicemail entries. */ @@ -74,14 +78,19 @@ public final class VoicemailPopulator { }; @WorkerThread - public static void populateVoicemail(@NonNull Context context) { + public static void populateVoicemail(@NonNull Context context, boolean fastMode) { Assert.isWorkerThread(); enableVoicemail(context); - + List voicemails = new ArrayList<>(); + if (fastMode) { + voicemails.add(SIMPLE_VOICEMAILS[0]); + } else { + voicemails = Arrays.asList(SIMPLE_VOICEMAILS); + } // Do this 4 times to make the voicemail database 4 times bigger. long timeMillis = System.currentTimeMillis(); for (int i = 0; i < 4; i++) { - for (Voicemail.Builder builder : SIMPLE_VOICEMAILS) { + for (Voicemail.Builder builder : voicemails) { Voicemail voicemail = builder.setTimeMillis(timeMillis).build(); context .getContentResolver() @@ -93,12 +102,17 @@ public final class VoicemailPopulator { } } + @WorkerThread + public static void populateVoicemail(@NonNull Context context) { + populateVoicemail(context, false); + } + @WorkerThread public static void deleteAllVoicemail(@NonNull Context context) { Assert.isWorkerThread(); context .getContentResolver() - .delete(Voicemails.buildSourceUri(context.getPackageName()), "", new String[] {}); + .delete(Voicemails.buildSourceUri(context.getPackageName()), null, null); } @VisibleForTesting diff --git a/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java b/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java index e2082105b..6053a0d52 100644 --- a/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java +++ b/java/com/android/dialer/simulator/impl/SimulatorMainMenu.java @@ -40,6 +40,7 @@ final class SimulatorMainMenu { .addItem("IMS video", SimulatorVideoCall.getActionProvider(context)) .addItem("Notifications", SimulatorNotifications.getActionProvider(context)) .addItem("Populate database", () -> populateDatabase(context)) + .addItem("Fast populate database", () -> fastPopulateDatabase(context)) .addItem("Clean database", () -> cleanDatabase(context)) .addItem("clear preferred SIM", () -> clearPreferredSim(context)) .addItem("Sync voicemail", () -> syncVoicemail(context)) @@ -54,7 +55,15 @@ final class SimulatorMainMenu { .dialerExecutorFactory() .createNonUiTaskBuilder(new PopulateDatabaseWorker()) .build() - .executeSerial(context); + .executeSerial(new PopulateDatabaseWorkerInput(context, false)); + } + + private static void fastPopulateDatabase(@NonNull Context context) { + DialerExecutorComponent.get(context) + .dialerExecutorFactory() + .createNonUiTaskBuilder(new PopulateDatabaseWorker()) + .build() + .executeSerial(new PopulateDatabaseWorkerInput(context, true)); } private static void cleanDatabase(@NonNull Context context) { @@ -97,13 +106,13 @@ final class SimulatorMainMenu { private SimulatorMainMenu() {} - private static class PopulateDatabaseWorker implements Worker { + private static class PopulateDatabaseWorker implements Worker { @Nullable @Override - public Void doInBackground(Context context) { - ContactsPopulator.populateContacts(context); - CallLogPopulator.populateCallLog(context); - VoicemailPopulator.populateVoicemail(context); + public Void doInBackground(PopulateDatabaseWorkerInput input) { + ContactsPopulator.populateContacts(input.context, input.fastMode); + CallLogPopulator.populateCallLog(input.context, false, input.fastMode); + VoicemailPopulator.populateVoicemail(input.context, input.fastMode); return null; } } @@ -135,4 +144,14 @@ final class SimulatorMainMenu { return PersistentLogger.dumpLogToString(); } } + + private static class PopulateDatabaseWorkerInput { + Context context; + boolean fastMode; + + PopulateDatabaseWorkerInput(Context context, boolean fastMode) { + this.context = context; + this.fastMode = fastMode; + } + } } -- cgit v1.2.3