diff options
Diffstat (limited to 'tests/src/com/android/providers/contacts/ContactsActor.java')
-rw-r--r-- | tests/src/com/android/providers/contacts/ContactsActor.java | 44 |
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 |