summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/simulator/impl/SimulatorUtils.java
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2018-05-15 19:31:05 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-05-15 19:31:05 +0000
commit47636a2531e2a1d6c51b1cd3fb6e242f457b2f71 (patch)
tree2de3818a7fa2c123be648ee01d9e551596f09ae2 /java/com/android/dialer/simulator/impl/SimulatorUtils.java
parent21f2f3e1d5eba2cc436b0f1c78d9e354f209287d (diff)
parent3e2c6b8c22b238c3f3b1d9786a045f0a20615fa0 (diff)
Merge changes Id53c298a,I7df0ece7,I9f41b1a7,Iffbfa408,I2aac0df1, ...
* changes: Don't use LoaderManager.getInstance() in dialer. Implement PhoneNumberCacheLookup Fix add call button behavior. Use component for iconography Move SpamStub to separate package. Initialize dialpadFragment and searchFragment with FragmentManager when MainSearchController is created Compress all of dialer's png files. Delete unused check__SpamStatus methods Refactor simulator menu and add portal package for adding simulator service later. Add simulator component in generated root component. Update DialerCall to use SpamStatus instead of booleans Added contacts permission screen to speed dial fragment. Don't crash when cp2 returns a null label. Register system call log content observer if user enables Phone permission. Exit multiselect mode when opening the dialpad. Support missing phone permission in new call log.
Diffstat (limited to 'java/com/android/dialer/simulator/impl/SimulatorUtils.java')
-rw-r--r--java/com/android/dialer/simulator/impl/SimulatorUtils.java204
1 files changed, 204 insertions, 0 deletions
diff --git a/java/com/android/dialer/simulator/impl/SimulatorUtils.java b/java/com/android/dialer/simulator/impl/SimulatorUtils.java
new file mode 100644
index 000000000..9e46f5aa9
--- /dev/null
+++ b/java/com/android/dialer/simulator/impl/SimulatorUtils.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.dialer.simulator.impl;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.VoicemailContract;
+import android.provider.VoicemailContract.Voicemails;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
+import com.android.dialer.common.concurrent.DialerExecutorComponent;
+import com.android.dialer.databasepopulator.BlockedBumberPopulator;
+import com.android.dialer.databasepopulator.CallLogPopulator;
+import com.android.dialer.databasepopulator.ContactsPopulator;
+import com.android.dialer.databasepopulator.VoicemailPopulator;
+import com.android.dialer.persistentlog.PersistentLogger;
+import com.android.dialer.preferredsim.PreferredSimFallbackContract;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.concurrent.TimeUnit;
+
+/** Contains utilities used often in test workflow. */
+public class SimulatorUtils {
+
+ public static final int NOTIFICATION_COUNT_FEW = 1;
+ public static final int NOTIFICATION_COUNT = 12;
+
+ /** Populates contacts database with predefined contacts entries. */
+ public static void populateDatabase(@NonNull Context context) {
+ DialerExecutorComponent.get(context)
+ .dialerExecutorFactory()
+ .createNonUiTaskBuilder(new PopulateDatabaseWorker())
+ .build()
+ .executeSerial(new PopulateDatabaseWorkerInput(context, false));
+ }
+
+ /** Populates voicemail database with predefined voicemail entries. */
+ public static void populateVoicemail(@NonNull Context context) {
+ DialerExecutorComponent.get(context)
+ .dialerExecutorFactory()
+ .createNonUiTaskBuilder(new PopulateVoicemailWorker())
+ .build()
+ .executeSerial(new PopulateDatabaseWorkerInput(context, false));
+ }
+
+ /** Populates voicemail database with only few predefined voicemail entries. */
+ public static void populateVoicemailFast(@NonNull Context context) {
+ DialerExecutorComponent.get(context)
+ .dialerExecutorFactory()
+ .createNonUiTaskBuilder(new PopulateVoicemailWorker())
+ .build()
+ .executeSerial(new PopulateDatabaseWorkerInput(context, true));
+ }
+
+ /** Populates contacts database with only few predefined contacts entries. */
+ public static void fastPopulateDatabase(@NonNull Context context) {
+ DialerExecutorComponent.get(context)
+ .dialerExecutorFactory()
+ .createNonUiTaskBuilder(new PopulateDatabaseWorker())
+ .build()
+ .executeSerial(new PopulateDatabaseWorkerInput(context, true));
+ }
+
+ /** Clean contacts database. */
+ public static void cleanDatabase(@NonNull Context context) {
+ DialerExecutorComponent.get(context)
+ .dialerExecutorFactory()
+ .createNonUiTaskBuilder(new CleanDatabaseWorker())
+ .build()
+ .executeSerial(context);
+ }
+
+ /** Clear preference over sim. */
+ public static void clearPreferredSim(Context context) {
+ DialerExecutorComponent.get(context)
+ .dialerExecutorFactory()
+ .createNonUiTaskBuilder(new ClearPreferredSimWorker())
+ .build()
+ .executeSerial(context);
+ }
+
+ /** Sync voicemail by sending intents to system. */
+ public static void syncVoicemail(@NonNull Context context) {
+ Intent intent = new Intent(VoicemailContract.ACTION_SYNC_VOICEMAIL);
+ context.sendBroadcast(intent);
+ }
+
+ public static void sharePersistentLog(@NonNull Context context) {
+ DialerExecutorComponent.get(context)
+ .dialerExecutorFactory()
+ .createNonUiTaskBuilder(new ShareLogWorker())
+ .onSuccess(
+ (String log) -> {
+ Intent intent = new Intent(Intent.ACTION_SEND);
+ intent.setType("text/plain");
+ intent.putExtra(Intent.EXTRA_TEXT, log);
+ if (intent.resolveActivity(context.getPackageManager()) != null) {
+ context.startActivity(intent);
+ }
+ })
+ .build()
+ .executeSerial(null);
+ }
+
+ public static void addVoicemailNotifications(@NonNull Context context, int notificationNum) {
+ LogUtil.enterBlock("SimulatorNotifications.addVoicemailNotifications");
+ List<ContentValues> voicemails = new ArrayList<>();
+ for (int i = notificationNum; i > 0; i--) {
+ VoicemailPopulator.Voicemail voicemail =
+ VoicemailPopulator.Voicemail.builder()
+ .setPhoneNumber(String.format(Locale.ENGLISH, "+%d", i))
+ .setTranscription(String.format(Locale.ENGLISH, "Short transcript %d", i))
+ .setDurationSeconds(60)
+ .setIsRead(false)
+ .setPhoneAccountComponentName("")
+ .setTimeMillis(System.currentTimeMillis() - TimeUnit.HOURS.toMillis(i))
+ .build();
+ voicemails.add(voicemail.getAsContentValues(context));
+ }
+ context
+ .getContentResolver()
+ .bulkInsert(
+ Voicemails.buildSourceUri(context.getPackageName()),
+ voicemails.toArray(new ContentValues[voicemails.size()]));
+ }
+
+ 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 class PopulateDatabaseWorker implements Worker<PopulateDatabaseWorkerInput, Void> {
+ @Nullable
+ @Override
+ 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;
+ }
+ }
+
+ private static class CleanDatabaseWorker implements Worker<Context, Void> {
+ @Nullable
+ @Override
+ public Void doInBackground(Context context) {
+ ContactsPopulator.deleteAllContacts(context);
+ CallLogPopulator.deleteAllCallLog(context);
+ VoicemailPopulator.deleteAllVoicemail(context);
+ BlockedBumberPopulator.deleteBlockedNumbers(context);
+ return null;
+ }
+ }
+
+ private static class ClearPreferredSimWorker implements Worker<Context, Void> {
+ @Nullable
+ @Override
+ public Void doInBackground(Context context) {
+ context.getContentResolver().delete(PreferredSimFallbackContract.CONTENT_URI, null, null);
+ return null;
+ }
+ }
+
+ private static class ShareLogWorker implements Worker<Void, String> {
+ @Nullable
+ @Override
+ public String doInBackground(Void unused) {
+ return PersistentLogger.dumpLogToString();
+ }
+ }
+
+ private static class PopulateDatabaseWorkerInput {
+ Context context;
+ boolean fastMode;
+
+ PopulateDatabaseWorkerInput(Context context, boolean fastMode) {
+ this.context = context;
+ this.fastMode = fastMode;
+ }
+ }
+}