summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
diff options
context:
space:
mode:
authorlinyuh <linyuh@google.com>2018-01-19 13:15:16 -0800
committerCopybara-Service <copybara-piper@google.com>2018-01-19 13:17:54 -0800
commita6523ddb1db3d456ba4d16a120dea1ccd6c72d24 (patch)
treea90f1a29600bea4d937435fdd40424c7f0fece12 /java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
parentfdaa46618ce61344bc83a66590863d126c47b05f (diff)
Improve & reorganize logic related to directories/remote contacts in the search fragment.
Test: DirectoriesCursorLoaderTest, RemoteContactsCursorLoaderTest PiperOrigin-RevId: 182578207 Change-Id: I03c81bd8581c8abbef1bbca1a960f3380d588d22
Diffstat (limited to 'java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java')
-rw-r--r--java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java26
1 files changed, 17 insertions, 9 deletions
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
index 5f92c4902..9feeb7e99 100644
--- a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
@@ -27,9 +27,8 @@ import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
import com.android.dialer.searchfragment.common.Projections;
-import com.android.dialer.searchfragment.remote.RemoteDirectoriesCursorLoader.Directory;
+import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader.Directory;
import java.util.ArrayList;
import java.util.List;
@@ -70,15 +69,13 @@ public final class RemoteContactsCursorLoader extends CursorLoader {
public Cursor loadInBackground() {
for (int i = 0; i < directories.size(); i++) {
Directory directory = directories.get(i);
- // Since the on device contacts could be queried as remote directories and we already query
- // them in SearchContactsCursorLoader, avoid querying them again.
- // TODO(calderwoodra): It's a happy coincidence that on device contacts don't have directory
- // names set, leaving this todo to investigate a better way to isolate them from other remote
- // directories.
- if (TextUtils.isEmpty(directory.getDisplayName())) {
+
+ // Filter out local directories
+ if (!isRemoteDirectory(directory.getId())) {
cursors[i] = null;
continue;
}
+
Cursor cursor =
getContext()
.getContentResolver()
@@ -96,6 +93,17 @@ public final class RemoteContactsCursorLoader extends CursorLoader {
return RemoteContactsCursor.newInstance(getContext(), cursors, directories);
}
+ private static boolean isRemoteDirectory(long directoryId) {
+ return VERSION.SDK_INT >= VERSION_CODES.N
+ ? ContactsContract.Directory.isRemoteDirectoryId(directoryId)
+ : (directoryId != ContactsContract.Directory.DEFAULT
+ && directoryId != ContactsContract.Directory.LOCAL_INVISIBLE
+ // Directory.ENTERPRISE_DEFAULT is the default work profile directory for locally stored
+ // contacts
+ && directoryId != ContactsContract.Directory.ENTERPRISE_DEFAULT
+ && directoryId != ContactsContract.Directory.ENTERPRISE_LOCAL_INVISIBLE);
+ }
+
private MatrixCursor createMatrixCursorFilteringNullNumbers(Cursor cursor) {
if (cursor == null) {
return null;
@@ -140,7 +148,7 @@ public final class RemoteContactsCursorLoader extends CursorLoader {
}
@VisibleForTesting
- static Uri getContentFilterUri(String query, int directoryId) {
+ static Uri getContentFilterUri(String query, long directoryId) {
Uri baseUri =
VERSION.SDK_INT >= VERSION_CODES.N
? ENTERPRISE_CONTENT_FILTER_URI