summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/searchfragment
diff options
context:
space:
mode:
authorlinyuh <linyuh@google.com>2018-02-20 13:40:18 -0800
committerEric Erfanian <erfanian@google.com>2018-02-22 21:09:10 +0000
commit844dcad13ad494256dddfdc44f7ad90a5f93c530 (patch)
tree2e6199b8ab8c3900bbacacb4238b5396ce6f3707 /java/com/android/dialer/searchfragment
parent7e3f39706c2d8ae74ee5613f582daa2946dcc5d4 (diff)
Merge searchfragment/remote into searchfragment/directories and renaming things accordingly.
Test: Existing tests PiperOrigin-RevId: 186355284 Change-Id: I7c2a2917175ef13742ca3b2e628d8655dc668f60
Diffstat (limited to 'java/com/android/dialer/searchfragment')
-rw-r--r--java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java7
-rw-r--r--java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java (renamed from java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java)12
-rw-r--r--java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java (renamed from java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java)17
-rw-r--r--java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java (renamed from java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java)14
-rw-r--r--java/com/android/dialer/searchfragment/directories/res/values/strings.xml (renamed from java/com/android/dialer/searchfragment/remote/res/values/strings.xml)0
-rw-r--r--java/com/android/dialer/searchfragment/list/NewSearchFragment.java71
-rw-r--r--java/com/android/dialer/searchfragment/list/SearchAdapter.java12
-rw-r--r--java/com/android/dialer/searchfragment/remote/AndroidManifest.xml16
8 files changed, 75 insertions, 74 deletions
diff --git a/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java b/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java
index 39c1187a4..dbe11dd96 100644
--- a/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoriesCursorLoader.java
@@ -31,7 +31,12 @@ import com.google.auto.value.AutoValue;
import java.util.ArrayList;
import java.util.List;
-/** {@link CursorLoader} to load the list of all directories (local and remote). */
+/**
+ * {@link CursorLoader} to load information about all directories (local and remote).
+ *
+ * <p>Information about a directory includes its ID, display name, etc, but doesn't include the
+ * contacts in it.
+ */
public final class DirectoriesCursorLoader extends CursorLoader {
public static final String[] PROJECTION = {
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java
index 4be96fe58..ff321fc75 100644
--- a/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactViewHolder.java
@@ -14,7 +14,7 @@
* limitations under the License
*/
-package com.android.dialer.searchfragment.remote;
+package com.android.dialer.searchfragment.directories;
import android.content.Context;
import android.content.res.Resources;
@@ -40,8 +40,8 @@ import com.android.dialer.searchfragment.common.QueryBoldingUtil;
import com.android.dialer.searchfragment.common.R;
import com.android.dialer.searchfragment.common.SearchCursor;
-/** ViewHolder for a nearby place row. */
-public final class RemoteContactViewHolder extends RecyclerView.ViewHolder
+/** ViewHolder for a directory contact row. */
+public final class DirectoryContactViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener {
private final Context context;
@@ -52,7 +52,7 @@ public final class RemoteContactViewHolder extends RecyclerView.ViewHolder
private String number;
- public RemoteContactViewHolder(View view) {
+ public DirectoryContactViewHolder(View view) {
super(view);
view.setOnClickListener(this);
photo = view.findViewById(R.id.photo);
@@ -63,8 +63,8 @@ public final class RemoteContactViewHolder extends RecyclerView.ViewHolder
}
/**
- * Binds the ViewHolder with a cursor from {@link RemoteContactsCursorLoader} with the data found
- * at the cursors current position.
+ * Binds the ViewHolder with a cursor from {@link DirectoryContactsCursorLoader} with the data
+ * found at the cursors current position.
*/
public void bind(SearchCursor cursor, String query) {
number = cursor.getString(Projections.PHONE_NUMBER);
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java
index 653c67041..bf0bdc057 100644
--- a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursor.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursor.java
@@ -14,7 +14,7 @@
* limitations under the License
*/
-package com.android.dialer.searchfragment.remote;
+package com.android.dialer.searchfragment.directories;
import android.content.Context;
import android.database.Cursor;
@@ -25,23 +25,22 @@ import android.support.annotation.VisibleForTesting;
import com.android.contacts.common.compat.DirectoryCompat;
import com.android.dialer.common.Assert;
import com.android.dialer.searchfragment.common.SearchCursor;
-import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader;
import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader.Directory;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
- * {@link MergeCursor} used for combining remote directory cursors into one cursor.
+ * {@link MergeCursor} used for combining directory cursors into one cursor.
*
- * <p>Usually a device with multiple Google accounts will have multiple remote directories returned
- * by {@link DirectoriesCursorLoader}, each represented as a {@link Directory}.
+ * <p>Usually a device with multiple Google accounts will have multiple directories returned by
+ * {@link DirectoriesCursorLoader}, each represented as a {@link Directory}.
*
* <p>This cursor merges them together with a header at the start of each cursor/list using {@link
* Directory#getDisplayName()} as the header text.
*/
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
-public final class RemoteContactsCursor extends MergeCursor implements SearchCursor {
+public final class DirectoryContactsCursor extends MergeCursor implements SearchCursor {
/**
* {@link SearchCursor#HEADER_PROJECTION} with {@link #COLUMN_DIRECTORY_ID} appended on the end.
@@ -59,7 +58,7 @@ public final class RemoteContactsCursor extends MergeCursor implements SearchCur
*/
@Nullable
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
- public static RemoteContactsCursor newInstance(
+ public static DirectoryContactsCursor newInstance(
Context context, Cursor[] cursors, List<Directory> directories) {
Assert.checkArgument(
cursors.length == directories.size(),
@@ -68,12 +67,12 @@ public final class RemoteContactsCursor extends MergeCursor implements SearchCur
cursors.length);
Cursor[] cursorsWithHeaders = insertHeaders(context, cursors, directories);
if (cursorsWithHeaders.length > 0) {
- return new RemoteContactsCursor(cursorsWithHeaders);
+ return new DirectoryContactsCursor(cursorsWithHeaders);
}
return null;
}
- private RemoteContactsCursor(Cursor[] cursors) {
+ private DirectoryContactsCursor(Cursor[] cursors) {
super(cursors);
}
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java
index cf495e49c..fc36f59bb 100644
--- a/java/com/android/dialer/searchfragment/remote/RemoteContactsCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/directories/DirectoryContactsCursorLoader.java
@@ -14,7 +14,7 @@
* limitations under the License
*/
-package com.android.dialer.searchfragment.remote;
+package com.android.dialer.searchfragment.directories;
import android.content.Context;
import android.content.CursorLoader;
@@ -37,10 +37,10 @@ import java.util.List;
* Cursor loader to load extended contacts on device.
*
* <p>This loader performs several database queries in serial and merges the resulting cursors
- * together into {@link RemoteContactsCursor}. If there are no results, the loader will return a
+ * together into {@link DirectoryContactsCursor}. If there are no results, the loader will return a
* null cursor.
*/
-public final class RemoteContactsCursorLoader extends CursorLoader {
+public final class DirectoryContactsCursorLoader extends CursorLoader {
private static final Uri ENTERPRISE_CONTENT_FILTER_URI =
Uri.withAppendedPath(Phone.CONTENT_URI, "filter_enterprise");
@@ -53,7 +53,7 @@ public final class RemoteContactsCursorLoader extends CursorLoader {
private final List<Directory> directories;
private final Cursor[] cursors;
- public RemoteContactsCursorLoader(Context context, String query, List<Directory> directories) {
+ public DirectoryContactsCursorLoader(Context context, String query, List<Directory> directories) {
super(
context,
null,
@@ -71,14 +71,14 @@ public final class RemoteContactsCursorLoader extends CursorLoader {
for (int i = 0; i < directories.size(); i++) {
Directory directory = directories.get(i);
- // Filter out local directories
+ // Only load contacts in the enterprise directory & remote directories.
if (!DirectoryCompat.isRemoteDirectoryId(directory.getId())
&& !DirectoryCompat.isEnterpriseDirectoryId(directory.getId())) {
cursors[i] = null;
continue;
}
- // Filter out invisible directories
+ // Filter out invisible directories.
if (DirectoryCompat.isInvisibleDirectory(directory.getId())) {
cursors[i] = null;
continue;
@@ -98,7 +98,7 @@ public final class RemoteContactsCursorLoader extends CursorLoader {
// number. In this case just hide the row entirely. See a bug.
cursors[i] = createMatrixCursorFilteringNullNumbers(cursor);
}
- return RemoteContactsCursor.newInstance(getContext(), cursors, directories);
+ return DirectoryContactsCursor.newInstance(getContext(), cursors, directories);
}
private MatrixCursor createMatrixCursorFilteringNullNumbers(Cursor cursor) {
diff --git a/java/com/android/dialer/searchfragment/remote/res/values/strings.xml b/java/com/android/dialer/searchfragment/directories/res/values/strings.xml
index beabba135..beabba135 100644
--- a/java/com/android/dialer/searchfragment/remote/res/values/strings.xml
+++ b/java/com/android/dialer/searchfragment/directories/res/values/strings.xml
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
index 2d45457d2..aff946206 100644
--- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
+++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
@@ -65,9 +65,9 @@ import com.android.dialer.searchfragment.common.SearchCursor;
import com.android.dialer.searchfragment.cp2.SearchContactsCursorLoader;
import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader;
import com.android.dialer.searchfragment.directories.DirectoriesCursorLoader.Directory;
+import com.android.dialer.searchfragment.directories.DirectoryContactsCursorLoader;
import com.android.dialer.searchfragment.list.SearchActionViewHolder.Action;
import com.android.dialer.searchfragment.nearbyplaces.NearbyPlacesCursorLoader;
-import com.android.dialer.searchfragment.remote.RemoteContactsCursorLoader;
import com.android.dialer.storage.StorageComponent;
import com.android.dialer.util.CallUtil;
import com.android.dialer.util.DialerUtils;
@@ -103,8 +103,11 @@ public final class NewSearchFragment extends Fragment
private static final int CONTACTS_LOADER_ID = 0;
private static final int NEARBY_PLACES_LOADER_ID = 1;
- private static final int REMOTE_DIRECTORIES_LOADER_ID = 2;
- private static final int REMOTE_CONTACTS_LOADER_ID = 3;
+
+ // ID for the loader that loads info about all directories (local & remote).
+ private static final int DIRECTORIES_LOADER_ID = 2;
+
+ private static final int DIRECTORY_CONTACTS_LOADER_ID = 3;
private static final String KEY_QUERY = "key_query";
private static final String KEY_CALL_INITIATION_TYPE = "key_call_initiation_type";
@@ -117,15 +120,17 @@ public final class NewSearchFragment extends Fragment
// for actions to add contact or send sms.
private String rawNumber;
private CallInitiationType.Type callInitiationType = CallInitiationType.Type.UNKNOWN_INITIATION;
- private boolean remoteDirectoriesDisabledForTesting;
+ private boolean directoriesDisabledForTesting;
+ // Information about all local & remote directories (including ID, display name, etc, but not
+ // the contacts in them).
private final List<Directory> directories = new ArrayList<>();
private final Runnable loaderCp2ContactsRunnable =
() -> getLoaderManager().restartLoader(CONTACTS_LOADER_ID, null, this);
private final Runnable loadNearbyPlacesRunnable =
() -> getLoaderManager().restartLoader(NEARBY_PLACES_LOADER_ID, null, this);
- private final Runnable loadRemoteContactsRunnable =
- () -> getLoaderManager().restartLoader(REMOTE_CONTACTS_LOADER_ID, null, this);
+ private final Runnable loadDirectoryContactsRunnable =
+ () -> getLoaderManager().restartLoader(DIRECTORY_CONTACTS_LOADER_ID, null, this);
private final Runnable capabilitiesUpdatedRunnable = () -> adapter.notifyDataSetChanged();
private Runnable updatePositionRunnable;
@@ -184,7 +189,7 @@ public final class NewSearchFragment extends Fragment
private void initLoaders() {
getLoaderManager().initLoader(CONTACTS_LOADER_ID, null, this);
- loadRemoteDirectoriesCursor();
+ loadDirectoriesCursor();
}
@Override
@@ -201,10 +206,10 @@ public final class NewSearchFragment extends Fragment
directoryIds.add(directory.getId());
}
return new NearbyPlacesCursorLoader(getContext(), query, directoryIds);
- } else if (id == REMOTE_DIRECTORIES_LOADER_ID) {
+ } else if (id == DIRECTORIES_LOADER_ID) {
return new DirectoriesCursorLoader(getContext());
- } else if (id == REMOTE_CONTACTS_LOADER_ID) {
- return new RemoteContactsCursorLoader(getContext(), query, directories);
+ } else if (id == DIRECTORY_CONTACTS_LOADER_ID) {
+ return new DirectoryContactsCursorLoader(getContext(), query, directories);
} else {
throw new IllegalStateException("Invalid loader id: " + id);
}
@@ -225,14 +230,14 @@ public final class NewSearchFragment extends Fragment
} else if (loader instanceof NearbyPlacesCursorLoader) {
adapter.setNearbyPlacesCursor((SearchCursor) cursor);
- } else if (loader instanceof RemoteContactsCursorLoader) {
- adapter.setRemoteContactsCursor((SearchCursor) cursor);
+ } else if (loader instanceof DirectoryContactsCursorLoader) {
+ adapter.setDirectoryContactsCursor((SearchCursor) cursor);
} else if (loader instanceof DirectoriesCursorLoader) {
directories.clear();
directories.addAll(DirectoriesCursorLoader.toDirectories(cursor));
loadNearbyPlacesCursor();
- loadRemoteContactsCursors();
+ loadDirectoryContactsCursors();
} else {
throw new IllegalStateException("Invalid loader: " + loader);
@@ -246,8 +251,8 @@ public final class NewSearchFragment extends Fragment
adapter.setContactsCursor(null);
} else if (loader instanceof NearbyPlacesCursorLoader) {
adapter.setNearbyPlacesCursor(null);
- } else if (loader instanceof RemoteContactsCursorLoader) {
- adapter.setRemoteContactsCursor(null);
+ } else if (loader instanceof DirectoryContactsCursorLoader) {
+ adapter.setDirectoryContactsCursor(null);
}
}
@@ -264,7 +269,7 @@ public final class NewSearchFragment extends Fragment
adapter.setZeroSuggestVisible(isRegularSearch());
loadCp2ContactsCursor();
loadNearbyPlacesCursor();
- loadRemoteContactsCursors();
+ loadDirectoryContactsCursors();
}
}
@@ -306,7 +311,7 @@ public final class NewSearchFragment extends Fragment
super.onDestroy();
ThreadUtil.getUiThreadHandler().removeCallbacks(loaderCp2ContactsRunnable);
ThreadUtil.getUiThreadHandler().removeCallbacks(loadNearbyPlacesRunnable);
- ThreadUtil.getUiThreadHandler().removeCallbacks(loadRemoteContactsRunnable);
+ ThreadUtil.getUiThreadHandler().removeCallbacks(loadDirectoryContactsRunnable);
ThreadUtil.getUiThreadHandler().removeCallbacks(capabilitiesUpdatedRunnable);
}
@@ -342,23 +347,27 @@ public final class NewSearchFragment extends Fragment
}
}
- // Loads remote directories.
- private void loadRemoteDirectoriesCursor() {
- if (!remoteDirectoriesDisabledForTesting) {
- getLoaderManager().initLoader(REMOTE_DIRECTORIES_LOADER_ID, null, this);
+ /** Loads info about all directories (local & remote). */
+ private void loadDirectoriesCursor() {
+ if (!directoriesDisabledForTesting) {
+ getLoaderManager().initLoader(DIRECTORIES_LOADER_ID, null, this);
}
}
- // Should not be called before remote directories have finished loading.
- private void loadRemoteContactsCursors() {
- if (remoteDirectoriesDisabledForTesting) {
+ /**
+ * Loads contacts stored in directories.
+ *
+ * <p>Should not be called before finishing loading info about all directories (local & remote).
+ */
+ private void loadDirectoryContactsCursors() {
+ if (directoriesDisabledForTesting) {
return;
}
// Cancel existing load if one exists.
- ThreadUtil.getUiThreadHandler().removeCallbacks(loadRemoteContactsRunnable);
+ ThreadUtil.getUiThreadHandler().removeCallbacks(loadDirectoryContactsRunnable);
ThreadUtil.getUiThreadHandler()
- .postDelayed(loadRemoteContactsRunnable, NETWORK_SEARCH_DELAY_MILLIS);
+ .postDelayed(loadDirectoryContactsRunnable, NETWORK_SEARCH_DELAY_MILLIS);
}
private void loadCp2ContactsCursor() {
@@ -368,7 +377,11 @@ public final class NewSearchFragment extends Fragment
.postDelayed(loaderCp2ContactsRunnable, NETWORK_SEARCH_DELAY_MILLIS);
}
- // Should not be called before remote directories (not contacts) have finished loading.
+ /**
+ * Loads nearby places.
+ *
+ * <p>Should not be called before finishing loading info about all directories (local and remote).
+ */
private void loadNearbyPlacesCursor() {
if (!PermissionsUtil.hasLocationPermissions(getContext())
&& !StorageComponent.get(getContext())
@@ -443,8 +456,8 @@ public final class NewSearchFragment extends Fragment
// being untestable while it can query multiple datasources. This is a temporary fix.
// TODO(a bug): Remove this method and test this fragment with multiple data sources
@VisibleForTesting
- public void setRemoteDirectoriesDisabled(boolean disabled) {
- remoteDirectoriesDisabledForTesting = disabled;
+ public void setDirectoriesDisabled(boolean disabled) {
+ directoriesDisabledForTesting = disabled;
}
/**
diff --git a/java/com/android/dialer/searchfragment/list/SearchAdapter.java b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
index 1681097bf..462426943 100644
--- a/java/com/android/dialer/searchfragment/list/SearchAdapter.java
+++ b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
@@ -31,9 +31,9 @@ import com.android.dialer.common.Assert;
import com.android.dialer.searchfragment.common.RowClickListener;
import com.android.dialer.searchfragment.common.SearchCursor;
import com.android.dialer.searchfragment.cp2.SearchContactViewHolder;
+import com.android.dialer.searchfragment.directories.DirectoryContactViewHolder;
import com.android.dialer.searchfragment.list.SearchCursorManager.RowType;
import com.android.dialer.searchfragment.nearbyplaces.NearbyPlaceViewHolder;
-import com.android.dialer.searchfragment.remote.RemoteContactViewHolder;
import java.util.List;
/** RecyclerView adapter for {@link NewSearchFragment}. */
@@ -77,7 +77,7 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
return new HeaderViewHolder(
LayoutInflater.from(context).inflate(R.layout.header_layout, root, false));
case RowType.DIRECTORY_ROW:
- return new RemoteContactViewHolder(
+ return new DirectoryContactViewHolder(
LayoutInflater.from(context).inflate(R.layout.search_contact_row, root, false));
case RowType.SEARCH_ACTION:
return new SearchActionViewHolder(
@@ -104,8 +104,8 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
((SearchContactViewHolder) holder).bind(searchCursorManager.getCursor(position), query);
} else if (holder instanceof NearbyPlaceViewHolder) {
((NearbyPlaceViewHolder) holder).bind(searchCursorManager.getCursor(position), query);
- } else if (holder instanceof RemoteContactViewHolder) {
- ((RemoteContactViewHolder) holder).bind(searchCursorManager.getCursor(position), query);
+ } else if (holder instanceof DirectoryContactViewHolder) {
+ ((DirectoryContactViewHolder) holder).bind(searchCursorManager.getCursor(position), query);
} else if (holder instanceof HeaderViewHolder) {
String header =
searchCursorManager.getCursor(position).getString(SearchCursor.HEADER_TEXT_POSITION);
@@ -200,8 +200,8 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
}
}
- public void setRemoteContactsCursor(SearchCursor remoteContactsCursor) {
- if (searchCursorManager.setCorpDirectoryCursor(remoteContactsCursor)) {
+ void setDirectoryContactsCursor(SearchCursor directoryContactsCursor) {
+ if (searchCursorManager.setCorpDirectoryCursor(directoryContactsCursor)) {
notifyDataSetChanged();
}
}
diff --git a/java/com/android/dialer/searchfragment/remote/AndroidManifest.xml b/java/com/android/dialer/searchfragment/remote/AndroidManifest.xml
deleted file mode 100644
index e52f5319e..000000000
--- a/java/com/android/dialer/searchfragment/remote/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<!--
- ~ Copyright (C) 2017 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License
- -->
-<manifest package="com.android.dialer.searchfragment.remote"/> \ No newline at end of file