diff options
author | linyuh <linyuh@google.com> | 2018-01-19 13:15:16 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-01-19 13:17:54 -0800 |
commit | a6523ddb1db3d456ba4d16a120dea1ccd6c72d24 (patch) | |
tree | a90f1a29600bea4d937435fdd40424c7f0fece12 /java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java | |
parent | fdaa46618ce61344bc83a66590863d126c47b05f (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.java | 26 |
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 |