aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMakoto Onuki <omakoto@google.com>2016-01-12 09:44:13 -0800
committerMakoto Onuki <omakoto@google.com>2016-01-21 15:15:35 -0800
commitf3bd980c0ec03db2538e86cadee2c1559f02c85b (patch)
tree302fa5918d0a1e16974dca6985ea28a5dd6c1656 /tests
parent43d1d1a6e5d41aa2bce851ab89ddaa91036d2559 (diff)
downloadContactsProvider-f3bd980c0ec03db2538e86cadee2c1559f02c85b.tar.gz
[FBE] Introduce shadow calllog provider [2/2]
Introduce a new provider that's a clone of the calllog provider but is EA. The provider is hidden and requires MANAGE_USERS to access, and responsible for storing calllog entries that are inserted when the real provider is still encrypted. When the real provider starts, it copies the entries from the shadow as well as user-0's real provider, and clears the shadow. Also fix b/26516259 Bug 26183949 Change-Id: If44b46709e2e7b1651b41c09d900e1cb2777dc56
Diffstat (limited to 'tests')
-rw-r--r--tests/src/com/android/providers/contacts/CallLogProviderTest.java21
-rw-r--r--tests/src/com/android/providers/contacts/ContactsActor.java25
2 files changed, 38 insertions, 8 deletions
diff --git a/tests/src/com/android/providers/contacts/CallLogProviderTest.java b/tests/src/com/android/providers/contacts/CallLogProviderTest.java
index fb771a32..590a0a32 100644
--- a/tests/src/com/android/providers/contacts/CallLogProviderTest.java
+++ b/tests/src/com/android/providers/contacts/CallLogProviderTest.java
@@ -18,6 +18,7 @@ package com.android.providers.contacts;
import com.android.internal.telephony.CallerInfo;
import com.android.internal.telephony.PhoneConstants;
+import com.android.providers.contacts.CallLogDatabaseHelper.DbProperties;
import com.android.providers.contacts.testutil.CommonDatabaseUtils;
import android.content.ComponentName;
@@ -187,6 +188,8 @@ public class CallLogProviderTest extends BaseContactsProvider2Test {
Uri uri = Calls.addCall(ci, getMockContext(), "1-800-263-7643",
PhoneConstants.PRESENTATION_ALLOWED, Calls.OUTGOING_TYPE, 0, subscription, 2000,
40, null);
+ assertNotNull(uri);
+ assertEquals("0@" + CallLog.AUTHORITY, uri.getAuthority());
ContentValues values = new ContentValues();
values.put(Calls.TYPE, Calls.OUTGOING_TYPE);
@@ -398,27 +401,33 @@ public class CallLogProviderTest extends BaseContactsProvider2Test {
mResolver.delete(Calls.CONTENT_URI_WITH_VOICEMAIL, null, null);
}
- public void testCopyEntriesFromCursor_ReturnsMostRecentEntryTimestamp() {
- assertEquals(10, mCallLogProvider.copyEntriesFromCursor(getTestCallLogCursor()));
- }
-
public void testCopyEntriesFromCursor_AllEntriesSyncedWithoutDuplicatesPresent() {
assertStoredValues(Calls.CONTENT_URI);
- mCallLogProvider.copyEntriesFromCursor(getTestCallLogCursor());
+
+ assertEquals(10, mCallLogProvider.copyEntriesFromCursor(
+ getTestCallLogCursor(), 5, /* forShadow =*/ true));
+
assertStoredValues(Calls.CONTENT_URI,
getTestCallLogValues(2),
getTestCallLogValues(1),
getTestCallLogValues(0));
+ assertEquals(10, mCallLogProvider.getLastSyncTime(/* forShadow =*/ true));
+ assertEquals(0, mCallLogProvider.getLastSyncTime(/* forShadow =*/ false));
}
public void testCopyEntriesFromCursor_DuplicatesIgnoredCorrectly() {
mResolver.insert(Calls.CONTENT_URI, getTestCallLogValues(1));
assertStoredValues(Calls.CONTENT_URI, getTestCallLogValues(1));
- mCallLogProvider.copyEntriesFromCursor(getTestCallLogCursor());
+
+ assertEquals(10, mCallLogProvider.copyEntriesFromCursor(
+ getTestCallLogCursor(), 5, /* forShadow =*/ false));
+
assertStoredValues(Calls.CONTENT_URI,
getTestCallLogValues(2),
getTestCallLogValues(1),
getTestCallLogValues(0));
+ assertEquals(0, mCallLogProvider.getLastSyncTime(/* forShadow =*/ true));
+ assertEquals(10, mCallLogProvider.getLastSyncTime(/* forShadow =*/ false));
}
private ContentValues getDefaultValues(int callType) {
diff --git a/tests/src/com/android/providers/contacts/ContactsActor.java b/tests/src/com/android/providers/contacts/ContactsActor.java
index 1d7931ec..fd75e451 100644
--- a/tests/src/com/android/providers/contacts/ContactsActor.java
+++ b/tests/src/com/android/providers/contacts/ContactsActor.java
@@ -275,7 +275,28 @@ public class ContactsActor {
resolver = new MockContentResolver();
context = new RestrictionMockContext(overallContext, packageName, resolver,
- mGrantedPermissions, mGrantedUriPermissions);
+ mGrantedPermissions, mGrantedUriPermissions) {
+ @Override
+ public Object getSystemService(String name) {
+ if (Context.COUNTRY_DETECTOR.equals(name)) {
+ return mMockCountryDetector;
+ }
+ if (Context.ACCOUNT_SERVICE.equals(name)) {
+ return mMockAccountManager;
+ }
+ if (Context.USER_SERVICE.equals(name)) {
+ return mockUserManager;
+ }
+ // Use overallContext here; super.getSystemService() somehow won't return
+ // DevicePolicyManager.
+ return overallContext.getSystemService(name);
+ }
+
+ @Override
+ public String getSystemServiceName(Class<?> serviceClass) {
+ return overallContext.getSystemServiceName(serviceClass);
+ }
+ };
this.packageName = packageName;
// Let the Secure class initialize the settings provider, which is done when we first
@@ -357,12 +378,12 @@ public class ContactsActor {
// info shouldn't have it.
info.authority = stripOutUserIdFromAuthority(authority);
provider.attachInfoForTesting(providerContext, info);
- resolver.addProvider(authority, provider);
// In case of LegacyTest, "authority" here is actually multiple authorities.
// Register all authority here.
for (String a : authority.split(";")) {
resolver.addProvider(a, provider);
+ resolver.addProvider("0@" + a, provider);
}
return provider;
}