aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Mak <tonymak@google.com>2016-05-04 09:33:24 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-05-04 09:33:24 +0000
commit40bd9994e10f85c2c4acf2647f042b8a72dcdcef (patch)
tree372c2f1535e125c623b938ca0e08c19f5647d92c
parentc2c566284008e9f47c9a23090ad9cc11ad3bad20 (diff)
parentbafc0ea98ff3fb11d2deec4328abe822474fcd45 (diff)
downloadContactsProvider-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.java22
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);
}