aboutsummaryrefslogtreecommitdiff
path: root/tests/src/com/android/providers/contacts/ContactsActor.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/providers/contacts/ContactsActor.java')
-rw-r--r--tests/src/com/android/providers/contacts/ContactsActor.java44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/src/com/android/providers/contacts/ContactsActor.java b/tests/src/com/android/providers/contacts/ContactsActor.java
index 11a13c27..470f64b7 100644
--- a/tests/src/com/android/providers/contacts/ContactsActor.java
+++ b/tests/src/com/android/providers/contacts/ContactsActor.java
@@ -57,9 +57,11 @@ import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.StatusUpdates;
+import android.telephony.TelephonyManager;
import android.test.IsolatedContext;
import android.test.mock.MockContentResolver;
import android.test.mock.MockContext;
+import android.text.TextUtils;
import com.android.providers.contacts.util.ContactsPermissions;
import com.android.providers.contacts.util.MockSharedPreferences;
@@ -70,6 +72,7 @@ import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Set;
@@ -98,6 +101,7 @@ public class ContactsActor {
private Set<String> mGrantedPermissions = Sets.newHashSet();
private final Set<Uri> mGrantedUriPermissions = Sets.newHashSet();
+ private boolean mHasCarrierPrivileges;
private List<ContentProvider> mAllProviders = new ArrayList<>();
@@ -242,6 +246,31 @@ public class ContactsActor {
}
}
+ private MockTelephonyManager mMockTelephonyManager;
+
+ private class MockTelephonyManager extends TelephonyManager {
+ public MockTelephonyManager(Context context) {
+ super(context);
+ }
+
+ @Override
+ public int checkCarrierPrivilegesForPackageAnyPhone(String packageName) {
+ if (TextUtils.equals(packageName, ContactsActor.this.packageName)
+ && mHasCarrierPrivileges) {
+ return TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
+ }
+ return TelephonyManager.CARRIER_PRIVILEGE_STATUS_NO_ACCESS;
+ }
+
+ @Override
+ public List<String> getPackagesWithCarrierPrivileges() {
+ if (!mHasCarrierPrivileges) {
+ return Collections.emptyList();
+ }
+ return Collections.singletonList(packageName);
+ }
+ }
+
/**
* A context wrapper that reports a different user id.
*
@@ -290,6 +319,9 @@ public class ContactsActor {
if (Context.USER_SERVICE.equals(name)) {
return mockUserManager;
}
+ if (Context.TELEPHONY_SERVICE.equals(name)) {
+ return mMockTelephonyManager;
+ }
// Use overallContext here; super.getSystemService() somehow won't return
// DevicePolicyManager.
return overallContext.getSystemService(name);
@@ -334,6 +366,9 @@ public class ContactsActor {
if (Context.USER_SERVICE.equals(name)) {
return mockUserManager;
}
+ if (Context.TELEPHONY_SERVICE.equals(name)) {
+ return mMockTelephonyManager;
+ }
// Use overallContext here; super.getSystemService() somehow won't return
// DevicePolicyManager.
return overallContext.getSystemService(name);
@@ -367,6 +402,7 @@ public class ContactsActor {
mMockAccountManager = new MockAccountManager(mProviderContext);
mockUserManager = new MockUserManager(mProviderContext);
+ mMockTelephonyManager = new MockTelephonyManager(mProviderContext);
provider = addProvider(providerClass, authority);
}
@@ -427,6 +463,14 @@ public class ContactsActor {
mGrantedUriPermissions.removeAll(Arrays.asList(uris));
}
+ public void grantCarrierPrivileges() {
+ mHasCarrierPrivileges = true;
+ }
+
+ public void revokeCarrierPrivileges() {
+ mHasCarrierPrivileges = false;
+ }
+
/**
* Mock {@link Context} that reports specific well-known values for testing
* data protection. The creator can override the owner package name, and