summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/com/android/dialer/databasepopulator/AndroidManifest.xml18
-rw-r--r--java/com/android/dialer/databasepopulator/CallLogPopulator.java (renamed from java/com/android/dialer/simulator/impl/SimulatorCallLog.java)24
-rw-r--r--java/com/android/dialer/databasepopulator/ContactsPopulator.java (renamed from java/com/android/dialer/simulator/impl/SimulatorContacts.java)45
-rw-r--r--java/com/android/dialer/databasepopulator/VoicemailPopulator.java (renamed from java/com/android/dialer/simulator/impl/SimulatorVoicemail.java)18
-rw-r--r--java/com/android/dialer/simulator/impl/SimulatorActionProvider.java28
5 files changed, 117 insertions, 16 deletions
diff --git a/java/com/android/dialer/databasepopulator/AndroidManifest.xml b/java/com/android/dialer/databasepopulator/AndroidManifest.xml
new file mode 100644
index 000000000..0a3728566
--- /dev/null
+++ b/java/com/android/dialer/databasepopulator/AndroidManifest.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2017 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
+ -->
+<manifest package="com.android.dialer.databasepopulator">
+</manifest> \ No newline at end of file
diff --git a/java/com/android/dialer/simulator/impl/SimulatorCallLog.java b/java/com/android/dialer/databasepopulator/CallLogPopulator.java
index f127d5603..79b3fd6b6 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorCallLog.java
+++ b/java/com/android/dialer/databasepopulator/CallLogPopulator.java
@@ -14,7 +14,7 @@
* limitations under the License
*/
-package com.android.dialer.simulator.impl;
+package com.android.dialer.databasepopulator;
import android.content.ContentProviderOperation;
import android.content.ContentValues;
@@ -28,10 +28,11 @@ import android.support.annotation.WorkerThread;
import com.android.dialer.common.Assert;
import com.google.auto.value.AutoValue;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.concurrent.TimeUnit;
/** Populates the device database with call log entries. */
-final class SimulatorCallLog {
+public final class CallLogPopulator {
// Phone numbers from https://www.google.com/about/company/facts/locations/
private static final CallEntry.Builder[] SIMPLE_CALL_LOG = {
CallEntry.builder().setType(Calls.MISSED_TYPE).setNumber("+1-302-6365454"),
@@ -96,6 +97,21 @@ final class SimulatorCallLog {
}
}
+ @WorkerThread
+ public static void deleteAllCallLog(@NonNull Context context) {
+ Assert.isWorkerThread();
+ try {
+ context
+ .getContentResolver()
+ .applyBatch(
+ CallLog.AUTHORITY,
+ new ArrayList<>(
+ Arrays.asList(ContentProviderOperation.newDelete(Calls.CONTENT_URI).build())));
+ } catch (RemoteException | OperationApplicationException e) {
+ Assert.fail("failed to delete call log: " + e);
+ }
+ }
+
@AutoValue
abstract static class CallEntry {
@NonNull
@@ -108,7 +124,7 @@ final class SimulatorCallLog {
abstract long getTimeMillis();
static Builder builder() {
- return new AutoValue_SimulatorCallLog_CallEntry.Builder()
+ return new AutoValue_CallLogPopulator_CallEntry.Builder()
.setPresentation(Calls.PRESENTATION_ALLOWED);
}
@@ -135,5 +151,5 @@ final class SimulatorCallLog {
}
}
- private SimulatorCallLog() {}
+ private CallLogPopulator() {}
}
diff --git a/java/com/android/dialer/simulator/impl/SimulatorContacts.java b/java/com/android/dialer/databasepopulator/ContactsPopulator.java
index 5bd28986c..e93c5697a 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorContacts.java
+++ b/java/com/android/dialer/databasepopulator/ContactsPopulator.java
@@ -14,7 +14,7 @@
* limitations under the License
*/
-package com.android.dialer.simulator.impl;
+package com.android.dialer.databasepopulator;
import android.content.ContentProviderOperation;
import android.content.Context;
@@ -26,6 +26,7 @@ import android.graphics.Paint;
import android.os.RemoteException;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
+import android.provider.ContactsContract.RawContacts;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.WorkerThread;
@@ -34,10 +35,11 @@ import com.android.dialer.common.Assert;
import com.google.auto.value.AutoValue;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
/** Populates the device database with contacts. */
-public final class SimulatorContacts {
+public final class ContactsPopulator {
// Phone numbers from https://www.google.com/about/company/facts/locations/
private static final Contact[] SIMPLE_CONTACTS = {
// US, contact with e164 number.
@@ -46,6 +48,7 @@ public final class SimulatorContacts {
.addPhoneNumber(new PhoneNumber("+1-302-6365454", Phone.TYPE_MOBILE))
.addEmail(new Email("m@example.com"))
.setIsStarred(true)
+ .setPinned(1)
.setOrangePhoto()
.build(),
// US, contact with a non-e164 number.
@@ -54,6 +57,7 @@ public final class SimulatorContacts {
.addPhoneNumber(new PhoneNumber("(425) 739-5600", Phone.TYPE_MOBILE))
.addEmail(new Email("l@example.com"))
.setIsStarred(true)
+ .setPinned(2)
.setBluePhoto()
.build(),
// UK, number where the (0) should be dropped.
@@ -62,6 +66,7 @@ public final class SimulatorContacts {
.addPhoneNumber(new PhoneNumber("+44 (0) 20 7031 3000", Phone.TYPE_MOBILE))
.addEmail(new Email("r@example.com"))
.setIsStarred(true)
+ .setPinned(3)
.setRedPhoto()
.build(),
// US and Australia, contact with a long name and multiple phone numbers.
@@ -71,6 +76,7 @@ public final class SimulatorContacts {
.addPhoneNumber(new PhoneNumber("+1 404-487-9000", Phone.TYPE_WORK))
.addPhoneNumber(new PhoneNumber("+61 2 9374 4001", Phone.TYPE_FAX_HOME))
.setIsStarred(true)
+ .setPinned(4)
.setPurplePhoto()
.build(),
// US, phone number shared with another contact and 2nd phone number with wait and pause.
@@ -78,25 +84,30 @@ public final class SimulatorContacts {
.setName("Splinter")
.addPhoneNumber(new PhoneNumber("+1-650-2530000", Phone.TYPE_HOME))
.addPhoneNumber(new PhoneNumber("+1 303-245-0086;123,456", Phone.TYPE_WORK))
+ .setBluePhoto()
.build(),
// France, number with Japanese name.
Contact.builder()
.setName("スパイク・スピーゲル")
.addPhoneNumber(new PhoneNumber("+33 (0)1 42 68 53 00", Phone.TYPE_MOBILE))
+ .setBluePhoto()
.build(),
// Israel, RTL name and non-e164 number.
Contact.builder()
.setName("עקב אריה טברסק")
.addPhoneNumber(new PhoneNumber("+33 (0)1 42 68 53 00", Phone.TYPE_MOBILE))
+ .setBluePhoto()
.build(),
// UAE, RTL name.
Contact.builder()
.setName("سلام دنیا")
.addPhoneNumber(new PhoneNumber("+971 4 4509500", Phone.TYPE_MOBILE))
+ .setBluePhoto()
.build(),
// Brazil, contact with no name.
Contact.builder()
.addPhoneNumber(new PhoneNumber("+55-31-2128-6800", Phone.TYPE_MOBILE))
+ .setBluePhoto()
.build(),
// Short number, contact with no name.
Contact.builder().addPhoneNumber(new PhoneNumber("611", Phone.TYPE_MOBILE)).build(),
@@ -104,12 +115,14 @@ public final class SimulatorContacts {
Contact.builder()
.setName("Anonymous")
.addPhoneNumber(new PhoneNumber("*86 512-343-5283", Phone.TYPE_MOBILE))
+ .setBluePhoto()
.build(),
// None, contact with no phone number.
Contact.builder()
.setName("No Phone Number")
.addEmail(new Email("no@example.com"))
.setIsStarred(true)
+ .setBluePhoto()
.build(),
};
@@ -127,6 +140,22 @@ public final class SimulatorContacts {
}
}
+ @WorkerThread
+ public static void deleteAllContacts(@NonNull Context context) {
+ Assert.isWorkerThread();
+ try {
+ context
+ .getContentResolver()
+ .applyBatch(
+ ContactsContract.AUTHORITY,
+ new ArrayList<>(
+ Arrays.asList(
+ ContentProviderOperation.newDelete(RawContacts.CONTENT_URI).build())));
+ } catch (RemoteException | OperationApplicationException e) {
+ Assert.fail("failed to delete contacts: " + e);
+ }
+ }
+
private static void addContact(Contact contact, List<ContentProviderOperation> operations) {
int index = operations.size();
@@ -135,6 +164,9 @@ public final class SimulatorContacts {
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, contact.getAccountType())
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, contact.getAccountName())
.withValue(ContactsContract.RawContacts.STARRED, contact.getIsStarred() ? 1 : 0)
+ .withValue(
+ ContactsContract.RawContacts.PINNED,
+ contact.getIsStarred() ? contact.getPinned() : 0)
.withYieldAllowed(true)
.build());
@@ -203,6 +235,8 @@ public final class SimulatorContacts {
abstract boolean getIsStarred();
+ abstract int getPinned();
+
@Nullable
abstract ByteArrayOutputStream getPhotoStream();
@@ -213,9 +247,10 @@ public final class SimulatorContacts {
abstract List<Email> getEmails();
static Builder builder() {
- return new AutoValue_SimulatorContacts_Contact.Builder()
+ return new AutoValue_ContactsPopulator_Contact.Builder()
.setAccountType("com.google")
.setAccountName("foo@example")
+ .setPinned(0)
.setIsStarred(false)
.setPhoneNumbers(new ArrayList<>())
.setEmails(new ArrayList<>());
@@ -234,6 +269,8 @@ public final class SimulatorContacts {
abstract Builder setIsStarred(boolean isStarred);
+ abstract Builder setPinned(int position);
+
abstract Builder setPhotoStream(ByteArrayOutputStream photoStream);
abstract Builder setPhoneNumbers(@NonNull List<PhoneNumber> phoneNumbers);
@@ -315,5 +352,5 @@ public final class SimulatorContacts {
}
}
- private SimulatorContacts() {}
+ private ContactsPopulator() {}
}
diff --git a/java/com/android/dialer/simulator/impl/SimulatorVoicemail.java b/java/com/android/dialer/databasepopulator/VoicemailPopulator.java
index 04de201ae..581100f03 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorVoicemail.java
+++ b/java/com/android/dialer/databasepopulator/VoicemailPopulator.java
@@ -14,7 +14,7 @@
* limitations under the License
*/
-package com.android.dialer.simulator.impl;
+package com.android.dialer.databasepopulator;
import android.content.ComponentName;
import android.content.ContentValues;
@@ -30,7 +30,7 @@ import com.google.auto.value.AutoValue;
import java.util.concurrent.TimeUnit;
/** Populates the device database with voicemail entries. */
-final class SimulatorVoicemail {
+public final class VoicemailPopulator {
private static final String ACCOUNT_ID = "ACCOUNT_ID";
private static final Voicemail.Builder[] SIMPLE_VOICEMAILS = {
@@ -90,9 +90,17 @@ final class SimulatorVoicemail {
}
}
+ @WorkerThread
+ public static void deleteAllVoicemail(@NonNull Context context) {
+ Assert.isWorkerThread();
+ context
+ .getContentResolver()
+ .delete(Voicemails.buildSourceUri(context.getPackageName()), "", new String[] {});
+ }
+
private static void enableVoicemail(@NonNull Context context) {
PhoneAccountHandle handle =
- new PhoneAccountHandle(new ComponentName(context, SimulatorVoicemail.class), ACCOUNT_ID);
+ new PhoneAccountHandle(new ComponentName(context, VoicemailPopulator.class), ACCOUNT_ID);
ContentValues values = new ContentValues();
values.put(Status.SOURCE_PACKAGE, handle.getComponentName().getPackageName());
@@ -120,7 +128,7 @@ final class SimulatorVoicemail {
abstract boolean getIsRead();
static Builder builder() {
- return new AutoValue_SimulatorVoicemail_Voicemail.Builder();
+ return new AutoValue_VoicemailPopulator_Voicemail.Builder();
}
ContentValues getAsContentValues(Context context) {
@@ -150,5 +158,5 @@ final class SimulatorVoicemail {
}
}
- private SimulatorVoicemail() {}
+ private VoicemailPopulator() {}
}
diff --git a/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java b/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
index f2749b2c5..4efc0ee2d 100644
--- a/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
+++ b/java/com/android/dialer/simulator/impl/SimulatorActionProvider.java
@@ -30,6 +30,9 @@ import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
import com.android.dialer.common.concurrent.DialerExecutors;
+import com.android.dialer.databasepopulator.CallLogPopulator;
+import com.android.dialer.databasepopulator.ContactsPopulator;
+import com.android.dialer.databasepopulator.VoicemailPopulator;
import com.android.dialer.enrichedcall.simulator.EnrichedCallSimulatorActivity;
import com.android.dialer.persistentlog.PersistentLogger;
@@ -89,6 +92,13 @@ final class SimulatorActionProvider extends ActionProvider {
return true;
});
subMenu
+ .add("Clean database")
+ .setOnMenuItemClickListener(
+ (itme) -> {
+ cleanDatabase();
+ return true;
+ });
+ subMenu
.add("Sync Voicemail")
.setOnMenuItemClickListener(
(item) -> {
@@ -128,9 +138,21 @@ final class SimulatorActionProvider extends ActionProvider {
new AsyncTask<Void, Void, Void>() {
@Override
public Void doInBackground(Void... params) {
- SimulatorContacts.populateContacts(context);
- SimulatorCallLog.populateCallLog(context);
- SimulatorVoicemail.populateVoicemail(context);
+ ContactsPopulator.populateContacts(context);
+ CallLogPopulator.populateCallLog(context);
+ VoicemailPopulator.populateVoicemail(context);
+ return null;
+ }
+ }.execute();
+ }
+
+ private void cleanDatabase() {
+ new AsyncTask<Void, Void, Void>() {
+ @Override
+ public Void doInBackground(Void... params) {
+ ContactsPopulator.deleteAllContacts(context);
+ CallLogPopulator.deleteAllCallLog(context);
+ VoicemailPopulator.deleteAllVoicemail(context);
return null;
}
}.execute();