diff options
author | Tony Mak <tonymak@google.com> | 2016-05-04 09:33:24 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-05-04 09:33:24 +0000 |
commit | 40bd9994e10f85c2c4acf2647f042b8a72dcdcef (patch) | |
tree | 372c2f1535e125c623b938ca0e08c19f5647d92c | |
parent | c2c566284008e9f47c9a23090ad9cc11ad3bad20 (diff) | |
parent | bafc0ea98ff3fb11d2deec4328abe822474fcd45 (diff) | |
download | ContactsProvider-40bd9994e10f85c2c4acf2647f042b8a72dcdcef.tar.gz |
Merge "Honor the user setting MANAGED_PROFILE_CONTACT_REMOTE_SEARCH" into nyc-dev
-rw-r--r-- | src/com/android/providers/contacts/enterprise/EnterprisePolicyGuard.java | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/com/android/providers/contacts/enterprise/EnterprisePolicyGuard.java b/src/com/android/providers/contacts/enterprise/EnterprisePolicyGuard.java index d60a9000..ff292612 100644 --- a/src/com/android/providers/contacts/enterprise/EnterprisePolicyGuard.java +++ b/src/com/android/providers/contacts/enterprise/EnterprisePolicyGuard.java @@ -23,6 +23,7 @@ import android.net.Uri; import android.os.UserHandle; import android.provider.ContactsContract; import android.provider.ContactsContract.Directory; +import android.provider.Settings; import android.util.Log; import com.android.providers.contacts.ContactsProvider2; @@ -30,6 +31,8 @@ import com.android.providers.contacts.ProfileAwareUriMatcher; import com.android.providers.contacts.util.UserUtils; import com.google.common.annotations.VisibleForTesting; +import static android.provider.Settings.Secure.MANAGED_PROFILE_CONTACT_REMOTE_SEARCH; + /** * Digest contacts policy from DevcicePolicyManager and guard enterprise uri */ @@ -65,28 +68,39 @@ public class EnterprisePolicyGuard { } final boolean isCallerIdEnabled = !mDpm.getCrossProfileCallerIdDisabled(currentHandle); - final boolean isContactsSearchEnabled = + final boolean isContactsSearchPolicyEnabled = !mDpm.getCrossProfileContactsSearchDisabled(currentHandle); final boolean isBluetoothContactSharingEnabled = !mDpm.getBluetoothContactSharingDisabled(currentHandle); + final boolean isContactRemoteSearchUserEnabled = + Settings.Secure.getInt( + mContext.getContentResolver(), + MANAGED_PROFILE_CONTACT_REMOTE_SEARCH, 0) == 1; + final String directory = uri.getQueryParameter(ContactsContract.DIRECTORY_PARAM_KEY); if (VERBOSE_LOGGING) { Log.v(TAG, "isCallerIdEnabled: " + isCallerIdEnabled); - Log.v(TAG, "isContactsSearchEnabled: " + isContactsSearchEnabled); + Log.v(TAG, "isContactsSearchPolicyEnabled: " + isContactsSearchPolicyEnabled); Log.v(TAG, "isBluetoothContactSharingEnabled: " + isBluetoothContactSharingEnabled); + Log.v(TAG, "isContactRemoteSearchUserEnabled: " + isContactRemoteSearchUserEnabled); } + + // If it is a remote directory, it is allowed only when + // (i) The uri supports directory + // (ii) User enables it in settings if (directory != null) { final long directoryId = Long.parseLong(directory); if (Directory.isRemoteDirectory(directoryId) - && !isCrossProfileDirectorySupported(uri)) { + && !(isCrossProfileDirectorySupported(uri) + && isContactRemoteSearchUserEnabled)) { return false; } } // If either guard policy allows access, return true. return (isCallerIdGuarded(uriCode) && isCallerIdEnabled) - || (isContactsSearchGuarded(uriCode) && isContactsSearchEnabled) + || (isContactsSearchGuarded(uriCode) && isContactsSearchPolicyEnabled) || (isBluetoothContactSharing(uriCode) && isBluetoothContactSharingEnabled); } |