aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMakoto Onuki <omakoto@google.com>2017-01-11 17:37:20 -0800
committerMakoto Onuki <omakoto@google.com>2017-01-17 15:37:12 -0800
commit5358da6ad10305f9359373ec3cc876a09d8d4e92 (patch)
tree318a2dfda193463d15b69504215639b8bb1ca6be /tests
parenta4ae2c38359a9732138a13569392a431549735cd (diff)
downloadContactsProvider-5358da6ad10305f9359373ec3cc876a09d8d4e92.tar.gz
Add ProviderStatus.DATABASE_CREATION_TIMESTAMP
Also stop sending CONTACTS_DATABASE_CREATED Test: adb shell am instrument -w -e size small com.android.providers.contacts.tests Test: adb shell am instrument -w -e size medium com.android.providers.contacts.tests Test: adb shell am instrument -w -e size large com.android.providers.contacts.tests Bug 33390320 Change-Id: I135fc66aee70d31d0547aa3e8bbcbf3f7ccf514f
Diffstat (limited to 'tests')
-rw-r--r--tests/src/com/android/providers/contacts/ContactsDatabaseHelperTest.java94
-rw-r--r--tests/src/com/android/providers/contacts/ContactsProvider2Test.java7
-rw-r--r--tests/src/com/android/providers/contacts/TestUtils.java2
3 files changed, 102 insertions, 1 deletions
diff --git a/tests/src/com/android/providers/contacts/ContactsDatabaseHelperTest.java b/tests/src/com/android/providers/contacts/ContactsDatabaseHelperTest.java
index e0b5ea58..a9751e5f 100644
--- a/tests/src/com/android/providers/contacts/ContactsDatabaseHelperTest.java
+++ b/tests/src/com/android/providers/contacts/ContactsDatabaseHelperTest.java
@@ -17,13 +17,19 @@
package com.android.providers.contacts;
import android.content.ContentValues;
+import android.database.ContentObserver;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
import android.provider.ContactsContract;
+import android.provider.ContactsContract.ProviderStatus;
import android.provider.ContactsContract.RawContacts;
import android.test.MoreAsserts;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.SmallTest;
+import android.util.Log;
import com.android.providers.contacts.ContactsDatabaseHelper.LowRes;
import com.android.providers.contacts.ContactsDatabaseHelper.MimetypesColumns;
@@ -33,9 +39,14 @@ import com.google.android.collect.Sets;
import java.util.HashSet;
import java.util.Set;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
@SmallTest
public class ContactsDatabaseHelperTest extends BaseContactsProvider2Test {
+ private static final String TAG = "ContactsDHT";
+
private ContactsDatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
@@ -485,4 +496,87 @@ public class ContactsDatabaseHelperTest extends BaseContactsProvider2Test {
assertEquals((Object) (86400 * i), checkGetLastTimeUsedExpression(86400 * i + 86399));
}
}
+
+ public void testNotifyProviderStatusChange() throws Exception {
+ final AtomicReference<Uri> calledUri = new AtomicReference<>();
+
+ final Handler h = new Handler(Looper.getMainLooper());
+
+ final CountDownLatch latch = new CountDownLatch(1);
+
+ final ContentObserver observer = new ContentObserver(h) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ calledUri.set(uri);
+ latch.countDown();
+ }
+ };
+
+ // Notify on ProviderStatus.CONTENT_URI.
+ getContext().getContentResolver().registerContentObserver(
+ ProviderStatus.CONTENT_URI,
+ /* notifyForDescendants= */ false, observer);
+
+ // This should trigger it.
+ calledUri.set(null);
+ ContactsDatabaseHelper.notifyProviderStatusChange(getContext());
+
+ assertTrue(latch.await(30, TimeUnit.SECONDS));
+ assertEquals(ProviderStatus.CONTENT_URI, calledUri.get());
+ }
+
+ public void testNotifyProviderStatusChange_alternate() throws Exception {
+ final AtomicReference<Uri> calledUri = new AtomicReference<>();
+
+ final Handler h = new Handler(Looper.getMainLooper());
+
+ final CountDownLatch latch = new CountDownLatch(1);
+
+ final ContentObserver observer = new ContentObserver(h) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ calledUri.set(uri);
+ latch.countDown();
+ }
+ };
+
+ // Notify on ProviderStatus.CONTENT_URI.
+ getContext().getContentResolver().registerContentObserver(
+ ProviderStatus.STATUS_CHANGE_NOTIFICATION_CONTENT_URI,
+ /* notifyForDescendants= */ false, observer);
+
+ // This should trigger it.
+ calledUri.set(null);
+ ContactsDatabaseHelper.notifyProviderStatusChange(getContext());
+
+ assertTrue(latch.await(30, TimeUnit.SECONDS));
+ assertEquals(ProviderStatus.STATUS_CHANGE_NOTIFICATION_CONTENT_URI, calledUri.get());
+ }
+
+ public void testOpenTimestamp() {
+ final long startTime = System.currentTimeMillis();
+
+ final String dbFilename = "testOpenTimestamp.db";
+
+ getContext().deleteDatabase(dbFilename);
+
+ final ContactsDatabaseHelper dbHelper = ContactsDatabaseHelper.getNewInstanceForTest(
+ mContext, dbFilename);
+
+ dbHelper.getReadableDatabase(); // Open the DB.
+
+ final long creationTime = dbHelper.getDatabaseCreationTime();
+
+ assertTrue("Expected " + creationTime + " >= " + startTime, creationTime >= startTime);
+
+ dbHelper.close();
+
+ // Open again.
+ final ContactsDatabaseHelper dbHelper2 = ContactsDatabaseHelper.getNewInstanceForTest(
+ mContext, dbFilename);
+
+ dbHelper2.getReadableDatabase(); // Open the DB.
+
+ assertEquals(creationTime, dbHelper2.getDatabaseCreationTime());
+ }
}
diff --git a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
index 932e862c..930a8fa8 100644
--- a/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
+++ b/tests/src/com/android/providers/contacts/ContactsProvider2Test.java
@@ -947,6 +947,13 @@ public class ContactsProvider2Test extends BaseContactsProvider2Test {
});
}
+ public void testProviderStatusProjection() {
+ assertProjection(ProviderStatus.CONTENT_URI, new String[]{
+ ProviderStatus.STATUS,
+ ProviderStatus.DATABASE_CREATION_TIMESTAMP,
+ });
+ }
+
public void testRawContactsInsert() {
ContentValues values = new ContentValues();
diff --git a/tests/src/com/android/providers/contacts/TestUtils.java b/tests/src/com/android/providers/contacts/TestUtils.java
index 4d1f2d67..322e5b46 100644
--- a/tests/src/com/android/providers/contacts/TestUtils.java
+++ b/tests/src/com/android/providers/contacts/TestUtils.java
@@ -52,7 +52,7 @@ public class TestUtils {
* we'll switch to file-based DBs, so we can call {@link #createDatabaseSnapshot}
* , pull the snapshot DBs and take a look at them.
*/
- public static final boolean ENABLE_DATABASE_SNAPSHOT = true; // DO NOT SUBMIT WITH TRUE.
+ public static final boolean ENABLE_DATABASE_SNAPSHOT = false; // DO NOT SUBMIT WITH TRUE.
private static final Object sDatabasePathLock = new Object();
private static File sDatabasePath = null;