summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/searchfragment
diff options
context:
space:
mode:
authorzachh <zachh@google.com>2017-11-07 18:12:18 -0800
committerzachh <zachh@google.com>2017-11-11 23:16:31 +0000
commit9b3342f3b61d149c16ec2573148def3baaf094a5 (patch)
tree54b7fe7f28eab0f0a37a45c9bab00ccf5504235a /java/com/android/dialer/searchfragment
parent0efc840171da8739359b326249978d0a44df540b (diff)
Added temporary logging to debug problem with null phone numbers from remote contacts.
Bug: 68942044 Test: none PiperOrigin-RevId: 174944384 Change-Id: Ie03ce41e517cfb73081231898a7e9dcc3feee2f2
Diffstat (limited to 'java/com/android/dialer/searchfragment')
-rw-r--r--java/com/android/dialer/searchfragment/list/SearchAdapter.java36
-rw-r--r--java/com/android/dialer/searchfragment/remote/RemoteDirectoriesCursorLoader.java17
2 files changed, 51 insertions, 2 deletions
diff --git a/java/com/android/dialer/searchfragment/list/SearchAdapter.java b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
index dc78953b5..cc090ac47 100644
--- a/java/com/android/dialer/searchfragment/list/SearchAdapter.java
+++ b/java/com/android/dialer/searchfragment/list/SearchAdapter.java
@@ -17,6 +17,7 @@
package com.android.dialer.searchfragment.list;
import android.content.Context;
+import android.database.Cursor;
import android.support.annotation.VisibleForTesting;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
@@ -26,12 +27,15 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import com.android.dialer.common.Assert;
+import com.android.dialer.common.LogUtil;
+import com.android.dialer.searchfragment.common.Projections;
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.list.SearchCursorManager.RowType;
import com.android.dialer.searchfragment.nearbyplaces.NearbyPlaceViewHolder;
import com.android.dialer.searchfragment.remote.RemoteContactViewHolder;
+import com.android.dialer.searchfragment.remote.RemoteDirectoriesCursorLoader;
import java.util.List;
/** RecyclerView adapter for {@link NewSearchFragment}. */
@@ -99,6 +103,23 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
} else if (holder instanceof NearbyPlaceViewHolder) {
((NearbyPlaceViewHolder) holder).bind(searchCursorManager.getCursor(position), query);
} else if (holder instanceof RemoteContactViewHolder) {
+ Cursor cursor = searchCursorManager.getCursor(position);
+ // Temporary logging to identify cause of a bug:
+ if (cursor.getString(Projections.PHONE_NUMBER) == null) {
+ LogUtil.e(
+ "SearchAdapter.onBindViewHolder", "cursor class: %s", cursor.getClass().getName());
+ LogUtil.e("SearchAdapter.onBindViewHolder", "position: %d", position);
+ LogUtil.e(
+ "SearchAdapter.onBindViewHolder",
+ "query length: %s",
+ query == null ? "null" : query.length());
+ logDirectories();
+ LogUtil.e(
+ "SearchAdapter.onBindViewHolder",
+ "directory id: %d",
+ ((SearchCursor) cursor).getDirectoryId());
+ throw new IllegalStateException("Null phone number reading remote contact");
+ }
((RemoteContactViewHolder) holder).bind(searchCursorManager.getCursor(position), query);
} else if (holder instanceof HeaderViewHolder) {
String header =
@@ -114,6 +135,21 @@ public final class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
}
}
+ private void logDirectories() {
+ try (Cursor directories = new RemoteDirectoriesCursorLoader(context).loadInBackground()) {
+ if (directories.moveToFirst()) {
+ do {
+ LogUtil.e(
+ "SearchAdapter.logDirectories",
+ "directory: %s",
+ RemoteDirectoriesCursorLoader.readDirectory(directories));
+ } while (directories.moveToNext());
+ } else {
+ LogUtil.e("SearchAdapter.logDirectories", "no directories found");
+ }
+ }
+ }
+
public void setContactsCursor(SearchCursor cursor) {
if (searchCursorManager.setContactsCursor(cursor)) {
// Since this is a new contacts cursor, we need to reapply the filter.
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteDirectoriesCursorLoader.java b/java/com/android/dialer/searchfragment/remote/RemoteDirectoriesCursorLoader.java
index de71025cd..3d16c4351 100644
--- a/java/com/android/dialer/searchfragment/remote/RemoteDirectoriesCursorLoader.java
+++ b/java/com/android/dialer/searchfragment/remote/RemoteDirectoriesCursorLoader.java
@@ -36,12 +36,14 @@ public final class RemoteDirectoriesCursorLoader extends CursorLoader {
private static final int DISPLAY_NAME = 1;
private static final int PHOTO_SUPPORT = 2;
+ private static final int AUTHORITY = 3;
@VisibleForTesting
static final String[] PROJECTION = {
ContactsContract.Directory._ID,
ContactsContract.Directory.DISPLAY_NAME,
ContactsContract.Directory.PHOTO_SUPPORT,
+ ContactsContract.Directory.DIRECTORY_AUTHORITY,
};
public RemoteDirectoriesCursorLoader(Context context) {
@@ -51,7 +53,10 @@ public final class RemoteDirectoriesCursorLoader extends CursorLoader {
/** @return current cursor row represented as a {@link Directory}. */
public static Directory readDirectory(Cursor cursor) {
return Directory.create(
- cursor.getInt(ID), cursor.getString(DISPLAY_NAME), cursor.getInt(PHOTO_SUPPORT) != 0);
+ cursor.getInt(ID),
+ cursor.getString(DISPLAY_NAME),
+ cursor.getInt(PHOTO_SUPPORT) != 0,
+ cursor.getString(AUTHORITY));
}
private static Uri getContentUri() {
@@ -63,8 +68,14 @@ public final class RemoteDirectoriesCursorLoader extends CursorLoader {
/** POJO representing the results returned from {@link RemoteDirectoriesCursorLoader}. */
@AutoValue
public abstract static class Directory {
+ public static Directory create(
+ int id, @Nullable String displayName, boolean supportsPhotos, @Nullable String authority) {
+ return new AutoValue_RemoteDirectoriesCursorLoader_Directory(
+ id, displayName, supportsPhotos, authority);
+ }
+
public static Directory create(int id, @Nullable String displayName, boolean supportsPhotos) {
- return new AutoValue_RemoteDirectoriesCursorLoader_Directory(id, displayName, supportsPhotos);
+ return create(id, displayName, supportsPhotos, null);
}
public abstract int getId();
@@ -73,5 +84,7 @@ public final class RemoteDirectoriesCursorLoader extends CursorLoader {
abstract @Nullable String getDisplayName();
abstract boolean supportsPhotos();
+
+ abstract @Nullable String authority();
}
}